OAI logo

Implementation Guidelines for the Open Archives Initiative Protocol for Metadata Harvesting

Conveying rights expressions in the OAI-PMH framework

Protocol Version 2.0 of 2002-06-14
Document Version 2004/05/27T16:43:00Z

http://www.openarchives.org/OAI/2.0/guidelines-rights.htm

DRAFT VERSION

Editors

The OAI Executive:
Carl Lagoze <lagoze@cs.cornell.edu> -- Cornell University - Computer Science
Herbert Van de Sompel <herbertv@lanl.gov> -- Los Alamos National Laboratory - Research Library

From the OAI Technical Committee:
Michael Nelson <m.l.nelson@larc.nasa.gov> -- NASA - Langley Research Center
Simeon Warner <simeon@cs.cornell.edu> -- Cornell University - Computer Science

This document is one part of the Implementation Guidelines that accompany the Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH).

1. Introduction and Scope

The Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH) provides a mechanism for data providers to expose XML-formatted data for harvesting over the web.  The protocol is most frequently used by content repositories to expose XML-formatted metadata that describes repository contents.  This metadata can then be consumed by services (e.g., search) that process (e.g. index) that metadata for users.  However, a number of alternative usage scenarios for OAI-PMH are possible and have been implemented.  These include implementation by aggregators that collect metadata from other sources (frequently via OAI-PMH), exposure of other forms of metadata (not content oriented) such as usage logs, and access to content itself that is expressed in XML. 

Regardless of the usage scenario for OAI-PMH, either exposure of traditional metadata or full content, data providers often want to associate rights expressions with the exposed (meta)data.  In their simplest forms these rights expressions are statements in XML format that specify how the data may be used including how it may be shared, modified, and used as the basis for derivative products (e.g., enhanced metadata).  These simple rights statements are one instance in a suite of rights management and access control techniques including restricting harvesting to authorized parties, controlling the eventual use of harvested (meta)data through technical means, and specifying and controlling the use of content referenced by the harvested metadata. 

This specification  is limited in scope to the first case: it provides the syntax for packaging within the OAI-PMH  responses rights statements, formatted in XML, that apply to the (meta)data harvested via the OAI-PMH.  The specification makes use of existing information containers within OAI-PMH, thus making no changes to the core protocol and maintaining compatibility with all existing OAI-PMH implementations.

The mechanisms described in this specification are not tied to any particular rights expression language.  Examples throughout this document make use of Creative Commons license statements, but the use of this specific language is for illustrative purposes only.  The only restriction imposed by the specified technique is the use of XML as the syntax for expressing conditions of use.

In this document the key words "must", "must not", " required", "shall", "shall not", "should", " should not", "recommended", "may", and "optional " in bold face are to be interpreted as described in RFC 2119 . An implementation is not conformant if it fails to satisfy one or more of the "must" or "required" level requirements for the protocols it implements.

2. Granularity of rights statements

The OAI-PMH data model includes a number of entities, some of which aggregate other entities.  These entities are listed below, with the aggregating entities in bold-face, and illustrated in the figure below:

This document specifies the mechanisms by which rights statements can be associated with two of these entities:

Details on each of these mechanisms are described in the following sections.

3. XML schema to package a rights statement in the "about" part of a record

.The schema shown below provides the format for encapsulating a single <rights> statement within an <about> container associated with a record returned from a ListRecords and GetRecords request.  The schema provides two mutually exclusive alternatives for specifying the rights statement:

In both cases, the rights statement (either explicit or referenced) applies to the contents of the <metadata> element of the record (rather than to any resource referenced by the contents of the <metadata> element).

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.openarchives.org/OAI/2.0/Rights/Record" 
    xmlns="http://www.openarchives.org/OAI/2.0/Rights/Record" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="rights" type="rightsStatementType"/>
  <xs:complexType name="rightsStatementType">
    <xs:choice>
      <xs:element name="rightsReference">
        <xs:complexType>
          <xs:attribute name="ref" type="xs:anyURI" use="required"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="rightsDefinition">
        <xs:complexType>
          <xs:sequence>
            <xs:any namespace="##other"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:choice>
  </xs:complexType>
</xs:schema>
This Schema is available at http://www.openarchives.org/OAI/2.0/RecordRightsPackage.xsd

The following example shows the use of this <rights> container to package an in-line rights statement.  The rights statement listed in this example is the RDF/XML for the Creative Commons license that can be displayed in human-readable form at http://creativecommons.org/licenses/by/2.0/.  

<about>
  <rights xmlns="http://www.openarchives.org/OAI/2.0/Rights/Record"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/Rights/Record
      http://www.openarchives.org/OAI/2.0/RecordRightsPackage.xsd">
    <rightsDefinition>
        <rdf:RDF xmlns="http://web.resource.org/cc/" 
           xmlns:dc="http://purl.org/dc/elements/1.1/" 
           xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <Work rdf:about="">
            <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text"/>
            <license rdf:resource="http://creativecommons.org/licenses/by/2.0/"/>
          </Work>
          <License rdf:about="http://creativecommons.org/licenses/by/2.0/">
            <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
            <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
            <requires rdf:resource="http://web.resource.org/cc/Notice"/>
            <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
            <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
          </License>
        </rdf:RDF>
      </rightsDefinition>
  </rights>
</about>
 

The following example shows the use of this <rights> container to package a by-reference rights statement.  

<about>
  <rights xmlns="http://www.openarchives.org/OAI/2.0/Rights/Record"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/Rights/Record
      http://www.openarchives.org/OAI/2.0/RecordRightsPackage.xsd">
    <rightsReference ref="http://creativecommons.org/licenses/by/2.0/"/>
  </rights>
</about>
 

4. XML schema to package rights statements in the "description" part of an Identify response

Implementations may include a <rights> package within the <description> element returned as part of an Identify response.  The restrictions on the use of this optional package are as follows:

(Carl: Discussion point here.  I think major bullet two above probably should be talked about.  I think we might have intended that the presence of a single <description> rights statement means that all records are covered by this statement.  However, to do that we must say that "if a <rights> package is present in  the <description> container then all records must have a <rights> package that does a by-ref to that repository rights".  Do we mean that?  Right now as written that is not enforced and then we end up with the two sub-bullets in major bullet two above)

The schema for this optional <rights> package is:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.openarchives.org/OAI/2.0/Rights/Repository" 
    xmlns="http://www.openarchives.org/OAI/2.0/Rights/Repository" 
    xmlns:recRights="http://www.openarchives.org/OAI/2.0/Rights/Record" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:import namespace="http://www.openarchives.org/OAI/2.0/Rights/Record" 
    schemaLocation="http://www.openarchives.org/OAI/2.0/RecordRightsPackage.xsd"/>
  <xs:element name="rights">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="rightsStatement" type="rightsStatementType" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="rightsStatementType">
    <xs:complexContent>
      <xs:extension base="recRights:rightsStatementType">
        <xs:attribute name="rightsStatementID" type="xs:ID" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:schema>
This Schema is available at http://www.openarchives.org/OAI/2.0/DescriptionRightsPackage.xsd

The following example shows the use of this <rights> container within a <description> element.

<Description>
  <rights xmlnsi="http://www.openarchives.org/OAI/2.0/Rights/Repository" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:recRights="http://www.openarchives.org/OAI/2.0/Rights/Record"  
    xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/Rights/Repository 
      http://www.openarchives.org/OAI/2.0/DescriptionRightsPackage.xsd">
    <rightsStatement rightsStatementID="all">
      <recRights:rightsDefinition>
        <rdf:RDF xmlns="http://web.resource.org/cc/" 
          xmlns:dc="http://purl.org/dc/elements/1.1/" 
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <Work rdf:about="">
            <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text"/>
            <license rdf:resource="http://creativecommons.org/licenses/by/2.0/"/>
          </Work>
          <License rdf:about="http://creativecommons.org/licenses/by/2.0/">
            <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
            <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
            <requires rdf:resource="http://web.resource.org/cc/Notice"/>
            <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
            <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
          </License>
        </rdf:RDF>
      </recRights:rightsDefinition>
    </rightsStatement>
    <rightsStatement rightsStatementID="noncommercial">
      <recRights:rightsDefinition>
        <rdf:RDF xmlns="http://web.resource.org/cc/" 
          xmlns:dc="http://purl.org/dc/elements/1.1/" 
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <Work rdf:about="">
            <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text"/>
            <license rdf:resource="http://creativecommons.org/licenses/by-nc/2.0/"/>
          </Work>
          <License rdf:about="http://creativecommons.org/licenses/by-nc/2.0/">
            <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
            <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
            <requires rdf:resource="http://web.resource.org/cc/Notice"/>
            <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
            <prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/>
            <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
          </License>
        </rdf:RDF>
      </recRights:rightsDefinition>
    </rightsStatement>
    <rightsStatement rightsStatementID="nomods">
      <recRights:rightsReference ref="http://creativecommons.org/licenses/by-nd/2.0/"/>
    </rightsStatement>
  </rights>
</Description>
 

The following example demonstrates the form of an <about> container associated with a record disseminated by a repository that returns the <description> container shown above.  The example assumes a baseURL for this repository of http://an.oa.org

<about>
  <rights xmlns="http://www.openarchives.org/OAI/2.0/Rights/Record"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/Rights/Record
  http://www.openarchives.org/OAI/2.0/RecordRightsPackage.xsd">
    <rightsReference ref="http://an.oa.org?verb=Identify#noncommerical"/>
  </rights>
</about>
 

This <about> container references the <rightsStatement> labeled "noncommercial" in the <Description> container of the Identify response from the repository, and associates that rights statement with the contents of the <metadata> element of the record in which the <about> container is packaged.

Acknowledgements

Support for the development of the OAI-PMH and for other Open Archives Initiative activities comes from the Digital Library Federation, the Coalition for Networked Information, and from the National Science Foundation through Grant No. IIS-9817416. Individuals who have played a significant role in the development of OAI-PMH version 2.0 are acknowledged in the protocol document.

Document History

2004-05-27: First draft of this document..