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.
Size 19.5 kB - File type text/xmlFile 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>
Click here to get the file