WGBH / PBCore2.0

Public Broadcasting Metadata Dictionary Project
http://www.pbcore.org
33 stars 9 forks source link

change extensionAuthorityUsed to minOccurs='0' #88

Open kvanmalssen opened 9 years ago

kvanmalssen commented 9 years ago

Currently, the extensionType dictates that the extensionAuthorityUsed element must be used with extensionWrap. This element should be optional. With the addition of extensionElement and extensionValue to pbcore 2.0, extensionAuthorityUsed should have become optional, and maintained to primarily support legacy migrations from earlier versions of pbcore. We have had to modify the XSD for local uses in order to validate otherwise valid pbcore xml files against the 2.0 schema.

Current schema:

<xsd:complexType name="extensionType">
      <xsd:annotation>
         <xsd:documentation>"This uses a common structure to allow for the use of multiple,
            qualified extensions at the asset, instantiation and essence
            levels."</xsd:documentation>
      </xsd:annotation>
      <xsd:choice>
         <xsd:element maxOccurs="unbounded" minOccurs="1" name="extensionWrap">
            <xsd:complexType>
               <xsd:sequence>
                  <xsd:element maxOccurs="1" minOccurs="1" name="extensionElement" type="xsd:string">
                     <xsd:annotation>
                        <xsd:documentation xml:lang="en">"The descriptor extensionElement provides
                           metadata descriptions crafted into metadata dictionaries and schemas
                           outside of the PBCore Metadata Dictionary Project. These extensions
                           fulfill the metadata requirements for communities identifying and
                           describing their own types of media with specialized, custom
                           terminologies."</xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element maxOccurs="1" minOccurs="1" name="extensionValue" type="xsd:string">
                     <xsd:annotation>
                        <xsd:documentation xml:lang="en">"Use extensionValue to express the actual
                           data value of the label indicated by
                           extensionElement."</xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element maxOccurs="1" minOccurs="1" name="extensionAuthorityUsed"
                     type="xsd:anyURI">
                     <xsd:annotation>
                        <xsd:documentation xml:lang="en">"If metadata extensions to PBCore are
                           assigned to a media item with the descriptor extensionElement, and the
                           terms used are derived from a specific authority or metadata scheme, use
                           extensionAuthorityUsed to identify whose metadata extensions are being
                           used."</xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
               </xsd:sequence>
               <xsd:attribute name="annotation" type="xsd:string"/>
            </xsd:complexType>
         </xsd:element>
         <xsd:element maxOccurs="unbounded" minOccurs="1" name="extensionEmbedded"
            type="embeddedType"> </xsd:element>
      </xsd:choice>
   </xsd:complexType>

Recommended change:

<xsd:complexType name="extensionType">
      <xsd:annotation>
         <xsd:documentation>"This uses a common structure to allow for the use of multiple,
            qualified extensions at the asset, instantiation and essence
            levels."</xsd:documentation>
      </xsd:annotation>
      <xsd:choice>
         <xsd:element maxOccurs="unbounded" minOccurs="1" name="extensionWrap">
            <xsd:complexType>
               <xsd:sequence>
                  <xsd:element maxOccurs="1" minOccurs="1" name="extensionElement" type="xsd:string">
                     <xsd:annotation>
                        <xsd:documentation xml:lang="en">"The descriptor extensionElement provides
                           metadata descriptions crafted into metadata dictionaries and schemas
                           outside of the PBCore Metadata Dictionary Project. These extensions
                           fulfill the metadata requirements for communities identifying and
                           describing their own types of media with specialized, custom
                           terminologies."</xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element maxOccurs="1" minOccurs="1" name="extensionValue" type="xsd:string">
                     <xsd:annotation>
                        <xsd:documentation xml:lang="en">"Use extensionValue to express the actual
                           data value of the label indicated by
                           extensionElement."</xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element maxOccurs="1" minOccurs="0" name="extensionAuthorityUsed"
                     type="xsd:anyURI">
                     <xsd:annotation>
                        <xsd:documentation xml:lang="en">"If metadata extensions to PBCore are
                           assigned to a media item with the descriptor extensionElement, and the
                           terms used are derived from a specific authority or metadata scheme, use
                           extensionAuthorityUsed to identify whose metadata extensions are being
                           used."</xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
               </xsd:sequence>
               <xsd:attribute name="annotation" type="xsd:string"/>
            </xsd:complexType>
         </xsd:element>
         <xsd:element maxOccurs="unbounded" minOccurs="1" name="extensionEmbedded"
            type="embeddedType"> </xsd:element>
      </xsd:choice>
   </xsd:complexType>