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).
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.
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:
ListRecords
and GetRecords
requests is packaged as a Record.
Each record may contain one or more <about>
containers
that provide information about the <metadata>
part of the
record. This document describes a schema for a <rights>
package within an <about>
container that associates a
rights statement with the information in the <metadata>
part of the record. This rights statement may be specified in-line
within a <rights>
package or by-reference via a URL to an
external rights statement.Identify
request contains information about the repository. The response may
contain one or more <description>
containers, that
provide an extensible mechanism for communities to describe their
repositories. This document describes a schema for a <rights>
package within a <description>
container that lists all
the possible rights statements for records disseminated by the repository.
If an implementation returns this <rights>
package within
its response to the Identify
request, all <rights>
packages within <about>
containers in records (returned from the ListRecords
and GetRecords
requests) must reference via a URL one of the <rights>
packages returned from the Identify
request.Details on each of these mechanisms are described in the following sections.
.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:
<rights>
element. The elements of the
rights statement must be defined in a namespace distinct from the OAI
elements and may be subject to validation to external schema.
Otherwise, the nature of the rights statement is undefined by this schema.<rights>
element. There are no
restrictions on the nature of the resource referenced by this URL.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> |
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:
<rights>
package must include all rights
statements applicable to records disseminated by the repository. The
schema provides for this by allowing one or more <rightsStatement>
tags, each of which must have a unique ID and must contain a
rights statement either:
<rights>
element. There are
no restrictions on the nature of the resource referenced by this URL.<rights>
package
within the <description>
element must include all
rights statements applicable to records disseminated by the repository,
the presence of only one rights statement in the <rights>
package has special meaning. A client harvesting from such repository
should assume that all records disseminated by the repository are either:<rightsStatement>
tags in the Identify
response returned by the respective repository. Thus, this URL must be
formatted as baseURL?verb=Identify#rightsStatementID
, where:
baseURL?verb=Identify
is an OAI-PMH Identify request to
the repository that disseminated the record containing the URL
reference.rightsStatementID
is the unique ID of the <rightsStatement>
in the <description> part of the Identify response, where the ID
is specified in the rightsStatementID
attribute of the <rightsStatement>
tag.(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.
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.
2004-05-27: First draft of this document..