I have attached a draft of a schema I have been working on as an extension
to METS for use in encoding our descriptive metadata in the context of
METS:dmdSec.METS:mdWrap elements. While I know this will not be of
universal interest, I would welcome comments and suggestions from anyone
with sufficient time and interest to give this a read--particularly since I
am still feeling my way with respect to the use of xml schemas.
I have tried to set the schema up so that the main gdm elements could be
use directly under a METS:mdWrap element, pretty much without restrictions,
or encapsulated, with more control, within a GDM:gdm element. As currently
set up, the GDM:gdm element can contain a GDM:core element, which groups a
set of core, non-repeatable descriptive metadata elements. The GDM:core
elements are currently governed by an <xsd:all>, which allows them to
appear in any order, but not to repeat. The remaining, repeatable
descriptive metadata elements are governed by an <xsd:choice minOccurs="0"
maxOccurs="unbounded">, which allows them to repeat and to occur in any
order.
With respect to attributes: in switching from the MOA2.DTD descriptive
metadata attributes to a XML Schema, I have tried to use more specific xsd
datatypes. Thus the SEQ attribute that appears in many elements is now
defined as an "xsd:integer"; and PUBLIC as "xsd:boolean".
With respect to casing element and attribute names, I have tried to follow
the METS conventions. Thus elements always begin with a lower case
letters; but new "words" within the element name begin with an upper case
letter. Attribute names are all upper case.
I have also attached a very brief, example of a GDM encoding outside the
context of METS.
Rick Beaubien
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v3.5 (http://www.xmlspy.com) by Kathy McClelland (The Library Systems Office) -->
<!-- GDM: Generic Descriptive Metadata -->
<!-- Prepared by Rick Beaubien, University of California, Berkeley.-->
<!-- June 21, 2001 -->
<!-- Version 1.0 (alpha) -->
<!-- Change History -->
<!-- June 21, 2001: Alpha Draft completed -->
<xsd:schema targetNamespace="http://sunsite.berkeley.edu/GDM/" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" xmlns="http://sunsite.berkeley.edu/GDM/" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="gdm" type="gdmType"/>
<xsd:annotation>
<xsd:documentation>GDM: Generic Descriptive Metadata Standard.
GDM is intended to provide a standardized XML format for encoding the descriptive
metadata pertaining to a digital object or portion of a digital object. It is intended to
allow for a fuller description than is possible with Dublin Core without the complexities of
full MARC. It has been developed in particular as an extension to the METS schema, and
for use within dmdSec.mdWrap elements within a METS object.
</xsd:documentation>
</xsd:annotation>
<xsd:element name="core" type="coreType"/>
<xsd:element name="admin" type="adminType"/>
<xsd:element name="altDate" type="altDateType"/>
<xsd:element name="caption" type="captionType"/>
<xsd:element name="content" type="contentType"/>
<xsd:element name="coreDate" type="coreDateType"/>
<xsd:element name="creator" type="creatorType"/>
<xsd:element name="dimensions" type="dimensionsType"/>
<xsd:element name="dmSource" type="dmSourceType"/>
<xsd:element name="eadLevel" type="eadLevelType"/>
<xsd:element name="general" type="generalType"/>
<xsd:element name="localID" type="localIDType"/>
<xsd:element name="origin" type="originType"/>
<xsd:element name="physDesc" type="physDescType"/>
<xsd:element name="related" type="relatedType"/>
<xsd:element name="soType" type="soTypeType"/>
<xsd:element name="subject" type="subjectType"/>
<xsd:element name="title" type="titleType"/>
<xsd:complexType name="gdmType">
<xsd:annotation>
<xsd:documentation>gdmType: Complex Type for encapsulating within a single
parent element the individual gdm elements that describe an object or portion of an
object. But note that the individual descriptive metadata elements that comprise the
GDM schema can be used independently of a gem element and directly under a
METS mdSec.dmWrap element. The individual elements that comprise a gdm element
are documented under their corresponding types.
gdmType has a single attribute, ID (XML ID).</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element ref="core" minOccurs="0"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="admin" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="altDate" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="content" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="creator" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="dmSource" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="general" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="physDesc" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="related" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="subject" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="ID" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="coreType">
<xsd:annotation>
<xsd:documentation>coreType: Complex Type for encapsulating within a single
parent element the individual core elements that can describe an object or portion of an
object. The elements grouped within the core element are non-repeatable. Only the title
element is required. Note that since the elements comprising the core element are governed
by an xsd:all element, they can appear in any order, but each can appear just one time.
gdmType has a single attribute, ID (XML ID).</xsd:documentation>
</xsd:annotation>
<xsd:all>
<xsd:element ref="coreDate" minOccurs="0"/>
<xsd:element ref="caption" minOccurs="0"/>
<xsd:element ref="dimensions" minOccurs="0"/>
<xsd:element ref="eadLevel" minOccurs="0"/>
<xsd:element ref="localID" minOccurs="0"/>
<xsd:element ref="origin" minOccurs="0"/>
<xsd:element ref="soType" minOccurs="0"/>
<xsd:element ref="title" minOccurs="0"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="captionType">
<xsd:annotation>
<xsd:documentation>captionType: Complex Type for recording a caption pertaining
to an object or portion of an object.
captionType has a single attribute, ID (XML ID).</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="coreDateType">
<xsd:annotation>
<xsd:documentation>coreDateType: Complex Type for core or primary date information.
coreDateType has the following addtributes:
1. ID: an XML ID
2. DATE: The alternate date where there is no date range
3. BEGINDATE: the starting date when there is an alternate date range.
4. ENDDATE: the ending date when there is an alternate date range.
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="DATE" type="xsd:string"/>
<xsd:attribute name="BEGINDATE" type="xsd:string"/>
<xsd:attribute name="ENDDATE" type="xsd:string"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="dimensionsType">
<xsd:annotation>
<xsd:documentation>coreDateType: Complex Type for recording the dimensions of an object.
altDateType has the following addtributes:
1. ID: an XML ID
2. HEIGHT: The height as a decimal number
3. WIDTH: the width as a decimal number
3. DEPTH: the depth as a decimal number
4. UNITS: the unit of measurement
</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="HEIGHT" type="xsd:decimal"/>
<xsd:attribute name="WIDTH" type="xsd:decimal"/>
<xsd:attribute name="DEPTH" type="xsd:decimal"/>
<xsd:attribute name="UNITS" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="eadLevelType">
<xsd:annotation>
<xsd:documentation>eadLevelType: Complex Type for recording the ealLevel
of an object or portion of an object.
eadLevelType has a single attribute, ID (XML ID).</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="localIDType">
<xsd:annotation>
<xsd:documentation>localIDType: Complex Type for the call number or other local identifier.
localIDType has the following addtributes:
1. ID: an XML ID
2. LOCALIDTYPE: describes the kind of identifier the localID represents.
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="LOCALIDTYPE" type="xsd:string"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="originType">
<xsd:annotation>
<xsd:documentation>originType: Complex Type for recording a origin of
an object or portion of an object.
originType has a single attribute, ID (XML ID).</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="soTypeType">
<xsd:annotation>
<xsd:documentation>soTypeType: Complex Type for recording the type of an object or
portion of an object. For example, "book", "chapter", "page".
to an object or portion of an object.
soTypeType has a single attribute, ID (XML ID).</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="titleType">
<xsd:annotation>
<xsd:documentation>titleType: Complex Type for recording the main title of an object or
portion of an object.
titleType has a single attribute, ID (XML ID).</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="adminType">
<xsd:annotation>
<xsd:documentation>admType: Complex Type for administrative information.
admType has the following addtributes:
1. ID: an XML ID
2. FIELDTYPE: a designation of the type Administrative information contained in
the element.
3. PUBLIC: indicates whether the information in the element should be shown to the public.
4. SEQ: indicates the desired sequence of the element relative to other admin elements
governed by the same gdm element or METS:mdwrap element.</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="FIELDTYPE" use="default" value="admGeneral">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="admInstitutionName"/>
<xsd:enumeration value="admProcessInfo"/>
<xsd:enumeration value="admInstitutionAddr"/>
<xsd:enumeration value="admGeneral"/>
<xsd:enumeration value="admFunding"/>
<xsd:enumeration value="admAcquisition"/>
<xsd:enumeration value="admAltForm"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="PUBLIC" type="xsd:boolean" use="default" value="true"/>
<xsd:attribute name="SEQ" type="xsd:integer"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="altDateType">
<xsd:annotation>
<xsd:documentation>altDateType: Complex Type for alternate date information.
altDateType has the following addtributes:
1. ID: an XML ID
2. DATE: The alternate date where there is no date range
3. BEGINDATE: the starting date when there is an alternate date range.
3. ENDDATE: the ending date when there is an alternate date range.
4. SEQ: indicates the desired sequence of the element relative to other admin elements
governed by the same gdm element or METS:mdwrap element.</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="DATE" type="xsd:string"/>
<xsd:attribute name="BEGINDATE" type="xsd:string"/>
<xsd:attribute name="ENDDATE" type="xsd:string"/>
<xsd:attribute name="SEQ" type="xsd:integer"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="contentType">
<xsd:annotation>
<xsd:documentation>admType: Complex Type for content notes.
admType has the following addtributes:
1. ID: an XML ID
2. FIELDTYPE: a designation of the type content information contained in
the element.
3. PUBLIC: indicates whether the information in the element should be shown to the public.
4. SEQ: indicates the desired sequence of the element relative to other content elements
governed by the same gdm element or METS:mdWrap element.</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="FIELDTYPE" use="default" value="conGeneral">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="conAbstract"/>
<xsd:enumeration value="conGeneral"/>
<xsd:enumeration value="conScopeContent"/>
<xsd:enumeration value="conStylePeriod"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="PUBLIC" type="xsd:boolean" use="default" value="true"/>
<xsd:attribute name="SEQ" type="xsd:integer"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="creatorType">
<xsd:annotation>
<xsd:documentation> creatorType: Complex Type for general notes.
creatorType has the following addtributes:
1. ID: an XML ID
2. NAMETYPE: a designation of the type or name. For example: CN, PN.
3. DATES:birth and death dates of creator
4. NATIONALITY: nationality of creator
5. SOURCE: Source of creator heading
6. SRCCHECK: Whether source has been checked.
7. ROLE: Relationship of creator to object or portion of the object represented.
8. SEQ: indicates the desired sequence of the element relative to other creator elements
governed by the same gdm element or METS:mdWrap element.</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="NAMETYPE" type="xsd:string"/>
<xsd:attribute name="DATES" type="xsd:string"/>
<xsd:attribute name="NATIONALITY" type="xsd:string"/>
<xsd:attribute name="SOURCE" type="xsd:string"/>
<xsd:attribute name="SRCCHECK" type="xsd:boolean" use="default" value="true"/>
<xsd:attribute name="ROLE" type="xsd:string"/>
<xsd:attribute name="SEQ" type="xsd:integer"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="dmSourceType">
<xsd:annotation>
<xsd:documentation>dmSourceType: Complex Type for descriptive metatadata notes
about the source.
dmSourceType has the following addtributes:
1. ID: an XML ID
2. FIELDTYPE: a designation of the type source note contained in the element.
3. PUBLIC: indicates whether the information in the element should be shown to the public.
4. SEQ: indicates the desired sequence of the element relative to other dmSource elements
governed by the same gdm element or METS:mdWrap element.</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="FIELDTYPE" use="default" value="srcGeneral">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="srcCharacteristics"/>
<xsd:enumeration value="srcDimensions"/>
<xsd:enumeration value="srcGeneral"/>
<xsd:enumeration value="srcLocalID"/>
<xsd:enumeration value="srcReproduction"/>
<xsd:enumeration value="srcType"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="PUBLIC" type="xsd:boolean" use="default" value="true"/>
<xsd:attribute name="SEQ" type="xsd:integer"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="generalType">
<xsd:annotation>
<xsd:documentation>generalType: Complex Type for general notes.
generalType has the following addtributes:
1. ID: an XML ID
2. FIELDTYPE: a designation of the type general note contained in the element.
3. PUBLIC: indicates whether the information in the element should be shown to the public.
4. SEQ: indicates the desired sequence of the element relative to other admin elements
governed by the same gdm element or METS:mdWrap element.</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="FIELDTYPE" use="default" value="genGeneral">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="genAppraisal"/>
<xsd:enumeration value="genBibliography"/>
<xsd:enumeration value="genBiblioHist"/>
<xsd:enumeration value="genBiographical"/>
<xsd:enumeration value="genCitation"/>
<xsd:enumeration value="genConsHist"/>
<xsd:enumeration value="genEdition"/>
<xsd:enumeration value="genExhibitHist"/>
<xsd:enumeration value="genGeneral"/>
<xsd:enumeration value="genOriginal"/>
<xsd:enumeration value="genProvenance"/>
<xsd:enumeration value="genScale"/>
<xsd:enumeration value="genSeries"/>
<xsd:enumeration value="genValue"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="PUBLIC" type="xsd:boolean" use="default" value="true"/>
<xsd:attribute name="SEQ" type="xsd:integer"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="physDescType">
<xsd:annotation>
<xsd:documentation>physDescType: Complex Type for physical description notes.
physDescType has the following addtributes:
1. ID: an XML ID
2. FIELDTYPE: a designation of the type physical description note contained in the element.
3. PUBLIC: indicates whether the information in the element should be shown to the public.
4. SEQ: indicates the desired sequence of the element relative to other physDesc elements
governed by the same gdm element or METS:mdWrap element.</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="FIELDTYPE" use="default" value="phyGeneral">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="phyCondition"/>
<xsd:enumeration value="phyDecorationDetails"/>
<xsd:enumeration value="phyDimensionNote"/>
<xsd:enumeration value="phyDimensions"/>
<xsd:enumeration value="phyDuration"/>
<xsd:enumeration value="phyExtent"/>
<xsd:enumeration value="phyGeneral"/>
<xsd:enumeration value="phyGenreform"/>
<xsd:enumeration value="phyLanguage"/>
<xsd:enumeration value="phyMarksInscriptions"/>
<xsd:enumeration value="phyMediumMaterials"/>
<xsd:enumeration value="phyOrganization"/>
<xsd:enumeration value="phyPhysDesc"/>
<xsd:enumeration value="phyPlaceOfOrigin"/>
<xsd:enumeration value="phyPresentation"/>
<xsd:enumeration value="phyProcessTechnique"/>
<xsd:enumeration value="phyScript"/>
<xsd:enumeration value="phySubstrateSupport"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="PUBLIC" type="xsd:boolean" use="default" value="true"/>
<xsd:attribute name="SEQ" type="xsd:integer"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="relatedType">
<xsd:annotation>
<xsd:documentation>relatedType: Complex Type for related information.
Allows links to related materials to be recorded.
relatedlType has the following addtributes:
1. ID: an XML ID
2. RELIDNUMBER:
3. RELINST: institution holding the related material.
4. RELURL: URL of the related materisl
5. RELTYPE: type of related material</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="RELIDNUMBER" type="xsd:string"/>
<xsd:attribute name="RELINST" type="xsd:string"/>
<xsd:attribute name="RELURL" type="xsd:string"/>
<xsd:attribute name="RELTYPE" type="xsd:string"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="subjectType">
<xsd:annotation>
<xsd:documentation>subjectType: Complex Type for subject headings.
subjectType has the following addtributes:
1. ID: an XML ID
2. SOURCE: the source of the subject heading.
3. SRCCHECK: indicates whether the source has been checked.
4. DEFINITION:</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="ID" type="xsd:ID"/>
<xsd:attribute name="SOURCE" type="xsd:string"/>
<xsd:attribute name="SRCCHECK" type="xsd:boolean"/>
<xsd:attribute name="DEFINITION" type="xsd:string"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
</xsd:schema>
<?xml version="1.0" encoding="UTF-8"?>
<GDM:gdm xmlns:GDM="http://sunsite.berkeley.edu/GDM/" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" xsi:schemaLocation="http://sunsite.berkeley.edu/GDM/
O:\MOA2Critical\DtdToSchema\MetsExtensions\JointGDM\gdm4.xsd">
<GDM:core>
<GDM:title>San Francisco Quadrangle in 1895</GDM:title>
<GDM:coreDate DATE="1895"/>
<GDM:dimensions HEIGHT="45.0" WIDTH="40.0" UNITS="cm."/>
<GDM:soType>map</GDM:soType>
</GDM:core>
<GDM:general SEQ="1" PUBLIC="true" FIELDTYPE="genScale">1:62,500</GDM:general>
<GDM:general SEQ="2" PUBLIC="true" FIELDTYPE="genGeneral">Contour interval 25 feet</GDM:general>
<GDM:general SEQ="3" PUBLIC="true" FIELDTYPE="genGeneral">Surveyed in 1892, 93, 94</GDM:general>
<GDM:creator NAMETYPE="cn" SRCCHECK="false" ROLE="Publisher" SEQ="1">U.S.Geological Survey</GDM:creator>
</GDM:gdm>
-----------------------------------------------------
Rick Beaubien
Software Engineer: Research and Development
Library Systems Office
Rm 386 Doe Library
University of California
Berkeley, CA 94720-6000
510-643-9776
|