Personal tools
You are here: Home Standards CalEDLN Project Metadata Standard Draft XML Schema specification for CalEDLN project standard 1.0RC1
Document Actions

Draft XML Schema specification for CalEDLN project standard 1.0RC1

This is a preliminary version of the XML Schema specification for the CalEDLN 1.0RC1 project standard, which has been converted from the RELAX NG version. Revision 8, 4 August 2006.

Click here to get the file

Size 19.5 kB - File type text/xml

File contents

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Draft RELAX NG Compact Syntax Grammar for CalEDLN project standard 1.0RC1
  Revision 8
  Allan D. Hollander, 4 August 2006
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:attributeGroup name="URI">
    <xs:annotation>
      <xs:documentation>The URI pattern makes it easy to stick optional URIs into elements</xs:documentation>
    </xs:annotation>
    <xs:attribute name="uri" type="xs:anyURI"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="Thesaurus">
    <xs:attribute name="thesaurusuri" use="required" type="xs:anyURI"/>
    <xs:attribute name="thesaurustermuri" type="xs:anyURI"/>
  </xs:attributeGroup>
  <xs:complexType name="AnyElement">
    <xs:annotation>
      <xs:documentation>Matches any well-formed XML.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:any processContents="skip"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Contact">
    <xs:sequence>
      <xs:choice>
        <xs:annotation>
          <xs:documentation>A contact may be either a person or an organization.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:annotation>
            <xs:documentation>The contactperson element is the full name of the contact.</xs:documentation>
          </xs:annotation>
          <xs:element ref="contactperson"/>
          <xs:element minOccurs="0" ref="firstname"/>
          <xs:element minOccurs="0" ref="middleinitial"/>
          <xs:element minOccurs="0" ref="lastname"/>
        </xs:sequence>
        <xs:element ref="contactorganization"/>
      </xs:choice>
      <xs:element minOccurs="0" ref="address"/>
      <xs:element minOccurs="0" ref="city"/>
      <xs:element minOccurs="0" ref="state"/>
      <xs:element minOccurs="0" ref="postalcode"/>
      <xs:element minOccurs="0" ref="country"/>
      <xs:element minOccurs="0" ref="voicetelephone"/>
      <xs:element minOccurs="0" ref="tddtelephone"/>
      <xs:element minOccurs="0" ref="fax"/>
      <xs:element minOccurs="0" ref="email"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="contactperson">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="URI"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="firstname" type="xs:string">
    <xs:annotation>
      <xs:documentation>The first or given name of the contact. Optional but highly recommended.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="middleinitial" type="xs:string">
    <xs:annotation>
      <xs:documentation>The middle initial of the contact. Optional but highly recommended.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="lastname" type="xs:string">
    <xs:annotation>
      <xs:documentation>The last or family name of the contact. Optional but highly recommended.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="contactorganization">
    <xs:annotation>
      <xs:documentation>The name of the contact organization.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="URI"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="address" type="xs:string"/>
  <xs:element name="city" type="xs:string"/>
  <xs:element name="state" type="xs:string"/>
  <xs:element name="postalcode" type="xs:string"/>
  <xs:element name="country" type="xs:string"/>
  <xs:element name="voicetelephone" type="xs:string"/>
  <xs:element name="tddtelephone" type="xs:string"/>
  <xs:element name="fax" type="xs:string"/>
  <xs:element name="email" type="xs:string">
    <xs:annotation>
      <xs:documentation>An email element is optional but highly recommended.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="caledlnprojects">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="caledlnproject"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="caledlnproject">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="creator"/>
        <xs:element ref="title"/>
        <xs:element maxOccurs="unbounded" ref="resourcetype"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="projectid"/>
        <xs:element ref="begindate"/>
        <xs:element ref="enddate"/>
        <xs:element maxOccurs="unbounded" ref="primarycontact"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="secondarycontact"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="datacontact"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="participant"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="funding"/>
        <xs:element minOccurs="0" ref="projecthomepage"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="relation"/>
        <xs:element ref="abstract"/>
        <xs:element minOccurs="0" ref="purpose"/>
        <xs:element minOccurs="0" ref="supplementalinfo"/>
        <xs:element ref="progress"/>
        <xs:element minOccurs="0" ref="legalmandate"/>
        <xs:element ref="boundingbox"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="projectsubject"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="projectactivity"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="projecthabitat"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="projectmethodology"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="projectsize"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="taxon"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="place"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="locationdescription"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
        <xs:element ref="metadatastandard"/>
        <xs:element ref="metadatadate"/>
        <xs:element ref="metadatacontact"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="creator">
    <xs:annotation>
      <xs:documentation>An entity (person or organization) primarily responsible for implementing the project.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="URI"/>
      <xs:attribute name="type">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="person"/>
            <xs:enumeration value="organization"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="title" type="xs:string">
    <xs:annotation>
      <xs:documentation>The primary name given to the project.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="resourcetype">
    <xs:annotation>
      <xs:documentation>The nature or genre of the content of the resource. In this case, the term used is "project".</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="Thesaurus"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="projectid">
    <xs:annotation>
      <xs:documentation>An id value for the project.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="idcode"/>
        <xs:element ref="idsource"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="idcode">
    <xs:annotation>
      <xs:documentation>The Id code used for the project by the particular source.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="URI"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="idsource">
    <xs:annotation>
      <xs:documentation>The source of the Id code (e.g. NRPI or CERES).</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="URI"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="begindate">
    <xs:annotation>
      <xs:documentation>The beginning date of the project.</xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:union memberTypes="xs:date xs:gYear xs:gYearMonth">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Unknown"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:union>
    </xs:simpleType>
  </xs:element>
  <xs:element name="enddate">
    <xs:annotation>
      <xs:documentation>The ending date of the project.</xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:union memberTypes="xs:date xs:gYear xs:gYearMonth">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Unknown"/>
          </xs:restriction>
        </xs:simpleType>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Present"/>
          </xs:restriction>
        </xs:simpleType>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Ongoing"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:union>
    </xs:simpleType>
  </xs:element>
  <xs:element name="primarycontact" type="Contact">
    <xs:annotation>
      <xs:documentation>The primary contact for this project.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="secondarycontact" type="Contact">
    <xs:annotation>
      <xs:documentation>The secondary contact for this project.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="datacontact" type="Contact">
    <xs:annotation>
      <xs:documentation>A contact for information about data produced by this project.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="participant">
    <xs:annotation>
      <xs:documentation>An entity (person or organization) involved in implementing the project.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="participantname"/>
        <xs:element ref="participantrole"/>
      </xs:sequence>
      <xs:attribute name="type">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="person"/>
            <xs:enumeration value="organization"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="participantname">
    <xs:annotation>
      <xs:documentation>The name of the involved person or organization.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="URI"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="participantrole">
    <xs:annotation>
      <xs:documentation>The nature of the involvement, such as funder or collaborator.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="URI"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="funding">
    <xs:annotation>
      <xs:documentation>Information about the source of financial, material, or logistical support for the project.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="funder"/>
        <xs:element ref="fundingstatus"/>
        <xs:element minOccurs="0" ref="grantid"/>
        <xs:element minOccurs="0" ref="programtype"/>
        <xs:element minOccurs="0" ref="contributiontype"/>
        <xs:element minOccurs="0" ref="amount"/>
        <xs:element minOccurs="0" ref="contributionnotes"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="funder">
    <xs:annotation>
      <xs:documentation>The name of the entity (person or organization) providing support for the project.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="URI"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="fundingstatus">
    <xs:annotation>
      <xs:documentation>Whether the funding has been received or is still sought.</xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="Received"/>
        <xs:enumeration value="Needed"/>
        <xs:enumeration value="Unknown"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="grantid" type="xs:string">
    <xs:annotation>
      <xs:documentation>The identifier used for the award in the funder's tracking system.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="programtype" type="xs:string"/>
  <xs:element name="contributiontype">
    <xs:annotation>
      <xs:documentation>The nature of the financial, material, or logistical support for the project, such as money, land, or labor.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="URI"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="amount" type="xs:decimal">
    <xs:annotation>
      <xs:documentation>The dollar amount of a monetary contribution.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="contributionnotes" type="xs:string">
    <xs:annotation>
      <xs:documentation>Additional information describing the contribution.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="projecthomepage" type="xs:anyURI">
    <xs:annotation>
      <xs:documentation>The primary public Web document describing the project.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="relation">
    <xs:annotation>
      <xs:documentation>A reference to a related resource, such as a similar project or a publication.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="relationtype"/>
        <xs:element ref="relatedresource"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="relationtype" type="xs:anyURI">
    <xs:annotation>
      <xs:documentation>The nature of the relationship (URIs expressing "is part of", "is member of", etc.),</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="relatedresource">
    <xs:annotation>
      <xs:documentation>The resource that is related to this project.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="URI"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="abstract" type="xs:string">
    <xs:annotation>
      <xs:documentation>A brief narrative description of the project.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="purpose" type="xs:string">
    <xs:annotation>
      <xs:documentation>A summary of the intentions of the project.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="supplementalinfo" type="xs:string">
    <xs:annotation>
      <xs:documentation>Other descriptive information about the project.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="progress">
    <xs:annotation>
      <xs:documentation>The state of the project.</xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="Planned"/>
        <xs:enumeration value="InProgress"/>
        <xs:enumeration value="Complete"/>
        <xs:enumeration value="Unknown"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="legalmandate" type="xs:string">
    <xs:annotation>
      <xs:documentation>The laws or regulations the project is intended to address.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="boundingbox">
    <xs:annotation>
      <xs:documentation>All coordinates to be specified as decimal degrees in the WGS84 datum.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="northlatitude"/>
        <xs:element ref="southlatitude"/>
        <xs:element ref="westlongitude"/>
        <xs:element ref="eastlongitude"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="northlatitude" type="xs:float"/>
  <xs:element name="southlatitude" type="xs:float"/>
  <xs:element name="westlongitude" type="xs:float"/>
  <xs:element name="eastlongitude" type="xs:float"/>
  <xs:element name="projectsubject">
    <xs:annotation>
      <xs:documentation>A topic describing the project, selected from a controlled vocabulary.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="Thesaurus"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="projectactivity">
    <xs:annotation>
      <xs:documentation>The nature of the work undertaken by the project, selected from a controlled vocabulary.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="Thesaurus"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="projecthabitat">
    <xs:annotation>
      <xs:documentation>The habitat or habitats the project is concerned with, selected from a habitat classification scheme.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="Thesaurus"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="projectmethodology">
    <xs:annotation>
      <xs:documentation>The methodology or technique used by this project, selected from a controlled vocabulary.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="Thesaurus"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="projectsize">
    <xs:annotation>
      <xs:documentation>The size or areal footprint of the project.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:float">
          <xs:attribute name="units" use="required"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="taxon">
    <xs:annotation>
      <xs:documentation>A taxon the project is concerned with.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="Thesaurus"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="place">
    <xs:annotation>
      <xs:documentation>The location of the project, selected from a named gazetteer.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="Thesaurus"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="locationdescription">
    <xs:complexType mixed="true">
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="text"/>
            <xs:enumeration value="link"/>
            <xs:enumeration value="XML"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="extension" type="AnyElement">
    <xs:annotation>
      <xs:documentation>Any well-formed XML can be embedded in an extension element.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="metadatastandard" type="xs:string">
    <xs:annotation>
      <xs:documentation>For these project records, this should read "CalEDLN project standard 1.0RC1"</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="metadatadate" type="xs:date">
    <xs:annotation>
      <xs:documentation>The date this metadata record was written.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="metadatacontact" type="Contact">
    <xs:annotation>
      <xs:documentation>Contact information for the author of the metadata.</xs:documentation>
    </xs:annotation>
  </xs:element>
</xs:schema>
 

Powered by Plone, the Open Source Content Management System