From: =?windows-1254?Q?Windows_Internet_Explorer_8_taraf=FDndan_kaydedildi?=
Subject: Open Archives Initiative - Protocol for Metadata Harvesting - v.2.0
Date: Fri, 2 Apr 2010 12:04:30 +0300
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0035_01CAD25C.A6302E00"
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6002.18005

This is a multi-part message in MIME format.

------=_NextPart_000_0035_01CAD25C.A6302E00
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.openarchives.org/OAI/openarchivesprotocol.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Open Archives Initiative - Protocol for Metadata =
Harvesting - v.2.0</TITLE>
<STYLE id=3DinternalStyle type=3Dtext/css>BODY {
	BACKGROUND: white; COLOR: black
}
CODE {
	FONT-FAMILY: "Courier New", Courier, monospace; FONT-SIZE: 80%
}
PRE {
	FONT-FAMILY: "Courier New", Courier, monospace; FONT-SIZE: 80%
}
EM {
	COLOR: red
}
TABLE {
	BACKGROUND: #cccccc
}
TH {
	FONT-SIZE: 120%; FONT-WEIGHT: bold
}
TABLE.header {
	BACKGROUND: white
}
TD.docsubtitle {
	FONT-SIZE: 150%; FONT-WEIGHT: bold
}
</STYLE>

<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META name=3DDC.title=20
content=3D"Open Archives Initiative - Protocol for Metadata Harvesting - =
v.2.0">
<META name=3DDC.creator content=3D"Lagoze, Carl">
<META name=3DDC.creator content=3D"Van de Sompel, Herbert">
<META name=3DDC.creator content=3D"Nelson, Michael">
<META name=3DDC.creator content=3D"Warner, Simeon">
<META name=3DDC.date content=3D2002-06-14>
<META name=3DDC.date content=3D2002-09-13>
<META name=3DDC.date content=3D2002-12-19>
<META name=3DDC.date content=3D2003-02-21>
<META name=3DDC.date content=3D2008-12-07T20:42:00Z>
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18904"></HEAD>
<BODY bgColor=3D#ffffff><BR>
<TABLE class=3Dheader border=3D0 summary=3D"Logo and heading" =
width=3D"100%">
  <TBODY>
  <TR>
    <TD align=3Dmiddle><A href=3D"http://www.openarchives.org/"><IMG=20
      alt=3D"OAI logo" =
src=3D"http://www.openarchives.org/images/OA100.gif"=20
      width=3D100 height=3D70></A> </TD>
    <TD width=3D"87%" align=3Dleft>
      <H1>The Open Archives Initiative Protocol for Metadata=20
  Harvesting</H1></TD></TR>
  <TR>
    <TD>&nbsp;</TD>
    <TD width=3D"87%" align=3Dleft>
      <H4>Protocol Version 2.0 of 2002-06-14<BR>Document Version=20
      =
2008-12-07T20:42:00Z<BR>http://www.openarchives.org/OAI/2.0/openarchivesp=
rotocol.htm</H4>
      <H4>Previous protocol version: <A=20
      =
href=3D"http://www.openarchives.org/OAI/1.1/openarchivesprotocol.htm">Pro=
tocol=20
      Version 1.1 of 2001-07-02</A><BR><A=20
      =
href=3D"http://www.openarchives.org/OAI/2.0/migration.htm">Instructions</=
A>=20
      for migrating from Version 1.1 to 2.0<BR><A=20
      =
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
      Guidelines</A></H4></TD></TR></TBODY></TABLE>
<P><B>Editors</B></P>
<P><U>The OAI Executive:</U><BR><A =
href=3D"mailto:lagoze@cs.cornell.edu">Carl=20
Lagoze</A> &lt;<A =
href=3D"mailto:lagoze@cs.cornell.edu">lagoze@cs.cornell.edu</A>=20
&gt; -- <A href=3D"http://www.cs.cornell.edu/">Cornell University - =
Computer=20
Science</A> <BR><A href=3D"mailto:herbertv@cs.cornell.edu">Herbert Van =
de=20
Sompel</A> &lt;<A =
href=3D"mailto:herbertv@lanl.gov">herbertv@lanl.gov</A> &gt; --=20
<A href=3D"http://lib-www.lanl.gov/">Los Alamos National Laboratory - =
Research=20
Library </A><BR><BR><U>From the OAI Technical Committee:</U><BR><A=20
href=3D"mailto:m.l.nelson@larc.nasa.gov">Michael Nelson</A> &lt;<A=20
href=3D"mailto:m.l.nelson@larc.nasa.gov">m.l.nelson@larc.nasa.gov</A> =
&gt; -- <A=20
href=3D"http://www.larc.nasa.gov/">NASA - Langley Research Center</A> =
<BR><A=20
href=3D"mailto:simeon@cs.cornell.edu">Simeon Warner</A> &lt;<A=20
href=3D"mailto:simeon@cs.cornell.edu">simeon@cs.cornell.edu</A> &gt; -- =
<A=20
href=3D"http://www.cs.cornell.edu/">Cornell University - Computer =
Science</A></P>
<P><B>Table of Contents</B></P>
<P><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Introdu=
ction">1.=20
Introduction</A><BR><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Definit=
ionsConcepts">2.=20
Definitions and Concepts</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#harvest=
er">2.1.=20
Harvester</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Reposit=
ory">2.2.=20
Repository</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Item">2=
.3.=20
Item</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#UniqueI=
dentifier">2.4.=20
Unique Identifier</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>2.5.=20
Record</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Deleted=
Records">2.5.1=20
Deleted records</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set">2.=
6.=20
Set</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Selecti=
veHarvesting">2.7.=20
Selective Harvesting</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Selecti=
veHarvestingandDatestamps">2.7.1=20
Selective Harvesting and=20
Datestamps</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Selecti=
veHarvestingandSets">2.7.2=20
Selective Harvesting and Sets</A><BR><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Protoco=
lFeatures">3.=20
Protocol Features</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#HTTPemb=
edding">3.1.=20
HTTP Embedding of OAI-PMH =
requests</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#HTTPReq=
uestFormat">3.1.1.=20
HTTP Request Format</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#HTTPRes=
ponseFormat">3.1.2.=20
HTTP Response Format</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Respons=
eCompression">3.1.3.=20
Response Compression</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#XMLResp=
onse">3.2.=20
XML Response Format</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#OAIPMHs=
chema">3.2.1.=20
XML Schema for Validating Responses to OAI-PMH=20
Requests</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Dates">=
3.3.=20
UTCdatetime</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mpsRequests">3.3.1.=20
UTCdatetime in Protocol =
Requests</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mpsResponses">3.3.2.=20
UTCdatetime in Protocol Responses</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Metadat=
aNamespaces">3.4.=20
metadataPrefix and Metadata Schema</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#FlowCon=
trol">3.5.=20
Flow Control</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Idempot=
ency">3.5.1=20
Idempotency of resumptionTokens</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ErrorCo=
nditions">3.6.=20
Error and Exception Conditions</A><BR><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Protoco=
lMessages">4.=20
Protocol Requests and Responses</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd">4.1.=20
GetRecord</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Identif=
y">4.2.=20
Identify</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers">4.3.=20
ListIdentifiers</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListMet=
adataFormats">4.4.=20
ListMetadataFormats</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords">4.5.=20
ListRecords</A><BR>&nbsp;&nbsp;&nbsp;<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListSet=
s">4.6.=20
ListSets</A><BR><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#dublinc=
ore">5.=20
Dublin Core</A><BR><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ImpGuid=
">6.=20
Implementation Guidelines</A><BR><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#acknowl=
edgements">Acknowledgements</A><BR><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Documen=
tHistory">Document=20
History</A> </P>
<H1>1. <A name=3DIntroduction>Introduction</A></H1>
<P>The Open Archives Initiative Protocol for Metadata Harvesting =
(referred to as=20
the OAI-PMH in the remainder of this document) provides an=20
application-independent interoperability framework based on <I>metadata=20
harvesting</I>. There are two classes of participants in the OAI-PMH=20
framework:</P>
<UL>
  <LI><I>Data Providers</I> administer systems that support the OAI-PMH =
as a=20
  means of exposing metadata; and=20
  <LI><I>Service Providers</I> use metadata harvested via the OAI-PMH as =
a basis=20
  for building value-added services. </LI></UL>
<P>In this document the key words "<B>must</B>", "<B>must not</B>", "<B> =

required</B>", "<B>shall</B>", "<B>shall not</B>", "<B>should</B>", "<B> =
should=20
not</B>", "<B>recommended</B>", "<B>may</B>", and "<B>optional</B> " in =
<B>bold=20
face</B> are to be interpreted as described in <A=20
href=3D"http://www.ietf.org/rfc/rfc2119.txt">RFC 2119</A> . An =
implementation is=20
not conformant if it fails to satisfy one or more of the "<B>must</B>" =
or=20
"<B>required</B>" level requirements for the protocols it =
implements.</P>
<P>This document refers in several places to "community-specific" =
practices to=20
which individual protocol implementations <B>may</B> conform. These =
practices=20
are described in an accompanying <A=20
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
Guidelines</A> document.</P>
<H1>2. <A name=3DDefinitionsConcepts>Definitions and Concepts</A></H1>
<H2>2.1 <A name=3Dharvester>Harvester</A></H2>
<P><B>A <I>harvester</I> is a client application that issues OAI-PMH=20
requests.</B> A harvester is operated by a service provider as a means =
of=20
collecting metadata from <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Reposit=
ory">repositories</A>.</P>
<H2>2.2 <A name=3DRepository>Repository</A></H2>
<P><B>A <I>repository</I> is a network accessible server that can =
process the 6=20
OAI-PMH requests in the manner described in this document.</B> A =
repository is=20
managed by a data provider to expose metadata to <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#harvest=
er">harvesters</A>.=20
To allow various repository configurations, the OAI-PMH distinguishes =
between=20
three distinct entities related to the metadata made accessible by the=20
OAI-PMH.</P>
<UL>
  <LI><I><A name=3DResource>resource</A></I> - A resource is the object =
or "stuff"=20
  that metadata is "about". The nature of a resource, whether it is =
physical or=20
  digital, or whether it is stored in the repository or is a constituent =
of=20
  another database, is outside the scope of the OAI-PMH.=20
  <LI><I>item</I> - An <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Item">i=
tem</A>=20
  is a constituent of a repository from which metadata about a resource =
can be=20
  disseminated. That metadata may be disseminated on-the-fly from the =
associated=20
  resource, cross-walked from some canonical form, actually stored in =
the=20
  repository, etc.=20
  <LI><I>record</I> - A <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>record</A>=20
  is metadata in a specific <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Metadat=
aNamespaces">metadata=20
  format</A>. A record is returned as an XML-encoded byte stream in =
response to=20
  a protocol request to disseminate a specific metadata format from a=20
  constituent item. </LI></UL>
<H2>2.3 <A name=3DItem>Item</A></H2>
<P><B>An <I>item</I> is a constituent of a repository from which =
metadata about=20
a resource can be disseminated.</B> An item is conceptually a container =
that=20
stores or dynamically generates metadata about a single resource in =
multiple=20
formats, each of which can be harvested as <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>records</A>=20
via the OAI-PMH. Each item has an <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#UniqueI=
dentifier">identifier</A>=20
that is unique within the scope of the repository of which it is a=20
constituent.</P>
<H2>2.4 <A name=3DUniqueIdentifier>Unique Identifier</A></H2>
<P><B>A <I>unique identifier</I> unambiguously identifies an item within =
a=20
repository; the unique identifier is used in OAI-PMH requests for =
extracting=20
metadata from the item.</B> Items <B>may</B> contain metadata in <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Metadat=
aNamespaces">multiple=20
formats</A>. The unique identifier maps to the item, and all possible <A =

href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>records</A>=20
available from a single item share the same unique identifier.</P>
<P>The format of the unique identifier <B>must</B> correspond to that of =
the <A=20
href=3D"http://www.ietf.org/rfc/rfc2396.txt?number=3D2396">URI (Uniform =
Resource=20
Identifier)</A> syntax. Individual communities <B>may</B> develop=20
community-specific <A=20
href=3D"http://www.ietf.org/rfc/rfc2396.txt?number=3D2396">URI</A> =
schemes for=20
coordinated use across repositories. The scheme component of the unique=20
identifiers <B>must not</B> correspond to that of a recognized URI =
scheme unless=20
the identifiers conform to that scheme. Repositories <B>may</B> =
implement the <A=20
href=3D"http://www.openarchives.org/OAI/2.0/oai-identifier.xsd"><CODE>oai=
-identifier</CODE></A>=20
syntax described in the accompanying <A=20
href=3D"http://www.openarchives.org/OAI/2.0/guidelines-oai-identifier.htm=
">Implementation=20
Guidelines</A> document.</P>
<P>Unique identifiers play two roles in the protocol:</P>
<OL>
  <LI><I>Response:</I> Identifiers are returned by both the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers"><CODE>ListIdentifiers</CODE></A>=20
  and <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>=20
  requests.=20
  <LI><I>Request:</I> An identifier, in combination with a <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Metadat=
aNamespaces"><CODE>metadataPrefix</CODE></A>,=20
  is used in the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd"><CODE>GetRecord</CODE></A>=20
  request as a means of requesting a <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>record</A>=20
  in a specific metadata format from an item. </LI></OL>
<P>Note that the identifier described here is <I>not</I> that of a=20
<I>resource</I>. The nature of a resource identifier is outside the =
scope of the=20
OAI-PMH. To facilitate access to the resource associated with harvested=20
metadata, repositories <B>should</B> use an element in metadata records =
to=20
establish a linkage between the record (and the identifier of its item) =
and the=20
identifier (URL, URN, DOI, etc.) of the associated resource. The =
mandatory=20
Dublin Core format provides the <CODE>identifier</CODE> element that=20
<B>should</B> be used for this purpose.</P>
<H2>2.5 <A name=3DRecord>Record</A></H2>
<P><B>A record is metadata expressed in a single format. A record is =
returned in=20
an XML-encoded byte stream in response to an OAI-PMH request for =
metadata from=20
an item. </B>A record is identified unambiguously by the combination of =
the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#UniqueI=
dentifier">unique=20
identifier</A> of the item from which the record is available, the=20
<CODE>metadataPrefix</CODE> identifying the metadata format of the =
record, and=20
the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">datestamp</A>=20
of the record. The XML-encoding of records is organized into the =
following=20
parts:</P>
<UL>
  <LI><I><A name=3Dheader></A>header</I> -- contains the unique =
identifier of the=20
  item and properties necessary for selective harvesting. The header =
consists of=20
  the following parts:=20
  <UL>
    <LI>the <A=20
    =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#UniqueI=
dentifier">unique=20
    identifier</A> -- the unique identifier of an item in a repository;=20
    <LI>the <A=20
    =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">datestamp</A>=20
    -- the date of creation, modification or deletion of the record for =
the=20
    purpose of <A=20
    =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">selective=20
    harvesting</A>.=20
    <LI>zero or more <A=20
    =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set">se=
tSpec</A>=20
    elements -- the <A=20
    =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set">se=
t</A>=20
    membership of the item for the purpose of <A=20
    =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Selecti=
veHarvestingandSets">selective=20
    harvesting</A>.=20
    <LI>an <B>optional</B> <CODE>status</CODE> attribute with a value of =

    <CODE>deleted</CODE> indicates the withdrawal of availability of the =

    specified metadata format for the item, dependent on the repository =
support=20
    for <A=20
    =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#deletio=
n">deletions</A>.=20
    </LI></UL>
  <LI><I><A name=3Dmetadatapart>metadata</A></I> -- a single =
manifestation of the=20
  metadata from an item. The OAI-PMH supports items with multiple =
manifestations=20
  (formats) of metadata. At a minimum, repositories <B>must</B> be able =
to=20
  return records with metadata expressed in the <A=20
  href=3D"http://purl.org/DC/documents/rec-dces-19990702.htm">Dublin =
Core</A>=20
  format, without any <A=20
  =
href=3D"http://purl.org/DC/documents/rec/dcmes-qualifiers-20000711.htm">q=
ualification</A>.=20
  Optionally, a repository <B>may</B> also disseminate other formats of=20
  metadata. The specific metadata format of the record to be =
disseminated is=20
  specified by means of an argument -- the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Metadat=
aNamespaces"><CODE>metadataPrefix</CODE></A>=20
  -- in the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd"><CODE>GetRecord</CODE></A>=20
  or <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>=20
  request that produces the record. The <CODE><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListMet=
adataFormats">ListMetadataFormats</A></CODE>=20
  request returns the list of all metadata formats available from a =
repository,=20
  or for a specific item (which can be specified as an argument to the =
<CODE><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListMet=
adataFormats">ListMetadataFormats</A></CODE>=20
  request).=20
  <LI><I>about</I> -- an <B>optional</B> and repeatable container to =
hold data=20
  about the metadata part of the record. The contents of an about =
container=20
  <B>must</B> conform to an XML Schema. Individual implementation =
communities=20
  <B>may</B> create XML Schema that define specific uses for the =
contents of=20
  about containers. Two common uses of about containers are:=20
  <UL>
    <LI><I>rights statements: </I>some repositories may find it =
desirable to=20
    attach terms of use to the metadata they make available through the =
OAI-PMH.=20
    No specific set of XML tags for rights expression is defined by =
OAI-PMH, but=20
    the about container is provided to allow for encapsulating =
community-defined=20
    rights tags.=20
    <LI><I>provenance statements: </I>One suggested use of the about =
container=20
    is to indicate the provenance of a metadata record, e.g. whether it =
has been=20
    harvested itself and if so from which repository, and when. An XML =
Schema=20
    for such a provenance container, as well as some supporting =
information is=20
    available from the accompanying <A=20
    =
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
    Guidelines</A> document. </LI></UL></LI></UL>
<P>The following example shows an XML-encoding of a <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>record</A>=20
and its components:</P>
<UL>
  <LI>the <I>header</I> part with:=20
  <UL>
    <LI>a unique identifier of the item from which the record was =
disseminated,=20
    equal to oai:arXiv.org:cs/0112017;=20
    <LI>the datestamp of the record equal to 2002-02-28;=20
    <LI>two setSpecs, respectively <CODE>cs</CODE> and =
<CODE>math</CODE>,=20
    indicating that the item from which the record was disseminated =
belongs to=20
    two sets of the repository; </LI></UL>
  <LI>the <I>metadata</I> part. This consists of a single root tag - in =
the=20
  example the tag <CODE>oai_dc:dc</CODE> - with the nested tags =
belonging to the=20
  corresponding metadata format - in the example, Dublin Core elements =
such as=20
  <CODE>dc:title</CODE>. Note that the root tag within the metadata part =

  includes a number of attributes that are common to all XML documents =
that use=20
  namespaces and schema validity:=20
  <UL>
    <LI><I>namespace declarations</I> -- the declarations of the =
namespaces used=20
    within the metadata part, each of which is prefixed with =
<CODE>xmlns</CODE>.=20
    Namespace declarations within the metadata part fall into two =
categories:=20
    <UL>
      <LI><I>metadata format specific namespace(s)</I> - every metadata =
part=20
      <B>must</B> include one or more <CODE>xmlns</CODE> prefixed =
attributes=20
      that define the correspondence between a metadata format prefix -- =
e.g.=20
      <CODE>dc</CODE> -- and the namespace URI (as defined by the <A=20
      =
href=3D"http://www.w3.org/TR/1999/REC-xml-names-19990114/Overview.html">X=
ML=20
      namespace specification</A> ) of the respective metadata format. =
Some=20
      metadata formats employ tags from multiple namespaces, requiring =
multiple=20
      <CODE>xmlns</CODE> prefixed attributes -- in the example, there =
are=20
      declarations for both <CODE>oai_dc</CODE> and <CODE>dc</CODE>.=20
      <LI><I>xml schema namespace</I> - every metadata part <B>must</B> =
include=20
      the attribute <CODE>xmlns:xsi</CODE>, the value of which =
<B>must</B>=20
      always be the URI shown in the example, which is the namespace URI =
for XML=20
      schema. </LI></UL>
    <LI><CODE>xsi:schemaLocation</CODE> -- the value of which is a URI, =
URL=20
    pair; the first is the namespace URI (as defined by the <A=20
    =
href=3D"http://www.w3.org/TR/1999/REC-xml-names-19990114/Overview.html">X=
ML=20
    namespace specification</A>) of the metadata that follows in this =
part, and=20
    the second is the URL of the XML schema for validation of the =
metadata that=20
    follows. </LI></UL>
  <LI>one <I>about</I> part of the record which uses the=20
  <CODE>oai</CODE>_<CODE>provenance.xsd</CODE> schema, described in the=20
  accompanying <A=20
  =
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
  Guidelines</A> document, as a means to provide information regarding =
the=20
  origins of the metadata part of the record. Note that the root element =
within=20
  each about part has the same structure as the root element in the =
metadata=20
  part. </LI></UL>
<TABLE border=3D2 summary=3D"Record form example" width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;header&gt;
  &lt;identifier&gt;oai:arXiv:cs/0112017&lt;/identifier&gt;
  &lt;datestamp&gt;2002-02-28&lt;/datestamp&gt;
  &lt;setSpec&gt;cs&lt;/setSpec&gt;
  &lt;setSpec&gt;math&lt;/setSpec&gt;
&lt;/header&gt;
&lt;metadata&gt;
 &lt;oai_dc:dc=20
     xmlns:oai_dc=3D"http://www.openarchives.org/OAI/2.0/oai_dc/"=20
     xmlns:dc=3D"http://purl.org/dc/elements/1.1/"=20
     xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"=20
     xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/oai_dc/=20
     http://www.openarchives.org/OAI/2.0/oai_dc.xsd"&gt;
   &lt;dc:title&gt;Using Structural Metadata to Localize Experience of =
Digital=20
             Content&lt;/dc:title&gt;
   &lt;dc:creator&gt;Dushay, Naomi&lt;/dc:creator&gt;
   &lt;dc:subject&gt;Digital Libraries&lt;/dc:subject&gt;
   &lt;dc:description&gt;With the increasing technical sophistication of =
both=20
    information consumers and providers, there is increasing demand for=20
    more meaningful experiences of digital information. We present a=20
    framework that separates digital object experience, or rendering,=20
    from digital object storage and manipulation, so the
    rendering can be tailored to particular communities of users.=20
   &lt;/dc:description&gt;
   &lt;dc:description&gt;Comment: 23 pages including 2 appendices,=20
                   8 figures&lt;/dc:description&gt;
   &lt;dc:date&gt;2001-12-14&lt;/dc:date&gt;
   &lt;dc:type&gt;e-print&lt;/dc:type&gt;
   =
&lt;dc:identifier&gt;http://arXiv.org/abs/cs/0112017&lt;/dc:identifier&gt=
;
 &lt;/oai_dc:dc&gt;
&lt;/metadata&gt;
&lt;about&gt;=20
  &lt;provenance
      xmlns=3D"http://www.openarchives.org/OAI/2.0/provenance"=20
      xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"=20
      =
xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/provenance
      http://www.openarchives.org/OAI/2.0/provenance.xsd"&gt;
    &lt;originDescription harvestDate=3D"2002-02-02T14:10:02Z" =
altered=3D"true"&gt;
      &lt;baseURL&gt;http://the.oa.org&lt;/baseURL&gt;
      &lt;identifier&gt;oai:r2:klik001&lt;/identifier&gt;
      &lt;datestamp&gt;2002-01-01&lt;/datestamp&gt;
      =
&lt;metadataNamespace&gt;http://www.openarchives.org/OAI/2.0/oai_dc/&lt;/=
metadataNamespace&gt;
    &lt;/originDescription&gt;
  &lt;/provenance&gt;
&lt;/about&gt;
      </PRE></TD></TR></TBODY></TABLE>
<H3>2.5.1 <A name=3DDeletedRecords>Deleted records</A><A =
name=3Ddeletion></A></H3>
<P>If a record is no longer available then it is said to be =
<I>deleted</I>.=20
Repositories <B>must</B> declare one of three levels of support for =
deleted=20
records in the <CODE>deletedRecord</CODE> element of the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Identif=
y">Identify</A>=20
response:</P>
<UL>
  <LI><CODE>no</CODE> - the repository does not maintain information =
about=20
  deletions. A repository that indicates this level of support <B>must =
not</B>=20
  reveal a deleted status in any response.=20
  <LI><CODE>persistent</CODE> - the repository maintains information =
about=20
  deletions with no time limit. A repository that indicates this level =
of=20
  support <B>must</B> persistently keep track of the full history of =
deletions=20
  and consistently reveal the status of a deleted record over time.=20
  <LI><CODE>transient</CODE> - the repository does not guarantee that a =
list of=20
  deletions is maintained persistently or consistently. A repository =
that=20
  indicates this level of support <B>may</B> reveal a deleted status for =

  records. </LI></UL>
<P>If a repository does not keep track of deletions then such records =
will=20
simply vanish from responses and there will be no way for a harvester to =

discover deletions through continued incremental harvesting. If a =
repository=20
does keep track of deletions then the datestamp of the deleted record=20
<B>must</B> be the date and time that it was deleted. Responses to =
<CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd">GetRecord</A></CODE>=20
request for a deleted record <B>must</B> then include a <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>header</A></CODE>=20
with the attribute <CODE>status=3D"deleted"</CODE>, and <B>must not</B> =
include=20
<CODE>metadata</CODE> or <CODE>about</CODE> parts. Similarly, responses =
to <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Selecti=
veHarvesting">selective=20
harvesting</A> requests with set membership and date range criteria that =
include=20
deleted records <B>must</B> include the headers of these records. =
Incremental=20
harvesting will thus discover deletions from repositories that keep =
track of=20
them.</P>
<P>Deleted status is a property of individual records. Like a normal =
record, a=20
deleted record is identified by a <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#UniqueI=
dentifier">unique=20
identifier</A>, a <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
aPrefix">metadataPrefix</A>=20
and a <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">datestamp</A>.=20
Other records, with different metadataPrefix but the same unique =
identifier, may=20
remain available for the item.</P>
<H2>2.6 <A name=3DSet>Set</A></H2>
<P><B>A <I>set</I> is an optional construct for grouping items for the =
purpose=20
of <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Selecti=
veHarvestingandSets">selective=20
harvesting</A>. </B>Repositories <B>may</B> organize items into sets. =
Set=20
organization <B>may</B> be flat, i.e. a simple list, or hierarchical. =
Multiple=20
hierarchies with distinct, independent top-level nodes are allowed. =
Hierarchical=20
organization of sets is expressed in the syntax of the =
<CODE>setSpec</CODE>=20
parameter as described below. When a repository defines a set =
organization it=20
<B>must</B> include set membership information in the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>headers</A>=20
of items returned in response to the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers"><CODE>ListIdentifiers</CODE></A>=20
, <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>=20
and <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd"><CODE>GetRecord</CODE></A>=20
requests.</P>
<P>Each node in a set organization of a repository has:</P>
<UL>
  <LI>a <CODE>setSpec</CODE> -- a colon [<CODE>:</CODE>] separated list=20
  indicating the path from the root of the set hierarchy to the =
respective node.=20
  Each element in the list is a string consisting of any valid <A=20
  href=3D"http://www.ietf.org/rfc/rfc2396.txt">URI <I>unreserved</I>=20
  characters</A>, which <B>must not</B> contain any colons =
[<CODE>:</CODE>].=20
  Since a <CODE>setSpec</CODE> forms a unique identifier for the set =
within the=20
  repository, it <B>must </B>be unique for each set. Flat set =
organizations have=20
  only sets with <CODE>setSpec</CODE> that do not contain any colons=20
  [<CODE>:</CODE>].=20
  <LI>a <CODE>setName</CODE> -- a short human-readable string naming the =
set.=20
  <LI>a <CODE>setDescription</CODE> -- an <B>optional</B> and repeatable =

  container that <B>may</B> hold community-specific XML-encoded data =
about the=20
  set; the accompanying <A=20
  =
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
  Guidelines</A> document provides suggestions regarding the usage of =
this=20
  container. </LI></UL>
<P>The <A name=3DsetHierarchyExample></A>following is an example of a =
possible set=20
hierarchy in a repository:</P>
<UL>
  <LI>Institutions=20
  <UL>
    <LI>Oceanside University of Nebraska=20
    <LI>Valley View University of Florida </LI></UL>
  <LI>Subjects=20
  <UL>
    <LI>Existential Kenesiology=20
    <LI>Quantum Psychology </LI></UL></LI></UL>
<P>The following table shows a possible representation of the above set=20
hierarchy by means of <CODE>setName</CODE> and respective =
<CODE>setSpec</CODE>=20
values.</P>
<TABLE border=3D2 summary=3D"Set structure example" width=3D"80%">
  <TBODY>
  <TR>
    <TD width=3D"38%"><CODE>setName</CODE></TD>
    <TD width=3D"33%"><CODE>setSpec</CODE></TD></TR>
  <TR>
    <TD width=3D"38%">Institutions</TD>
    <TD width=3D"33%"><CODE>institution</CODE></TD></TR>
  <TR>
    <TD width=3D"38%">
      <P>Oceanside University of Nebraska</P></TD>
    <TD width=3D"33%"><CODE>institution:nebraska</CODE></TD></TR>
  <TR>
    <TD width=3D"38%">
      <P>Valley View University of Florida</P></TD>
    <TD width=3D"33%"><CODE>institution:florida</CODE></TD></TR>
  <TR>
    <TD width=3D"38%">Subjects</TD>
    <TD width=3D"33%"><CODE>subject</CODE></TD></TR>
  <TR>
    <TD width=3D"38%">
      <P>Existential Kenesiology</P></TD>
    <TD width=3D"33%"><CODE>subject:kenesiology</CODE></TD></TR>
  <TR>
    <TD width=3D"38%">
      <P>Quantum Psychology</P></TD>
    <TD =
width=3D"33%"><CODE>subject:quantum</CODE></TD></TR></TBODY></TABLE>
<P>An item <B>may</B> be organized in one set, several sets, or no sets =
at all.=20
In the example above, it is conceivable that an individual item is =
organized in=20
both <CODE>subject</CODE> and <CODE>institution:florida</CODE>. A =
harvester=20
<B>should not</B> assume that harvesting every set in a repository will =
retrieve=20
metadata from all items in the repository. Items <B>may</B> also be =
assigned to=20
interior nodes in the set hierarchy.</P>
<P>The actual meaning of a set or of the arrangement of sets in a =
repository is=20
not defined in the protocol. It is expected that individual communities =
may=20
formulate well-defined set configurations with perhaps a controlled =
vocabulary=20
for <CODE>setNames</CODE> and <CODE>setSpec</CODE> , and may even =
develop=20
mechanisms for exposing these to harvesters. For example, a group of =
cooperating=20
e-print archives in a specific discipline may agree on sets that arrange =

metadata in their repositories based on a controlled subject =
classification.</P>
<P>A repository's set hierarchy is represented in the protocol via=20
<CODE>setSpecs</CODE>. <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListSet=
s">ListSets</A></CODE>=20
returns a list indicating the configuration of sets in a repository. =
Each member=20
of this list <B>must</B> include a <CODE>setSpec</CODE> and a=20
<CODE>setName</CODE> and <B>may</B> include a =
<CODE>setDescription</CODE>. <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>=20
and <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers">ListIdentifiers</A></CODE>=20
requests <B>may</B> include an <B>optional</B> <CODE>set</CODE> =
argument, the=20
value of which is a <CODE>setSpec</CODE>, to specify the target set for=20
selective harvesting. In the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#setHier=
archyExample">previous=20
example</A> of a set hierarchy, the <CODE>setSpec</CODE>=20
<CODE>institution:nebraska</CODE> could be used in a request to return =
only=20
those records that are disseminated from items organized in the set =
represented=20
by this <CODE>setSpec</CODE>. Five issues should be noted here:</P>
<UL>
  <LI>If a repository supports sets then it <B>must</B> include set =
membership=20
  information in response to <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers"><CODE>ListIdentifiers</CODE></A>,=20
  <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>=20
  and <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd"><CODE>GetRecord</CODE></A>=20
  requests. The list of <CODE>setSpec</CODE> elements should include =
only the=20
  minimum number of <CODE>setSpec</CODE> elements required to specify =
the set=20
  membership. Using the previous example of a set hierarchy, the header =
for an=20
  item organized in set <CODE>institution:florida</CODE> should not =
include=20
  <CODE>setSpec</CODE> <CODE>institution</CODE> since that is implied by =
the=20
  <CODE>setSpec</CODE> <CODE>institution:florida</CODE>.=20
  <LI>An item <B>may</B> be organized in more than one set; meaning that =

  different <CODE>setSpec</CODE> arguments <B>may</B> return the same =
record(s).=20

  <LI>An item need not be organized in any set; meaning that an =
exhaustive=20
  repetition of <CODE><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords">ListRecords</A></CODE>=20
  requests with all possible <CODE>setSpecs</CODE> is not guaranteed to =
return=20
  all records in the repository. The only guaranteed methods of =
harvesting all=20
  records or headers are <CODE><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords">ListRecords</A></CODE>=20
  or <CODE><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers">ListIdentifiers</A></CODE>=20
  requests with no <CODE>setSpec</CODE> argument.=20
  <LI>When a <CODE>setSpec</CODE> is used as an argument, the response=20
  <B>must</B> include records or headers from all items in the set =
specified by=20
  the <CODE>setSpec</CODE> , and all records or headers from items in =
sets that=20
  are descendant from the specified set. Using the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#setHier=
archyExample">previous=20
  example</A> of a set hierarchy, a <CODE>setSpec</CODE> of=20
  <CODE>institution</CODE> to the <CODE><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords">ListRecords</A></CODE>=20
  request will return all records from metadata organized within the set =
with a=20
  <CODE>setSpec</CODE> value equal to <CODE>institution</CODE> and =
within the=20
  descendent sets with setSpec values equal to =
<CODE>institution:florida</CODE>=20
  and <CODE>institution:nebraska</CODE>.=20
  <LI>The set hierarchy of a repository may include sets that are empty. =

</LI></UL>
<H2>2.7 <A name=3DSelectiveHarvesting>Selective Harvesting</A><A=20
name=3DDatestamp></A></H2>
<P><B><I>Selective harvesting</I> allows harvesters to limit harvest =
requests to=20
portions of the metadata available from a repository.</B> The OAI-PMH =
supports=20
selective harvesting with two types of harvesting criteria that =
<B>may</B> be=20
combined in an OAI-PMH request: <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">datestamps</A>=20
and <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Selecti=
veHarvestingandSets">set=20
membership</A>.</P>
<H3>2.7.1 <A name=3DSelectiveHarvestingandDatestamps>Selective =
Harvesting and=20
Datestamps</A></H3>
<P>Harvesters <B>may</B> use <I>datestamps</I> to harvest only those =
records=20
that were created, deleted, or modified within a specified date range. =
To=20
specify datestamp-based selective harvesting, datestamps are included as =
values=20
of the <B>optional</B> arguments, <CODE>from</CODE> and =
<CODE>until</CODE>, in=20
the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>=20
and <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers"><CODE>ListIdentifiers</CODE></A>=20
requests. Harvesting is restricted to the range specified by the=20
<CODE>from</CODE> and <CODE>until</CODE> arguments, extending back to =
the=20
earliest datestamp if <CODE>from</CODE> is omitted, and forward to the =
most=20
recent datestamp if <CODE>until</CODE> is omitted. Range limits are=20
<I>inclusive: </I><CODE>from</CODE> specifies a bound that <B>must</B> =
be=20
interpreted as "greater than or equal to", <CODE>until</CODE> specifies =
a bound=20
that <B>must</B> be interpreted as "less than or equal to". Therefore, =
the=20
<CODE>from</CODE> argument <STRONG>must</STRONG> be less than or equal =
to the=20
<CODE>until</CODE> argument. Otherwise, a repository must issue a=20
<CODE>badArgument</CODE> error.</P>
<P>Repositories <B>must</B> support selective harvesting with the=20
<CODE>from</CODE> and <CODE>until</CODE> arguments expressed at day =
granularity.=20
<B>Optional</B> support for seconds granularity is indicated in the =
response to=20
the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Identif=
y"><CODE>Identify</CODE></A>=20
request. The value of datestamps in both requests and responses =
<B>must</B>=20
comply to the specifications for <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Dates">=
UTCdatetime</A>=20
in this document. A repository <B>must</B> update the datestamp of a =
record if a=20
change occurs, the result of which would be a change to the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
apart">metadata=20
part</A> of the XML-encoding of the record. Such changes include, but =
are not=20
limited to, changes to the metadata of the record, changes to the =
metadata=20
format of the record, introduction of a new metadata format, termination =
of=20
support for a metadata format, etc.</P>
<P>Datestamp ranges for selective harvesting are expressed in the=20
<CODE>from</CODE> and <CODE>until</CODE> arguments that <B>may</B> be =
submitted=20
in the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>=20
and <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers"><CODE>ListIdentifiers</CODE></A>=20
requests. Repositories <B>must</B> use the following rules to create a =
<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>=20
response matching the specified datestamp range according to the type of =
change=20
that occurred within the repository. The response to a <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers">ListIdentifiers</A></CODE>=20
request follows the same rules but is abbreviated to include only =
headers rather=20
than records.</P>
<UL>
  <LI><I>modification</I> - the response <B>must</B> include records,=20
  corresponding to the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
aPrefix"><CODE>metadataPrefix</CODE></A>=20
  argument, which have changed within the bounds of the =
<CODE>from</CODE> and=20
  <CODE>until</CODE> arguments.=20
  <LI><I>creation</I> - the response <B>must</B> include records, =
corresponding=20
  to the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
aPrefix"><CODE>metadataPrefix</CODE></A>=20
  argument, that have become available from the repository within the =
bounds of=20
  the <CODE>from</CODE> and <CODE>until</CODE> arguments.=20
  <LI><I>deletion</I> - depending on the level at which a repository =
keeps track=20
  of <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Deleted=
Records">deleted=20
  records</A>, the response <B>may</B> include headers of records, =
corresponding=20
  to the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
aPrefix"><CODE>metadataPrefix</CODE></A>=20
  argument, which have been withdrawn from the repository within the =
bounds of=20
  the <CODE>from</CODE> and <CODE>until</CODE> arguments. Deleted status =
is=20
  indicated via the status attribute of the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>header</A>=20
  element and no metadata is included. </LI></UL>
<P>Every <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>header</A>=20
returned by the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd"><CODE>GetRecord</CODE></A>,=20
<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>=20
or <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers"><CODE>ListIdentifiers</CODE></A>=20
requests contains a datestamp, which reflects the most recent date and =
time of=20
the creation, modification, or deletion according to the rules defined=20
above.</P>
<H3>2.7.2 <A name=3DSelectiveHarvestingandSets>Selective Harvesting and=20
Sets</A></H3>
<P>Harvesters may specify <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set">se=
t</A>=20
membership as a criteria for selective harvesting. To specify set-based=20
selective harvesting, a <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set"><C=
ODE>setSpec</CODE></A>=20
is included as the value of the <B>optional</B> <CODE>set</CODE> =
argument to the=20
<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>=20
and <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers"><CODE>ListIdentifiers</CODE></A>=20
requests, thereby specifying selective harvesting of records from items =
within=20
the respective set.</P>
<P>When a <CODE>setSpec</CODE> is used as an argument, the response =
<B>must</B>=20
include:</P>
<UL>
  <LI>the records corresponding to the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
aPrefix"><CODE>metadataPrefix</CODE></A>=20
  argument, or headers thereof in the case of deleted records, available =
from=20
  those items in the set specified by the <CODE>setSpec;</CODE>=20
  <LI>the records corresponding to the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
aPrefix"><CODE>metadataPrefix</CODE></A>=20
  argument, or headers thereof in the case of deleted records, available =
from=20
  those items in sets that are descendant from the specified set. =
</LI></UL>
<H1>3. <A name=3DProtocolFeatures>Protocol Features</A></H1>
<H2>3.1 <A name=3DHTTPembedding>HTTP Embedding of OAI-PMH =
requests</A></H2>OAI-PMH=20
<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Protoco=
lMessages">requests</A>=20
are expressed as <A =
href=3D"http://www.ietf.org/rfc/rfc2616.txt">HTTP</A>=20
requests. A typical implementation uses a standard Web server that is =
configured=20
to dispatch OAI-PMH requests to the software handling these requests. =
The=20
remainder of this section describes the aspects of the protocol that are =

specific to the HTTP embedding.=20
<H3>3.1.1 <A name=3DHTTPRequestFormat>HTTP Request Format</A></H3>
<P>OAI-PMH requests <B>must</B> be submitted using either the HTTP=20
<CODE>GET</CODE> or <CODE>POST</CODE> methods. <CODE>POST</CODE> has the =

advantage of imposing no limitations on the length of arguments. =
Repositories=20
<B>must</B> support both the <CODE>GET</CODE> and <CODE>POST</CODE> =
methods.=20
There is a single base URL for all requests. The base URL specifies the =
Internet=20
host and port, and <B>optionally</B> a path, of an HTTP server acting as =
a=20
repository. Repositories expose their base URL as the value of the=20
<CODE>baseURL</CODE> element in the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Identif=
y"><CODE>Identify</CODE></A>=20
response. Note that the composition of any path is determined by the=20
configuration of the repository's HTTP server.</P>
<P>In addition to the base URL, all requests consist of a list of =
<I>keyword=20
arguments</I>, which take the form of <CODE>key=3Dvalue</CODE> pairs. =
Arguments=20
may appear in any order and multiple arguments <B>must</B> be separated =
by=20
ampersands [<CODE>&amp;</CODE>]. Each OAI-PMH request <B>must</B> have =
at least=20
one <CODE>key=3Dvalue</CODE> pair that specifies the OAI-PMH request =
issued by the=20
harvester:</P>
<UL>
  <LI><CODE>key</CODE> is the string <CODE>'verb'</CODE>;=20
  <LI><CODE>value</CODE> is one of the defined <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Protoco=
lMessages">OAI-PMH=20
  requests</A>. </LI></UL>
<P>The number and nature of additional <CODE>key=3Dvalue</CODE> pairs =
depends on=20
the arguments for the individual request.</P>
<H4>3.1.1.1 <A name=3DHTTPget>Encoding an OAI-PMH request in a URL for =
an HTTP=20
GET</A></H4>
<P>URLs for <CODE>GET</CODE> requests have keyword arguments appended to =
the=20
base URL, separated from it by a question mark [<CODE>?</CODE>]. For =
example,=20
the URL of a <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd">GetRecord</A></CODE>=20
request to a repository with base URL that is=20
<CODE>http://an.oa.org/OAI-script</CODE> might be:</P>
<P><CODE>http://an.oa.org/OAI-script?<BR>verb=3DGetRecord&amp;identifier=3D=
oai:arXiv.org:hep-th/9901001&amp;metadataPrefix=3Doai_dc</CODE></P>
<P>However, since special characters in URIs <B>must</B> be <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoded</A>,=20
the correct form of the above <CODE>GET</CODE> request URL is:</P>
<P><CODE>http://an.oa.org/OAI-script?<BR>verb=3DGetRecord&amp;identifier=3D=
oai%3AarXiv.org%3Ahep-th%2F9901001&amp;metadataPrefix=3Doai_dc</CODE></P>=

<H4>3.1.1.2 <A name=3DHTTPpost>Encoding an OAI-PMH request in an HTTP=20
POST</A></H4>
<P>Keyword arguments are carried in the message body of the HTTP=20
<CODE>POST</CODE>. The <CODE>Content-Type</CODE> of the request =
<B>must</B> be=20
<CODE>application/x-www-form-urlencoded</CODE>. For example, submitting =
the same=20
request as above using the <CODE>POST</CODE> method would use just the =
base URL=20
as the URL, with the format of the <CODE>POST</CODE> being:</P>
<P><CODE>POST http://an.oa.org/OAI-script HTTP/1.0 <BR>Content-Length:=20
82<BR>Content-Type:=20
application/x-www-form-urlencoded<BR><BR>verb=3DGetRecord&amp;identifier=3D=
oai%3AarXiv.org%3Ahep-th%2F9901001&amp;metadataPrefix=3Doai_dc</CODE></P>=

<H4>3.1.1.3 <A name=3DSpecialCharacters>Encoding of special characters =
in keyword=20
arguments of OAI-PMH requests</A></H4>
<P>The <A href=3D"http://www.ietf.org/rfc/rfc2396.txt">syntax rules for =
URIs</A>=20
restrict a few characters to special roles in certain contexts, and =
require that=20
if these characters are used in any other way that they <B>must</B> be =
written=20
as an escape sequence, i.e. a percent sign followed by the character =
code in=20
hexadecimal. The reserved characters include:</P>
<TABLE border=3D2 summary=3D"Special character encodings" width=3D"80%">
  <TBODY>
  <TR>
    <TD width=3D"14%" align=3Dmiddle>
      <DIV align=3Dcenter><I>Character</I></DIV></TD>
    <TD width=3D"65%" align=3Dmiddle>
      <DIV align=3Dcenter><I>URI Role</I></DIV></TD>
    <TD width=3D"21%" align=3Dmiddle>
      <DIV align=3Dcenter><I>Escape Sequence</I></DIV></TD></TR>
  <TR>
    <TD width=3D"14%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>/</CODE></DIV></TD>
    <TD width=3D"65%" align=3Dmiddle>
      <DIV align=3Dcenter>Path Component Separator</DIV></TD>
    <TD width=3D"21%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>%2F</CODE></DIV></TD></TR>
  <TR>
    <TD width=3D"14%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>?</CODE></DIV></TD>
    <TD width=3D"65%" align=3Dmiddle>
      <DIV align=3Dcenter>Query Component Separator</DIV></TD>
    <TD width=3D"21%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>%3F</CODE></DIV></TD></TR>
  <TR>
    <TD width=3D"14%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>#</CODE></DIV></TD>
    <TD width=3D"65%" align=3Dmiddle>
      <DIV align=3Dcenter>Fragment Identifier</DIV></TD>
    <TD width=3D"21%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>%23</CODE></DIV></TD></TR>
  <TR>
    <TD width=3D"14%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>=3D</CODE></DIV></TD>
    <TD width=3D"65%" align=3Dmiddle>
      <DIV align=3Dcenter>Name/Value Separator</DIV></TD>
    <TD width=3D"21%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>%3D</CODE></DIV></TD></TR>
  <TR>
    <TD width=3D"14%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>&amp;</CODE></DIV></TD>
    <TD width=3D"65%" align=3Dmiddle>
      <DIV align=3Dcenter>Argument Separator in Query =
Component</DIV></TD>
    <TD width=3D"21%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>%26</CODE></DIV></TD></TR>
  <TR>
    <TD width=3D"14%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>:</CODE></DIV></TD>
    <TD width=3D"65%" align=3Dmiddle>
      <DIV align=3Dcenter>Host Port Separator</DIV></TD>
    <TD width=3D"21%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>%3A</CODE></DIV></TD></TR>
  <TR>
    <TD width=3D"14%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>;</CODE></DIV></TD>
    <TD width=3D"65%" align=3Dmiddle>
      <DIV align=3Dcenter>Authority Namespace Separator</DIV></TD>
    <TD width=3D"21%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>%3B</CODE></DIV></TD></TR>
  <TR>
    <TD width=3D"14%" align=3Dmiddle>
      <DIV align=3Dcenter>&nbsp;</DIV></TD>
    <TD width=3D"65%" align=3Dmiddle>
      <DIV align=3Dcenter>Space Character</DIV></TD>
    <TD width=3D"21%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>%20</CODE></DIV></TD></TR>
  <TR>
    <TD width=3D"14%" align=3Dmiddle>
      <DIV align=3Dcenter>%</DIV></TD>
    <TD width=3D"65%" align=3Dmiddle>
      <DIV align=3Dcenter>Escape Indicator</DIV></TD>
    <TD width=3D"21%" align=3Dmiddle>
      <DIV align=3Dcenter><CODE>%25</CODE></DIV></TD></TR>
  <TR>
    <TD width=3D"14%" align=3Dmiddle>
      <DIV align=3Dcenter>+</DIV></TD>
    <TD width=3D"65%" align=3Dmiddle>
      <DIV align=3Dcenter>Escaped Space</DIV></TD>
    <TD width=3D"21%" align=3Dmiddle>
      <DIV =
align=3Dcenter><CODE>%2B</CODE></DIV></TD></TR></TBODY></TABLE>
<P>As a result, these characters <B>must</B> be represented by their =
respective=20
escape sequence if their use does not correspond to their established =
<I>URI=20
role</I>. In case of the OAI-PMH, this means that the reserved =
characters=20
<B>must</B> be encoded when they appear in the <CODE>value</CODE> part =
of the=20
<CODE>key=3Dvalue</CODE> pairs of the request. This applies for both the =

<CODE>GET</CODE> and <CODE>POST</CODE> encoding of the OAI-PMH =
requests.</P>
<H3>3.1.2 <A name=3DHTTPResponseFormat>HTTP Response Format</A></H3>
<P>Responses to requests are formatted as HTTP responses, with =
appropriate HTTP=20
header fields.</P>
<H4>3.1.2.1 <A name=3DMIMETypes>Content-Type</A></H4>
<P>The <CODE>Content-Type</CODE> returned for all OAI-PMH requests =
<B>must</B>=20
be <CODE>text/xml</CODE>.</P>
<H4>3.1.2.2 <A name=3DStatusCodes>Status-Code</A></H4>
<P><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ErrorCo=
nditions">OAI-PMH=20
errors</A> are distinguished from HTTP <CODE>Status-Codes</CODE>. Since =
OAI-PMH=20
uses HTTP as a transport layer, servers implementing OAI-PMH <B>must</B> =
conform=20
to <A href=3D"http://www.ietf.org/rfc/rfc2616.txt">HTTP status code=20
definitions</A> and report relevant HTTP transport layer status via =
those=20
<CODE>Status-Codes</CODE>. OAI-PMH repositories <B>may</B> employ HTTP=20
<CODE>Status-Codes</CODE> in addition to "<CODE>200 OK</CODE>". For =
instance,=20
the following <CODE>Status-Codes</CODE> may be useful for load balancing =
in OAI=20
repositories:</P>
<UL>
  <LI><CODE>302</CODE> - Allows the repository to temporarily redirect =
an=20
  OAI-PMH request to another repository. The URI of the temporary =
repository=20
  <B>should</B> be given by the <CODE>Location</CODE> field in the HTTP=20
  response.=20
  <LI><CODE>503</CODE> - Service unavailable, a <CODE>Retry-After</CODE> =
period=20
  is specified. Harvesters <B>should</B> wait this period before =
attempting=20
  another OAI-PMH request. </LI></UL>
<H3>3.1.3 <A name=3DResponseCompression>Response Compression</A></H3>
<P>Response compression is <B>optional</B> in OAI-PMH. Compression of =
responses=20
to OAI-PMH requests is handled at the level of HTTP, with the following=20
restrictions:</P>
<UL>
  <LI>Harvesters <B>may</B> include an <CODE>Accept-Encoding</CODE> =
header in=20
  their OAI-PMH requests to specify response compression preferences.=20
  <LI>Harvesters that do not include an <CODE>Accept-Encoding</CODE> =
header in=20
  their requests will always receive uncompressed responses.=20
  <LI>When a request includes an <CODE>Accept-Encoding</CODE> header the =
list of=20
  encodings <B>must</B> include the <CODE>identity</CODE> (no =
compression)=20
  encoding (with a non-zero <CODE>qvalue</CODE>).=20
  <LI>Repositories <B>must</B> support the HTTP <CODE>identity</CODE> =
encoding.=20
  <LI>Repositories <B>should</B> express the encodings they support in =
addition=20
  to <CODE>identity</CODE> by including <CODE>compression</CODE> =
elements in the=20
  <CODE><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Identif=
y">Identify</A></CODE>=20
  response. </LI></UL>
<H2>3.2 <A name=3DXMLResponse>XML Response Format</A></H2>
<P>All responses to OAI-PMH requests <B>must</B> be well-formed XML =
instance=20
documents. Encoding of the XML <B>must</B> use the UTF-8 representation =
of=20
Unicode. Character references, rather than entity references, =
<B>must</B> be=20
used. Character references allow XML responses to be treated as =
stand-alone=20
documents that can be manipulated without dependency on entity =
declarations=20
external to the document.</P>
<P>The XML data for all responses to OAI-PMH requests <B>must</B> =
validate=20
against the XML Schema shown at the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#OAIPMHs=
chema">end=20
of this section</A> . As can be seen from that schema, responses to =
OAI-PMH=20
requests have the following common markup:</P>
<OL>
  <LI>The first tag output is an XML declaration where the =
<TT>version</TT> is=20
  always <CODE>1.0</CODE> and the <TT>encoding</TT> is always=20
  <CODE>UTF-8</CODE>, eg: <CODE>&lt;?xml version=3D"1.0" =
encoding=3D"UTF-8"=20
  ?&gt;</CODE>=20
  <LI>The remaining content is enclosed in a root element with the name =
OAI-PMH.=20
  This element <B>must</B> have three attributes that define the XML =
namespaces=20
  used in the remainder of the response and the location of the =
validating=20
  schema:=20
  <UL>
    <LI><CODE>xmlns</CODE> -- the value of which <B>must</B> be the =
namespace=20
    URI of the OAI-PMH =
(<CODE>http://www.openarchives.org/OAI/2.0/</CODE>).=20
    <LI><CODE>xmlns:xsi</CODE> -- the value of which <B>must</B> be the=20
    namespace URI for XML schema=20
    (<CODE>http://www.w3.org/2001/XMLSchema-instance</CODE>).=20
    <LI><CODE>xsi:schemaLocation</CODE> -- is a pair, the first part of =
which is=20
    the namespace URI (as defined by the <A=20
    =
href=3D"http://www.w3.org/TR/1999/REC-xml-names-19990114/Overview.html">X=
ML=20
    namespace specification</A> ) of the OAI-PMH=20
    (<CODE>http://www.openarchives.org/OAI/2.0/</CODE>), and the second =
part is=20
    the URL of the XML schema for validation of the response=20
    (<CODE>http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd</CODE>). =
</LI></UL>
  <LI>For all responses, the first two children of the root element are: =

  <UL>
    <LI><CODE>responseDate</CODE> -- a <A=20
    =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Dates">=
UTCdatetime</A>=20
    indicating the time and date that the response was sent. This =
<B>must</B> be=20
    expressed in UTC.=20
    <LI><CODE>request</CODE> -- indicating the protocol request that =
generated=20
    this response. The rules for generating the <CODE>request</CODE> =
element are=20
    as follows:=20
    <UL>
      <LI>The content of the <CODE>request</CODE> element <B>must</B> =
always be=20
      the <A=20
      =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#HTTPReq=
uestFormat">base=20
      URL</A> of the protocol request;=20
      <LI>The only valid attributes for the <CODE>request</CODE> element =
are the=20
      <CODE>keys</CODE> of the <CODE>key=3Dvalue</CODE> pairs of =
protocol request.=20
      The attribute values must be the corresponding <CODE>values</CODE> =
of=20
      those <CODE>key=3Dvalue</CODE> pairs;=20
      <LI>In cases where the request that generated this response did =
not result=20
      in an <A=20
      =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ErrorCo=
nditions">error=20
      or exception condition</A>, the attributes and attribute values of =
the=20
      <CODE>request</CODE> element <B>must</B> match the =
<CODE>key=3Dvalue</CODE>=20
      pairs of the protocol request;=20
      <LI>In cases where the request that generated this response =
resulted in=20
      <CODE>a badVerb</CODE> or <CODE>badArgument</CODE> <A=20
      =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ErrorCo=
nditions">error=20
      condition</A>, the repository <B>must</B> return the <A=20
      =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#HTTPReq=
uestFormat">base=20
      URL</A> of the protocol request only. Attributes <B>must not</B> =
be=20
      provided in these cases. </LI></UL></LI></UL>
  <LI>The third child of the root element is either:=20
  <UL>
    <LI>an <CODE>error</CODE> element that <B>must</B> be used in case =
of an <A=20
    =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ErrorCo=
nditions">error=20
    or exception condition</A>;=20
    <LI>an element with the same name as the verb of the respective =
OAI-PMH=20
    request. </LI></UL></LI></OL>
<P>An example of a successful reply to the <CODE>GetRecord</CODE> =
request shown=20
<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#HTTPget=
">above</A>=20
is of the form:</P>
<TABLE border=3D2 summary=3D"Example form of GetRecord request" =
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8" ?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
 &lt;responseDate&gt;2002-05-01T19:20:30Z&lt;/responseDate&gt;
 &lt;request verb=3D"GetRecord" =
identifier=3D"oai:arXiv.org:hep-th/9901001"
          =
metadataPrefix=3D"oai_dc"&gt;http://an.oa.org/OAI-script&lt;/request&gt; =

 &lt;GetRecord&gt;
  &lt;record&gt;
      ...
  &lt;/record&gt;
 &lt;/GetRecord&gt;=20
&lt;/OAI-PMH&gt;      </PRE></TD></TR></TBODY></TABLE>
<H3>3.2.1 <A name=3DOAIPMHschema>XML Schema for Validating Responses to =
OAI-PMH=20
Requests</A></H3>
<TABLE border=3D2 summary=3D"OAI-PMH schema" width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;schema =
targetNamespace=3D"http://www.openarchives.org/OAI/2.0/"
        xmlns=3D"http://www.w3.org/2001/XMLSchema"
        xmlns:oai=3D"http://www.openarchives.org/OAI/2.0/"
        elementFormDefault=3D"qualified"
        attributeFormDefault=3D"unqualified"&gt;

  &lt;annotation&gt;
    &lt;documentation&gt;
    XML Schema which can be used to validate replies to all OAI-PMH=20
    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=20
    type. No change of function. Simeon Warner, 2004-03-29.
    Tightened definition of UTCdatetimeType to enforce the restriction=20
    to UTC Z notation. Simeon Warner, 2004-09-14.
    Corrected pattern matches for setSpecType and metadataPrefixType
    to agree with protocol specification. Simeon Warner, 2004-10-12.
    Spelling correction. Simeon Warner, 2008-12-07.
    $Date: 2004/10/12 15:20:29 $
    &lt;/documentation&gt;
  &lt;/annotation&gt;

  &lt;element name=3D"OAI-PMH" type=3D"oai:OAI-PMHtype"/&gt;

  &lt;complexType name=3D"OAI-PMHtype"&gt;
    &lt;sequence&gt;
      &lt;element name=3D"responseDate" type=3D"dateTime"/&gt;
      &lt;element name=3D"request" type=3D"oai:requestType"/&gt;
      &lt;choice&gt;
        &lt;element name=3D"error" type=3D"oai:OAI-PMHerrorType" =
maxOccurs=3D"unbounded"/&gt;
        &lt;element name=3D"Identify" type=3D"oai:IdentifyType"/&gt;
        &lt;element name=3D"ListMetadataFormats" =
type=3D"oai:ListMetadataFormatsType"/&gt;
        &lt;element name=3D"ListSets" type=3D"oai:ListSetsType"/&gt;
        &lt;element name=3D"GetRecord" type=3D"oai:GetRecordType"/&gt;
        &lt;element name=3D"ListIdentifiers" =
type=3D"oai:ListIdentifiersType"/&gt;
        &lt;element name=3D"ListRecords" =
type=3D"oai:ListRecordsType"/&gt;
      &lt;/choice&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;complexType name=3D"requestType"&gt;
    &lt;annotation&gt;
      &lt;documentation&gt;Define requestType, indicating the protocol =
request that=20
      led to the response. Element content is BASE-URL, attributes are =
arguments=20
      of protocol request, attribute-values are values of arguments of =
protocol=20
      request&lt;/documentation&gt;
    &lt;/annotation&gt;
    &lt;simpleContent&gt;
      &lt;extension base=3D"anyURI"&gt;
        &lt;attribute name=3D"verb" type=3D"oai:verbType" =
use=3D"optional"/&gt;
        &lt;attribute name=3D"identifier" type=3D"oai:identifierType" =
use=3D"optional"/&gt;
        &lt;attribute name=3D"metadataPrefix" =
type=3D"oai:metadataPrefixType" use=3D"optional"/&gt;
        &lt;attribute name=3D"from" type=3D"oai:UTCdatetimeType" =
use=3D"optional"/&gt;
        &lt;attribute name=3D"until" type=3D"oai:UTCdatetimeType" =
use=3D"optional"/&gt;
        &lt;attribute name=3D"set" type=3D"oai:setSpecType" =
use=3D"optional"/&gt;
        &lt;attribute name=3D"resumptionToken" type=3D"string" =
use=3D"optional"/&gt;
      &lt;/extension&gt;
    &lt;/simpleContent&gt;
  &lt;/complexType&gt;

  &lt;simpleType name=3D"verbType"&gt;
    &lt;restriction base=3D"string"&gt;
      &lt;enumeration value=3D"Identify"/&gt;
      &lt;enumeration value=3D"ListMetadataFormats"/&gt;
      &lt;enumeration value=3D"ListSets"/&gt;
      &lt;enumeration value=3D"GetRecord"/&gt;
      &lt;enumeration value=3D"ListIdentifiers"/&gt;
      &lt;enumeration value=3D"ListRecords"/&gt;
    &lt;/restriction&gt;
  &lt;/simpleType&gt;

  &lt;!-- define OAI-PMH error conditions --&gt;
  &lt;!-- =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D --&gt;

  &lt;complexType name=3D"OAI-PMHerrorType"&gt;
    &lt;simpleContent&gt;
      &lt;extension base=3D"string"&gt;
        &lt;attribute name=3D"code" type=3D"oai:OAI-PMHerrorcodeType" =
use=3D"required"/&gt;
      &lt;/extension&gt;
    &lt;/simpleContent&gt;
  &lt;/complexType&gt;

  &lt;simpleType name=3D"OAI-PMHerrorcodeType"&gt;
    &lt;restriction base=3D"string"&gt;
      &lt;enumeration value=3D"cannotDisseminateFormat"/&gt;
      &lt;enumeration value=3D"idDoesNotExist"/&gt;
      &lt;enumeration value=3D"badArgument"/&gt;
      &lt;enumeration value=3D"badVerb"/&gt;
      &lt;enumeration value=3D"noMetadataFormats"/&gt;
      &lt;enumeration value=3D"noRecordsMatch"/&gt;
      &lt;enumeration value=3D"badResumptionToken"/&gt;
      &lt;enumeration value=3D"noSetHierarchy"/&gt;
    &lt;/restriction&gt;
  &lt;/simpleType&gt;

  &lt;!-- define OAI-PMH verb containers --&gt;
  &lt;!-- =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D --&gt;

  &lt;complexType name=3D"IdentifyType"&gt;
    &lt;sequence&gt;
      &lt;element name=3D"repositoryName" type=3D"string"/&gt;
      &lt;element name=3D"baseURL" type=3D"anyURI"/&gt;
      &lt;element name=3D"protocolVersion" =
type=3D"oai:protocolVersionType"/&gt;
      &lt;element name=3D"adminEmail" type=3D"oai:emailType" =
maxOccurs=3D"unbounded"/&gt;
      &lt;element name=3D"earliestDatestamp" =
type=3D"oai:UTCdatetimeType"/&gt;
      &lt;element name=3D"deletedRecord" =
type=3D"oai:deletedRecordType"/&gt;
      &lt;element name=3D"granularity" type=3D"oai:granularityType"/&gt;
      &lt;element name=3D"compression" type=3D"string" minOccurs=3D"0" =
maxOccurs=3D"unbounded"/&gt;
      &lt;element name=3D"description" type=3D"oai:descriptionType"=20
               minOccurs=3D"0" maxOccurs=3D"unbounded"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;complexType name=3D"ListMetadataFormatsType"&gt;
    &lt;sequence&gt;
      &lt;element name=3D"metadataFormat" =
type=3D"oai:metadataFormatType" maxOccurs=3D"unbounded"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;complexType name=3D"ListSetsType"&gt;
    &lt;sequence&gt;
      &lt;element name=3D"set" type=3D"oai:setType" =
maxOccurs=3D"unbounded"/&gt;
      &lt;element name=3D"resumptionToken" =
type=3D"oai:resumptionTokenType" minOccurs=3D"0"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;complexType name=3D"GetRecordType"&gt;
    &lt;sequence&gt;
      &lt;element name=3D"record" type=3D"oai:recordType"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;complexType name=3D"ListRecordsType"&gt;
    &lt;sequence&gt;
      &lt;element name=3D"record" type=3D"oai:recordType" =
maxOccurs=3D"unbounded"/&gt;
      &lt;element name=3D"resumptionToken" =
type=3D"oai:resumptionTokenType" minOccurs=3D"0"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;complexType name=3D"ListIdentifiersType"&gt;
    &lt;sequence&gt;
      &lt;element name=3D"header" type=3D"oai:headerType" =
maxOccurs=3D"unbounded"/&gt;
      &lt;element name=3D"resumptionToken" =
type=3D"oai:resumptionTokenType" minOccurs=3D"0"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;!-- define basic types used in replies to=20
       GetRecord, ListRecords, ListIdentifiers --&gt;
  &lt;!-- =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --&gt;

  &lt;complexType name=3D"recordType"&gt;
    &lt;annotation&gt;
      &lt;documentation&gt;A record has a header, a metadata part, and
        an optional about container&lt;/documentation&gt;
    &lt;/annotation&gt;
    &lt;sequence&gt;
      &lt;element name=3D"header" type=3D"oai:headerType"/&gt;
      &lt;element name=3D"metadata" type=3D"oai:metadataType" =
minOccurs=3D"0"/&gt;
      &lt;element name=3D"about" type=3D"oai:aboutType" minOccurs=3D"0" =
maxOccurs=3D"unbounded"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;complexType name=3D"headerType"&gt;
    &lt;annotation&gt;
      &lt;documentation&gt;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.&lt;/documentation&gt;
    &lt;/annotation&gt;
    &lt;sequence&gt;
      &lt;element name=3D"identifier" type=3D"oai:identifierType"/&gt;
      &lt;element name=3D"datestamp" type=3D"oai:UTCdatetimeType"/&gt;
      &lt;element name=3D"setSpec" type=3D"oai:setSpecType" =
minOccurs=3D"0" maxOccurs=3D"unbounded"/&gt;
    &lt;/sequence&gt;
    &lt;attribute name=3D"status" type=3D"oai:statusType" =
use=3D"optional"/&gt;
  &lt;/complexType&gt;

  &lt;simpleType name=3D"identifierType"&gt;
    &lt;restriction base=3D"anyURI"/&gt;
  &lt;/simpleType&gt;

  &lt;simpleType name=3D"statusType"&gt;
    &lt;restriction base=3D"string"&gt;
      &lt;enumeration value=3D"deleted"/&gt;
    &lt;/restriction&gt;
  &lt;/simpleType&gt;

  &lt;complexType name=3D"metadataType"&gt;
    &lt;annotation&gt;
      &lt;documentation&gt;Metadata must be expressed in XML that =
complies
       with another XML Schema (namespace=3D#other). Metadata must be=20
       explicitly qualified in the response.&lt;/documentation&gt;
    &lt;/annotation&gt;
    &lt;sequence&gt;
      &lt;any namespace=3D"##other" processContents=3D"strict"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;complexType name=3D"aboutType"&gt;
    &lt;annotation&gt;
      &lt;documentation&gt;Data "about" the record must be expressed in =
XML
      that is compliant with an XML Schema defined by a =
community.&lt;/documentation&gt;
    &lt;/annotation&gt;
    &lt;sequence&gt;
      &lt;any namespace=3D"##other" processContents=3D"strict"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;complexType name=3D"resumptionTokenType"&gt;
    &lt;annotation&gt;
      &lt;documentation&gt;A resumptionToken may have 3 optional =
attributes
       and can be used in ListSets, ListIdentifiers, ListRecords
       responses.&lt;/documentation&gt;
    &lt;/annotation&gt;
    &lt;simpleContent&gt;
      &lt;extension base=3D"string"&gt;
        &lt;attribute name=3D"expirationDate" type=3D"dateTime" =
use=3D"optional"/&gt;
        &lt;attribute name=3D"completeListSize" type=3D"positiveInteger" =
use=3D"optional"/&gt;
        &lt;attribute name=3D"cursor" type=3D"nonNegativeInteger" =
use=3D"optional"/&gt;
      &lt;/extension&gt;
    &lt;/simpleContent&gt;
  &lt;/complexType&gt;

  &lt;complexType name=3D"descriptionType"&gt;
    &lt;annotation&gt;
      &lt;documentation&gt;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=20
      community.&lt;/documentation&gt;
    &lt;/annotation&gt;
    &lt;sequence&gt;
      &lt;any namespace=3D"##other" processContents=3D"strict"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;simpleType name=3D"UTCdatetimeType"&gt;
    &lt;annotation&gt;
      &lt;documentation&gt;Datestamps are to either day (type date)
      or to seconds granularity (type =
oai:UTCdateTimeZType)&lt;/documentation&gt;
    &lt;/annotation&gt;
    &lt;union memberTypes=3D"date oai:UTCdateTimeZType"/&gt;
  &lt;/simpleType&gt;

  &lt;simpleType name=3D"UTCdateTimeZType"&gt;
    &lt;restriction base=3D"dateTime"&gt;
      &lt;pattern value=3D".*Z"/&gt;
    &lt;/restriction&gt;
  &lt;/simpleType&gt;

  &lt;!-- define types used for Identify verb only --&gt;
  &lt;!-- =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --&gt;

  &lt;simpleType name=3D"protocolVersionType"&gt;
    &lt;restriction base=3D"string"&gt;
      &lt;enumeration value=3D"2.0"/&gt;
    &lt;/restriction&gt;
  &lt;/simpleType&gt;

  &lt;simpleType name=3D"emailType"&gt;
    &lt;restriction base=3D"string"&gt;
      &lt;pattern value=3D"\S+@(\S+\.)+\S+"/&gt;
    &lt;/restriction&gt;
  &lt;/simpleType&gt;

  &lt;simpleType name=3D"deletedRecordType"&gt;
    &lt;restriction base=3D"string"&gt;
      &lt;enumeration value=3D"no"/&gt;
      &lt;enumeration value=3D"persistent"/&gt;
      &lt;enumeration value=3D"transient"/&gt;
    &lt;/restriction&gt;
  &lt;/simpleType&gt;

  &lt;simpleType name=3D"granularityType"&gt;
    &lt;restriction base=3D"string"&gt;
      &lt;enumeration value=3D"YYYY-MM-DD"/&gt;
      &lt;enumeration value=3D"YYYY-MM-DDThh:mm:ssZ"/&gt;
    &lt;/restriction&gt;
  &lt;/simpleType&gt;

  &lt;!-- define types used for ListMetadataFormats verb only --&gt;
  &lt;!-- =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D --&gt;

  &lt;complexType name=3D"metadataFormatType"&gt;
    &lt;sequence&gt;
      &lt;element name=3D"metadataPrefix" =
type=3D"oai:metadataPrefixType"/&gt;
      &lt;element name=3D"schema" type=3D"anyURI"/&gt;
      &lt;element name=3D"metadataNamespace" type=3D"anyURI"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;simpleType name=3D"metadataPrefixType"&gt;
    &lt;restriction base=3D"string"&gt;
      &lt;pattern value=3D"[A-Za-z0-9\-_\.!~\*'\(\)]+"/&gt;
    &lt;/restriction&gt;
  &lt;/simpleType&gt;

  &lt;!-- define types used for ListSets verb --&gt;
  &lt;!-- =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --&gt;

  &lt;complexType name=3D"setType"&gt;
    &lt;sequence&gt;
      &lt;element name=3D"setSpec" type=3D"oai:setSpecType"/&gt;
      &lt;element name=3D"setName" type=3D"string"/&gt;
      &lt;element name=3D"setDescription" type=3D"oai:descriptionType"=20
               minOccurs=3D"0" maxOccurs=3D"unbounded"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;simpleType name=3D"setSpecType"&gt;
    &lt;restriction base=3D"string"&gt;
      &lt;pattern =
value=3D"([A-Za-z0-9\-_\.!~\*'\(\)])+(:[A-Za-z0-9\-_\.!~\*'\(\)]+)*"/&gt;=

    &lt;/restriction&gt;
  &lt;/simpleType&gt;

&lt;/schema&gt;
</PRE></TD></TR>
  <TR>
    <TD width=3D"100%">This Schema is available at <A=20
      =
href=3D"http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">http://www.opena=
rchives.org/OAI/2.0/OAI-PMH.xsd</A></TD></TR></TBODY></TABLE>
<H2>3.3 <A name=3DDates>UTCdatetime</A></H2>
<P>Dates and times are uniformly encoded using <A=20
href=3D"http://www.w3.org/TR/NOTE-datetime">ISO8601</A> and are =
expressed in UTC=20
throughout the protocol. When time is included, the special UTC =
designator=20
("<CODE>Z</CODE>")<B> must</B> be used. UTC is implied for dates =
although no=20
timezone designator is specified. For example, =
<CODE>1957-03-20T20:30:00Z</CODE>=20
is UTC 8:30:00 PM on March 20th 1957. UTCdatetime is used in both =
protocol=20
requests and protocol replies, in the way described in the following=20
sections.</P>
<H3>3.3.1 <A name=3DDatestampsRequests>UTCdatetime in Protocol =
Requests</A></H3>
<P><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">Datestamps</A>=20
used as values of the <B>optional</B> arguments <CODE>from</CODE> and=20
<CODE>until</CODE> in the <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers">ListIdentifiers</A></CODE>=20
and <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords">ListRecords</A></CODE>=20
requests are encoded using <A=20
href=3D"http://www.w3.org/TR/NOTE-datetime">ISO8601</A> and are =
expressed in UTC.=20
These arguments are used to specify <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">datestamp-based=20
selective harvesting</A>. These arguments support the "Complete date" =
and the=20
"Complete date plus hours, minutes and seconds" granularities defined in =

ISO8601. The legitimate formats are <CODE>YYYY-MM-DD</CODE> and=20
<CODE>YYYY-MM-DDThh:mm:ssZ.</CODE> Both arguments <B>must</B> have the =
same=20
granularity. All repositories <B>must</B> support =
<CODE>YYYY-MM-DD</CODE>. A=20
repository that supports <CODE>YYYY-MM-DDThh:mm:ssZ</CODE> <B>should</B> =

indicate so in the <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Identif=
y">Identify</A></CODE>=20
response. A request by a harvester with finer granularity than that =
supported by=20
a repository <B>must</B> produce an <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ErrorCo=
nditions">error</A>.</P>
<H3>3.3.2 <A name=3DDatestampsResponses>UTCdatetime in Protocol =
Responses</A></H3>
<P><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">Datestamps</A>=20
appear in the headers of records that are returned in response to <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers"><CODE>ListIdentifiers</CODE></A>=20
, <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd">GetRecord</A></CODE>=20
and <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords">ListRecords</A></CODE>=20
requests. These <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">datestamps</A>=20
are encoded using <A =
href=3D"http://www.w3.org/TR/NOTE-datetime">ISO8601</A> and=20
are expressed in UTC; they <B>must</B> be expressed in the finest =
granularity=20
supported by the repository. The value of the datestamp must correspond =
to the=20
rules for <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">datestamp-based=20
selective harvesting</A>.</P>
<P>Each protocol response includes a <CODE>responseDate</CODE> element, =
which=20
<B>must</B> be the time and date of the response in UTC. This is encoded =
using=20
the "Complete date plus hours, minutes, and seconds" variant of <A=20
href=3D"http://www.w3.org/TR/NOTE-datetime">ISO8601</A>. This format is=20
<CODE>YYYY-MM-DDThh:mm:ssZ</CODE>.</P>
<P>A <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#FlowCon=
trol">resumptionToken</A></CODE>=20
in a protocol reply <B>may</B> include an <B>optional</B> argument=20
<CODE>expirationDate</CODE>, which is expressed in UTC. This is encoded =
using=20
the "Complete date plus hours, minutes, and seconds" variant of <A=20
href=3D"http://www.w3.org/TR/NOTE-datetime">ISO8601</A>. This format is=20
<CODE>YYYY-MM-DDThh:mm:ssZ</CODE>.</P>
<H2>3.4 <A name=3DMetadataNamespaces>metadataPrefix and Metadata =
Schema</A></H2>
<P>OAI-PMH supports the dissemination of records in multiple metadata =
formats=20
from a repository. The <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListMet=
adataFormats">ListMetadataFormats</A></CODE>=20
request returns the list of all metadata formats available from a =
repository,=20
each of which has the following properties:</P>
<UL>
  <LI>The <I><A =
name=3DmetadataPrefix></A></I><CODE>metadataPrefix</CODE> - a=20
  string to specify the metadata format in OAI-PMH requests issued to =
the=20
  repository. <CODE>metadataPrefix</CODE> consists of any valid <A=20
  href=3D"http://www.ietf.org/rfc/rfc2396.txt">URI <I>unreserved</I>=20
  characters</A>. <CODE>metadataPrefix</CODE> arguments are used in <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>,=20
  <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers"><CODE>ListIdentifiers</CODE></A>,=20
  and <CODE><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd">GetRecord</A></CODE>=20
  requests to retrieve records, or the headers of records that include =
metadata=20
  in the format specified by the <CODE>metadataPrefix</CODE>;=20
  <LI>The <I><A name=3DmetadataSchema></A>metadata schema</I> URL - the =
URL of an=20
  <A href=3D"http://www.w3.org/XML/Schema">XML schema</A> to test =
validity of=20
  metadata expressed according to the format;=20
  <LI>The <A=20
  =
href=3D"http://www.w3.org/TR/1999/REC-xml-names-19990114/Overview.html">X=
ML=20
  namespace</A> URI that is a global identifier of the metadata format. =
</LI></UL>
<P>The metadata in each <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>record</A>=20
returned by <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords">ListRecords</A></CODE>=20
and <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd">GetRecord</A></CODE>=20
<B>must</B> comply with the conventions of the <A=20
href=3D"http://www.w3.org/TR/1999/REC-xml-names-19990114/Overview.html">X=
ML=20
namespace specification</A>. This means that the root element of the =
metadata=20
part <B>must</B> contain an <CODE>xmlns</CODE> attribute, the value of =
which is=20
the XML namespace URI of the metadata format. The root element =
<B>must</B> also=20
contain an <CODE>xsi:schemaLocation</CODE> attribute that has a value =
that=20
includes the URL of the XML schema for validation of the metadata. This =
URL=20
<B>must</B> match the URL of the metadata schema for the=20
<CODE>metadataPrefix</CODE> included as an argument to the <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords">ListRecords</A></CODE>=20
or <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#GetReco=
rd">GetRecord</A></CODE>=20
request (the mapping from <CODE>metadataPrefix</CODE> to metadata schema =
is=20
defined by the repository's response to the <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListMet=
adataFormats">ListMetadataFormats</A></CODE>=20
request).</P>
<P>For purposes of interoperability, repositories <B>must</B> =
disseminate <A=20
href=3D"http://purl.org/DC/documents/rec-dces-19990702.htm">Dublin =
Core</A>,=20
without any <A=20
href=3D"http://purl.org/DC/documents/rec/dcmes-qualifiers-20000711.htm">q=
ualification</A>.=20
Therefore, the protocol reserves the <CODE>metadataPrefix</CODE>=20
`<CODE>oai_dc</CODE>', and the URL of a metadata schema for unqualified =
Dublin=20
Core, which is <A=20
href=3D"http://www.openarchives.org/OAI/2.0/oai_dc.xsd">http://www.openar=
chives.org/OAI/2.0/oai_dc.xsd</A>.=20
The corresponding <A=20
href=3D"http://www.w3.org/TR/1999/REC-xml-names-19990114/Overview.html">X=
ML=20
namespace</A> URI is http://www.openarchives.org/OAI/2.0/oai_dc/.</P>
<P>The <CODE>metadataPrefix</CODE> `<CODE>all</CODE>' is reserved for =
future=20
use. Implementations <B>should not</B> use this =
<CODE>metadataPrefix</CODE>.</P>
<P>Communities <B>should</B> adopt guidelines for sharing of=20
<CODE>metadataPrefixes,</CODE> metadata schema and XML namespace URI's =
of=20
metadata formats. Such guidelines are outside of the scope of the =
OAI-PMH. The=20
accompanying <A=20
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
Guidelines</A> document provides some sample XML Schema and instance =
documents=20
for common metadata formats such as <A=20
href=3D"http://www.loc.gov/standards/marcxml/">MARC</A> and <A=20
href=3D"http://www.ietf.org/rfc/rfc1807.txt?number=3D1807">RFC =
1807</A>.</P>
<H2>3.5 <A name=3DFlowControl>Flow Control</A></H2>
<P>A number of OAI-PMH requests return a <I>list </I>of discrete =
entities:=20
<CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords">ListRecords</A></CODE>=20
returns a list of <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>records</A>,=20
<CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers">ListIdentifiers</A></CODE>=20
returns a list of <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>headers</A>,=20
and <CODE><A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListSet=
s">ListSets</A></CODE>=20
returns a list of <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set">se=
ts</A>.=20
Collectively these requests are called <I>list requests</I>. In some =
cases,=20
these lists may be large and it may be practical to partition them among =
a=20
series of requests and responses. This partitioning is accomplished as=20
follows:</P>
<UL>
  <LI>A repository replies to a request with an <I>incomplete list</I> =
and a=20
  <CODE>resumptionToken;</CODE>=20
  <LI>In order to make the response a <I>complete list</I>, the =
harvester will=20
  need to issue one or more requests with <CODE>resumptionTokens</CODE> =
as=20
  arguments. The complete list then consists of the concatenation of the =

  <I>incomplete lists</I> from the sequence of requests, known as a =
<I>list=20
  request sequence</I>. </LI></UL>
<P>Details of flow control and the <CODE>resumptionToken</CODE> are as=20
follows:</P>
<UL>
  <LI>The only defined use of <CODE>resumptionToken</CODE> is as =
follows:=20
  <UL>
    <LI>a repository <B>must</B> include a <CODE>resumptionToken</CODE> =
element=20
    as part of each response that includes an incomplete list;=20
    <LI>in order to retrieve the next portion of the complete list, the =
next=20
    request <B>must</B> use the value of that =
<CODE>resumptionToken</CODE>=20
    element as the value of the <CODE>resumptionToken</CODE> argument of =
the=20
    request;=20
    <LI>the response containing the incomplete list that completes the =
list=20
    <B>must</B> include an empty <CODE>resumptionToken</CODE> element;=20
  </LI></UL>All other uses of <CODE>resumptionToken</CODE> by a =
harvester are=20
  illegal and <B>must</B> return an <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ErrorCo=
nditions">error</A>.=20

  <LI>In all cases when a <CODE>resumptionToken</CODE> is issued, the =
incomplete=20
  list <B>must</B> consist of complete entities; e.g., all individual =
records=20
  returned in an incomplete record list from a <CODE>ListRecords</CODE> =
request=20
  <B>must</B> be intact.=20
  <LI>The format of the <CODE>resumptionToken</CODE> is not defined by =
the=20
  OAI-PMH and <B>should</B> be considered opaque by the harvester.=20
  <LI>The protocol does not define the semantics of incompleteness. =
Therefore, a=20
  harvester <B>should not</B> assume that the members in an =
<I>incomplete list=20
  </I>conform to some selection criteria (e.g., date ordering).=20
  <LI>Before including a <CODE>resumptionToken</CODE> in the URL of a =
subsequent=20
  request, a harvester <B>must</B> encode any <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">special=20
  characters</A> in it. </LI></UL>
<P>The following <B>optional</B> attributes <B>may</B> be included as =
part of=20
the <CODE>resumptionToken</CODE> element along with the=20
<CODE>resumptionToken</CODE> itself:</P>
<UL>
  <LI><CODE>expirationDate</CODE> -- a <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Dates">=
UTCdatetime</A>=20
  indicating when the <CODE>resumptionToken</CODE> ceases to be valid.=20
  <LI><CODE>completeListSize</CODE> -- an integer indicating the =
cardinality of=20
  the complete list (i.e., the sum of the cardinalities of the =
incomplete=20
  lists). Because there may be changes in a repository during a list =
request=20
  sequence, as described under <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Idempot=
ency">Idempotency=20
  of resumptionTokens</A>, the value of <CODE>completeListSize</CODE> =
may be=20
  only an estimate of the actual cardinality of the complete list and =
may be=20
  revised during the list request sequence.=20
  <LI><CODE>cursor</CODE> -- a count of the number of elements of the =
complete=20
  list thus far returned (i.e. <CODE>cursor</CODE> starts at 0). =
</LI></UL>
<P>The following example is a series of ListRecords requests where the =
complete=20
list consists of 175 records and the repository only returns 100 records =
per=20
response.</P>
<UL>
  <LI>The harvester issues a <CODE>ListRecords</CODE> request.=20
  <LI>The repository responds with an incomplete list of 100 records. =
The=20
  repository marks this list as incomplete by including in the response =
a=20
  non-empty<CODE> resumptionToken </CODE>element, with two attributes: a =

  <CODE>completeListSize</CODE> of 175, and a <CODE>cursor</CODE> of 0.=20
  <LI>The harvester issues a subsequent <CODE>ListRecords</CODE> request =
that=20
  includes the <CODE>resumptionToken</CODE> that it received in the =
previous=20
  response.=20
  <LI>The repository responds with an incomplete list of 75 records. The =

  repository marks this list as the final incomplete list by including =
in the=20
  response an empty <CODE>resumptionToken</CODE> element with two =
attributes: a=20
  <CODE>completeListSize</CODE> of 175, and a <CODE>cursor</CODE> of =
100.=20
</LI></UL>
<P>This flow control mechanism, in combination with HTTP transport layer =

facilities, provides some basic tools with which a repository can =
enforce an=20
<I>acceptable use policy</I> for its harvesting interface. Communities=20
implementing the OAI-PMH may need more extensive tools to enforce =
acceptable use=20
policies for either the harvesting interface of their repositories or =
for the=20
metadata harvested from those repositories. The enforcement of such =
additional=20
policies is outside of the scope of the OAI-PMH.</P>
<H3>3.5.1 <A name=3DIdempotency>Idempotency of resumptionTokens</A></H3>
<P>Repositories that implement <CODE>resumptionTokens</CODE> <B>must</B> =
do so=20
in a manner that allows harvesters to resume a sequence of requests for=20
incomplete lists by re-issuing a list request with the most recent=20
<CODE>resumptionToken</CODE>. The purpose of this is to allow harvesters =
to=20
recover from network or other errors that would otherwise mean that the =
list=20
request sequence would have to be started again. A re-issue of a list =
request=20
with a <CODE>resumptionToken</CODE> occurs in two contexts:</P>
<OL>
  <LI><I>When there are no changes in the repository.</I> There are no =
changes=20
  to the complete list returned by the list request sequence. In this =
case, the=20
  repository <B>must</B> return the same incomplete list when the most =
recent=20
  list request, i.e. the one with the most recent non-expired=20
  <CODE>resumptionToken</CODE>, is re-issued.=20
  <LI><I>When there are changes in the repository.</I> There may be =
changes to=20
  the complete list returned by the list request sequence. These changes =
occur=20
  when the records disseminated in the list move in or out of the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">datestamp=20
  </A>range of the request because of changes, modifications, or =
deletions in=20
  the repository. In this case, strict idempotency of the =
incomplete-list=20
  requests using <CODE>resumptionToken</CODE> values is not required. =
Instead,=20
  the incomplete list returned in response to a re-issued request =
<B>must</B>=20
  include all records with unchanged <CODE>datestamps</CODE> within the =
range of=20
  the initial list request. The incomplete list returned in response to =
a=20
  re-issued request <B>may</B> contain records with datestamps that =
either moved=20
  into or out of the range of the initial request. In cases where there =
are=20
  substantial changes to the repository, it <B>may</B> be appropriate =
for a=20
  repository to return a <CODE>badResumptionToken</CODE> error, =
signaling that=20
  the harvester should restart the list request sequence. </LI></OL>
<H2>3.6 <A name=3DErrorConditions>Error and Exception =
Conditions</A></H2>
<P>In event of an error or exception condition, repositories <B>must</B> =

indicate OAI-PMH errors, distinguished from <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#StatusC=
odes">HTTP=20
<CODE>Status-Codes</CODE></A>, by including one or more =
<CODE>error</CODE>=20
elements in the response. While one <CODE>error</CODE> element is =
sufficient to=20
indicate the presence of the error or exception condition, repositories=20
<B>should</B> report all errors or exceptions that arise from processing =
the=20
request. Each <CODE>error</CODE> element <B>must</B> have a =
<CODE>code</CODE>=20
attribute that <B>must</B> be from the following table; each =
<CODE>error</CODE>=20
element <B>may</B> also have a free text string value to provide =
information=20
about the error that is useful to a human reader. These strings are not =
defined=20
by the OAI-PMH.</P>
<TABLE border=3D2 summary=3D"Error code summary" width=3D"80%">
  <TBODY>
  <TR>
    <TD align=3Dmiddle><I>Error Codes</I></TD>
    <TD align=3Dmiddle><I>Description</I></TD>
    <TD align=3Dmiddle><I>Applicable Verbs</I></TD></TR>
  <TR>
    <TD><CODE>badArgument</CODE></TD>
    <TD>The request includes illegal arguments, is missing required =
arguments,=20
      includes a repeated argument, or values for arguments have an =
illegal=20
      syntax.</TD>
    <TD align=3Dmiddle><I>all verbs</I></TD></TR>
  <TR>
    <TD><CODE>badResumptionToken</CODE></TD>
    <TD>The value of the <CODE>resumptionToken</CODE> argument is =
invalid or=20
      expired.</TD>
    <TD=20
  =
align=3Dmiddle><CODE>ListIdentifiers<BR>ListRecords<BR>ListSets</CODE></T=
D></TR>
  <TR>
    <TD><CODE>badVerb</CODE></TD>
    <TD>Value of the <CODE>verb</CODE> argument is not a legal OAI-PMH =
verb,=20
      the verb argument is missing, or the <CODE>verb</CODE> argument is =

      repeated. </TD>
    <TD align=3Dmiddle><I>N/A</I></TD></TR>
  <TR>
    <TD><CODE>cannotDisseminateFormat</CODE></TD>
    <TD>The metadata format identified by the value given for the=20
      <CODE>metadataPrefix</CODE> argument is not supported by the item =
or by=20
      the repository.</TD>
    <TD=20
      =
align=3Dmiddle><CODE>GetRecord<BR>ListIdentifiers</CODE><BR><CODE>ListRec=
ords</CODE></TD></TR>
  <TR>
    <TD><CODE>idDoesNotExist</CODE></TD>
    <TD>The value of the <CODE>identifier</CODE> argument is unknown or=20
      illegal in this repository.</TD>
    <TD=20
    =
align=3Dmiddle><CODE>GetRecord</CODE><BR><CODE>ListMetadataFormats</CODE>=
</TD></TR>
  <TR>
    <TD><CODE>noRecordsMatch</CODE></TD>
    <TD>The combination of the values of the <CODE>from</CODE>,=20
      <CODE>until</CODE>, <CODE>set</CODE> and =
<CODE>metadataPrefix</CODE>=20
      arguments results in an empty list.</TD>
    <TD=20
    =
align=3Dmiddle><CODE>ListIdentifiers</CODE><BR><CODE>ListRecords</CODE></=
TD></TR>
  <TR>
    <TD><CODE>noMetadataFormats</CODE></TD>
    <TD>There are no metadata formats available for the specified =
item.</TD>
    <TD align=3Dmiddle><CODE>ListMetadataFormats</CODE></TD></TR>
  <TR>
    <TD><CODE>noSetHierarchy</CODE></TD>
    <TD>The repository does not support sets.</TD>
    <TD=20
  =
align=3Dmiddle><CODE>ListSets<BR>ListIdentifiers<BR>ListRecords</CODE></T=
D></TR></TBODY></TABLE>
<P>The following example demonstrates error handling in the case of an =
illegal=20
verb argument. All request URLs shown from now on will be wrapped to =
make them=20
more readable.</P>
<H4><I>Request</I></H4><PRE>http://arXiv.org/oai2?
       verb=3DnastyVerb</PRE>
<P><B><I>Response</I></B></P>
<TABLE border=3D2 summary=3D"Example error response" width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-05-01T09:18:29Z&lt;/responseDate&gt;
  &lt;request&gt;http://arXiv.org/oai2&lt;/request&gt;
  &lt;error code=3D"badVerb"&gt;Illegal OAI verb&lt;/error&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<P>The following example demonstrates error handling in the case of a=20
<CODE>ListSets</CODE> request to a repository that does not handle =
sets.</P>
<H4><I>Request</I></H4><PRE>http://arXiv.org/oai2?
       verb=3DListSets</PRE>
<DL>
  <DT><B><I>Response</I></B> </DT></DL>
<TABLE border=3D2 summary=3D"Example error response" width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-05-01T09:18:29Z&lt;/responseDate&gt;
  &lt;request verb=3D"ListSets"&gt;http://arXiv.org/oai2&lt;/request&gt;
  &lt;error code=3D"noSetHierarchy"&gt;This repository does not=20
    support sets&lt;/error&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H1>4. <A name=3DProtocolMessages>Protocol Requests and =
Responses</A></H1>
<P>This section lists the requests, or <CODE>verbs, </CODE>defined in =
the=20
OAI-PMH. The documentation for each request is organized as follows:</P>
<UL>
  <LI>A section title corresponding to the token used to specify the =
request as=20
  the required <CODE>verb</CODE> argument to an <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#HTTPReq=
uestFormat">HTTP=20
  request</A>.=20
  <LI>A brief summary of the meaning of the verb and notes on its usage. =

  <LI>The list of additional arguments for the request. Arguments are of =
three=20
  types:=20
  <UL>
    <LI><I>required,</I> the argument <B>must</B> be included with the =
request=20
    (the <CODE>verb</CODE> argument is always <I>required</I>, as =
described in=20
    <A=20
    =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#HTTPReq=
uestFormat">HTTP=20
    Request Format</A>).=20
    <LI><I>optional,</I> the argument <B>may</B> be included with the =
request.=20
    <LI><I>exclusive, </I>the argument <B>may</B> be included with =
request, but=20
    <B>must</B> be the only argument (in addition to the =
<CODE>verb</CODE>=20
    argument). </LI></UL>
  <LI><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ErrorCo=
nditions">Error=20
  and exception conditions</A> specific to the protocol request.=20
  <LI>One or more example requests and corresponding responses, with =
explanatory=20
  notes if appropriate. </LI></UL>
<P>An <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#OAIPMHs=
chema">XML=20
Schema</A> defines the format of valid replies to all OAI-PMH =
requests.</P>
<H2>4.1 <A name=3DGetRecord>GetRecord</A></H2>
<H3>Summary and Usage Notes</H3>
<P>This verb is used to retrieve an individual metadata record from a=20
repository. Required arguments specify the identifier of the item from =
which the=20
record is requested and the format of the metadata that should be =
included in=20
the record. Depending on the level at which a repository tracks <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#deletio=
n">deletions</A>,=20
a header with a "deleted" value for the <CODE>status</CODE> attribute =
<B>may</B>=20
be returned, in case the metadata format specified by the=20
<CODE>metadataPrefix</CODE> is no longer available from the repository =
or from=20
the specified item.</P>
<H3>Arguments</H3>
<UL>
  <LI><CODE><B>identifier</B></CODE> a <I>required</I> argument that =
specifies=20
  the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#UniqueI=
dentifier">unique=20
  identifier</A> of the item in the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Reposit=
ory">repository</A>=20
  from which the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>record</A>=20
  must be disseminated.=20
  <LI><CODE><B>metadataPrefix</B></CODE> a <I>required</I> argument that =

  specifies the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
aPrefix"><CODE>metadataPrefix</CODE></A>=20
  of the format that should be included in the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>metadata=20
  part of the returned record</A> . A record should only be returned if =
the=20
  format specified by the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
aPrefix"><CODE>metadataPrefix</CODE></A>=20
  can be disseminated from the item identified by the value of the =
identifier=20
  argument. The metadata formats supported by a repository and for a =
particular=20
  record can be retrieved using the <CODE><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListMet=
adataFormats">ListMetadataFormats</A></CODE>=20
  request. </LI></UL>
<H3>Error and Exception Conditions</H3>
<UL>
  <LI><CODE><B>badArgument</B></CODE> - The request includes illegal =
arguments=20
  or is missing required arguments.=20
  <LI><CODE><B>cannotDisseminateFormat</B></CODE> - The value of the=20
  <CODE>metadataPrefix</CODE> argument is not supported by the item =
identified=20
  by the value of the <CODE>identifier</CODE> argument.=20
  <LI><CODE><B>idDoesNotExist</B></CODE> - The value of the=20
  <CODE>identifier</CODE> argument is unknown or illegal in this =
repository.=20
  </LI></UL>
<H3>Examples</H3>
<H4><I>Request</I></H4>
<P>Request a record in the Dublin Core metadata format [URL shown =
without <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoding</A>=20
to be more readable].</P><PRE>http://arXiv.org/oai2?
       =
verb=3DGetRecord&amp;identifier=3Doai:arXiv.org:cs/0112017&amp;metadataPr=
efix=3Doai_dc</PRE>
<H4><I>Response</I></H4>
<TABLE border=3D2 summary=3D"Example GetRecord response" width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;=20
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-02-08T08:55:46Z&lt;/responseDate&gt;
  &lt;request verb=3D"GetRecord" identifier=3D"oai:arXiv.org:cs/0112017"
           =
metadataPrefix=3D"oai_dc"&gt;http://arXiv.org/oai2&lt;/request&gt;
  &lt;GetRecord&gt;
   &lt;record&gt;=20
    &lt;header&gt;
      &lt;identifier&gt;oai:arXiv.org:cs/0112017&lt;/identifier&gt;=20
      &lt;datestamp&gt;2001-12-14&lt;/datestamp&gt;
      &lt;setSpec&gt;cs&lt;/setSpec&gt;=20
      &lt;setSpec&gt;math&lt;/setSpec&gt;
    &lt;/header&gt;
    &lt;metadata&gt;
      &lt;oai_dc:dc=20
         xmlns:oai_dc=3D"http://www.openarchives.org/OAI/2.0/oai_dc/"=20
         xmlns:dc=3D"http://purl.org/dc/elements/1.1/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"=20
         =
xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/oai_dc/=20
         http://www.openarchives.org/OAI/2.0/oai_dc.xsd"&gt;
        &lt;dc:title&gt;Using Structural Metadata to Localize Experience =
of=20
                  Digital Content&lt;/dc:title&gt;=20
        &lt;dc:creator&gt;Dushay, Naomi&lt;/dc:creator&gt;
        &lt;dc:subject&gt;Digital Libraries&lt;/dc:subject&gt;=20
        &lt;dc:description&gt;With the increasing technical =
sophistication of=20
            both information consumers and providers, there is=20
            increasing demand for more meaningful experiences of digital =

            information. We present a framework that separates digital=20
            object experience, or rendering, from digital object storage =

            and manipulation, so the rendering can be tailored to=20
            particular communities of users.
        &lt;/dc:description&gt;=20
        &lt;dc:description&gt;Comment: 23 pages including 2 appendices,=20
            8 figures&lt;/dc:description&gt;=20
        &lt;dc:date&gt;2001-12-14&lt;/dc:date&gt;
      &lt;/oai_dc:dc&gt;
    &lt;/metadata&gt;
  &lt;/record&gt;
 &lt;/GetRecord&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H4><I>Request</I></H4>
<P>Request a record in the Dublin Core metadata format. The requested =
record,=20
however, can not be returned because the identifier does not exist. =
Therefore,=20
the response does not contain a <CODE>record</CODE> container. It does =
have an=20
<CODE>error</CODE> element with a <CODE>code</CODE> attribute that has =
the value=20
<CODE>idDoesNotExist</CODE>. [URL shown without <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoding</A>=20
for better readability].</P><PRE>http://arXiv.org/oai2?
       =
verb=3DGetRecord&amp;identifier=3Doai:arXiv.org:quant-ph/02131001&amp;met=
adataPrefix=3Doai_dc</PRE>
<H4><I>Response</I></H4>
<TABLE border=3D2 summary=3D"Example GetRecord response for id the =
doesn't exist"=20
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;=20
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-02-08T08:55:46Z&lt;/responseDate&gt;
  &lt;request verb=3D"GetRecord" =
identifier=3D"oai:arXiv.org:quant-ph/0213001"
           =
metadataPrefix=3D"oai_dc"&gt;http://arXiv.org/oai2&lt;/request&gt;=20
  &lt;error code=3D"idDoesNotExist"&gt;No matching identifier in =
arXiv&lt;/error&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H4><I>Request</I></H4>
<P>Request a record in the oai_marc metadata format. However, the =
requested=20
metadata format can not be disseminated for this identifier. Therefore, =
the=20
response contains no record. It does contain an <CODE>error</CODE> =
element with=20
a <CODE>code</CODE> attribute that has the value=20
<CODE>cannotDisseminateFormat</CODE>. [URL shown without <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoding</A>=20
for better readability].</P><PRE>http://arXiv.org/oai2?
       =
verb=3DGetRecord&amp;identifier=3Doai:arXiv.org:quant-ph/9901001&amp;meta=
dataPrefix=3Doai_marc</PRE>
<H4><I>Response</I></H4>
<TABLE border=3D2 summary=3D"Example GetRecord response for =
cannotDisseminateFormat"=20
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;=20
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-02-08T08:55:46Z&lt;/responseDate&gt;
  &lt;request verb=3D"GetRecord" =
identifier=3D"oai:arXiv.org:quant-ph/9901001"
           =
metadataPrefix=3D"oai_marc"&gt;http://arXiv.org/oai1&lt;/request&gt;=20
  &lt;error code=3D"cannotDisseminateFormat"/&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H2>4.2 <A name=3DIdentify>Identify</A></H2>
<H3>Summary and Usage Notes</H3>
<P>This verb is used to retrieve information about a repository. Some of =
the=20
information returned is required as part of the OAI-PMH. Repositories =
<B>may</B>=20
also employ the Identify verb to return additional descriptive =
information.</P>
<H3>Arguments</H3>
<P>None</P>
<H3>Error and Exception Conditions</H3>
<UL>
  <LI><CODE><B>badArgument</B></CODE> - The request includes illegal =
arguments.=20
  </LI></UL>
<H3>Response Format</H3>
<P>The response <B>must</B> include one instance of the following =
elements:</P>
<UL>
  <LI><CODE>repositoryName</CODE> : a human readable name for the =
repository;=20
  <LI><CODE>baseURL</CODE> : the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#HTTPReq=
uestFormat">base=20
  URL</A> of the repository;=20
  <LI><CODE>protocolVersion</CODE> : the version of the OAI-PMH =
supported by the=20
  repository;=20
  <LI><CODE>earliestDatestamp</CODE> : a <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Dates">=
UTCdatetime</A>=20
  that is the guaranteed lower limit of all datestamps recording =
changes,=20
  modifications, or deletions in the repository. A repository <B>must =
not</B>=20
  use <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">datestamps</A>=20
  lower than the one specified by the content of the=20
  <CODE>earliestDatestamp</CODE> element. <CODE>earliestDatestamp</CODE> =
must be=20
  expressed at the finest <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">granularity</A>=20
  supported by the repository.=20
  <LI><CODE>deletedRecord</CODE> : the manner in which the repository =
supports=20
  the notion of <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Deleted=
Records">deleted=20
  records</A>. Legitimate values are <CODE>no</CODE> ; =
<CODE>transient</CODE> ;=20
  <CODE>persistent</CODE> with meanings defined in the section on <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Deleted=
Records">deletion</A>.=20

  <LI><CODE>granularity:</CODE> the finest <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">harvesting=20
  granularity</A> supported by the repository. The legitimate values are =

  <CODE>YYYY-MM-DD</CODE> and <CODE>YYYY-MM-DDThh:mm:ssZ</CODE> with =
meanings as=20
  defined in <A href=3D"http://www.w3.org/TR/NOTE-datetime">ISO8601</A>. =
</LI></UL>
<P>The response <B>must</B> include one or more instances of the =
following=20
element:</P>
<UL>
  <LI><CODE>adminEmail</CODE> : the e-mail address of an administrator =
of the=20
  repository. </LI></UL>
<P>The response <B>may</B> include multiple instances of the following=20
<B>optional</B> elements:</P>
<UL>
  <LI><CODE>compression</CODE> : a compression encoding supported by the =

  repository. The <B>recommended</B> values are those defined for the=20
  <CODE>Content-Encoding</CODE> header in Section 14.11 of <A=20
  href=3D"http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</A> describing =
HTTP 1.1. A=20
  <CODE>compression</CODE> element <B>should not</B> be included for the =

  <CODE>identity</CODE> encoding, which is implied.=20
  <LI><CODE>description</CODE> : an extensible mechanism for communities =
to=20
  describe their repositories. For example, the <CODE>description</CODE> =

  container could be used to include collection-level metadata in the =
response=20
  to the Identify request. <A=20
  =
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
  Guidelines</A> are available to give directions with this respect. =
Each=20
  <CODE>description</CODE> container <B>must</B> be accompanied by the =
URL of an=20
  XML schema describing the structure of the description container. =
</LI></UL>
<H3>Examples</H3>
<H4><I>Request</I></H4><PRE>http://memory.loc.gov/cgi-bin/oai?
       verb=3DIdentify</PRE>
<H4><I>Response</I></H4>
<P>The below example of a response to the <CODE>Identify</CODE> request =
contains=20
three <CODE>description</CODE> containers:</P>
<UL>
  <LI>The <CODE>oai-identifier</CODE> container complies to an XML =
Schema, which=20
  is available at <A=20
  =
href=3D"http://www.openarchives.org/OAI/2.0/oai-identifier.xsd">http://ww=
w.openarchives.org/OAI/2.0/oai-identifier.xsd</A>.=20
  This schema, provided in the accompanying <A=20
  =
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
  Guidelines</A> document, is used by repositories that choose to comply =
with a=20
  specific format of unique identifiers for items. The format of that =
identifier=20
  is explained by means of comments in the <A=20
  =
href=3D"http://www.openarchives.org/OAI/2.0/oai-identifier.xsd">oai-ident=
ifier.xsd</A>=20
  XML Schema.=20
  <LI>The <CODE>eprints</CODE> container complies to an XML Schema, =
which is=20
  available at <A=20
  =
href=3D"http://www.openarchives.org/OAI/1.1/eprints.xsd">http://www.opena=
rchives.org/OAI/1.1/eprints.xsd</A>.=20
  This schema, provided in the accompanying <A=20
  =
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
  Guidelines</A> document, has been agreed upon by the OAI e-print =
community,=20
  and contains information specific to repositories in that community.=20
  <LI>The <CODE>friends</CODE> container complies to an XML Schema, =
which is=20
  available at <A=20
  =
href=3D"http://www.openarchives.org/OAI/2.0/friends.xsd">http://www.opena=
rchives.org/OAI/2.0/friends.xsd</A>.=20
  This schema, provided in the accompanying <A=20
  =
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
  Guidelines</A> document, is used by repositories that want to point =
harvesters=20
  to other repositories, by listing their base URLs. Usage of the=20
  <CODE>friends</CODE> container is <B>recommended</B>; it may support=20
  harvesters in discovering the network-location of repositories. =
</LI></UL>
<TABLE border=3D2 summary=3D"Example Idenftify response" width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-02-08T12:00:01Z&lt;/responseDate&gt;
  &lt;request =
verb=3D"Identify"&gt;http://memory.loc.gov/cgi-bin/oai&lt;/request&gt;
  &lt;Identify&gt;
    &lt;repositoryName&gt;Library of Congress Open Archive Initiative=20
                    Repository 1&lt;/repositoryName&gt;
    &lt;baseURL&gt;http://memory.loc.gov/cgi-bin/oai&lt;/baseURL&gt;
    &lt;protocolVersion&gt;2.0&lt;/protocolVersion&gt;
    &lt;adminEmail&gt;somebody@loc.gov&lt;/adminEmail&gt;
    &lt;adminEmail&gt;anybody@loc.gov&lt;/adminEmail&gt;
    =
&lt;earliestDatestamp&gt;1990-02-01T12:00:00Z&lt;/earliestDatestamp&gt;
    &lt;deletedRecord&gt;transient&lt;/deletedRecord&gt;
    &lt;granularity&gt;YYYY-MM-DDThh:mm:ssZ&lt;/granularity&gt;
    &lt;compression&gt;deflate&lt;/compression&gt;
    &lt;description&gt;
      &lt;oai-identifier=20
        xmlns=3D"http://www.openarchives.org/OAI/2.0/oai-identifier"
        xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation=3D
            "http://www.openarchives.org/OAI/2.0/oai-identifier
        http://www.openarchives.org/OAI/2.0/oai-identifier.xsd"&gt;
        &lt;scheme&gt;oai&lt;/scheme&gt;
        =
&lt;repositoryIdentifier&gt;lcoa1.loc.gov&lt;/repositoryIdentifier&gt;
        &lt;delimiter&gt;:&lt;/delimiter&gt;
        =
&lt;sampleIdentifier&gt;oai:lcoa1.loc.gov:loc.music/musdi.002&lt;/sampleI=
dentifier&gt;
      &lt;/oai-identifier&gt;
    &lt;/description&gt;
    &lt;description&gt;
      &lt;eprints=20
         xmlns=3D"http://www.openarchives.org/OAI/1.1/eprints"
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         =
xsi:schemaLocation=3D"http://www.openarchives.org/OAI/1.1/eprints=20
         http://www.openarchives.org/OAI/1.1/eprints.xsd"&gt;
        &lt;content&gt;
          =
&lt;URL&gt;http://memory.loc.gov/ammem/oamh/lcoa1_content.html&lt;/URL&gt=
;
          &lt;text&gt;Selected collections from American Memory at the =
Library=20
                of Congress&lt;/text&gt;
        &lt;/content&gt;
        &lt;metadataPolicy/&gt;
        &lt;dataPolicy/&gt;
      &lt;/eprints&gt;
    &lt;/description&gt;
    &lt;description&gt;
      &lt;friends=20
          xmlns=3D"http://www.openarchives.org/OAI/2.0/friends/"=20
          xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
          =
xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/friends/
         http://www.openarchives.org/OAI/2.0/friends.xsd"&gt;
       &lt;baseURL&gt;http://oai.east.org/foo/&lt;/baseURL&gt;
       &lt;baseURL&gt;http://oai.hq.org/bar/&lt;/baseURL&gt;
       &lt;baseURL&gt;http://oai.south.org/repo.cgi&lt;/baseURL&gt;
     &lt;/friends&gt;
   &lt;/description&gt;
 &lt;/Identify&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H2>4.3 <A name=3DListIdentifiers>ListIdentifiers</A></H2>
<H3>Summary and Usage Notes</H3>
<P>This verb is an abbreviated form of <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords"><CODE>ListRecords</CODE></A>,=20
retrieving only <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>headers</A>=20
rather than <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>records</A>.=20
Optional arguments permit selective harvesting of <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>headers</A>=20
based on <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set">se=
t</A>=20
membership and/or datestamp. Depending on the repository's support for =
<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#deletio=
n">deletions</A>,=20
a returned <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>header</A>=20
<B>may</B> have a <CODE>status</CODE> attribute of "deleted" if a record =

matching the arguments specified in the request has been deleted.</P>
<H3>Arguments</H3>
<UL>
  <LI><CODE><B>from</B></CODE> an <I>optional</I> argument with a <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Dates">=
UTCdatetime=20
  value</A>, which specifies a lower bound for datestamp-based <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">selective=20
  harvesting</A>.=20
  <LI><CODE><B>until</B></CODE> an <I>optional</I> argument with a <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Dates">=
UTCdatetime=20
  value</A>, which specifies a upper bound for datestamp-based <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">selective=20
  harvesting</A>.=20
  <LI><CODE><B>metadataPrefix</B> </CODE>a <I>required</I> argument, =
which=20
  specifies that <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>headers</A>=20
  should be returned only if the metadata format matching the supplied =
<A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
aPrefix"><CODE>metadataPrefix</CODE></A>=20
  is available or, depending on the repository's support for <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#deletio=
n">deletions</A>,=20
  has been deleted. The metadata formats supported by a repository and =
for a=20
  particular item can be retrieved using the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListMet=
adataFormats"><CODE>ListMetadataFormats</CODE></A>=20
  request.=20
  <LI><CODE><B>set</B></CODE> an <I>optional</I> argument with a <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set"><C=
ODE>setSpec</CODE>=20
  value</A> , which specifies <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set">se=
t</A>=20
  criteria for <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Selecti=
veHarvestingandSets">selective=20
  harvesting</A>.=20
  <LI><CODE><B>resumptionToken</B></CODE> an <I>exclusive </I>argument =
with a=20
  value that is the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#FlowCon=
trol">flow=20
  control</A> token returned by a previous <CODE><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListIde=
ntifiers">ListIdentifiers</A></CODE>=20
  request that issued an incomplete list. </LI></UL>
<H3>Error and Exception Conditions</H3>
<UL>
  <LI><CODE><B>badArgument</B></CODE> - The request includes illegal =
arguments=20
  or is missing required arguments.=20
  <LI><CODE><B>badResumptionToken</B></CODE> - The value of the=20
  <CODE>resumptionToken</CODE> argument is invalid or expired.=20
  <LI><CODE><B>cannotDisseminateFormat</B></CODE> - The value of the=20
  <CODE>metadataPrefix</CODE> argument is not supported by the =
repository.=20
  <LI><CODE><B>noRecordsMatch</B></CODE>- The combination of the values =
of the=20
  <CODE>from</CODE>, <CODE>until</CODE>, and <CODE>set</CODE> arguments =
results=20
  in an empty list.=20
  <LI><CODE><B>noSetHierarchy</B></CODE> - The repository does not =
support sets.=20
  </LI></UL>
<H3>Examples</H3>
<H4><I>Request</I></H4>
<P>List the <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#headers=
">headers</A>=20
of records in the oldArXiv metadata format that are added, modified or =
deleted=20
since January 15, 1998 in the set physics:hep. [URL shown without <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoding</A>=20
for better readability].</P><PRE>http://an.oa.org/OAI-script?
       =
verb=3DListIdentifiers&amp;from=3D1998-01-15&amp;metadataPrefix=3DoldArXi=
v&amp;set=3Dphysics:hep</PRE>
<H4><I>Response</I></H4>
<P>A list of four headers is returned. One header has a =
<CODE>deleted</CODE>=20
status, indicating that a record in the metadata format specified by the =

<CODE>metadataPrefix</CODE> is no longer available. In addition, a=20
<CODE>resumptionToken</CODE> (non-empty, value <CODE>xxx45abttyz) =
</CODE>has=20
been returned, indicating that the list of headers is <I>incomplete</I> =
and that=20
one or more subsequent requests will need to be issued to retrieve a=20
<I>complete</I> list. In the example, the <CODE>resumptionToken</CODE> =
comes=20
with all of the 3 optional attributes: <CODE>expirationDate</CODE> =
indicates=20
that the <CODE>resumptionToken</CODE> will become unusable after 11:20 =
PM UTC on=20
June 1st 2002; <CODE>completeListSize</CODE> indicates that the =
<I>complete</I>=20
list consists of 6 identifiers; the zero-value for <CODE>cursor</CODE> =
indicates=20
that no headers have been returned previous to this reply.</P>
<TABLE border=3D2 summary=3D"Example ListIdentifiers response" =
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-06-01T19:20:30Z&lt;/responseDate&gt;
  &lt;request verb=3D"ListIdentifiers" from=3D"1998-01-15"=20
           metadataPrefix=3D"oldarXiv"
           =
set=3D"physics:hep"&gt;http://an.oa.org/OAI-script&lt;/request&gt;
  &lt;ListIdentifiers&gt;
   &lt;header&gt; =20
    &lt;identifier&gt;oai:arXiv.org:hep-th/9801001&lt;/identifier&gt;
    &lt;datestamp&gt;1999-02-23&lt;/datestamp&gt;
    &lt;setSpec&gt;physic:hep&lt;/setSpec&gt;
   &lt;/header&gt;
   &lt;header&gt;   =20
    &lt;identifier&gt;oai:arXiv.org:hep-th/9801002&lt;/identifier&gt;
    &lt;datestamp&gt;1999-03-20&lt;/datestamp&gt;
    &lt;setSpec&gt;physic:hep&lt;/setSpec&gt;
    &lt;setSpec&gt;physic:exp&lt;/setSpec&gt;
   &lt;/header&gt;
   &lt;header&gt; =20
    &lt;identifier&gt;oai:arXiv.org:hep-th/9801005&lt;/identifier&gt;
    &lt;datestamp&gt;2000-01-18&lt;/datestamp&gt;
    &lt;setSpec&gt;physic:hep&lt;/setSpec&gt;
   &lt;/header&gt;=20
   &lt;header status=3D"deleted"&gt; =20
    &lt;identifier&gt;oai:arXiv.org:hep-th/9801010&lt;/identifier&gt;
    &lt;datestamp&gt;1999-02-23&lt;/datestamp&gt;
    &lt;setSpec&gt;physic:hep&lt;/setSpec&gt;
    &lt;setSpec&gt;math&lt;/setSpec&gt;
   &lt;/header&gt; =20
   &lt;resumptionToken expirationDate=3D"2002-06-01T23:20:00Z"=20
      completeListSize=3D"6"=20
      cursor=3D"0"&gt;xxx45abttyz&lt;/resumptionToken&gt;
 &lt;/ListIdentifiers&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H4><I>Request</I></H4>
<P>Issue a subsequent request to the one issued above. The single=20
<CODE>resumptionToken</CODE> argument has the value returned in the =
previous=20
response. [URL shown without <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoding</A>=20
for better readability].</P><PRE>http://an.oa.org/OAI-script?
       verb=3DListIdentifiers&amp;resumptionToken=3Dxxx45abttyz</PRE>
<H4><I>Response</I></H4>
<P>Two more headers are returned. The <CODE>resumptionToken</CODE> =
element at=20
the end of the list has no value, indicating that the list is now =
complete. The=20
value of the <CODE>completeListSize</CODE> attribute remains 6, while =
the value=20
of the <CODE>cursor</CODE> attribute has changed to 4, indicating that a =

previous reply has (or previous replies have) already delivered 4=20
identifiers.</P>
<TABLE border=3D2 summary=3D"Example ListIdentifiers response" =
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-06-01T19:30:00Z&lt;/responseDate&gt;
  &lt;request verb=3D"ListIdentifiers"
           =
resumptionToken=3D"xxx45abttyz"&gt;http://an.oa.org/OAI-script&lt;/reques=
t&gt;
  &lt;ListIdentifiers&gt;
    &lt;header&gt; =20
      &lt;identifier&gt;oai:arXiv.org:hep-th/9801020&lt;/identifier&gt;
      &lt;datestamp&gt;1999-02-23&lt;/datestamp&gt;
      &lt;setSpec&gt;physic:hep&lt;/setSpec&gt;
    &lt;/header&gt;=20
    &lt;header&gt;  =20
    &lt;identifier&gt;oai:arXiv.org:hep-th/9801060&lt;/identifier&gt;
      &lt;datestamp&gt;1999-02-23&lt;/datestamp&gt;
      &lt;setSpec&gt;physic:hep&lt;/setSpec&gt;
    &lt;/header&gt; =20
    &lt;resumptionToken completeListSize=3D"6" cursor=3D"4"/&gt;
  &lt;/ListIdentifiers&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H4><I>Request</I></H4>
<P>List the headers of olac-formatted records, added or modified on =
January 1,=20
2001 in the set Perseus:collection:PersInfo. There are no matches for =
this=20
request, hence, the response contains an error tag and does not contain =
any=20
header elements [URL shown without <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoding</A>=20
for better =
readability].</P><PRE>http://www.perseus.tufts.edu/cgi-bin/pdataprov?
       =
verb=3DListIdentifiers&amp;metadataPrefix=3Dolac&amp;from=3D2001-01-01&am=
p;until=3D2001-01-01
       &amp;set=3DPerseus:collection:PersInfo</PRE>
<H4><I>Response</I></H4>
<TABLE border=3D2 summary=3D"Example ListIdentifier response with =
noRecordsMatch"=20
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-02-08T14:27:19Z&lt;/responseDate&gt;
  &lt;request verb=3D"ListIdentifiers" metadataPrefix=3D"olac"
    from=3D"2001-01-01" until=3D"2001-01-01"
    set=3D"Perseus:collection:PersInfo"&gt;
    http://www.perseus.tufts.edu/cgi-bin/pdataprov&lt;/request&gt;
  &lt;error code=3D"noRecordsMatch"/&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H2>4.4 <A name=3DListMetadataFormats>ListMetadataFormats</A></H2>
<H3>Summary and Usage Notes</H3>
<P>This verb is used to retrieve the metadata formats available from a=20
repository. An optional argument restricts the request to the formats =
available=20
for a specific item.</P>
<H3>Arguments</H3>
<UL>
  <LI><CODE><B>identifier</B></CODE> an <I>optional</I> argument that =
specifies=20
  the unique identifier of the item for which available metadata formats =
are=20
  being requested. If this argument is omitted, then the response =
includes all=20
  metadata formats supported by this repository. Note that the fact that =
a=20
  metadata format is supported by a repository does <I>not</I> mean that =
it can=20
  be disseminated from all items in the repository. </LI></UL>
<H3>Error and Exception Conditions</H3>
<UL>
  <LI><CODE><B>badArgument</B></CODE> - The request includes illegal =
arguments=20
  or is missing required arguments.=20
  <LI><CODE><B>idDoesNotExist</B></CODE> - The value of the=20
  <CODE>identifier</CODE> argument is unknown or illegal in this =
repository.=20
  <LI><CODE><B>noMetadataFormats</B></CODE> - There are no metadata =
formats=20
  available for the specified item. </LI></UL>
<H3>Examples</H3>
<H4><I>Request</I></H4>
<P>List the metadata formats that can be disseminated from the =
repository=20
<CODE>http://www.perseus.tufts.edu/cgi-bin/pdataprov</CODE> for the item =
with=20
unique identifier =
<CODE>oai:perseus.tufts.edu:Perseus:text:1999.02.0119</CODE>=20
[URL shown without <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoding</A>=20
for better =
readability].</P><PRE>http://www.perseus.tufts.edu/cgi-bin/pdataprov?
       =
verb=3DListMetadataFormats&amp;identifier=3Doai:perseus.tufts.edu:Perseus=
:text:1999.02.0119</PRE>
<H4><I>Response</I></H4>
<P>The response shows that 3 metadata formats are supported for the =
given=20
identifier: oai_dc, olac and perseus. For each of the formats, the =
location of=20
an XML Schema describing the format, as well as the XML Namespace URI is =

given.</P>
<TABLE border=3D2 summary=3D"Example ListMetadataFormats response" =
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-02-08T14:27:19Z&lt;/responseDate&gt;
  &lt;request verb=3D"ListMetadataFormats"
    identifier=3D"oai:perseus.tufts.edu:Perseus:text:1999.02.0119"&gt;
    http://www.perseus.tufts.edu/cgi-bin/pdataprov&lt;/request&gt;
  &lt;ListMetadataFormats&gt;
   &lt;metadataFormat&gt;
     &lt;metadataPrefix&gt;oai_dc&lt;/metadataPrefix&gt;
     &lt;schema&gt;http://www.openarchives.org/OAI/2.0/oai_dc.xsd
       &lt;/schema&gt;
     =
&lt;metadataNamespace&gt;http://www.openarchives.org/OAI/2.0/oai_dc/
       &lt;/metadataNamespace&gt;
   &lt;/metadataFormat&gt;
   &lt;metadataFormat&gt;
     &lt;metadataPrefix&gt;olac&lt;/metadataPrefix&gt;
     =
&lt;schema&gt;http://www.language-archives.org/OLAC/olac-0.2.xsd&lt;/sche=
ma&gt;
     &lt;metadataNamespace&gt;http://www.language-archives.org/OLAC/0.2/
      &lt;/metadataNamespace&gt;
   &lt;/metadataFormat&gt;
   &lt;metadataFormat&gt;
     &lt;metadataPrefix&gt;perseus&lt;/metadataPrefix&gt;
     =
&lt;schema&gt;http://www.perseus.tufts.edu/persmeta.xsd&lt;/schema&gt;
     &lt;metadataNamespace&gt;http://www.perseus.tufts.edu/persmeta.dtd
       &lt;/metadataNamespace&gt;
   &lt;/metadataFormat&gt;
 &lt;/ListMetadataFormats&gt;
&lt;/OAI-PMH&gt;

</PRE></TD></TR></TBODY></TABLE>
<H4><I>Request</I></H4>
<P>List the metadata formats that can be disseminated from the =
repository=20
<CODE>http://memory.loc.gov/cgi-bin/oai</CODE>.</P><PRE>http://memory.loc=
.gov/cgi-bin/oai?
       verb=3DListMetadataFormats</PRE>
<H4><I>Response</I></H4>
<P>The response shows that the repository supports two metadata formats: =

<CODE>oai_dc</CODE>, and <CODE>oai_marc</CODE>. For each of the formats, =
the=20
location of an XML Schema describing the format is given. The support of =
these=20
formats at the repository-level does not imply support of each format =
for each=20
item of the repository.</P>
<TABLE border=3D2 summary=3D"Example ListMetadataFormats response" =
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-06-08T15:19:13Z&lt;/responseDate&gt;
  &lt;request verb=3D"ListMetadataFormats"&gt;
           http://memory.loc.gov/cgi-bin/oai&lt;/request&gt;
  &lt;ListMetadataFormats&gt;
   &lt;metadataFormat&gt;
    &lt;metadataPrefix&gt;oai_dc&lt;/metadataPrefix&gt;
    =
&lt;schema&gt;http://www.openarchives.org/OAI/2.0/oai_dc.xsd&lt;/schema&g=
t;
    &lt;metadataNamespace&gt;http://www.openarchives.org/OAI/2.0/oai_dc/
      &lt;/metadataNamespace&gt;
   &lt;/metadataFormat&gt;
   &lt;metadataFormat&gt;
    &lt;metadataPrefix&gt;oai_marc&lt;/metadataPrefix&gt;
    =
&lt;schema&gt;http://www.openarchives.org/OAI/1.1/oai_marc.xsd&lt;/schema=
&gt;
    =
&lt;metadataNamespace&gt;http://www.openarchives.org/OAI/1.1/oai_marc
      &lt;/metadataNamespace&gt;
   &lt;/metadataFormat&gt;
  &lt;/ListMetadataFormats&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H4><I>Request</I></H4>
<P>List the metadata formats that can be disseminated for the unique =
identifier=20
<CODE>oai:lcoa1.loc.gov:loc.rbc/rbpe.00000111</CODE> in the repository=20
<CODE>http://memory.loc.gov/cgi-bin/oai</CODE>. The identifier, however, =
does=20
not exist and therefore, the response contains an <CODE>error</CODE> =
element and=20
no metadataFormat container. [URL shown without <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoding</A>=20
for better readability].</P><PRE>http://memory.loc.gov/cgi-bin/oai?
       =
verb=3DListMetadataFormats&amp;identifier=3Doai:lcoa1.loc.gov:loc.rbc/rbp=
e.00000111</PRE>
<H4><I>Response</I></H4>
<TABLE border=3D2=20
summary=3D"Exmple ListMetadataFormats response with idDoesNotExist" =
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-06-08T15:19:13Z&lt;/responseDate&gt;
  &lt;request verb=3D"ListMetadataFormats"
           identifier=3D"oai:lcoa1.loc.gov:loc.rbc/rbpe.00000111"&gt;
           http://memory.loc.gov/cgi-bin/oai&lt;/request&gt;
  &lt;error =
code=3D"idDoesNotExist"&gt;oai:lcoa1.loc.gov:loc.rbc/rbpe.00000111 has =
the=20
       structure of a valid LOC identifier, but it maps to no known=20
       item&lt;/error&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H2>4.5 <A name=3DListRecords>ListRecords</A></H2>
<H3>Summary and Usage Notes</H3>
<P>This verb is used to harvest records from a repository. Optional =
arguments=20
permit <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">selective=20
harvesting</A> of <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>records</A>=20
based on <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set">se=
t</A>=20
membership and/or datestamp. Depending on the repository's support for =
<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#deletio=
n">deletions</A>,=20
a returned <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>header</A>=20
<B>may</B> have a <CODE>status</CODE> attribute of "deleted" if a record =

matching the arguments specified in the request has been deleted. No =
metadata=20
will be present for records with deleted status.</P>
<H3>Arguments</H3>
<UL>
  <LI><CODE><B>from</B></CODE> an <I>optional</I> argument with a <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Dates">=
UTCdatetime=20
  value</A>, which specifies a lower bound for datestamp-based <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">selective=20
  harvesting</A>.=20
  <LI><CODE><B>until</B></CODE> an <I>optional</I> argument with a <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Dates">=
UTCdatetime=20
  value</A>, which specifies a upper bound for datestamp-based <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Datesta=
mp">selective=20
  harvesting</A>.=20
  <LI><CODE><B>set</B></CODE> an <I>optional</I> argument with a <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set"><C=
ODE>setSpec</CODE>=20
  value</A> , which specifies <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set">se=
t</A>=20
  criteria for <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Selecti=
veHarvestingandSets">selective=20
  harvesting</A>.=20
  <LI><CODE><B>resumptionToken</B></CODE> an <I>exclusive</I> argument =
with a=20
  value that is the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#FlowCon=
trol">flow=20
  control</A> token returned by a previous <CODE>ListRecords</CODE> =
request that=20
  issued an incomplete list.=20
  <LI><CODE><B>metadataPrefix</B></CODE> a <I>required</I> argument =
(unless the=20
  exclusive argument <CODE>resumptionToken</CODE> is used) that =
specifies the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
aPrefix"><CODE>metadataPrefix</CODE></A>=20
  of the format that should be included in the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>metadata=20
  part of the returned records</A>. Records should be included only for =
items=20
  from which the metadata format<BR>matching the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#metadat=
aPrefix"><CODE>metadataPrefix</CODE></A>=20
  can be disseminated. The metadata formats supported by a repository =
and for a=20
  particular item can be retrieved using the <CODE><A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListMet=
adataFormats">ListMetadataFormats</A></CODE>=20
  request. </LI></UL>
<H3>Error and Exception Conditions</H3>
<UL>
  <LI><CODE><B>badArgument</B></CODE> - The request includes illegal =
arguments=20
  or is missing required arguments.=20
  <LI><CODE><B>badResumptionToken</B></CODE> - The value of the=20
  <CODE>resumptionToken</CODE> argument is invalid or expired.=20
  <LI><CODE><B>cannotDisseminateFormat</B></CODE> - The value of the=20
  <CODE>metadataPrefix</CODE> argument is not supported by the =
repository.=20
  <LI><CODE><B>noRecordsMatch</B></CODE> - The combination of the values =
of the=20
  <CODE>from</CODE>, <CODE>until</CODE>, <CODE>set</CODE> and=20
  <CODE>metadataPrefix</CODE> arguments results in an empty list.=20
  <LI><CODE><B>noSetHierarchy</B></CODE> - The repository does not =
support sets.=20
  </LI></UL>
<H3>Examples</H3>
<H4><I>Request</I></H4>
<P>List the records expressed in <CODE>oai_rfc1807</CODE> metadata =
format, that=20
have been added or modified since January 15, 1998 in the =
<CODE>hep</CODE>=20
subset of the <CODE>physics</CODE> set [URL shown without <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoding</A>=20
for better readability].</P><PRE>http://an.oa.org/OAI-script?
       =
verb=3DListRecords&amp;from=3D1998-01-15&amp;set=3Dphysics:hep&amp;metada=
taPrefix=3Doai_rfc1807</PRE>
<H4><I>Response</I></H4>Two records are returned:=20
<UL>
  <LI>The first record is expressed in the <CODE>oai_rfc1807</CODE> =
metadata.=20
  This record also has an <CODE>about</CODE> part, and the item from =
which it=20
  was disseminated belongs to two sets (<CODE>physics:hep</CODE> and=20
  <CODE>math</CODE>).=20
  <LI>The second has a <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#header"=
>header</A>=20
  with a <CODE>status=3D"deleted"</CODE> attribute (and therefore no =
metadata=20
  part). </LI></UL>
<P>Note: The reply only includes records for those items from which =
metadata in=20
<CODE>oai_rfc1807</CODE> can be disseminated. No records are returned =
for those=20
items that fit the <CODE>from</CODE>, <CODE>until</CODE>, and =
<CODE>set</CODE>=20
arguments but from which the specified format can not be =
disseminated.</P>
<TABLE border=3D2 summary=3D"Example ListRecords response" =
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
 &lt;responseDate&gt;2002-06-01T19:20:30Z&lt;/responseDate&gt;=20
 &lt;request verb=3D"ListRecords" from=3D"1998-01-15"
          set=3D"physics:hep"
          metadataPrefix=3D"oai_rfc1807"&gt;
          http://an.oa.org/OAI-script&lt;/request&gt;
 &lt;ListRecords&gt;
  &lt;record&gt;
    &lt;header&gt;
      &lt;identifier&gt;oai:arXiv.org:hep-th/9901001&lt;/identifier&gt;
      &lt;datestamp&gt;1999-12-25&lt;/datestamp&gt;
      &lt;setSpec&gt;physics:hep&lt;/setSpec&gt;
      &lt;setSpec&gt;math&lt;/setSpec&gt;
    &lt;/header&gt;
    &lt;metadata&gt;
     &lt;rfc1807 xmlns=3D
        "http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1807.txt" =

      xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"=20
      xsi:schemaLocation=3D
       "http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1807.txt
        http://www.openarchives.org/OAI/1.1/rfc1807.xsd"&gt;
        &lt;bib-version&gt;v2&lt;/bib-version&gt;
        &lt;id&gt;hep-th/9901001&lt;/id&gt;
        &lt;entry&gt;January 1, 1999&lt;/entry&gt;
        &lt;title&gt;Investigations of Radioactivity&lt;/title&gt;
        &lt;author&gt;Ernest Rutherford&lt;/author&gt;
        &lt;date&gt;March 30, 1999&lt;/date&gt;
     &lt;/rfc1807&gt;
    &lt;/metadata&gt;
    &lt;about&gt;
      &lt;oai_dc:dc=20
          xmlns:oai_dc=3D"http://www.openarchives.org/OAI/2.0/oai_dc/"=20
          xmlns:dc=3D"http://purl.org/dc/elements/1.1/"=20
          xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"=20
          =
xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/oai_dc/=20
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd"&gt;
        &lt;dc:publisher&gt;Los Alamos arXiv&lt;/dc:publisher&gt;
        &lt;dc:rights&gt;Metadata may be used without restrictions as =
long as=20
           the oai identifier remains attached to it.&lt;/dc:rights&gt;
      &lt;/oai_dc:dc&gt;
    &lt;/about&gt;
  &lt;/record&gt;
  &lt;record&gt;
    &lt;header status=3D"deleted"&gt;
      &lt;identifier&gt;oai:arXiv.org:hep-th/9901007&lt;/identifier&gt;
      &lt;datestamp&gt;1999-12-21&lt;/datestamp&gt;
    &lt;/header&gt;
  &lt;/record&gt;
 &lt;/ListRecords&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H4><I>Request</I></H4>
<P>Request records in the <CODE>oai_dc </CODE>metadata format, modified =
or added=20
between 2:15pm and 2:20pm UTC on May 1st 2002. [URL shown without <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoding</A>=20
for better =
readability].</P><PRE>http://www.perseus.tufts.edu/cgi-b:in/pdataprov?
       =
verb=3DListRecords&amp;from=3D2002-05-01T14:15:00Z&amp;until=3D2002-05-01=
T14:20:00Z&amp;
       metadataPrefix=3Doai_dc</PRE>
<H4><I>Response</I></H4>
<P>Two records are returned. The second one has a =
<CODE>provenance</CODE>=20
container in its <CODE>about</CODE> element, giving an insight in its =
chain of=20
provenance.</P>
<TABLE border=3D2 summary=3D"Example ListRecords response" =
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
 &lt;responseDate&gt;2002-06-01T19:20:30Z&lt;/responseDate&gt;=20
 &lt;request verb=3D"ListRecords" from=3D"2002-05-01T14:15:00Z"
          until=3D"2002-05-01T14:20:00Z" metadataPrefix=3D"oai_dc"&gt;
          http://www.perseus.tufts.edu/cgi-bin/pdataprov&lt;/request&gt;
 &lt;ListRecords&gt;
  &lt;record&gt;
    &lt;header&gt;
      =
&lt;identifier&gt;oai:perseus:Perseus:text:1999.02.0084&lt;/identifier&gt=
;
      &lt;datestamp&gt;2002-05-01T14:16:12Z&lt;/datestamp&gt;
    &lt;/header&gt;
    &lt;metadata&gt;
      &lt;oai_dc:dc=20
          xmlns:oai_dc=3D"http://www.openarchives.org/OAI/2.0/oai_dc/"=20
          xmlns:dc=3D"http://purl.org/dc/elements/1.1/"=20
          xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"=20
          =
xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/oai_dc/=20
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd"&gt;
        &lt;dc:title&gt;Opera Minora&lt;/dc:title&gt;
        &lt;dc:creator&gt;Cornelius Tacitus&lt;/dc:creator&gt;
        &lt;dc:type&gt;text&lt;/dc:type&gt;
        &lt;dc:source&gt;Opera Minora. Cornelius Tacitus. Henry =
Furneaux.=20
         Clarendon Press. Oxford. 1900.&lt;/dc:source&gt;
        &lt;dc:language&gt;latin&lt;/dc:language&gt;
        &lt;dc:identifier&gt;http://www.perseus.tufts.edu/cgi-bin/ptext?
          doc=3DPerseus:text:1999.02.0084&lt;/dc:identifier&gt;
      &lt;/oai_dc:dc&gt;
    &lt;/metadata&gt;
  &lt;/record&gt;
  &lt;record&gt;
    &lt;header&gt;
      =
&lt;identifier&gt;oai:perseus:Perseus:text:1999.02.0083&lt;/identifier&gt=
;
      &lt;datestamp&gt;2002-05-01T14:20:55Z&lt;/datestamp&gt;
    &lt;/header&gt;
    &lt;metadata&gt;
      &lt;oai_dc:dc=20
          xmlns:oai_dc=3D"http://www.openarchives.org/OAI/2.0/oai_dc/"=20
          xmlns:dc=3D"http://purl.org/dc/elements/1.1/"=20
          xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"=20
          =
xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/oai_dc/=20
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd"&gt;
        &lt;dc:title&gt;Germany and its Tribes&lt;/dc:title&gt;
        &lt;dc:creator&gt;Tacitus&lt;/dc:creator&gt;
        &lt;dc:type&gt;text&lt;/dc:type&gt;
        &lt;dc:source&gt;Complete Works of Tacitus. Tacitus. Alfred John =
Church.=20
         William Jackson Brodribb. Lisa Cerrato. edited for Perseus.=20
         New York: Random House, Inc. Random House, Inc. reprinted 1942.
          &lt;/dc:source&gt;
        &lt;dc:language&gt;english&lt;/dc:language&gt;
        &lt;dc:identifier&gt;http://www.perseus.tufts.edu/cgi-bin/ptext?
         doc=3DPerseus:text:1999.02.0083&lt;/dc:identifier&gt;
      &lt;/oai_dc:dc&gt;
      &lt;/metadata&gt;
    &lt;about&gt;
      &lt;provenance
       xmlns=3D"http://www.openarchives.org/OAI/2.0/provenance"
       xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"=20
       =
xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/provenance =20
       http://www.openarchives.org/OAI/2.0/provenance.xsd"&gt;
       &lt;originDescription harvestDate=3D"2002-01-01T11:10:01Z" =
altered=3D"true"&gt;
        &lt;baseURL&gt;http://some.oa.org&lt;/baseURL&gt;
        &lt;identifier&gt;oai:r2.org:klik001&lt;/identifier&gt;
        &lt;datestamp&gt;2001-01-01&lt;/datestamp&gt;
        =
&lt;metadataNamespace&gt;http://www.openarchives.org/OAI/2.0/oai_dc/&lt;/=
metadataNamespace&gt;
        &lt;/originDescription&gt;
      &lt;/provenance&gt;
    &lt;/about&gt;
  &lt;/record&gt;
 &lt;/ListRecords&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H4><I>Request</I></H4>
<P>Request records in the the <CODE>oai_marc</CODE> metadata format, =
modified or=20
added between 2:00am and 3:00am UTC on June 1st 2002. The specified =
granularity=20
is not supported by the repository and therefore, an <CODE>error</CODE> =
with=20
<CODE>code</CODE> attribute of <CODE>badArgument</CODE> is returned. =
[URL shown=20
without <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Special=
Characters">encoding</A>=20
for better readability].</P><PRE>http://memory.loc.gov/cgi-bin/oai?
       =
verb=3DListRecords&amp;from=3D2002-06-01T02:00:00Z&amp;until=3D2002-06-01=
T03:00:00Z&amp;metadataPrefix=3Doai_marc</PRE>
<H4><I>Response</I></H4>
<TABLE border=3D2 summary=3D"Example ListRecords response with =
badArgument"=20
width=3D80>
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2002-06-01T19:20:30Z&lt;/responseDate&gt;=20
  &lt;request verb=3D"ListRecords" from=3D"2002-06-01T02:00:00Z"
           until=3D"2002-06-01T03:020:00Z"
           metadataPrefix=3D"oai_marc"&gt;
           http://memory.loc.gov/cgi-bin/oai&lt;/request&gt;
  &lt;error code=3D"badArgument"/&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H2>4.6 <A name=3DListSets>ListSets</A></H2>
<H3>Summary and Usage Notes</H3>
<P>This verb is used to retrieve the set structure of a repository, =
useful for=20
<A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Selecti=
veHarvestingandSets">selective=20
harvesting</A>.</P>
<H3>Arguments</H3>
<UL>
  <LI><B><CODE>resumptionToken</CODE></B> an <I>exclusive</I> argument =
with a=20
  value that is the <A=20
  =
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#FlowCon=
trol">flow=20
  control</A> token returned by a previous <CODE>ListSets</CODE> request =
that=20
  issued an incomplete list. </LI></UL>
<H3>Error and Exception Conditions</H3>
<UL>
  <LI><CODE><B>badArgument</B></CODE> - The request includes illegal =
arguments=20
  or is missing required arguments.=20
  <LI><CODE><B>badResumptionToken</B></CODE> - The value of the=20
  <CODE>resumptionToken</CODE> argument is invalid or expired.=20
  <LI><CODE><B>noSetHierarchy</B></CODE> - The repository does not =
support sets.=20
  </LI></UL>
<H3>Examples</H3>
<H4><I>Request</I></H4><PRE>http://an.oa.org/OAI-script?
       verb=3DListSets</PRE>
<H4><I>Response</I></H4>
<P>The following response indicates a set hierarchy with two top level =
sets with=20
respective setSpec <CODE>music</CODE> and <CODE>video</CODE>. The=20
<CODE>music</CODE> set has two subsets, with setSpec =
<CODE>music:(muzak</CODE>)=20
and <CODE>music:(elec)</CODE>. The subsets identified by setSpec<CODE>=20
music:(elec)</CODE>, has a <CODE>setDescription</CODE> element which =
holds a=20
Dublin Core container, used to describe its contents.</P>
<TABLE border=3D2 summary=3D"Example ListSets response" width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
 &lt;responseDate&gt;2002-08-11T07:21:33Z&lt;/responseDate&gt;
 &lt;request =
verb=3D"ListSets"&gt;http://an.oa.org/OAI-script&lt;/request&gt;
 &lt;ListSets&gt;
  &lt;set&gt;
    &lt;setSpec&gt;music&lt;/setSpec&gt;
    &lt;setName&gt;Music collection&lt;/setName&gt;
  &lt;/set&gt;
  &lt;set&gt;
    &lt;setSpec&gt;music:(muzak)&lt;/setSpec&gt;
    &lt;setName&gt;Muzak collection&lt;/setName&gt;
  &lt;/set&gt;
  &lt;set&gt;
    &lt;setSpec&gt;music:(elec)&lt;/setSpec&gt;
    &lt;setName&gt;Electronic Music Collection&lt;/setName&gt;
    &lt;setDescription&gt;
      &lt;oai_dc:dc=20
          xmlns:oai_dc=3D"http://www.openarchives.org/OAI/2.0/oai_dc/"=20
          xmlns:dc=3D"http://purl.org/dc/elements/1.1/"=20
          xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"=20
          =
xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/oai_dc/=20
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd"&gt;
          &lt;dc:description&gt;This set contains metadata describing=20
             electronic music recordings made during the 1950ies
             &lt;/dc:description&gt;
       &lt;/oai_dc:dc&gt;
    &lt;/setDescription&gt;
   &lt;/set&gt;
   &lt;set&gt;
    &lt;setSpec&gt;video&lt;/setSpec&gt;
    &lt;setName&gt;Video Collection&lt;/setName&gt;
   &lt;/set&gt;
 &lt;/ListSets&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H4><I>Request</I></H4><PRE>http://purl.org/alcme/etdcat/servlet/OAIHandl=
er?
       verb=3DListSets</PRE>
<H4><I>Response</I></H4>
<P>The response shows that the repository does not have a set =
hierarchy.</P>
<TABLE border=3D2 summary=3D"Example ListSets response with =
noSetHierarchy"=20
width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;OAI-PMH xmlns=3D"http://www.openarchives.org/OAI/2.0/"=20
         xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"&gt;
  &lt;responseDate&gt;2001-06-01T19:20:30Z&lt;/responseDate&gt;=20
  &lt;request verb=3D"ListSets"&gt;
           =
http://purl.org/alcme/etdcat/servlet/OAIHandler&lt;/request&gt;
  &lt;error code=3D"noSetHierarchy"&gt;This repository does not=20
         support sets&lt;/error&gt;
&lt;/OAI-PMH&gt;
</PRE></TD></TR></TBODY></TABLE>
<H1>5. <A name=3Ddublincore>Dublin Core</A></H1>
<P>The following table shows the XML Schema for Dublin Core without=20
qualification, which is associated with the reserved =
<CODE>metadataPrefix=20
oai_dc</CODE> in the OAI-PMH. All examples in this document that include =
Dublin=20
Core metadata, validate against this XML schema. Schema for other =
metadata=20
formats are provided in the accompanying <A=20
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
Guidelines</A> document.</P>
<TABLE border=3D2 summary=3D"oai_dc schema" width=3D"80%">
  <TBODY>
  <TR>
    <TD>
      <P>A XML schema for validating Unqualified Dublin Core metadata =
associated=20
      <BR>with the reserved <CODE>oai_dc</CODE>=20
    <CODE>metadataPrefix</CODE></P></TD></TR>
  <TR>
    <TD><PRE>&lt;schema =
targetNamespace=3D"http://www.openarchives.org/OAI/2.0/oai_dc/"=20
        xmlns:oai_dc=3D"http://www.openarchives.org/OAI/2.0/oai_dc/"=20
        xmlns:dc=3D"http://purl.org/dc/elements/1.1/"=20
        xmlns=3D"http://www.w3.org/2001/XMLSchema"=20
        elementFormDefault=3D"qualified" =
attributeFormDefault=3D"unqualified"&gt;
=09
&lt;annotation&gt;
  &lt;documentation&gt;=20
      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)
  &lt;/documentation&gt;
&lt;/annotation&gt;

&lt;import namespace=3D"http://purl.org/dc/elements/1.1/"=20
        =
schemaLocation=3D"http://dublincore.org/schemas/xmls/simpledc20021212.xsd=
"/&gt;
=09
&lt;element name=3D"dc" type=3D"oai_dc:oai_dcType"/&gt;

&lt;complexType name=3D"oai_dcType"&gt;
  &lt;choice minOccurs=3D"0" maxOccurs=3D"unbounded"&gt;
    &lt;element ref=3D"dc:title"/&gt;
    &lt;element ref=3D"dc:creator"/&gt;
    &lt;element ref=3D"dc:subject"/&gt;
    &lt;element ref=3D"dc:description"/&gt;
    &lt;element ref=3D"dc:publisher"/&gt;
    &lt;element ref=3D"dc:contributor"/&gt;
    &lt;element ref=3D"dc:date"/&gt;
    &lt;element ref=3D"dc:type"/&gt;
    &lt;element ref=3D"dc:format"/&gt;
    &lt;element ref=3D"dc:identifier"/&gt;
    &lt;element ref=3D"dc:source"/&gt;
    &lt;element ref=3D"dc:language"/&gt;
    &lt;element ref=3D"dc:relation"/&gt;
    &lt;element ref=3D"dc:coverage"/&gt;
    &lt;element ref=3D"dc:rights"/&gt;
  &lt;/choice&gt;
&lt;/complexType&gt;

&lt;/schema&gt;

</PRE></TD></TR>
  <TR>
    <TD>This Schema is available at <A=20
      =
href=3D"http://www.openarchives.org/OAI/2.0/oai_dc.xsd">http://www.openar=
chives.org/OAI/2.0/oai_dc.xsd</A></TD></TR></TBODY></TABLE>
<H4><I>Examples</I></H4>
<TABLE border=3D2 summary=3D"Example oai_dc record (1)" width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;oai_dc:dc=20
    xmlns:oai_dc=3D"http://www.openarchives.org/OAI/2.0/oai_dc/"=20
    xmlns:dc=3D"http://purl.org/dc/elements/1.1/"=20
    xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"=20
    xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/oai_dc/=20
    http://www.openarchives.org/OAI/2.0/oai_dc.xsd"&gt;
  &lt;dc:title xml:lang=3D"en"&gt;The Cornell Law =
Quarterly&lt;/dc:title&gt;
  &lt;dc:date&gt;1915-1916&lt;/dc:date&gt;
  &lt;dc:identifier&gt;http://heinonline.org/HeinOnline/show.pl?
      =
handle=3Dhein.journals/clqv1%26id=3D1%26size=3D4&lt;/dc:identifier&gt;
  &lt;dc:rights&gt;Available by Subscription.=20
             See http://www.wshein.com&lt;/dc:rights&gt;
&lt;/oai_dc:dc&gt;
</PRE></TD></TR></TBODY></TABLE>
<P>&nbsp;</P>
<TABLE border=3D2 summary=3D"Example oai_dc record (2)" width=3D"80%">
  <TBODY>
  <TR>
    <TD><PRE>&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;oai_dc:dc=20
    xmlns:oai_dc=3D"http://www.openarchives.org/OAI/2.0/oai_dc/"=20
    xmlns:dc=3D"http://purl.org/dc/elements/1.1/"=20
    xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"=20
    xsi:schemaLocation=3D"http://www.openarchives.org/OAI/2.0/oai_dc/
    http://www.openarchives.org/OAI/2.0/oai_dc.xsd"&gt;
  &lt;dc:title xml:lang=3D"en"&gt;Grassmann's space =
analysis&lt;/dc:title&gt;
  &lt;dc:creator&gt;Hyde, E. W. (Edward Wyllys)&lt;/dc:creator&gt;
  &lt;dc:subject&gt;LCSH:Ausdehnungslehre; LCCN =
QA205.H99&lt;/dc:subject&gt;
  &lt;dc:publisher&gt;J. Wiley &amp;amp; Sons&lt;/dc:publisher&gt;
  &lt;dc:date&gt;Created: 1906; Available: 1991&lt;/dc:date&gt;
  &lt;dc:type&gt;text&lt;/dc:type&gt;
  &lt;dc:identifier&gt;http://resolver.library.cornell.edu/math/1796949
     &lt;/dc:identifier&gt;
  &lt;dc:language&gt;english&lt;/dc:language&gt;
  &lt;dc:rights xml:lang=3D"en"&gt;Public Domain&lt;/dc:rights&gt;
&lt;/oai_dc:dc&gt;
</PRE></TD></TR></TBODY></TABLE>
<H1>6. <A name=3DImpGuid>Implementation Guidelines</A></H1>
<P>Some passages in this document refer to the existence and goals of =
the=20
accompanying <A=20
href=3D"http://www.openarchives.org/OAI/2.0/guidelines.htm">Implementatio=
n=20
Guidelines</A> document.</P>
<H2><A name=3Dacknowledgements></A>Acknowledgements</H2>
<P>Support for the development of the OAI-PMH and for other Open =
Archives=20
Initiative activities comes from the <A =
href=3D"http://www.diglib.org/">Digital=20
Library Federation</A>, the <A href=3D"http://www.cni.org/">Coalition =
for=20
Networked Information</A>, and from the National Science Foundation =
through=20
Grant No. IIS-9817416.</P>
<P>This document is based on the deliberations of the OAI Technical =
Committee:=20
Caroline Arms (Library of Congress), Thomas Baron (CERN), Steven Bird=20
(University of Pennsylvania), Les Carr (University of Southampton), Tim =
Cole=20
(University of Illinois at Urbana Champaign), Thomas Krichel (Long =
Island=20
University), Carl Lagoze (Cornell University), Michael Nelson (NASA), =
Andy=20
Powell (UKOLN &amp; University of Bath), Mogens Sandfaer (Danmarks =
Tekniske=20
Videncenter), Hussein Suleman (Virginia Tech), Robert Tansley (HP), =
Herbert Van=20
de Sompel (Los Alamos National Laboratory), Simeon Warner (Cornell =
University),=20
Muhammad Zubair (Old Dominion University) and Jeff Young (OCLC).</P>
<P>Many thanks to all involved in alpha-testing of version 2.0 of the =
OAI-PMH.=20
In addition to the above: Tim Brody (University of Southampton), Irena =
Dijour=20
(Ex Libris), Naomi Dushay (Cornell University), Susanne Dobratz =
(Humboldt=20
Universit=E4t zu Berlin), Curtis Fornadley (UCLA), Christopher =
Gutteridge=20
(University of Southampton), Alan Kent (InQuirion Pty Ltd &amp; RMIT=20
University), David Letts (The British Library), Xiaoming Liu (Old =
Dominion=20
University), Jon Phipps (Cornell University) and Francois Schiettecatte =
(FS=20
Consulting Inc).</P>
<P>Special thanks to Pete Johnston (UKOLN &amp; University of Bath) and =
Andy=20
Powell (UKOLN &amp; University of Bath) for work on the Dublin Core =
schema, and=20
to Donna Bergmark (Cornell University) for work on the OAI validation =
and=20
registration service.</P>
<P>Many thanks to <A=20
href=3D"http://www.openarchives.org/OAI/1.1/openarchivesprotocol.htm#ackn=
owledgements">everyone</A>=20
involved in the compilation and alpha-testing of version 1.0 and 1.1 of =
the=20
OAI-PMH, and to all of you using this protocol.</P>
<H2><A name=3DDocumentHistory>Document History</A></H2>
<P><B><A=20
href=3D"http://www.openarchives.org/OAI/2.0/openarchivesprotocol.2008-12-=
07.htm">2008-12-07</A></B>:=20
Fix links to previous versions.<BR><B><A=20
href=3D"http://www.openarchives.org/OAI/2.0/openarchivesprotocol.2008-12-=
02.htm">2008-12-02</A></B>:=20
Spell checked after all these years and several errors corrected. No =
change of=20
meaning. Added links to previous versions.<BR><B><A=20
href=3D"http://www.openarchives.org/OAI/2.0/openarchivesprotocol.2004-10-=
12.htm">2004-10-12</A></B>:=20
Changed wording and schema definition for characters allowed in=20
<CODE>setSpec</CODE> and <CODE>metadataPrefix</CODE> to agree.<BR><B><A=20
href=3D"http://www.openarchives.org/OAI/2.0/openarchivesprotocol.2004-09-=
15.htm">2004-09-15</A></B>:=20
Added section <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Deleted=
Records">2.5.1</A>.=20
Corrected section <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Set">2.=
6</A>.=20
Corrected second example in section <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#dublinc=
ore">5</A>.=20
Changed <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#OAIPMHs=
chema">schema</A>=20
to defined a type for <CODE>protocolVersion</CODE> and to enforce use of =

<CODE>Z</CODE> notation for <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Dates">=
UTC=20
datetime</A>.<BR><B><A=20
href=3D"http://www.openarchives.org/OAI/2.0/openarchivesprotocol.2003-02-=
21.htm">2003-02-21</A></B>:=20
Changed identifiers in the examples so that they conform to version 2.0 =
of the=20
<CODE>oai-identifier</CODE> specification.<BR><B><A=20
href=3D"http://www.openarchives.org/OAI/2.0/openarchivesprotocol.2002-12-=
19.htm">2002-12-19</A></B>:=20
Updated <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#dublinc=
ore"><CODE>oai_dc</CODE>=20
schema</A> to use revised Dublin Core schema =
<CODE>simpledc20021212.xsd</CODE>.=20
Corrected <CODE>provenance</CODE> blocks in examples (sections <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#Record"=
>2.5</A>=20
and <A=20
href=3D"http://www.openarchives.org/OAI/openarchivesprotocol.html#ListRec=
ords">4.5</A>).<BR><B>2002-06-14</B>:=20
Release of OAI-PMH version 2.0.<BR><B>2002-05-02</B>: Release of beta =
version of=20
OAI-PMH version 2.0.<BR><B>2002-05-06</B>: Release of alpha-4 version of =
OAI-PMH=20
version 2.0. Changed document to reflect association of datestamps and =
deleted=20
status with records as opposed to items. Changed <CODE>requestURL</CODE> =
to=20
<CODE>request</CODE>. Changed schema location of =
<CODE>oai-identifier</CODE> and=20
<CODE>oai_dc</CODE> schema. Changed validation of <CODE>about</CODE>,=20
<CODE>metadata</CODE>, <CODE>description</CODE> and =
<CODE>setDescription</CODE>=20
to strict.<BR><B>2002-04-07</B>: Changed document to reflect the usage =
of a=20
single schema to validate all OAI-PMH responses.<BR><B>2002-03-30</B>: =
Release=20
of alpha two version of OAI-PMH version 2.0.<BR><B>2002-03-01</B>: =
Release of=20
alpha version of OAI-PMH version 2.0</P></BODY></HTML>

------=_NextPart_000_0035_01CAD25C.A6302E00
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.openarchives.org/images/OA100.gif

R0lGODlhZABGANUAAHt7h5ycnUZGSE1NZs3NzaSkpLKysnt7e4aGmZaWmKenp2pqamJiYjs7O66u
rgYGNpSUlJmZmU1NWltbW6qqqp6enyEhSoGBgYiIiHJycpGRkQAAKY2NjVJSUoWFhaGhoqCgoMTE
x2Rkd729vaurtb+/xFRUcwAAEi0tT7OzuTc3WllZaRMTQbi4uDg4SBsbM5GRoX19kp2dqaKirtLS
0nFxgZKSlmhogLm5wEJCYBQUJoiIkZubm9TU1KioqAAAMyH5BAAAAAAALAAAAABkAEYAAAb/wJ9w
SCwaj8ikcslsOp/LjXRKrVqvV6h2u7R9KuCweEwui3mRgmjKbbcDvrh8Tq/b54UP/JNju/9NG3B3
hIV4FQkKPgECfoCPR4KGk4QFPBqKPhGNUpCeQ1KDlKNyBREYmT4QLo6fgKGksT4fCR6pPhqsna6v
GxWypLQeBXQcuhu8fywDxMCUws1zHC+7yVosJjIF0bIKt3WmGAEREBoaEDwQEysW1lo5JAQj26MF
EBcLDB37EwsHHCDomOJwQJ+Ag/06HIhwg4U7JhYQ0Oghj56hCBk6NNh4sGPHDgs4ZCoQQIOHDAwm
dJjAYIHCAC1IDHiI5IGJEj1yVuRWJ8IC/wENBKxsmaFo0XwqBUzg4CNPBJMHjB448LIFARoI2tEc
YgFGzq877yg4AFTpggwHMJxLwLYchwsHFqhcEKBABXIcMOjNq7CC1ZwlTGz9MQDnV53zeMYBwSBo
v7QQKhSgQMGBZcoKQER4m2HCBA15AqCJQBqCwg8jCBxG4NAaixiHD4elE0BjBwZp01AwwLu3bwMO
fFTQgG8Cqm3ISU64UCB17BQqklmYEVt2Ytq2F1yAUMABcAcU6lT2TSEABpRM6YBY3lx17BCCP6nA
Ud26xTgfJjTokEHcbvCFKDCZdyk4UIAGcUGgHnvO1VfDA5CY4F59iN3nwwL7ZQCQd+FRIv+gDwak
YIACEEQVkBzrMddgfTC01sYDN0xEIVjXxYFBhhx8cJksH+jImyoHXDBHiu3N2MMMWm3xAGxG0mhR
ARMIsAAGFVjmTFMBUCCiAggmIEd+Kk5IYQooKMlkkxVm4oEAuEXg3ZVx3LWbAR9gICR+Ewyz4ow4
lPnEkmjap4gCcmWACYBw+pCAm8BFcAEP+DGgp5gzlhBdE4AG6qQiEbTkQZXBJeqDAgDxRmp6H0ha
ZKCWNnGmphSN4I0PGPijgQ8OfHNlOSA6wAMqs0y5KquXJlEDrNbNekF/AYCnqxwK1NoPsHcU4AEP
3pH6QVPC7olmCX4eYQKy1lEg4AXbdff/7GKNbbQRAyfa4QFTBlAAARwFaDispjgkSUQOlMIqj7kf
XMABDwpQoFgcCjQmFEtzrUscCMCN05SGCngbKAkuCoGCYeQiFl6dGnxA2cK0BsVABhfYid4dCWSQ
gHcfQFrAAZhoHOgMHZMQsnXBfcBBBAnPasdPuJWswAcI3llHBQtosJsC+OKcccCaxkAEAj/TGLQG
cBi4rkqGUtDCCC1QYNIdqYpkgHBN4eyDzoGKQMQDXHctz9cVUPYByvlc8EELIRAQQgsfKGhHAAxg
UEC92xaw3dxYo4mAESzIoPcIwR0Igt/b2oFB41fTII8Cv9gBQePdURD55HQbKUPHQ7Dg/3PIe48a
mQ+ui0LHWIITbngLBazrAevgEXPzrbGP6W8RFqSAO+eKQKCbKYSQbDba5hKSj0gGKm9189X1uUT0
5A7MKQQm24PyqDzUZXS1/RxafNw5V15fq0ygQJ/AI+heBTgQAG+wRVRxuAB/ElCZ0OVLJOT7SgiK
1T/paUp9o+IA+xZBLThBaTlVUlgcHrivGYUgB1pAgQXRdLpMQAADkBJaeuBElpAoQGwj7Jb+vsI/
LVjgdk1q4Qg9wB0FOMpLV9KAUhZyskx8QIdNwgEFr6G5IM4jFRD41CwIAilgJEAo+sJhpCZlJDIB
ggV5m1FFbqEWYgTgJIojhRKl5IFmKf8sFakiI4Vk8LwX1UBG9VnjkDCQhgIkAB/MocTNVHaBCPht
fvnRY3UQAKFPmCAEFJqNHAJAQAHdYwELGEYlFLgf7STCAX+7BZhKSJEbVNIVKACifRQznAoIqBad
6ccFwAaCkuCjLBPIgAeI5rr7DYlBlMIBCt2BxupoElqJs6UlCCKXDhzEXQdZiT86Wcz5LQaZh4FB
H5NxyVna4ZY8KB4tOJMPBriTKAaLQPtAUDxdEalBIRDBK7fSFSehzBt3oadT3KIXDHDgHDz4gIBA
kMpn3VM14hxMEWxCn2fWAaABYOg2vhAGjeahAg0lxD1TYIJ9SpQrMQhBjQjhDQGJoUf/DAVBGBq6
rm8+qiEnVQIKYvC3UbR0oz1KTkspsR52ICOnS0DB+xBIiArooBVINQIsmBqLAJwAqlElwlSpOgqr
YjWrQtgqVyfh1WqAVauSGCslynrUs6LVd2olBFvdWgSxxvUOc6UrKNJ6V7le1ax0lYIGIsCWwhr2
sIhNrGIPywMO/LWtev2BFE5A2cpa9rKYzaxmNQvYqFpgAJfKwQAG8IITSEACAjBtaU2rA8uiQAKt
FcBpW3uC17rgBAJAQW1TK4EXwPYEvnXBaB2CggHQbisi8AEAKrCDBwAAADWwwQZ8sIMVTNep00UB
FWzggz48N7obyIFya7ABAEhgAxIA60B2bbAGEdhgABUAgAVQoFy7nZQFPmjHA2yQAwAMgL7TFUEf
hNNcH2hXChagLnkBsAL4buC9G3hAeUWAAhGo18DwZUEFRvveZVQgByalSYIruYMBAMAGNgDAD6hr
3e5WoAYGnsIKbKACH7AAAHFQQXancOIeZ/cByq3AA+Ar3weIgLlItUENimtjAFBYCD4YQDsMnGAD
DyF1UXbyhn9Qgx2gAIX+JYyKrZxcuw3Ayw9AgQrgi1QL4JjGPwgzlJW74jKJ1081dogIduDfGluA
BTCuQZxnYuI6/4C+7RhAHL5sgw9H9tGQjvQfggAAOw==

------=_NextPart_000_0035_01CAD25C.A6302E00--
