<?xml version="1.0" encoding="UTF-8"?>
<!--
This document is available under the Creative Commons CC0 1.0 Universal Public Domain Dedication (http://creativecommons.org/publicdomain/zero/1.0/). 
The Digital Library Federation and Nancy J. Hoebelheinrich, as creators of this document, have waived all rights to it worldwide under copyright law, including 
all related and neighboring rights, to the extent allowed by law. For the full text see http://creativecommons.org/publicdomain/zero/1.0/legalcode.
-->
<!-- CHANGE HISTORY -->
<!-- 2019-03-07: Added CC0 declaration, removed blank lines (Robin Wendler on behalf of the METS Editorial Board) -->
<!-- 2004-06-02: Added target namespace (Nancy J. Hoebelheinrich, Stanford University Libraries) -->
<!-- 2003-05-06: Draft created(Nancy J. Hoebelheinrich, Stanford University Libraries) -->
<xs:schema targetNamespace="http://cosimo.stanford.edu/sdr/metsrights/"
  xmlns="http://cosimo.stanford.edu/sdr/metsrights/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="RightsDeclarationMD" type="RightsDeclareMDTYPE">
    <xs:annotation>
      <xs:documentation>The RightsDeclarationMD Extension Schema allows the documentation of minimal
        administrative metadata about the intellectual rights associated with a digital object or
        its parts, and is to be used as an extension to the Metadata Encoding and Transmission
        Standard (METS). RightsDeclarationMD contains the following top level elements: 1.
        RightsDeclaration: intellectual property rights associated with digital asset or part of a
        digital asset; 2. RightsHolder: person or organization holding some intellectual property
        rights to a given digital asset or part of a digital asset; 3. Context: contains a
        description of specific circumstances associated with who has what permissions and
        constraints. RightsDeclarationMD also contains three attributes, "RIGHTSDECID",
        "RIGHTSCATEGORY" and "OTHERCATEGORYTYPE". "RIGHTSDECID provides a unique identifier for the
        right declaration described. "RIGHTSCATEGORY" specifies whether the resource is COPYRIGHTED,
        LICENSED, in the PUBLIC DOMAIN, CONTRACTUAL, or OTHER which can be more fully described in
        the "OTHERCATEGORYTYPE" attribute. </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RightsDeclareMDTYPE">
    <xs:sequence>
      <xs:element name="RightsDeclaration" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Broad declaration of rights associated with digital asset which would
            provide the public notice to user community of the intellectual property rights
            associated with a given asset or part thereof. Further explanation of specific
            circumstances can be described within the Context element. RightsDeclarationTYPE has no
            attribute. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RightsHolder" type="RightsHolderTYPE" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Context" type="ContextTYPE" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="RIGHTSDECID" type="xs:string" use="optional"/>
    <xs:attribute name="RIGHTSCATEGORY">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="COPYRIGHTED"/>
          <xs:enumeration value="LICENSED"/>
          <xs:enumeration value="PUBLIC DOMAIN"/>
          <xs:enumeration value="CONTRACTUAL"/>
          <xs:enumeration value="OTHER"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="OTHERCATEGORYTYPE" type="xs:string" use="optional"/>
  </xs:complexType>
  <xs:complexType name="RightsHolderTYPE">
    <xs:annotation>
      <xs:documentation> Characteristics of person or institution holding some rights to a given
        digital asset or part thereof. Has two attributes "RIGHTSHOLDERID" used to uniquely identify
        the rights holder, and CONTEXTIDS which provides a way to specifically link one or more
        context situations as described within the CONTEXT element. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="RightsHolderName" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Name of rights holder organization, as identified by the RIGHTSHOLDERID
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RightsHolderComments" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Any comments necessary to explain, not covered
            elsewhere</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RightsHolderContact" type="RightsHolderContactTYPE" minOccurs="0"
        maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="RIGHTSHOLDERID" type="xs:ID" use="optional"/>
    <xs:attribute name="CONTEXTIDS" type="xs:IDREFS" use="optional"/>
  </xs:complexType>
  <xs:complexType name="RightsHolderContactTYPE">
    <xs:annotation>
      <xs:documentation>Information about the contact point for rights holder organization, as
        identified by the RIGHTSHOLDERID. The contact point for a resource may be an agency or
        organization representing the rights holder rather than the rights holder per se. Each
        RightsHolderContactTYPE may contain a RightsHolderContactDesignation,
        RightsHolderContactAddress element, a RightsHolderContactPhone element, and a
        RightsHolderContactEmail element. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="RightsHolderContactDesignation" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Name or title of a contact person or institution holding rights to a
            given digital asset, as identified by the RIGHTSHOLDERID.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RightsHolderContactAddress" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Mailing address of contact person or institution holding rights to a
            given digital asset, as identified by the RIGHTSHOLDERID.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RightsHolderContactPhone" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Telephone number of contact person or institution holding rights to a
            given digital asset or part thereof, as identified by the RIGHTSHOLDERID. The PHONETYPE
            attribute has enumerated values of "FAX", "BUSINESS", and "MOBILE".</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="PHONETYPE">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:enumeration value="FAX"/>
                    <xs:enumeration value="BUSINESS"/>
                    <xs:enumeration value="MOBILE"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="RightsHolderContactEmail" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Email address of contact person or institution holding rights to a
            digital asset or part thereof, as identified by the RIGHTSHOLDERID. </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ContextTYPE">
    <xs:annotation>
      <xs:documentation>The "Context" element describes who has what permissions and contraints
        within a specific set of circumstances. "Context" includes four attributes, " CONTEXTID" an
        optional attribute which can be used to assign a unique identifier for the circumstance
        described, "RIGHTSHOLDERIDS", an optional attribute which provides a means to specifically
        list the unique identifiers of one or more RightsHolders who are involved in the Context
        scenario to be described, "CONTEXTCLASS", and "OTHERCONTEXTTYPE". By means of the required
        "CONTEXTCLASS" attribute, the group is defined to which a given context relates. Enumerated
        values for this attribute include "ACADEMIC USER", "GENERAL PUBLIC","REPOSITORY MGR",
        "MANAGED GRP", "INSTITUTIONAL AFFILIATE", "OTHER". Local extensions to "OTHER" context
        classes can be described in the "OTHERCONTEXTTYPE" attribute, as desired. "Context" also
        contains three elements which further describe a specified context. The element "UserName"
        allows the naming of the typical user or group who would use the digital object within the
        described context. The kind of user being named can be described by means of the attribute
        "USERTYPE" which has values "INDIVIDUAL", "GROUP", "BOTH", or "UNDEFINED". The element
        "Permissions" describes a set of uses to which a digital object or part thereof can be put
        as defined by the rights holder in a given context. "Permissions" has nine attributes which
        describe the type of permissions including "DISCOVER", "DISPLAY", "COPY", "DUPLICATE",
        "MODIFY", "DELETE", "PRINT", "OTHER", and "OTHERPERMITTYPE" which allows the addition of
        local types of permissions not included in the general list. Any restrictions that need to
        be placed upon a set of permissions are described by the use of the "Constraints" element.
        The "Constraints" element contains a "ConstraintDescription" sub-element in which a
        narrative explanation can be given about the constraint. The "Constraints" element has an
        attribute "CONSTRAINTTYPE" which characterize the type of restrictions imposed upon the
        users within a given context. Enumerated values for the CONSTRAINTTYPE attributes include
        "QUALITY", "FORMAT", "UNIT", "WATERMARK", "PAYMENT", "COUNT", "ATTRIBUTION", "RE-USE",
        "TIME", "TRANSFERPERMISSIONS", "OTHER". Local extensions to "OTHER" can be described in the
        "OTHERCONSTRAINTTYPE" attribute, as desired. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="UserName" type="UserNameTYPE" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Permissions" type="PermissionsTYPE" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Constraints" type="ConstraintsTYPE" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="CONTEXTID" type="xs:ID" use="optional"/>
    <xs:attribute name="RIGHTSHOLDERIDS" type="xs:IDREFS" use="optional"/>
    <xs:attribute name="CONTEXTCLASS" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ACADEMIC USER"/>
          <xs:enumeration value="GENERAL PUBLIC"/>
          <xs:enumeration value="REPOSITORY MGR"/>
          <xs:enumeration value="MANAGED GRP"/>
          <xs:enumeration value="INSTITUTIONAL AFFILIATE"/>
          <xs:enumeration value="OTHER"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="OTHERCONTEXTTYPE" type="xs:string" use="optional"/>
  </xs:complexType>
  <xs:complexType name="UserNameTYPE">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="USERTYPE">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="INDIVIDUAL"/>
              <xs:enumeration value="GROUP"/>
              <xs:enumeration value="BOTH"/>
              <xs:enumeration value="UNDEFINED"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="PermissionsTYPE">
    <xs:attribute name="DISCOVER" type="xs:boolean">
      <!--Resource is available for searching or other discovery activities.  -->
    </xs:attribute>
    <xs:attribute name="DISPLAY" type="xs:boolean">
      <!--Rendering, playing, executing the resource.-->
    </xs:attribute>
    <xs:attribute name="COPY" type="xs:boolean">
      <!--Making verbatim copy  for purposes of re-use of whole or part of the resource and creation of new resource.  -->
    </xs:attribute>
    <xs:attribute name="DUPLICATE" type="xs:boolean">
      <!--Make exact copy of resource for file or repository management purposes.-->
    </xs:attribute>
    <xs:attribute name="MODIFY" type="xs:boolean">
      <!--Annotate, edit, excerpt, embed, extract resource for purposes of re-use or preservation.-->
    </xs:attribute>
    <xs:attribute name="DELETE" type="xs:boolean">
      <!--Remove resource from repository for purposes of resource or repository management.-->
    </xs:attribute>
    <xs:attribute name="PRINT" type="xs:boolean">
      <!--Rendering the resource onto paper or hard copy.-->
    </xs:attribute>
    <xs:attribute name="OTHER" type="xs:boolean"/>
    <xs:attribute name="OTHERPERMITTYPE" type="xs:string" use="optional"/>
    <!--Allows for localized permission types.  -->
    <!--Naming of localized permission types.-->
  </xs:complexType>
  <xs:complexType name="ConstraintsTYPE">
    <xs:sequence>
      <xs:element name="ConstraintDescription" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="CONSTRAINTTYPE">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="QUALITY"/>
          <xs:enumeration value="FORMAT"/>
          <xs:enumeration value="UNIT"/>
          <xs:enumeration value="WATERMARK"/>
          <xs:enumeration value="PAYMENT"/>
          <xs:enumeration value="COUNT"/>
          <xs:enumeration value="RE-USE"/>
          <xs:enumeration value="ATTRIBUTION"/>
          <xs:enumeration value="TIME"/>
          <xs:enumeration value="TRANSFERPERMISSIONS"/>
          <xs:enumeration value="OTHER"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="OTHERCONSTRAINTTYPE" type="xs:string" use="optional">
      <!--Naming of localized constraint types.-->
    </xs:attribute>
  </xs:complexType>
</xs:schema>
