<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:annotation>
    <xs:documentation>Original Designers/Developers: Ken Sall (xml@kensall.com) and Judith Newton (jnewton@ashcomp.com).</xs:documentation>
    <xs:documentation>Last Modified: March 11, 2005.</xs:documentation>
  </xs:annotation>
  <xs:annotation>
    <xs:documentation>Modified by: Owen.Ambur@verizon.net</xs:documentation>
    <xs:documentation>Last Modified: April 25, 2008.</xs:documentation>
  </xs:annotation>

  <xs:element name="Collection" type="CollectionType">
    <xs:annotation>
      <xs:documentation>Root element.</xs:documentation>
      <xs:documentation>This XML Schema is a basic subset of the RDF-based SKOS (Simple Knowledge Organization System) being developed by the W3C. SKOS is informed by ISO 2788, as is this XSD. Our XSD is an intermediate schema to be used by the US Federal Government until SKOS becomes a W3C Recommendation. According to the W3C, &quot;SKOS Core provides a model for expressing the basic structure and content of concept schemes (thesauri, classification schemes, subject heading lists, taxonomies, terminologies, glossaries and other types of controlled vocabulary). The SKOS Core Vocabulary is an application of the Resource Description Framework (RDF), that can be used to express a concept scheme as an RDF graph. Using RDF allows data to be linked to and/or merged with other RDF data by semantic web applications.&quot;  See SKOS Core Vocabulary Specification [http://www.w3.org/2004/02/skos/core/spec/],  SKOS Extensions Vocabulary Specification[http://www.w3.org/2004/02/skos/extensions/spec/] and more generally the SKOS Project Home Page [http://www.w3.org/2004/02/skos/] .
      </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="CollectionType">
    <xs:sequence>
      <xs:element name="Concept" type="ConceptType" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ConceptType">
    <xs:annotation>
      <xs:documentation>Represents an abstract idea or notion; a unit of thought. This is essentially a term with possibly related terms. Element names in all UPPERCASE represent properties not found in SKOS. All other element names correspond exactly to the W3C SKOS Core Vocabulary Specification Working Draft dated March 3, 2005. [Thie SKOS Working Draft is subject to change; it was actively changing at the time of this initial XSD development.] Note that the only required element is prefLabel, the preferred name for the concept. In practise, we anticipate that most instances will also have a definition, but this is not explicitly required since a true thesaurus does not always define terms.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="prefLabel" type="xs:string">
        <xs:annotation>
          <xs:documentation>Preferred name for this concept. This is typically thought of as the name of the term, sometimes called the designator in ISO specifications. NOTE: In SKOS, no two concepts in the same concept scheme may have the same value.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="altLabel" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Alternate name for this concept. Spelling variants and irregular plural/singular forms may be included among the alternative labels for a concept.  NOTE: In a departure from the SKOS Core Vocabulary Specification Working Draft,  term authors SHOULD NOT place abbreviations or acronyms here.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ABBREVIATION_OR_ACRONYM" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Although the SKOS Core Vocabulary Specification Working Draft suggests that altLabel may include abbreviations and acronyms for the concept, our design calls for placing abbreviations and acronyms in this separate element. We believe this will enable easy filtering  or querying to construct abbreviation and acronym lists that often appear in government documents.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="definition" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>A statement or formal explanation of the meaning of a concept. Although this is not required in this XSD, most instances are expected to include a definition.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="subject" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>A concept that is the subject of the current term. This may be one of the "broader" terms. Ex: Subject of Toyota Camry is automobiles.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="scopeNote" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>A note that helps to clarify the meaning of a concept. This could be contextual information, a particular domain, or some other constraint to bound the scope of the concept, perhaps to distinguish it from the same term (prefLabel) used in a different scope. While ISO 2788 allows definitions to appear in the scopeNote, we are following the SKOS approach of using the separate definition element for that purpose.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SOURCE" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Source of the definition. Official document names and URLs are preferred, but specific names of people or agencies are acceptable. Please follow the biblographic citation conventions that we are documenting elsewhere. [TBD where] NOTE: This element does not appear in the SKOS Core Vocabulary Specification Working Draft. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="example" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>An example of the use of the concept, such as in a sentence.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="narrower" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>A concept that is more specific in meaning. Narrower concepts are typically rendered as children  in a concept hierarchy (tree).
Ex: Bald eagle is narrower than eagle; eagle is narrower than bird.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="broader" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>A concept that is more general in meaning. Broader concepts are typically rendered as parents in a concept hierarchy (tree).
Ex: Bird is broader than eagle; eagle is broader than bald eagle.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="related" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>A concept with which there is an associative semantic relationship. Ex: Nest, flying, and wings are all concepts that are related to the concept bird.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="semanticRelation" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>NOTE: Do not use for now! This property should not be used directly, but as a super-property for all properties denoting a relationship of meaning between concepts.</xs:documentation>
        </xs:annotation>
        <!-- See http://www.w3.org/2004/02/skos/extensions/spec/ (SKOS Extensions). 
        We could implement this as an enumeration of these values, but the associated term cannnot be specified this way:
        broaderGeneric
        broaderInstantive
        broaderPartitive
        narrowerGeneric
        narrowerInstantive
        narrowerPartitive
        relatedHasPart
        relatedPartOf
      -->
      </xs:element>
      <xs:element name="changeNote" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>A note about a modification to a concept.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="editorialNote" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>A note for an editor, translator or maintainer of the vocabulary.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="REVIEW" type="REVIEW_TYPE" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>CAUTION: The whole notion of REVIEW needs more thought.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="id" type="xs:ID">
      <xs:annotation>
        <xs:documentation>Eventually this will be a system-generated unique identifier or perhaps a true UID.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <!--  ============================================================================================================== -->
  <xs:complexType name="REVIEW_TYPE">
    <xs:annotation>
      <xs:documentation>CAUTION: This complexType is still very much a strawman and is certain to change. Do NOT use for now.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="REVIEW_DATE" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date that the concept and its children elements were reviewed.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="REVIEW_STATUS" type="REVIEW_STATUS_TYPE">
        <xs:annotation>
          <xs:documentation>A note about a modification to a concept.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="REVIEW_BODY" type="REVIEW_BODY_TYPE">
        <xs:annotation>
          <xs:documentation>A note about a modification to a concept.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="REVIEW_CONTACT_NAME" type="xs:string">
        <xs:annotation>
          <xs:documentation>First name followed by last name of reviewer. Could potentially add a REVIEWER_AGENCY element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="REVIEW_CONTACT_EMAIL" type="xs:string">
        <xs:annotation>
          <xs:documentation>Email address of person to contact about the review.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="REVIEW_STATUS_TYPE">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Pending"/>
      <xs:enumeration value="Deferred"/>
      <xs:enumeration value="Rejected"/>
      <xs:enumeration value="Approved"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="REVIEW_BODY_TYPE">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Individual"/>
      <xs:enumeration value="Task Group"/>
      <xs:enumeration value="StratML Committee"/>
	  <xs:enumeration value="AIIM"/>
	  <xs:enumeration value="ANSI"/>
	  <xs:enumeration value="ISO"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
