The Open Archives Initiative Protocol for Metadata Harvesting |
|
Protocol Version 2.0 of 2002-06-14
|
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
Table of Contents
1. Introduction
2. Definitions and Concepts
2.1. Harvester
2.2. Repository
2.3. Item
2.4. Unique Identifier
2.5. Record
2.5.1 Deleted records
2.6. Set
2.7. Selective Harvesting
2.7.1 Selective Harvesting and Datestamps
2.7.2 Selective Harvesting and Sets
3. Protocol Features
3.1. HTTP Embedding of OAI-PMH requests
3.1.1. HTTP Request Format
3.1.2. HTTP Response Format
3.1.3. Response Compression
3.2. XML Response Format
3.2.1. XML Schema for Validating Responses to OAI-PMH Requests
3.3. UTCdatetime
3.3.1. UTCdatetime in Protocol Requests
3.3.2. UTCdatetime in Protocol Responses
3.4. metadataPrefix and Metadata Schema
3.5. Flow Control
3.5.1 Idempotency of resumptionTokens
3.6. Error and Exception Conditions
4. Protocol Requests and Responses
4.1. GetRecord
4.2. Identify
4.3. ListIdentifiers
4.4. ListMetadataFormats
4.5. ListRecords
4.6. ListSets
5. Dublin Core
6. Implementation Guidelines
Acknowledgements
Document History
The Open Archives Initiative Protocol for Metadata Harvesting (referred to as the OAI-PMH in the remainder of this document) provides an application-independent interoperability framework based on metadata harvesting. There are two classes of participants in the OAI-PMH framework:
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.
This document refers in several places to "community-specific" practices to which individual protocol implementations may conform. These practices are described in an accompanying Implementation Guidelines document.
A harvester is a client application that issues OAI-PMH requests. A harvester is operated by a service provider as a means of collecting metadata from repositories.
A repository is a network accessible server that can process the 6 OAI-PMH requests in the manner described in this document. A repository is managed by a data provider to expose metadata to harvesters. To allow various repository configurations, the OAI-PMH distinguishes between three distinct entities related to the metadata made accessible by the OAI-PMH.
An item is a constituent of a repository from which metadata about a resource can be disseminated. An item is conceptually a container that stores or dynamically generates metadata about a single resource in multiple formats, each of which can be harvested as records via the OAI-PMH. Each item has an identifier that is unique within the scope of the repository of which it is a constituent.
A unique identifier unambiguously identifies an item within a repository; the unique identifier is used in OAI-PMH requests for extracting metadata from the item. Items may contain metadata in multiple formats. The unique identifier maps to the item, and all possible records available from a single item share the same unique identifier.
The format of the unique identifier must correspond to that of the
URI (Uniform Resource Identifier)
syntax. Individual communities may develop community-specific
URI schemes for coordinated
use across repositories. The scheme component of the unique identifiers
must not correspond to that of a recognized URI scheme unless the identifiers
conform to that scheme. Repositories may implement the
oai-identifier
syntax described in the accompanying
Implementation Guidelines
document.
Unique identifiers play two roles in the protocol:
ListIdentifiers
and
ListRecords
requests.metadataPrefix
,
is used in the GetRecord
request as a means of requesting a record
in a specific metadata format from an item.Note that the identifier described here is not that of a
resource. The nature of a resource identifier is outside the scope
of the OAI-PMH. To facilitate access to the resource associated with
harvested metadata, repositories should use an element in metadata
records to establish a linkage between the record (and the identifier of its
item) and the identifier (URL, URN, DOI, etc.) of the associated resource. The
mandatory Dublin Core format provides the identifier
element
that should be used for this purpose.
A record is metadata expressed in a single format. A record is returned in
an XML-encoded byte stream in response to an OAI-PMH request for metadata from
an item. A record is identified unambiguously by the combination of the unique identifier of the item from which the record
is available, the metadataPrefix
identifying the metadata format of the record, and the datestamp
of the record. The XML-encoding of records is organized into the following parts:
status
attribute with a value
of deleted
indicates the withdrawal of availability of the specified
metadata format for the item, dependent on the repository support for
deletions.metadataPrefix
-- in the
GetRecord
or ListRecords
request that
produces the record. The ListMetadataFormats
request returns the
list of all metadata formats available from a repository, or for a specific
item (which can be specified as an argument to the
ListMetadataFormats
request).The following example shows an XML-encoding of a record and its components:
cs
and math
,
indicating that the item from which the record was disseminated
belongs to two sets of the repository;oai_dc:dc
- with the nested tags belonging to the corresponding
metadata format - in the example, Dublin Core elements such as dc:title
. Note that the
root tag within the metadata part includes a number of attributes that are
common to all XML documents that use namespaces and schema
validity:
xmlns
. Namespace declarations within the metadata part fall into two categories:
xmlns
prefixed attributes that define the correspondence between
a metadata format prefix -- e.g. dc
-- and the namespace
URI (as defined by the XML
namespace specification ) of the respective metadata format.
Some metadata formats employ tags from multiple namespaces, requiring
multiple xmlns
prefixed attributes -- in the example,
there are declarations for both oai_dc
and dc
.xmlns:xsi
, the value of which must always be the URI
shown in the example, which is the namespace URI for XML schema.xsi:schemaLocation
-- the value of which is a URI, URL pair;
the first is the namespace URI (as defined by the
XML
namespace specification) of the metadata that follows in this part, and
the second is the URL of the XML schema for validation of the metadata that
follows.oai
_provenance.xsd
schema,
described in the accompanying Implementation
Guidelines document, as a means to provide information regarding the
origins of the metadata part of the record. Note that the root element
within each about part has the same structure as the root element in the
metadata part.
<header> <identifier>oai:arXiv:cs/0112017</identifier> <datestamp>2002-02-28</datestamp> <setSpec>cs</setSpec> <setSpec>math</setSpec> </header> <metadata> <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:title>Using Structural Metadata to Localize Experience of Digital Content</dc:title> <dc:creator>Dushay, Naomi</dc:creator> <dc:subject>Digital Libraries</dc:subject> <dc:description>With the increasing technical sophistication of both information consumers and providers, there is increasing demand for more meaningful experiences of digital information. We present a framework that separates digital object experience, or rendering, from digital object storage and manipulation, so the rendering can be tailored to particular communities of users. </dc:description> <dc:description>Comment: 23 pages including 2 appendices, 8 figures</dc:description> <dc:date>2001-12-14</dc:date> <dc:type>e-print</dc:type> <dc:identifier>http://arXiv.org/abs/cs/0112017</dc:identifier> </oai_dc:dc> </metadata> <about> <provenance xmlns="http://www.openarchives.org/OAI/2.0/provenance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance http://www.openarchives.org/OAI/2.0/provenance.xsd"> <originDescription harvestDate="2002-02-02T14:10:02Z" altered="true"> <baseURL>http://the.oa.org</baseURL> <identifier>oai:r2:klik001</identifier> <datestamp>2002-01-01</datestamp> <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace> </originDescription> </provenance> </about> |
If a record is no longer available then it is said to be deleted.
Repositories must declare one of three levels of support for
deleted records in the deletedRecord
element of the
Identify response:
no
- the repository does not maintain information about deletions.
A repository that indicates this level of support must not reveal
a deleted status in any response.persistent
- the repository maintains information about deletions
with no time limit. A repository that indicates this level of support
must persistently keep track of the full history of deletions and
consistently reveal the status of a deleted record over time.transient
- the repository does not guarantee that a list of
deletions is maintained persistently or consistently. A repository that
indicates this level of support may reveal a deleted status
for records.If a repository does not keep track of deletions then such records
will simply vanish from responses and there will be no way for a
harvester to discover deletions through continued incremental harvesting.
If a repository does keep track of deletions then the datestamp of
the deleted record must be the date and time that it was deleted.
Responses to GetRecord
request
for a deleted record must then include a
header
with the attribute
status="deleted"
, and must not include
metadata
or about
parts.
Similarly, responses to selective harvesting
requests with set membership and date range criteria that include deleted records
must include the headers of these records. Incremental harvesting will thus
discover deletions from repositories that keep track of them.
Deleted status is a property of individual records. Like a normal record, a deleted record is identified by a unique identifier, a metadataPrefix and a datestamp. Other records, with different metadataPrefix but the same unique identifier, may remain available for the item.
A set is an optional construct for grouping items for the purpose
of selective
harvesting. Repositories may organize items into
sets. Set organization may be flat, i.e. a simple list, or hierarchical.
Multiple hierarchies with distinct, independent top-level nodes are allowed.
Hierarchical organization of sets is expressed in the syntax of the setSpec
parameter as described
below. When a repository defines a set organization it must include set
membership information in the headers
of items returned in response to the ListIdentifiers
, ListRecords
and GetRecord
requests.
Each node in a set organization of a repository has:
setSpec
-- a colon [:
] separated list
indicating the path from the root of the set hierarchy to the respective
node. Each element in the list is a string consisting of any valid
URI unreserved characters,
which must not contain any colons [:
]. Since a setSpec
forms a unique
identifier for the set within the repository, it must be unique for
each set. Flat set organizations have only sets with setSpec
that do not contain
any colons [:
].setName
-- a short
human-readable string naming the set.setDescription
--
an optional and repeatable container that may hold
community-specific XML-encoded data about the set; the accompanying
Implementation
Guidelines document provides suggestions regarding the usage of this
container.The following is an example of a possible set hierarchy in a repository:
The following table shows a possible representation of the above set hierarchy
by means of setName
and respective setSpec
values.
setName |
setSpec |
Institutions | institution |
Oceanside University of Nebraska |
institution:nebraska |
Valley View University of Florida |
institution:florida |
Subjects | subject |
Existential Kenesiology |
subject:kenesiology |
Quantum Psychology |
subject:quantum |
An item may be organized in one set, several sets, or no sets at all.
In the example above, it is conceivable that an individual item is organized in
both subject
and institution:florida
. A
harvester should not assume that harvesting every set in a repository
will retrieve metadata from all items in the repository. Items may also
be assigned to interior nodes in the set hierarchy.
The actual meaning of a set or of the arrangement of sets in a repository is
not defined in the protocol. It is expected that individual communities
may formulate well-defined set configurations with perhaps a controlled
vocabulary for setNames
and setSpec
, and may even
develop mechanisms for exposing these to harvesters. For example, a group
of cooperating e-print archives in a specific discipline may agree on sets that
arrange metadata in their repositories based on a controlled subject
classification.
A repository's set hierarchy is represented in the protocol via
setSpecs
. ListSets
returns a list indicating the configuration of sets in a repository.
Each member of this list must include a setSpec
and a setName
and may include a
setDescription
. ListRecords
and ListIdentifiers
requests
may include an optional set
argument,
the value of which is a setSpec
, to specify
the target set for selective harvesting. In the
previous example of a set hierarchy,
the setSpec
institution:nebraska
could be used
in a request to return only those records that are disseminated from items
organized in the set represented by this setSpec
.
Five issues should be noted here:
ListIdentifiers
,
ListRecords
and
GetRecord
requests.
The list of setSpec
elements should include only the minimum number
of setSpec
elements required to specify the set membership. Using
the previous example of a set hierarchy, the header for an item organized in
set institution:florida
should not include setSpec
institution
since that is implied by the setSpec
institution:florida
.setSpec
arguments may return the same record(s).ListRecords
requests
with all possible setSpecs
is not guaranteed to return all records
in the repository. The only guaranteed methods of harvesting all records or headers
are ListRecords
or
ListIdentifiers
requests with no setSpec
argument.setSpec
is used as an argument, the response
must include records or headers from all items in the set
specified by the setSpec
, and all records or headers
from items in sets that are descendant from the specified set. Using the
previous example of a set hierarchy,
a setSpec
of institution
to the
ListRecords
request will return
all records from metadata organized within the set with a
setSpec
value equal to institution
and
within the descendent sets with setSpec values equal to
institution:florida
and institution:nebraska
.Selective harvesting allows harvesters to limit harvest requests to portions of the metadata available from a repository. The OAI-PMH supports selective harvesting with two types of harvesting criteria that may be combined in an OAI-PMH request: datestamps and set membership.
Harvesters may use datestamps to harvest only those records that
were created, deleted, or modified within a specified date range. To specify
datestamp-based selective harvesting, datestamps are included as values of the
optional arguments, from
and until
, in the
ListRecords
and
ListIdentifiers
requests. Harvesting is restricted to the range specified by the from
and until
arguments, extending back
to the earliest datestamp if from
is omitted, and forward to the most recent datestamp if until
is omitted. Range limits
are inclusive: from
specifies a bound that must be interpreted as "greater
than or equal to", until
specifies a bound that must be interpreted as "less
than or equal to". Therefore, the from
argument must be less than or equal to the until
argument. Otherwise, a repository must issue a badArgument
error.
Repositories must support selective harvesting with the from
and until
arguments expressed at day granularity. Optional support
for seconds granularity is indicated in the response to the
Identify
request. The value of datestamps in both requests and responses
must comply to the specifications for
UTCdatetime in this document. A repository must update
the datestamp of a record if a change occurs, the result of which would be a
change to the metadata part of the XML-encoding
of the record. Such changes include, but are not limited to, changes to the
metadata of the record, changes to the metadata format of the record, introduction
of a new metadata format, termination of support for a metadata format, etc.
Datestamp ranges for selective harvesting are expressed in the from
and until
arguments that may
be submitted in the ListRecords
and ListIdentifiers
requests.
Repositories must use the following rules to create a
ListRecords
response matching the specified datestamp range according to the type of change
that occurred within the repository. The response to a
ListIdentifiers
request follows the same rules
but is abbreviated to include only headers rather than records.
metadataPrefix
argument,
which have changed within the bounds of the from
and until
arguments.metadataPrefix
argument,
that have become available from the repository within the bounds of the
from
and until
arguments.metadataPrefix
argument,
which have been withdrawn from the repository within the bounds of the
from
and until
arguments.
Deleted status is indicated via the status attribute of the
header element and no metadata is included.Every header returned by the GetRecord
,
ListRecords
or ListIdentifiers
requests contains a datestamp, which reflects the most recent date and
time of the creation, modification, or deletion according to the rules defined
above.
Harvesters may specify set membership
as a criteria for selective harvesting. To specify set-based selective
harvesting, a setSpec
is included as the
value of the optional set
argument to the
ListRecords
and ListIdentifiers
requests, thereby specifying selective harvesting of records from items within
the respective set.
When a setSpec
is used
as an argument, the response must include:
metadataPrefix
argument,
or headers thereof in the case of deleted records, available from those items
in the set specified by the setSpec;
metadataPrefix
argument,
or headers thereof in the case of deleted records, available from those items
in sets that are descendant from the specified set.OAI-PMH requests must be submitted using either the HTTP GET
or
POST
methods. POST
has the advantage of
imposing no limitations on the length of arguments. Repositories must
support both the GET
and
POST
methods. There is a
single base URL for all requests. The base URL specifies the Internet host and
port, and optionally a path, of an HTTP server acting as a
repository. Repositories expose their base URL as the value of the
baseURL
element in the Identify
response. Note that
the composition of any path is determined by the configuration of the
repository's HTTP server.
In addition to the base URL, all requests consist of a list of keyword
arguments, which take the form of key=value
pairs. Arguments may appear in any order and multiple
arguments must be separated by ampersands [&
]. Each OAI-PMH
request must have at least one key=value
pair that specifies the OAI-PMH request issued by the
harvester:
key
is the string 'verb'
;value
is one of the defined
OAI-PMH requests.The number and nature of additional key=value
pairs depends on the arguments for the individual
request.
URLs for GET
requests have keyword arguments appended to
the base URL, separated from it by a question mark [?
].
For example, the URL of a GetRecord
request to a repository with base URL that is http://an.oa.org/OAI-script
might be:
http://an.oa.org/OAI-script?
verb=GetRecord&identifier=oai:arXiv.org:hep-th/9901001&metadataPrefix=oai_dc
However, since special characters in URIs must be encoded,
the correct form of the above GET
request URL is:
http://an.oa.org/OAI-script?
verb=GetRecord&identifier=oai%3AarXiv.org%3Ahep-th%2F9901001&metadataPrefix=oai_dc
Keyword arguments are carried in the message body of the HTTP POST
. The
Content-Type
of the request
must be application/x-www-form-urlencoded
. For example, submitting the
same request as above using the POST
method would use just the base URL as the URL, with the
format of the POST
being:
POST http://an.oa.org/OAI-script HTTP/1.0
Content-Length: 82
Content-Type: application/x-www-form-urlencoded
verb=GetRecord&identifier=oai%3AarXiv.org%3Ahep-th%2F9901001&metadataPrefix=oai_dc
The syntax rules for URIs restrict a few characters to special roles in certain contexts, and require that if these characters are used in any other way that they must be written as an escape sequence, i.e. a percent sign followed by the character code in hexadecimal. The reserved characters include:
Character |
URI Role |
Escape Sequence |
/ |
Path Component Separator |
%2F |
? |
Query Component Separator |
%3F |
# |
Fragment Identifier |
%23 |
= |
Name/Value Separator |
%3D |
& |
Argument Separator in Query Component |
%26 |
: |
Host Port Separator |
%3A |
; |
Authority Namespace Separator |
%3B |
|
Space Character |
%20 |
% |
Escape Indicator |
%25 |
+ |
Escaped Space |
%2B |
As a result, these characters must be represented by their respective
escape sequence if their use does not correspond to their established URI
role. In case of the OAI-PMH, this means that the reserved characters
must be encoded when they appear in the value
part of the key=value
pairs of the request.
This applies for both the GET
and POST
encoding of the OAI-PMH requests.
Responses to requests are formatted as HTTP responses, with appropriate HTTP header fields.
The Content-Type
returned for all OAI-PMH requests
must be text/xml
.
OAI-PMH errors are distinguished from HTTP
Status-Codes
. Since OAI-PMH uses HTTP as a transport layer,
servers implementing OAI-PMH must conform to
HTTP status code definitions
and report relevant HTTP transport layer status via those Status-Codes
.
OAI-PMH repositories may employ HTTP Status-Codes
in addition
to "200 OK
". For instance, the following Status-Codes
may be useful for load balancing in OAI repositories:
302
- Allows the repository to temporarily redirect
an OAI-PMH request to another repository. The URI of the temporary repository
should be given by the Location
field in the HTTP
response.503
- Service unavailable, a Retry-After
period
is specified. Harvesters should wait this period before attempting
another OAI-PMH request.Response compression is optional in OAI-PMH. Compression of responses to OAI-PMH requests is handled at the level of HTTP, with the following restrictions:
Accept-Encoding
header in their OAI-PMH
requests to specify response compression preferences.Accept-Encoding
header in their requests
will always receive uncompressed responses. Accept-Encoding
header the list of encodings must
include the identity
(no compression) encoding (with a non-zero qvalue
).identity
encoding.identity
by including compression
elements in
the Identify
response.All responses to OAI-PMH requests must be well-formed XML instance documents. Encoding of the XML must use the UTF-8 representation of Unicode. Character references, rather than entity references, must be used. Character references allow XML responses to be treated as stand-alone documents that can be manipulated without dependency on entity declarations external to the document.
The XML data for all responses to OAI-PMH requests must validate against the XML Schema shown at the end of this section . As can be seen from that schema, responses to OAI-PMH requests have the following common markup:
1.0
and the encoding
is always UTF-8
, eg: <?xml version="1.0" encoding="UTF-8" ?>
xmlns
-- the value of which must be the namespace URI
of the OAI-PMH (http://www.openarchives.org/OAI/2.0/
).xmlns:xsi
-- the value of which must be the namespace
URI for XML schema (http://www.w3.org/2001/XMLSchema-instance
).xsi:schemaLocation
-- is a pair, the first part of which is
the namespace URI (as defined by the
XML
namespace specification ) of the OAI-PMH (http://www.openarchives.org/OAI/2.0/
),
and the second part is the URL of the XML schema for validation of the response
(http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd
).responseDate
--
a UTCdatetime indicating the time and date that the response
was sent. This must be expressed in UTC.request
--
indicating the protocol request that generated this response.
The rules for generating the request
element are as follows:
request
element must always be the base
URL of the protocol request;request
element are the keys
of the key=value
pairs of protocol request. The attribute values must be the corresponding
values
of those key=value
pairs;request
element must match the key=value
pairs of the protocol request;a badVerb
or badArgument
error condition, the repository must
return the base URL of the protocol
request only. Attributes must not be provided in these cases.error
element that must be used in case of an
error or exception condition;An example of a successful reply to the GetRecord
request shown
above is of the form:
<?xml version="1.0" encoding="UTF-8" ?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-05-01T19:20:30Z</responseDate> <request verb="GetRecord" identifier="oai:arXiv.org:hep-th/9901001" metadataPrefix="oai_dc">http://an.oa.org/OAI-script</request> <GetRecord> <record> ... </record> </GetRecord> </OAI-PMH> |
<schema targetNamespace="http://www.openarchives.org/OAI/2.0/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:oai="http://www.openarchives.org/OAI/2.0/" elementFormDefault="qualified" attributeFormDefault="unqualified"> <annotation> <documentation> XML Schema which can be used to validate replies to all OAI-PMH v2.0 requests. Herbert Van de Sompel, 2002-05-13. Validated with XML Spy v.4.3 on 2002-05-13. Validated with XSV 1.203.2.45/1.106.2.22 on 2002-05-13. Added definition of protocolVersionType instead of using anonymous type. No change of function. Simeon Warner, 2004-03-29. Tightened definition of UTCdatetimeType to enforce the restriction to UTC Z notation. Simeon Warner, 2004-09-14. Corrected pattern matches for setSpecType and metedataPrefixType to agree with protocol specification. Simeon Warner, 2004-10-12. $Date: 2004/10/12 15:20:29 $ </documentation> </annotation> <element name="OAI-PMH" type="oai:OAI-PMHtype"/> <complexType name="OAI-PMHtype"> <sequence> <element name="responseDate" type="dateTime"/> <element name="request" type="oai:requestType"/> <choice> <element name="error" type="oai:OAI-PMHerrorType" maxOccurs="unbounded"/> <element name="Identify" type="oai:IdentifyType"/> <element name="ListMetadataFormats" type="oai:ListMetadataFormatsType"/> <element name="ListSets" type="oai:ListSetsType"/> <element name="GetRecord" type="oai:GetRecordType"/> <element name="ListIdentifiers" type="oai:ListIdentifiersType"/> <element name="ListRecords" type="oai:ListRecordsType"/> </choice> </sequence> </complexType> <complexType name="requestType"> <annotation> <documentation>Define requestType, indicating the protocol request that led to the response. Element content is BASE-URL, attributes are arguments of protocol request, attribute-values are values of arguments of protocol request</documentation> </annotation> <simpleContent> <extension base="anyURI"> <attribute name="verb" type="oai:verbType" use="optional"/> <attribute name="identifier" type="oai:identifierType" use="optional"/> <attribute name="metadataPrefix" type="oai:metadataPrefixType" use="optional"/> <attribute name="from" type="oai:UTCdatetimeType" use="optional"/> <attribute name="until" type="oai:UTCdatetimeType" use="optional"/> <attribute name="set" type="oai:setSpecType" use="optional"/> <attribute name="resumptionToken" type="string" use="optional"/> </extension> </simpleContent> </complexType> <simpleType name="verbType"> <restriction base="string"> <enumeration value="Identify"/> <enumeration value="ListMetadataFormats"/> <enumeration value="ListSets"/> <enumeration value="GetRecord"/> <enumeration value="ListIdentifiers"/> <enumeration value="ListRecords"/> </restriction> </simpleType> <!-- define OAI-PMH error conditions --> <!-- =============================== --> <complexType name="OAI-PMHerrorType"> <simpleContent> <extension base="string"> <attribute name="code" type="oai:OAI-PMHerrorcodeType" use="required"/> </extension> </simpleContent> </complexType> <simpleType name="OAI-PMHerrorcodeType"> <restriction base="string"> <enumeration value="cannotDisseminateFormat"/> <enumeration value="idDoesNotExist"/> <enumeration value="badArgument"/> <enumeration value="badVerb"/> <enumeration value="noMetadataFormats"/> <enumeration value="noRecordsMatch"/> <enumeration value="badResumptionToken"/> <enumeration value="noSetHierarchy"/> </restriction> </simpleType> <!-- define OAI-PMH verb containers --> <!-- ============================== --> <complexType name="IdentifyType"> <sequence> <element name="repositoryName" type="string"/> <element name="baseURL" type="anyURI"/> <element name="protocolVersion" type="oai:protocolVersionType"/> <element name="adminEmail" type="oai:emailType" maxOccurs="unbounded"/> <element name="earliestDatestamp" type="oai:UTCdatetimeType"/> <element name="deletedRecord" type="oai:deletedRecordType"/> <element name="granularity" type="oai:granularityType"/> <element name="compression" type="string" minOccurs="0" maxOccurs="unbounded"/> <element name="description" type="oai:descriptionType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="ListMetadataFormatsType"> <sequence> <element name="metadataFormat" type="oai:metadataFormatType" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="ListSetsType"> <sequence> <element name="set" type="oai:setType" maxOccurs="unbounded"/> <element name="resumptionToken" type="oai:resumptionTokenType" minOccurs="0"/> </sequence> </complexType> <complexType name="GetRecordType"> <sequence> <element name="record" type="oai:recordType"/> </sequence> </complexType> <complexType name="ListRecordsType"> <sequence> <element name="record" type="oai:recordType" maxOccurs="unbounded"/> <element name="resumptionToken" type="oai:resumptionTokenType" minOccurs="0"/> </sequence> </complexType> <complexType name="ListIdentifiersType"> <sequence> <element name="header" type="oai:headerType" maxOccurs="unbounded"/> <element name="resumptionToken" type="oai:resumptionTokenType" minOccurs="0"/> </sequence> </complexType> <!-- define basic types used in replies to GetRecord, ListRecords, ListIdentifiers --> <!-- ======================================= --> <complexType name="recordType"> <annotation> <documentation>A record has a header, a metadata part, and an optional about container</documentation> </annotation> <sequence> <element name="header" type="oai:headerType"/> <element name="metadata" type="oai:metadataType" minOccurs="0"/> <element name="about" type="oai:aboutType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="headerType"> <annotation> <documentation>A header has a unique identifier, a datestamp, and setSpec(s) in case the item from which the record is disseminated belongs to set(s). the header can carry a deleted status indicating that the record is deleted.</documentation> </annotation> <sequence> <element name="identifier" type="oai:identifierType"/> <element name="datestamp" type="oai:UTCdatetimeType"/> <element name="setSpec" type="oai:setSpecType" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="status" type="oai:statusType" use="optional"/> </complexType> <simpleType name="identifierType"> <restriction base="anyURI"/> </simpleType> <simpleType name="statusType"> <restriction base="string"> <enumeration value="deleted"/> </restriction> </simpleType> <complexType name="metadataType"> <annotation> <documentation>Metadata must be expressed in XML that complies with another XML Schema (namespace=#other). Metadata must be explicitly qualified in the response.</documentation> </annotation> <sequence> <any namespace="##other" processContents="strict"/> </sequence> </complexType> <complexType name="aboutType"> <annotation> <documentation>Data "about" the record must be expressed in XML that is compliant with an XML Schema defined by a community.</documentation> </annotation> <sequence> <any namespace="##other" processContents="strict"/> </sequence> </complexType> <complexType name="resumptionTokenType"> <annotation> <documentation>A resumptionToken may have 3 optional attributes and can be used in ListSets, ListIdentifiers, ListRecords responses.</documentation> </annotation> <simpleContent> <extension base="string"> <attribute name="expirationDate" type="dateTime" use="optional"/> <attribute name="completeListSize" type="positiveInteger" use="optional"/> <attribute name="cursor" type="nonNegativeInteger" use="optional"/> </extension> </simpleContent> </complexType> <complexType name="descriptionType"> <annotation> <documentation>The descriptionType is used for the description element in Identify and for setDescription element in ListSets. Content must be compliant with an XML Schema defined by a community.</documentation> </annotation> <sequence> <any namespace="##other" processContents="strict"/> </sequence> </complexType> <simpleType name="UTCdatetimeType"> <annotation> <documentation>Datestamps are to either day (type date) or to seconds granularity (type oai:UTCdateTimeZType)</documentation> </annotation> <union memberTypes="date oai:UTCdateTimeZType"/> </simpleType> <simpleType name="UTCdateTimeZType"> <restriction base="dateTime"> <pattern value=".*Z"/> </restriction> </simpleType> <!-- define types used for Identify verb only --> <!-- ======================================== --> <simpleType name="protocolVersionType"> <restriction base="string"> <enumeration value="2.0"/> </restriction> </simpleType> <simpleType name="emailType"> <restriction base="string"> <pattern value="\S+@(\S+\.)+\S+"/> </restriction> </simpleType> <simpleType name="deletedRecordType"> <restriction base="string"> <enumeration value="no"/> <enumeration value="persistent"/> <enumeration value="transient"/> </restriction> </simpleType> <simpleType name="granularityType"> <restriction base="string"> <enumeration value="YYYY-MM-DD"/> <enumeration value="YYYY-MM-DDThh:mm:ssZ"/> </restriction> </simpleType> <!-- define types used for ListMetadataFormats verb only --> <!-- =================================================== --> <complexType name="metadataFormatType"> <sequence> <element name="metadataPrefix" type="oai:metadataPrefixType"/> <element name="schema" type="anyURI"/> <element name="metadataNamespace" type="anyURI"/> </sequence> </complexType> <simpleType name="metadataPrefixType"> <restriction base="string"> <pattern value="[A-Za-z0-9\-_\.!~\*'\(\)]+"/> </restriction> </simpleType> <!-- define types used for ListSets verb --> <!-- =================================== --> <complexType name="setType"> <sequence> <element name="setSpec" type="oai:setSpecType"/> <element name="setName" type="string"/> <element name="setDescription" type="oai:descriptionType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <simpleType name="setSpecType"> <restriction base="string"> <pattern value="([A-Za-z0-9\-_\.!~\*'\(\)])+(:[A-Za-z0-9\-_\.!~\*'\(\)]+)*"/> </restriction> </simpleType> </schema> |
This Schema is available at http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd |
Dates and times are uniformly encoded using
ISO8601 and are expressed in UTC
throughout the protocol. When time is included, the special UTC designator
("Z
") must be used. UTC
is implied for dates although no timezone designator is specified. For example,
1957-03-20T20:30:00Z
is UTC 8:30:00 PM on March 20th 1957. UTCdatetime
is used in both protocol requests and protocol replies, in the way described
in the following sections.
Datestamps used as values of the optional arguments
from
and until
in the
ListIdentifiers
and
ListRecords
requests are encoded using
ISO8601 and are expressed in UTC.
These arguments are used to specify
datestamp-based selective harvesting. These arguments
support the "Complete date" and the "Complete date plus hours,
minutes and seconds" granularities defined in ISO8601. The legitimate formats
are YYYY-MM-DD
and YYYY-MM-DDThh:mm:ssZ.
Both arguments
must have the same granularity. All repositories must support
YYYY-MM-DD
. A repository that supports YYYY-MM-DDThh:mm:ssZ
should indicate so in the Identify
response. A request by a harvester with finer granularity than that supported
by a repository must produce an error.
Datestamps appear in the headers of records that
are returned in response to ListIdentifiers
,
GetRecord
and
ListRecords
requests. These
datestamps are encoded using
ISO8601
and are expressed in UTC; they must be expressed in the finest granularity
supported by the repository. The value of the datestamp must correspond
to the rules for datestamp-based selective harvesting.
Each protocol response includes a responseDate
element, which
must be the time and date of the response in UTC. This is encoded using
the "Complete date plus hours, minutes, and seconds" variant of
ISO8601.
This format is YYYY-MM-DDThh:mm:ssZ
.
A resumptionToken
in a protocol
reply may include an optional argument expirationDate
,
which is expressed in UTC. This is encoded using the "Complete date plus hours, minutes, and
seconds" variant of ISO8601.
This format is YYYY-MM-DDThh:mm:ssZ
.
OAI-PMH supports the dissemination of records in multiple metadata formats
from a repository. The
ListMetadataFormats
request
returns the list of all metadata formats available from a repository, each of
which has the following properties:
metadataPrefix
- a string
to specify the metadata format in OAI-PMH requests issued to the repository.
metadataPrefix
consists of any valid
URI unreserved characters.
metadataPrefix
arguments are used
in ListRecords
,
ListIdentifiers
, and
GetRecord
requests to retrieve records, or the headers
of records that include metadata in the format specified by the metadataPrefix
;The metadata in each record returned by
ListRecords
and
GetRecord
must comply
with the conventions of the
XML namespace
specification. This means that the root element of the metadata part must
contain an xmlns
attribute, the value of which is the XML namespace URI of
the metadata format. The root element must also contain an
xsi:schemaLocation
attribute that has a value that includes the URL
of the XML schema for validation of the metadata. This URL must match the
URL of the metadata schema for the metadataPrefix
included as an
argument to the ListRecords
or
GetRecord
request (the mapping from
metadataPrefix
to metadata schema is defined by the repository's
response to the ListMetadataFormats
request).
For purposes of interoperability, repositories must disseminate
Dublin Core,
without any qualification.
Therefore, the protocol reserves the metadataPrefix
`oai_dc
',
and the URL of a metadata schema for unqualified Dublin Core, which is
http://www.openarchives.org/OAI/2.0/oai_dc.xsd.
The corresponding XML
namespace URI is http://www.openarchives.org/OAI/2.0/oai_dc/.
The metadataPrefix
`all
' is reserved for future
use. Implementations should not use this metadataPrefix
.
Communities should adopt guidelines for sharing of metadataPrefixes,
metadata schema and XML namespace URI's of metadata formats. Such guidelines are outside
of the scope of the OAI-PMH. The accompanying
Implementation Guidelines
document provides some sample XML Schema and instance documents for common metadata
formats such as MARC and
RFC 1807.
A number of OAI-PMH requests return a list of discrete entities:
ListRecords
returns a list of
records,
ListIdentifiers
returns a list of
headers, and ListSets
returns a list of sets.
Collectively these requests are called list requests. In some
cases, these lists may be large and it may be practical to partition them among
a series of requests and responses. This partitioning is accomplished as
follows:
resumptionToken;
resumptionTokens
as
arguments. The complete list then consists of the concatenation of the
incomplete lists from the sequence of requests, known as a list
request sequence.Details of flow control and the resumptionToken
are as follows:
resumptionToken
is as follows:
resumptionToken
element as part of each response that includes
an incomplete list;resumptionToken
element as the value of the resumptionToken
argument of the request;resumptionToken
element;resumptionToken
by a harvester
are illegal and must return an error.resumptionToken
is issued, the incomplete list must
consist of complete entities; e.g., all individual records returned in an
incomplete record list from a ListRecords
request must be intact.resumptionToken
is not defined by the OAI-PMH and should
be considered opaque by the harvester.resumptionToken
in the URL of a subsequent request, a harvester
must encode any special characters in it.The following optional attributes may be included as part of
the resumptionToken
element along with the resumptionToken
itself:
expirationDate
-- a
UTCdatetime
indicating when the resumptionToken
ceases to be valid.completeListSize
--
an integer indicating the cardinality of the complete list (i.e., the sum of
the cardinalities of the incomplete lists). Because there may be
changes in a repository during a list request sequence, as described under
Idempotency of resumptionTokens, the value of
completeListSize
may be only an estimate of the actual
cardinality of the complete list and may be revised during the list request
sequence.cursor
-- a count of the number of elements of the
complete list thus far returned (i.e. cursor
starts at 0).The following example is a series of ListRecords requests where the complete list consists of 175 records and the repository only returns 100 records per response.
ListRecords
request. resumptionToken
element, with two attributes: a completeListSize
of 175, and a cursor
of 0.ListRecords
request
that includes the resumptionToken
that it
received in the previous response.resumptionToken
element with two
attributes: a completeListSize
of 175, and a
cursor
of 100.This flow control mechanism, in combination with HTTP transport layer facilities, provides some basic tools with which a repository can enforce an acceptable use policy for its harvesting interface. Communities implementing the OAI-PMH may need more extensive tools to enforce acceptable use policies for either the harvesting interface of their repositories or for the metadata harvested from those repositories. The enforcement of such additional policies is outside of the scope of the OAI-PMH.
Repositories that implement resumptionTokens
must do so in a manner that allows
harvesters to resume a sequence of requests for incomplete lists by re-issuing a
list request with the most recent resumptionToken
. The purpose of this is to allow harvesters to
recover from network or other errors that would otherwise mean that the list
request sequence would have to be started again. A re-issue of a list
request with a resumptionToken
occurs in two contexts:
resumptionToken
, is re-issued.resumptionToken
values is not required. Instead, the incomplete
list returned in response to a re-issued request must include all records
with unchanged datestamps
within the range
of the initial list request. The incomplete list returned in response
to a re-issued request may contain records with datestamps that either
moved into or out of the range of the initial request. In cases where there
are substantial changes to the repository, it may be appropriate for
a repository to return a badResumptionToken
error,
signaling that the harvester should restart the list request
sequence.In event of an error or exception condition, repositories must
indicate OAI-PMH errors, distinguished from
HTTP Status-Codes
, by
including one or more error
elements in the response.
While one error
element is sufficient to
indicate the presence of the error or exception condition, repositories
should report all errors or exceptions that arise from processing the
request. Each error
element must have a code
attribute that must be from the following table; each
error
element may
also have a free text string value to provide information about the error that
is useful to a human reader. These strings are not defined by the OAI-PMH.
Error Codes | Description | Applicable Verbs |
badArgument |
The request includes illegal arguments, is missing required arguments, includes a repeated argument, or values for arguments have an illegal syntax. | all verbs |
badResumptionToken |
The value of the resumptionToken argument is invalid or expired. |
ListIdentifiers |
badVerb |
Value of the verb argument is not a legal
OAI-PMH verb, the verb argument is missing, or the verb argument is repeated.
|
N/A |
cannotDisseminateFormat |
The metadata format identified by the value given for the
metadataPrefix argument
is not supported by the item or by the repository. |
GetRecord ListRecords |
idDoesNotExist |
The value of the identifier argument is unknown or illegal in this repository. |
GetRecord ListMetadataFormats |
noRecordsMatch |
The combination of the values of the from ,
until ,
set and
metadataPrefix arguments
results in an empty list. |
ListIdentifiers ListRecords |
noMetadataFormats |
There are no metadata formats available for the specified item. | ListMetadataFormats |
noSetHierarchy |
The repository does not support sets. | ListSets |
The following example demonstrates error handling in the case of an illegal verb argument. All request URLs shown from now on will be wrapped to make them more readable.
http://arXiv.org/oai2? verb=nastyVerb
Response
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-05-01T09:18:29Z</responseDate> <request>http://arXiv.org/oai2</request> <error code="badVerb">Illegal OAI verb</error> </OAI-PMH> |
The following example demonstrates error handling in the case of a ListSets
request to a repository
that does not handle sets.
http://arXiv.org/oai2? verb=ListSets
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-05-01T09:18:29Z</responseDate> <request verb="ListSets">http://arXiv.org/oai2</request> <error code="noSetHierarchy">This repository does not support sets</error> </OAI-PMH> |
This section lists the requests, or verbs,
defined in the OAI-PMH.
The documentation for each request is organized as follows:
verb
argument to an HTTP request.verb
argument is always required,
as described in HTTP Request Format).verb
argument).An XML Schema defines the format of valid replies to all OAI-PMH requests.
This verb is used to retrieve an individual metadata record from a repository.
Required arguments specify the identifier of the item from which the record
is requested and the format of the metadata that should be included in the record.
Depending on the level at which a repository tracks deletions,
a header with a "deleted" value for the status
attribute may be returned, in case the metadata format specified by the
metadataPrefix
is no longer
available from the repository or from the specified item.
identifier
a required argument that specifies
the unique identifier of the item in the
repository from which the
record must be disseminated.metadataPrefix
a required argument that
specifies the metadataPrefix
of the
format that should be included in the metadata part of
the returned record . A record should only be returned if the format
specified by the metadataPrefix
can be
disseminated from the item identified by the value of the identifier argument.
The metadata formats supported by a repository and for a particular record can
be retrieved using the
ListMetadataFormats
request.badArgument
-
The request includes illegal arguments or is missing required arguments.cannotDisseminateFormat
- The value of the metadataPrefix
argument is not
supported by the item identified by the value of the identifier
argument.idDoesNotExist
- The value of the identifier
argument is unknown
or illegal in this repository.Request a record in the Dublin Core metadata format [URL shown without encoding to be more readable].
http://arXiv.org/oai2? verb=GetRecord&identifier=oai:arXiv.org:cs/0112017&metadataPrefix=oai_dc
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-02-08T08:55:46Z</responseDate> <request verb="GetRecord" identifier="oai:arXiv.org:cs/0112017" metadataPrefix="oai_dc">http://arXiv.org/oai2</request> <GetRecord> <record> <header> <identifier>oai:arXiv.org:cs/0112017</identifier> <datestamp>2001-12-14</datestamp> <setSpec>cs</setSpec> <setSpec>math</setSpec> </header> <metadata> <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:title>Using Structural Metadata to Localize Experience of Digital Content</dc:title> <dc:creator>Dushay, Naomi</dc:creator> <dc:subject>Digital Libraries</dc:subject> <dc:description>With the increasing technical sophistication of both information consumers and providers, there is increasing demand for more meaningful experiences of digital information. We present a framework that separates digital object experience, or rendering, from digital object storage and manipulation, so the rendering can be tailored to particular communities of users. </dc:description> <dc:description>Comment: 23 pages including 2 appendices, 8 figures</dc:description> <dc:date>2001-12-14</dc:date> </oai_dc:dc> </metadata> </record> </GetRecord> </OAI-PMH> |
Request a record in the Dublin Core metadata format. The requested
record, however, can not be returned because the identifier does not
exist. Therefore, the response does not contain a record
container. It does have an error
element with a
code
attribute that has the value idDoesNotExist
.
[URL shown without encoding
for better readability].
http://arXiv.org/oai2? verb=GetRecord&identifier=oai:arXiv.org:quant-ph/02131001&metadataPrefix=oai_dc
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-02-08T08:55:46Z</responseDate> <request verb="GetRecord" identifier="oai:arXiv.org:quant-ph/0213001" metadataPrefix="oai_dc">http://arXiv.org/oai2</request> <error code="idDoesNotExist">No matching identifier in arXiv</error> </OAI-PMH> |
Request a record in the oai_marc metadata format. However, the
requested metadata format can not be disseminated for this
identifier. Therefore, the response contains no record. It does
contain an error
element with a code
attribute that has the value cannotDisseminateFormat
.
[URL shown without encoding
for better readability].
http://arXiv.org/oai2? verb=GetRecord&identifier=oai:arXiv.org:quant-ph/9901001&metadataPrefix=oai_marc
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-02-08T08:55:46Z</responseDate> <request verb="GetRecord" identifier="oai:arXiv.org:quant-ph/9901001" metadataPrefix="oai_marc">http://arXiv.org/oai1</request> <error code="cannotDisseminateFormat"/> </OAI-PMH> |
This verb is used to retrieve information about a repository. Some of the information returned is required as part of the OAI-PMH. Repositories may also employ the Identify verb to return additional descriptive information.
None
badArgument
-
The request includes illegal arguments.The response must include one instance of the following elements:
repositoryName
:
a human readable name for the repository;baseURL
:
the base URL of the repository;protocolVersion
:
the version of the OAI-PMH supported by the repository;earliestDatestamp
:
a UTCdatetime that is the guaranteed lower limit of all datestamps
recording changes, modifications, or deletions in the repository. A repository
must not use datestamps lower than the one specified
by the content of the earliestDatestamp
element.
earliestDatestamp
must be expressed at the finest
granularity supported by the repository.deletedRecord
:
the manner in which the repository supports the notion of
deleted records. Legitimate values are no
;
transient
; persistent
with meanings defined in the section on
deletion.granularity:
the finest harvesting granularity supported by the repository.
The legitimate values are YYYY-MM-DD
and YYYY-MM-DDThh:mm:ssZ
with meanings as defined in ISO8601.The response must include one or more instances of the following element:
adminEmail
:
the e-mail address of an administrator of the repository.The response may include multiple instances of the following optional elements:
compression
: a compression encoding supported by the
repository. The recommended values are those defined for the
Content-Encoding
header in Section 14.11 of
RFC 2616 describing
HTTP 1.1. A compression
element should not be
included for the identity
encoding, which is implied.description
: an extensible mechanism for communities
to describe their repositories. For example, the description
container could be used to include collection-level metadata in the response
to the Identify request.
Implementation
Guidelines are available to give directions with this respect. Each description
container
must be accompanied by the URL of an XML schema describing the
structure of the description container.http://memory.loc.gov/cgi-bin/oai? verb=Identify
The below example of a response to the Identify
request contains three
description
containers:
oai-identifier
container complies to an XML Schema, which is available at
http://www.openarchives.org/OAI/2.0/oai-identifier.xsd.
This schema, provided in the accompanying
Implementation Guidelines
document, is used by repositories that choose to comply with a specific format
of unique identifiers for items. The format of that identifier is explained
by means of comments in the
oai-identifier.xsd
XML Schema.eprints
container complies to an XML Schema, which is available at
http://www.openarchives.org/OAI/1.1/eprints.xsd.
This schema, provided in the accompanying
Implementation Guidelines document,
has been agreed upon by the OAI e-print community,
and contains information specific to repositories in that community.friends
container complies to an XML Schema, which is available at
http://www.openarchives.org/OAI/2.0/friends.xsd.
This schema, provided in the accompanying
Implementation Guidelines
document, is used by repositories that want to point harvesters
to other repositories, by listing their base URLs. Usage of the friends
container is
recommended; it may support harvesters in discovering the
network-location of repositories.
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-02-08T12:00:01Z</responseDate> <request verb="Identify">http://memory.loc.gov/cgi-bin/oai</request> <Identify> <repositoryName>Library of Congress Open Archive Initiative Repository 1</repositoryName> <baseURL>http://memory.loc.gov/cgi-bin/oai</baseURL> <protocolVersion>2.0</protocolVersion> <adminEmail>somebody@loc.gov</adminEmail> <adminEmail>anybody@loc.gov</adminEmail> <earliestDatestamp>1990-02-01T12:00:00Z</earliestDatestamp> <deletedRecord>transient</deletedRecord> <granularity>YYYY-MM-DDThh:mm:ssZ</granularity> <compression>deflate</compression> <description> <oai-identifier xmlns="http://www.openarchives.org/OAI/2.0/oai-identifier" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://www.openarchives.org/OAI/2.0/oai-identifier http://www.openarchives.org/OAI/2.0/oai-identifier.xsd"> <scheme>oai</scheme> <repositoryIdentifier>lcoa1.loc.gov</repositoryIdentifier> <delimiter>:</delimiter> <sampleIdentifier>oai:lcoa1.loc.gov:loc.music/musdi.002</sampleIdentifier> </oai-identifier> </description> <description> <eprints xmlns="http://www.openarchives.org/OAI/1.1/eprints" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/1.1/eprints http://www.openarchives.org/OAI/1.1/eprints.xsd"> <content> <URL>http://memory.loc.gov/ammem/oamh/lcoa1_content.html</URL> <text>Selected collections from American Memory at the Library of Congress</text> </content> <metadataPolicy/> <dataPolicy/> </eprints> </description> <description> <friends xmlns="http://www.openarchives.org/OAI/2.0/friends/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/friends/ http://www.openarchives.org/OAI/2.0/friends.xsd"> <baseURL>http://oai.east.org/foo/</baseURL> <baseURL>http://oai.hq.org/bar/</baseURL> <baseURL>http://oai.south.org/repo.cgi</baseURL> </friends> </description> </Identify> </OAI-PMH> |
This verb is an abbreviated form of
ListRecords
, retrieving only
headers rather than records.
Optional arguments permit selective harvesting of
headers based on set membership
and/or datestamp. Depending on the repository's support for
deletions, a returned header
may have a status
attribute of "deleted" if a record
matching the arguments specified in the request has been deleted.
from
an optional
argument with a UTCdatetime value,
which specifies a lower bound for datestamp-based
selective harvesting.until
an optional
argument with a UTCdatetime value,
which specifies a upper bound for datestamp-based
selective harvesting.metadataPrefix
a required argument, which specifies
that headers should be returned only if the metadata format matching
the supplied metadataPrefix
is available or, depending on the repository's support for
deletions, has been deleted. The metadata formats supported
by a repository and for a particular item can be retrieved using the
ListMetadataFormats
request.set
an optional argument with a
setSpec
value , which specifies
set criteria for
selective harvesting.resumptionToken
an exclusive argument with a value
that is the flow control token returned by a
previous ListIdentifiers
request that issued an incomplete list.badArgument
-
The request includes illegal arguments or is missing required arguments.badResumptionToken
-
The value of the resumptionToken
argument is invalid or expired.cannotDisseminateFormat
-
The value of the metadataPrefix
argument is not supported
by the repository.noRecordsMatch
-
The combination of the values of the from
, until
,
and set
arguments results in an empty list.noSetHierarchy
- The repository does not support sets.List the headers of records in the oldArXiv metadata format that are added, modified or deleted since January 15, 1998 in the set physics:hep. [URL shown without encoding for better readability].
http://an.oa.org/OAI-script? verb=ListIdentifiers&from=1998-01-15&metadataPrefix=oldArXiv&set=physics:hep
A list of four headers is returned. One header has a deleted
status, indicating that a record in the metadata format specified by the
metadataPrefix
is no longer available.
In addition, a resumptionToken
(non-empty, value
xxx45abttyz)
has been
returned, indicating that the list of headers is incomplete and that
one or more subsequent requests will need to be issued to retrieve a complete
list. In the example, the resumptionToken
comes with all
of the 3 optional attributes: expirationDate
indicates that
the resumptionToken
will become unusable
after 11:20 PM UTC on June 1st 2002; completeListSize
indicates that
the complete list consists of 6 identifiers; the zero-value for
cursor
indicates that no headers
have been returned previous to this reply.
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-06-01T19:20:30Z</responseDate> <request verb="ListIdentifiers" from="1998-01-15" metadataPrefix="oldarXiv" set="physics:hep">http://an.oa.org/OAI-script</request> <ListIdentifiers> <header> <identifier>oai:arXiv.org:hep-th/9801001</identifier> <datestamp>1999-02-23</datestamp> <setSpec>physic:hep</setSpec> </header> <header> <identifier>oai:arXiv.org:hep-th/9801002</identifier> <datestamp>1999-03-20</datestamp> <setSpec>physic:hep</setSpec> <setSpec>physic:exp</setSpec> </header> <header> <identifier>oai:arXiv.org:hep-th/9801005</identifier> <datestamp>2000-01-18</datestamp> <setSpec>physic:hep</setSpec> </header> <header status="deleted"> <identifier>oai:arXiv.org:hep-th/9801010</identifier> <datestamp>1999-02-23</datestamp> <setSpec>physic:hep</setSpec> <setSpec>math</setSpec> </header> <resumptionToken expirationDate="2002-06-01T23:20:00Z" completeListSize="6" cursor="0">xxx45abttyz</resumptionToken> </ListIdentifiers> </OAI-PMH> |
Issue a subsequent request to the one issued above. The single
resumptionToken
argument has the
value returned in the previous response. [URL shown without encoding
for better readability].
http://an.oa.org/OAI-script? verb=ListIdentifiers&resumptionToken=xxx45abttyz
Two more headers are returned. The resumptionToken
element at the end of the list has no value,
indicating that the list is now complete. The value of the completeListSize
attribute
remains 6, while the value of the cursor
attribute has changed to 4, indicating that a previous
reply has (or previous replies have) already delivered 4 identifiers.
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-06-01T19:30:00Z</responseDate> <request verb="ListIdentifiers" resumptionToken="xxx45abttyz">http://an.oa.org/OAI-script</request> <ListIdentifiers> <header> <identifier>oai:arXiv.org:hep-th/9801020</identifier> <datestamp>1999-02-23</datestamp> <setSpec>physic:hep</setSpec> </header> <header> <identifier>oai:arXiv.org:hep-th/9801060</identifier> <datestamp>1999-02-23</datestamp> <setSpec>physic:hep</setSpec> </header> <resumptionToken completeListSize="6" cursor="4"/> </ListIdentifiers> </OAI-PMH> |
List the headers of olac-formatted records, added or modified on January 1, 2001 in the set Perseus:collection:PersInfo. There are no matches for this request, hence, the response contains an error tag and does not contain any header elements [URL shown without encoding for better readability].
http://www.perseus.tufts.edu/cgi-bin/pdataprov? verb=ListIdentifiers&metadataPrefix=olac&from=2001-01-01&until=2001-01-01 &set=Perseus:collection:PersInfo
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-02-08T14:27:19Z</responseDate> <request verb="ListIdentifiers" metadataPrefix="olac" from="2001-01-01" until="2001-01-01" set="Perseus:collection:PersInfo"> http://www.perseus.tufts.edu/cgi-bin/pdataprov</request> <error code="noRecordsMatch"/> </OAI-PMH> |
This verb is used to retrieve the metadata formats available from a repository. An optional argument restricts the request to the formats available for a specific item.
identifier
an
optional argument that specifies the unique identifier of the item for
which available metadata formats are being requested. If this argument
is omitted, then the response includes all metadata formats supported by this
repository. Note that the fact that a metadata format is supported by a
repository does not mean that it can be disseminated from all items in
the repository.badArgument
-
The request includes illegal arguments or is missing required arguments.idDoesNotExist
- The value of the
identifier
argument is unknown
or illegal in this repository.noMetadataFormats
- There are no metadata formats
available for the specified item. List the metadata formats that can be disseminated from the repository
http://www.perseus.tufts.edu/cgi-bin/pdataprov
for the item with
unique identifier oai:perseus.tufts.edu:Perseus:text:1999.02.0119
[URL shown without encoding
for better readability].
http://www.perseus.tufts.edu/cgi-bin/pdataprov? verb=ListMetadataFormats&identifier=oai:perseus.tufts.edu:Perseus:text:1999.02.0119
The response shows that 3 metadata formats are supported for the given identifier: oai_dc, olac and perseus. For each of the formats, the location of an XML Schema describing the format, as well as the XML Namespace URI is given.
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-02-08T14:27:19Z</responseDate> <request verb="ListMetadataFormats" identifier="oai:perseus.tufts.edu:Perseus:text:1999.02.0119"> http://www.perseus.tufts.edu/cgi-bin/pdataprov</request> <ListMetadataFormats> <metadataFormat> <metadataPrefix>oai_dc</metadataPrefix> <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd </schema> <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/ </metadataNamespace> </metadataFormat> <metadataFormat> <metadataPrefix>olac</metadataPrefix> <schema>http://www.language-archives.org/OLAC/olac-0.2.xsd</schema> <metadataNamespace>http://www.language-archives.org/OLAC/0.2/ </metadataNamespace> </metadataFormat> <metadataFormat> <metadataPrefix>perseus</metadataPrefix> <schema>http://www.perseus.tufts.edu/persmeta.xsd</schema> <metadataNamespace>http://www.perseus.tufts.edu/persmeta.dtd </metadataNamespace> </metadataFormat> </ListMetadataFormats> </OAI-PMH> |
List the metadata formats that can be disseminated from the repository http://memory.loc.gov/cgi-bin/oai
.
http://memory.loc.gov/cgi-bin/oai? verb=ListMetadataFormats
The response shows that the repository supports two metadata formats:
oai_dc
, and oai_marc
. For each of the
formats, the location of an XML Schema describing the format is given. The
support of these formats at the repository-level does not imply support of each
format for each item of the repository.
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-06-08T15:19:13Z</responseDate> <request verb="ListMetadataFormats"> http://memory.loc.gov/cgi-bin/oai</request> <ListMetadataFormats> <metadataFormat> <metadataPrefix>oai_dc</metadataPrefix> <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema> <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/ </metadataNamespace> </metadataFormat> <metadataFormat> <metadataPrefix>oai_marc</metadataPrefix> <schema>http://www.openarchives.org/OAI/1.1/oai_marc.xsd</schema> <metadataNamespace>http://www.openarchives.org/OAI/1.1/oai_marc </metadataNamespace> </metadataFormat> </ListMetadataFormats> </OAI-PMH> |
List the metadata formats that can be disseminated for the unique identifier
oai:lcoa1.loc.gov:loc.rbc/rbpe.00000111
in the repository http://memory.loc.gov/cgi-bin/oai
. The identifier, however, does
not exist and therefore, the response contains an error
element and no
metadataFormat container. [URL shown without encoding
for better readability].
http://memory.loc.gov/cgi-bin/oai? verb=ListMetadataFormats&identifier=oai:lcoa1.loc.gov:loc.rbc/rbpe.00000111
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-06-08T15:19:13Z</responseDate> <request verb="ListMetadataFormats" identifier="oai:lcoa1.loc.gov:loc.rbc/rbpe.00000111"> http://memory.loc.gov/cgi-bin/oai</request> <error code="idDoesNotExist">oai:lcoa1.loc.gov:loc.rbc/rbpe.00000111 has the structure of a valid LOC identifier, but it maps to no known item</error> </OAI-PMH> |
This verb is used to harvest records from a repository. Optional arguments
permit selective harvesting of
records based on
set membership
and/or datestamp. Depending on the repository's support for
deletions, a returned
header may have a status
attribute of "deleted"
if a record matching the arguments specified in the request has been deleted.
No metadata will be present for records with deleted status.
from
an optional
argument with a UTCdatetime value, which
specifies a lower bound for datestamp-based
selective harvesting.until
an optional argument with a
UTCdatetime value, which specifies a upper bound for datestamp-based
selective harvesting.set
an optional argument with a
setSpec
value , which specifies
set criteria for selective harvesting.resumptionToken
an exclusive argument with
a value that is the flow control token returned by
a previous ListRecords
request that
issued an incomplete list.metadataPrefix
a
required argument (unless the exclusive argument resumptionToken
is used) that
specifies the metadataPrefix
of the format
that should be included in the metadata part of the returned records. Records
should be included only for items from which the metadata formatmetadataPrefix
can be
disseminated. The metadata formats supported by a repository and for a
particular item can be retrieved using the
ListMetadataFormats
request.badArgument
-
The request includes illegal arguments or is missing required arguments.badResumptionToken
-
The value of the resumptionToken
argument is
invalid or expired.cannotDisseminateFormat
-
The value of the metadataPrefix
argument is not
supported by the repository.noRecordsMatch
-
The combination of the values of the from
, until
,
set
and metadataPrefix
arguments results in an empty list.noSetHierarchy
-
The repository does not support sets.List the records expressed in oai_rfc1807
metadata format, that
have been added or modified since January 15, 1998 in the hep
subset of the physics
set [URL shown without
encoding for better readability].
http://an.oa.org/OAI-script? verb=ListRecords&from=1998-01-15&set=physics:hep&metadataPrefix=oai_rfc1807
oai_rfc1807
metadata.
This record also has an about
part, and the item from
which it was disseminated belongs to two sets (physics:hep
and math
).status="deleted"
attribute (and therefore no metadata part). Note: The reply only includes records for those items from which metadata in
oai_rfc1807
can be disseminated.
No records are returned for those items that fit the from
, until
,
and set
arguments but from which the
specified format can not be disseminated.
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-06-01T19:20:30Z</responseDate> <request verb="ListRecords" from="1998-01-15" set="physics:hep" metadataPrefix="oai_rfc1807"> http://an.oa.org/OAI-script</request> <ListRecords> <record> <header> <identifier>oai:arXiv.org:hep-th/9901001</identifier> <datestamp>1999-12-25</datestamp> <setSpec>physics:hep</setSpec> <setSpec>math</setSpec> </header> <metadata> <rfc1807 xmlns= "http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1807.txt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1807.txt http://www.openarchives.org/OAI/1.1/rfc1807.xsd"> <bib-version>v2</bib-version> <id>hep-th/9901001</id> <entry>January 1, 1999</entry> <title>Investigations of Radioactivity</title> <author>Ernest Rutherford</author> <date>March 30, 1999</date> </rfc1807> </metadata> <about> <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:publisher>Los Alamos arXiv</dc:publisher> <dc:rights>Metadata may be used without restrictions as long as the oai identifier remains attached to it.</dc:rights> </oai_dc:dc> </about> </record> <record> <header status="deleted"> <identifier>oai:arXiv.org:hep-th/9901007</identifier> <datestamp>1999-12-21</datestamp> </header> </record> </ListRecords> </OAI-PMH> |
Request records in the oai_dc
metadata format, modified or added between
2:15pm and 2:20pm UTC on May 1st 2002. [URL shown without
encoding for better readability].
http://www.perseus.tufts.edu/cgi-b:in/pdataprov? verb=ListRecords&from=2002-05-01T14:15:00Z&until=2002-05-01T14:20:00Z& metadataPrefix=oai_dc
Two records are returned. The second one has a provenance
container in its about
element,
giving an insight in its chain of provenance.
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-06-01T19:20:30Z</responseDate> <request verb="ListRecords" from="2002-05-01T14:15:00Z" until="2002-05-01T14:20:00Z" metadataPrefix="oai_dc"> http://www.perseus.tufts.edu/cgi-bin/pdataprov</request> <ListRecords> <record> <header> <identifier>oai:perseus:Perseus:text:1999.02.0084</identifier> <datestamp>2002-05-01T14:16:12Z</datestamp> </header> <metadata> <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:title>Opera Minora</dc:title> <dc:creator>Cornelius Tacitus</dc:creator> <dc:type>text</dc:type> <dc:source>Opera Minora. Cornelius Tacitus. Henry Furneaux. Clarendon Press. Oxford. 1900.</dc:source> <dc:language>latin</dc:language> <dc:identifier>http://www.perseus.tufts.edu/cgi-bin/ptext? doc=Perseus:text:1999.02.0084</dc:identifier> </oai_dc:dc> </metadata> </record> <record> <header> <identifier>oai:perseus:Perseus:text:1999.02.0083</identifier> <datestamp>2002-05-01T14:20:55Z</datestamp> </header> <metadata> <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:title>Germany and its Tribes</dc:title> <dc:creator>Tacitus</dc:creator> <dc:type>text</dc:type> <dc:source>Complete Works of Tacitus. Tacitus. Alfred John Church. William Jackson Brodribb. Lisa Cerrato. edited for Perseus. New York: Random House, Inc. Random House, Inc. reprinted 1942. </dc:source> <dc:language>english</dc:language> <dc:identifier>http://www.perseus.tufts.edu/cgi-bin/ptext? doc=Perseus:text:1999.02.0083</dc:identifier> </oai_dc:dc> </metadata> <about> <provenance xmlns="http://www.openarchives.org/OAI/2.0/provenance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance http://www.openarchives.org/OAI/2.0/provenance.xsd"> <originDescription harvestDate="2002-01-01T11:10:01Z" altered="true"> <baseURL>http://some.oa.org</baseURL> <identifier>oai:r2.org:klik001</identifier> <datestamp>2001-01-01</datestamp> <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace> </originDescription> </provenance> </about> </record> </ListRecords> </OAI-PMH> |
Request records in the the oai_marc
metadata format, modified or added between
2:00am and 3:00am UTC on June 1st 2002. The specified granularity is not supported by the repository
and therefore, an error
with code
attribute of badArgument
is returned. [URL shown without encoding for better readability].
http://memory.loc.gov/cgi-bin/oai? verb=ListRecords&from=2002-06-01T02:00:00Z&until=2002-06-01T03:00:00Z&metadataPrefix=oai_marc
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-06-01T19:20:30Z</responseDate> <request verb="ListRecords" from="2002-06-01T02:00:00Z" until="2002-06-01T03:020:00Z" metadataPrefix="oai_marc"> http://memory.loc.gov/cgi-bin/oai</request> <error code="badArgument"/> </OAI-PMH> |
This verb is used to retrieve the set structure of a repository, useful for selective harvesting.
resumptionToken
an exclusive argument with a value that is the
flow control token returned by a
previous ListSets
request that issued
an incomplete list.badArgument
-
The request includes illegal arguments or is missing required arguments.badResumptionToken
-
The value of the resumptionToken
argument is
invalid or expired.noSetHierarchy
-
The repository does not support sets.http://an.oa.org/OAI-script? verb=ListSets
The following response indicates a set hierarchy with two top
level sets with respective setSpec music
and video
.
The music
set has two subsets, with setSpec
music:(muzak
) and music:(elec)
. The subsets
identified by setSpec music:(elec)
, has a
setDescription
element which holds a Dublin Core container,
used to describe its contents.
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2002-08-11T07:21:33Z</responseDate> <request verb="ListSets">http://an.oa.org/OAI-script</request> <ListSets> <set> <setSpec>music</setSpec> <setName>Music collection</setName> </set> <set> <setSpec>music:(muzak)</setSpec> <setName>Muzak collection</setName> </set> <set> <setSpec>music:(elec)</setSpec> <setName>Electronic Music Collection</setName> <setDescription> <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:description>This set contains metadata describing electronic music recordings made during the 1950ies </dc:description> </oai_dc:dc> </setDescription> </set> <set> <setSpec>video</setSpec> <setName>Video Collection</setName> </set> </ListSets> </OAI-PMH> |
http://purl.org/alcme/etdcat/servlet/OAIHandler? verb=ListSets
The response shows that the repository does not have a set hierarchy.
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2001-06-01T19:20:30Z</responseDate> <request verb="ListSets"> http://purl.org/alcme/etdcat/servlet/OAIHandler</request> <error code="noSetHierarchy">This repository does not support sets</error> </OAI-PMH> |
The following table shows the XML Schema for Dublin Core without
qualification, which is associated with the reserved metadataPrefix oai_dc
in the
OAI-PMH. All examples in this document that include Dublin Core metadata,
validate against this XML schema. Schema for other metadata formats are provided
in the accompanying Implementation Guidelines document.
A XML schema for validating Unqualified Dublin Core metadata associated
|
<schema targetNamespace="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <annotation> <documentation> XML Schema 2002-03-18 by Pete Johnston. Adjusted for usage in the OAI-PMH. Schema imports the Dublin Core elements from the DCMI schema for unqualified Dublin Core. 2002-12-19 updated to use simpledc20021212.xsd (instead of simpledc20020312.xsd) </documentation> </annotation> <import namespace="http://purl.org/dc/elements/1.1/" schemaLocation="http://dublincore.org/schemas/xmls/simpledc20021212.xsd"/> <element name="dc" type="oai_dc:oai_dcType"/> <complexType name="oai_dcType"> <choice minOccurs="0" maxOccurs="unbounded"> <element ref="dc:title"/> <element ref="dc:creator"/> <element ref="dc:subject"/> <element ref="dc:description"/> <element ref="dc:publisher"/> <element ref="dc:contributor"/> <element ref="dc:date"/> <element ref="dc:type"/> <element ref="dc:format"/> <element ref="dc:identifier"/> <element ref="dc:source"/> <element ref="dc:language"/> <element ref="dc:relation"/> <element ref="dc:coverage"/> <element ref="dc:rights"/> </choice> </complexType> </schema> |
This Schema is available at http://www.openarchives.org/OAI/2.0/oai_dc.xsd |
<?xml version="1.0" encoding="UTF-8"?> <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:title xml:lang="en">The Cornell Law Quarterly</dc:title> <dc:date>1915-1916</dc:date> <dc:identifier>http://heinonline.org/HeinOnline/show.pl? handle=hein.journals/clqv1%26id=1%26size=4</dc:identifier> <dc:rights>Available by Subscription. See http://www.wshein.com</dc:rights> </oai_dc:dc> |
<?xml version="1.0" encoding="UTF-8"?> <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:title xml:lang="en">Grassmann's space analysis</dc:title> <dc:creator>Hyde, E. W. (Edward Wyllys)</dc:creator> <dc:subject>LCSH:Ausdehnungslehre; LCCN QA205.H99</dc:subject> <dc:publisher>J. Wiley & Sons</dc:publisher> <dc:date>Created: 1906; Available: 1991</dc:date> <dc:type>text</dc:type> <dc:identifier>http://resolver.library.cornell.edu/math/1796949 </dc:identifier> <dc:language>english</dc:language> <dc:rights xml:lang="en">Public Domain</dc:rights> </oai_dc:dc> |
Some passages in this document refer to the existence and goals of the accompanying Implementation Guidelines document.
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.
This document is based on the deliberations of the OAI Technical Committee: Caroline Arms (Library of Congress), Thomas Baron (CERN), Steven Bird (University of Pennsylvania), Les Carr (University of Southampton), Tim Cole (University of Illinois at Urbana Champaign), Thomas Krichel (Long Island University), Carl Lagoze (Cornell University), Michael Nelson (NASA), Andy Powell (UKOLN & University of Bath), Mogens Sandfaer (Danmarks Tekniske Videncenter), Hussein Suleman (Virginia Tech), Robert Tansley (HP), Herbert Van de Sompel (Los Alamos National Laboratory), Simeon Warner (Cornell University), Muhammad Zubair (Old Dominion University) and Jeff Young (OCLC).
Many thanks to all involved in alpha-testing of version 2.0 of the OAI-PMH. In addition to the above: Tim Brody (University of Southampton), Irena Dijour (Ex Libris), Naomi Dushay (Cornell University), Susanne Dobratz (Humboldt Universität zu Berlin), Curtis Fornadley (UCLA), Christopher Gutteridge (University of Southampton), Alan Kent (InQuirion Pty Ltd & RMIT University), David Letts (The British Library), Xiaoming Liu (Old Dominion University), Jon Phipps (Cornell University) and Francois Schiettecatte (FS Consulting Inc).
Special thanks to Pete Johnston (UKOLN & University of Bath) and Andy Powell (UKOLN & University of Bath) for work on the Dublin Core schema, and to Donna Bergmark (Cornell University) for work on the OAI validation and registration service.
Many thanks to everyone involved in the compilation and alpha-testing of version 1.0 and 1.1 of the OAI-PMH, and to all of you using this protocol.
2008-12-02:
Spell checked after all these years and several errors
corrected. No change of meaning. Added links to previous versions.
2004-10-12:
Changed wording and schema definition for characters
allowed in setSpec
and metadataPrefix
to agree.
2004-09-15:
Added section 2.5.1.
Corrected section 2.6.
Corrected second example in section 5.
Changed schema to defined a type for protocolVersion
and to enforce use of Z
notation for UTC datetime.
2003-02-21:
Changed identifiers in the examples
so that they conform to version 2.0 of the
oai-identifier
specification.
2002-12-19: Updated
oai_dc
schema to use revised Dublin Core schema
simpledc20021212.xsd
.
Corrected provenance
blocks in examples
(sections 2.5 and 4.5).
2002-06-14: Release of OAI-PMH version 2.0.
2002-05-02: Release of beta version of OAI-PMH version 2.0.
2002-05-06: Release of alpha-4 version of OAI-PMH version 2.0. Changed
document to reflect association of datestamps and deleted status with records
as opposed to items. Changed
requestURL
to
request
. Changed schema location of
oai-identifier
and
oai_dc
schema. Changed validation of
about
,
metadata
,
description
and
setDescription
to strict.
2002-04-07: Changed document to reflect the usage of a single schema
to validate all OAI-PMH responses.
2002-03-30: Release of alpha two version of OAI-PMH version 2.0.
2002-03-01: Release of alpha version of OAI-PMH version 2.0