Open Archives Initiative メタデータ・ハーベスティング・プロトコル

プロトコル バージョン 2.0 (2002-06-14)
ドキュメント バージョン (2002/12/19T16:00:00Z)

http://www.openarchives.org/OAI/2.0/openarchivesprotocol.htm

旧バージョン : プロトコル1.1 (2001-07-02)
バージョン 1.1 から 2.0 への移行手順
実装ガイドライン

編集者

OAI 役員 :
Carl Lagoze <lagoze@cs.cornell.edu > -- コーネル大学 - コンピュータサイエンス
Herbert Van de Sompel <herbertv@lanl.gov > -- ロスアラモス国立研究所 - 研究図書館

OAI 技術委員会委員 :
Michael Nelson <m.l.nelson@larc.nasa.gov > -- NASA - ラングレー研究センタ
Simeon Warner <simeon@cs.cornell.edu > -- コーネル大学 - コンピュータサイエンス

目次

1. はじめに
2. 定義と概念
    2.1. ハーベスタ
    2.2. リポジトリ
    2.3. アイテム
    2.4. 固有識別子
    2.5. レコード
    2.6. セット
    2.7. 選択的ハーベスティング
        2.7.1 選択的ハーベスティングと日付スタンプ
        2.7.2 選択的ハーベスティングとセット
3. プロトコルの特性
    3.1. OAI-PMH 要求の HTTP 埋め込み
        3.1.1. HTTP 要求フォーマット
        3.1.2. HTTP 応答フォーマット
        3.1.3. 応答圧縮
    3.2. XML 応答フォーマット
        3.2.1. OAI-PMH 要求に対する応答を検証する XML スキーマ
    3.3. UTCdatetime
        3.3.1. プロトコル要求の UTCdatetime
        3.3.2. プロトコル応答の UTCdatetime
    3.4. metadataPrefix とメタデータスキーマ
    3.5. フローコントロール
        3.5.1 resumptionTokens の等冪
    3.6. エラーおよび例外状況
4. プロトコルの要求と応答
    4.1. GetRecord
    4.2. Identify
    4.3. ListIdentifiers
    4.4. ListMetadataFormats
    4.5. ListRecords
    4.6. ListSets
5. Dublin Core
6. 実装ガイドライン
謝辞
ドキュメント履歴

1.  はじめに

Open Archives Initiative メタデータ・ハーベスティング・プロトコル (以下「OAI-PMH」と呼ぶ) は、 メタデータのハーベスティング によってアプリケーションに依存しない相互使用可能なフレームワークを提供します。 OAI-PMH フレームワークの参加者は、次の2つに分けられます。

本書に太字で表記したキーワード (must)(must not)(required)(shall)(shall not)(should)(should not)(recommended)(may)(optional) の解釈は、RFC 2119 の定義に準じます。プロトコルで (must) または (required) と定められた要件を一つでも満たしていない実装は不適合となります。

本書は数ヶ所で、個々のプロトコルを実装する場合に準拠することのできる (may) "コミュニティ独自の" 規約に言及しています。 この規約については、添付書『実装ガイドライン』をご覧ください。

2. 定義と概念

2.1 ハーベスタ

ハーベスタ (harvester) は、OAI-PMH 要求を発行するクライアントアプリケーションです。 リポジトリからメタデータを収集する手段として、サービス提供者によって使用されます。

2.2  リポジトリ

リポジトリ (repository) とは,本ドキュメントに定められた方法で6つの OAI-PMH の要求を処理する機能を有する,ネットワークアクセス可能なサーバのことを言います。リポジトリは、メタデータをハーベスタに提供するため、データ提供者によって管理されます。OAI-PMH では様々なリポジトリ構成に対応するため、OAI-PMHで入手可能なメタデータに関するエンティティを明に3つに区分して考えます。

2.3 アイテム

アイテム (item ) はリポジトリの要素で、このアイテムから、あるリソースについてのメタデータが引き出されます。アイテムは一つのリソースについてのメタデータを複数のフォーマットで格納または動的に生成する概念上のコンテナで、個々のアイテムは OAI-PMH を通じ,レコードとしてハーベストされます。 各アイテムには、それぞれの帰属リポジトリ内で一意の識別子があります。

2.4  固有識別子

固有識別子 (unique identifier ) は、あるリポジトリ内のアイテムを明確に識別するもので、アイテムからメタデータを抽出ために OAI-PMH の要求において用いられます。アイテムには、複数フォーマットによるメタデータを含めても構いません(may)。固有識別子はアイテムに対してマップされます。一つのアイテムから入手可能なレコードはすべて同じ固有識別子を共有します。

固有識別子のフォーマットは、URI (ユニフォームリソース識別子) 構文のフォーマットに合致している必要があります(must)。各コミュニティは、個々のリポジトリ相互を通じた可用性のために、コミュニティ独自の URI スキームを開発しても構いません(may)。固有識別子のスキームコンポーネントは、識別子がそのスキームに準拠していない場合、URI 公認スキームのコンポーネントと同一のものであってはいけません(must not)。リポジトリは、添付書『実装ガイドライン』に定められた oai-identifier 構文を実装することができます(may)

本プロトコルでは、固有識別子の役割は2つあります。

  1. 応答 (Response) : 識別子は ListIdentifiersListRecords の要求に対し,返されます。
  2. 要求 (Request) : 識別子は GetRecord の要求の際、目的のアイテムから,特定のメタデータフォーマットのレコードを要求する際、 metadataPrefix と組み合わせて使用されます。

なお、ここで言う識別子は、リソース の識別子では ありません 。リソース識別子の態様は、OAI-PMH の埒外です。リポジトリは、収集されたメタデータの関連リソースにアクセスしやすくするため、メタデータレコードの要素を利用してレコード (およびそのアイテムの識別子)と関連リソースの識別子 (URL、URN、DOI など) との関連付けを行います(should)。 Dublin Core の必須フォーマットには、そのための identifier エレメントがあります。

2.5  レコード

レコードはあるひとつのフォーマットで表現されたメタデータです。あるアイテムからメタデータを収集するという OAI-PMH 要求に対し、レコードは XMLコード化バイトストリームで返されます。レコードは、そのレコードの入手元であるアイテムの固有識別子、そのレコードのメタデータフォーマットを識別する metadataPrefix 、およびそのレコードの日付スタンプの組み合わせにより,一意に識別されます。 レコードの XML コード化は、以下の要素に区分されます。

次の例は、あるレコードとそのコンポーネントの XML コード化を示しています。

<header>
    <identifier>oai:arXiv:cs/0112017</identifier>
    <datestamp>2002-02-28</datestamp>
    <setSpec>cs</setSpec>
    <setSpec>math</setSpec>
</header>
<metadata>
 <oai_dc:dc 
     xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
     xmlns:dc="http://purl.org/dc/elements/1.1/" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
     http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
   <dc:title>Using Structural Metadata to Localize Experience of Digital 
             Content</dc:title>
   <dc:creator>Dushay, Naomi</dc:creator>
   <dc:subject>Digital Libraries</dc:subject>
   <dc:description>With the increasing technical sophistication of both 
    information consumers and providers, there is increasing demand for 
    more meaningful experiences of digital information. We present a 
    framework that separates digital object experience, or rendering, 
    from digital object storage and manipulation, so the
    rendering can be tailored to particular communities of users. 
   </dc:description>
   <dc:description>Comment: 23 pages including 2 appendices, 
                   8 figures</dc:description>
   <dc:date>2001-12-14</dc:date>
   <dc:type>e-print</dc:type>
   <dc:identifier>http://arXiv.org/abs/cs/0112017</dc:identifier>
 </oai_dc:dc>
</metadata>
<about> 
 <provenance
     xmlns="http://www.openarchives.org/OAI/2.0/provenance" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance
     http://www.openarchives.org/OAI/2.0/provenance.xsd">
    <originDescription harvestDate="2002-02-02T14:10:02Z" altered="true">
      <baseURL>http://the.oa.org</baseURL>
      <identifier>oai:r2:klik001</identifier>
      <datestamp>2002-01-01</datestamp>
      <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
    </originDescription>
  </provenance>
</about>

2.6 セット

セット (set) は、選択的ハーベスティングを行う目的でアイテムをグループ化するための任意の構成体です。リポジトリでは、アイテムをセットに整理することができます(may)。セットの構造は、フラットつまり単一型リストでも階層型でも構いません(may)。複数の階層に、別個の独立した上位ノードをもたせることができます。セットの階層構造は、以下のように setSpec パラメータの構文で表現します。リポジトリでセット構造を定義する場合、 ListIdentifiersListRecordsGetRecord の各要求に対して返されるアイテムのヘッダ内のセットメンバシップ情報を必ずリポジトリに含めます(must)

リポジトリのセット構造における各ノードには、下記の要素があります。

  以下はリポジトリのセット階層の一例です。

下表は、 setName とその setSpec で示される上記セット階層の意味の一例です。

setName setSpec
Institutions institution

Oceanside University of Nebraska

institution:nebraska

Valley View University of Florida

institution:florida
Subjects subject

Existential Kenesiology

subject:kenesiology

Quantum Psychology

subject:quantum

アイテムは,一つのセットに属しても,複数のセットに属しても、あるいは全くセットに属さなくても構いません(may)。上の例では、あるアイテムを subjectinstitution:florida の両方に配することが想定できます。ハーベスタは、あるリポジトリ内のセットをすべて収集しても、そのリポジトリ内のすべてのアイテムからメタデータを取得した,との予断をするべきではありません(should not)。アイテムは、セット階層の内のノードに割り当てられる場合もありえます(may)

本プロトコルでは、リポジトリ内のセットやセット配列の実際の意味は定義しません。各コミュニティが、必要に応じ,setNamessetSpec のために,例えば統制された語彙を用いるなどして,明確に定義付けられたセット構成を形成し,さらにそれらをハーベスタに提供するメカニズムを開発することが想定されています。たとえば、ある特定分野のe-printアーカイブを共同構築するグループは、統制された主題分類体系に基づいてリポジトリ内のメタデータを整理可能なセット構成を採用するのがよいかもしれません。

リポジトリのセット階層は、本プロトコルでは,setSpecs により表されます。ListSets は、リポジトリ内のセット構成を示すリストを返します。このリストの各メンバには必ず setSpec setName が含まれ(must)、場合によっては setDescription も含まれます(may)ListRecords ListIdentifiers の要求には、任意の set 引数が含まれることもあり(may)、その値が setSpec の場合、選択的ハーベスティングの対象とするセットが指定されます。セット階層についての上の例では、setSpec institution:nebraskaを要求に用いることにより,この setSpecで表されるセットに含まれるアイテムから抽出されるレコードだけを得ることができます。以下の4点に注意してください。

2.7 選択的ハーベスティング

選択的ハーベスティング を行えば、 ハーベスタは,各リポジトリで取得可能なメタデータの在り様に従い,ハーベスト対象を限定することができます。 OAI-PMH は、OAI-PMH 要求において,組み合わせ可能な(may)2種類のハーベスティング基準(日付セットメンバシップ)による選択的ハーベスティングをサポートしています。

2.7.1 選択的ハーベスティングと日付

ハーベスタは、日付 を利用して、指定された期間内に作成、削除、変更されたレコードだけを収集することができます(may)。日付による選択的ハーベスティングを指定するには、任意の引数の値( fromuntil )として日付を ListRecords ListIdentifiers の要求に含めます。そうするとデータ収集の対象は、 fromuntil の引数で指定された範囲に限定されます。日付の範囲は、 from を省略した場合は最も古い日付までが範囲となり、 until を省略した場合は最新の日付までが範囲となります。範囲の限界値それ自体もその範囲に含まれます 。たとえばfromによる範囲指定は "以上" 、until による範囲指定は "以下" と解釈されます(must)。したがって、from の引数は必ず until の引数以下になりますmust)。そうでない場合、リポジトリは badArgument エラーを発行します。

リポジトリは必ず、fromuntilの引数による日単位での選択的ハーベスティングをサポートするものとします(must)オプションとして秒単位の選択的ハーベスティングをサポートする場合は,Identify要求への応答においてそれを示します。要求と応答における日付の値は必ず、本ドキュメントに示すUTCdatetimeの仕様に準拠しなければなりません(must)。何らかの変更が発生した場合,リポジトリはそのレコードの日付を更新しなければなりません(must)。結果として,日付の更新はXMLコード化されたレコードのメタデータ部にも反映されます。ここで言う変更とは、(以下ですべてではありませんが)レコードのメタデータ部の変更、レコードのメタデータ・フォーマットの変更、別のメタデータ・フォーマットの追加、メタデータ・フォーマットのサポート終了などを指します。

選択的ハーベスティングの日付の範囲は、ListRecordsListIdentifiers の要求で指定できる(may) fromuntilという引数によって表現されます。リポジトリは必ず下記の規則に従い、そのリポジトリ内で生じた変更の種類に応じて、指定された日付範囲にマッチしたListRecords の応答を生成します(must)ListIdentifiersの要求に対する応答も,レコードでなくヘッダのみを返戻する点を除き,これに準じます。

GetRecordListRecords ListIdentifiers の各要求に対して返されるすべてのヘッダには、上記の規則に基づき、作成、変更、削除の行われた最新の日時を反映した日付が含まれます。

2.7.2 選択的ハーベスティングとセット

ハーベスタは、セットメンバシップを選択的ハーベスティングの基準として指定することができます。セットによるデータ収集を指定するには、ListRecordsListIdentifiers の要求に対する任意の set 引数の値に setSpec を加えます。これによって各セット内のアイテムからレコードを選択的ハーベスティングします。

setSpec を引数として使用する場合、応答には必ず次の要素が含まれます(must)

3.  プロトコルの特性

3.1 OAI-PMH 要求の HTTP 埋め込み

OAI-PMH 要求は、HTTP 要求として表現されます。OAI-PMHの典型的な実装は,OAI-PMH要求をその要求処理ソフトウェアへ発行するように設定した標準的Webサーバを使用するものです。本章では、本プロトコルの,HTTP埋め込みについての側面に関して説明します。

3.1.1 HTTP 要求フォーマット

OAI-PMH 要求の送信には必ず、HTTP の GET または POST メソッドを使用します(must)POST メソッドには、引数の長さが無制限であるという利点があります。リポジトリは GETPOST の両メソッドをサポートする必要があります(must)。すべての要求にはベース URL が一つあります。このベース URL によって、リポジトリとして機能する HTTP サーバのホスト名及びポート番号(加えて場合によりパス)が特定されます。リポジトリは,そのベース URLを、 Identify応答に含まれるbaseURLの値として示します。なお、パスの構成はそのリポジトリの HTTP サーバの構成に依存します。

全ての要求は,ベース URLに加え,キーワード引数 (keyword arguments)のリストからなります。キーワード引数は key=value という対の形をとります。引数の配列はどんな順序でも構いませんが、複数の引数は必ずアンド記号[&]で区切らなければなりません(must)。どの OAI-PMH 要求も、ハーベスタにより発行された OAI-PMH 要求を示す,ひとつの key=value の対を必ず含みます(must)

追加のkey=valueの対の数及び内容は、個々の要求のための引数によります。

3.1.1.1 HTTP GET の URL における OAI-PMH 要求のコード化

GET 要求の URL は、ベース URL にキーワード引数を追加して、両者をクエスチョンマーク[?]で区切ります。たとえば、ベースURL が http://an.oa.org/OAI-scriptであるリポジトリに対する GetRecord要求のURLは以下のようになります。
http://an.oa.org/OAI-script?
verb=GetRecord&identifier=oai:arXiv:hep-th/9901001&metadataPrefix=oai_dc

ただし、URI の特殊文字を符号化する必要がある(must)ため、上記の GET 要求のURLは実際には以下となります。

http://an.oa.org/OAI-script?
verb=GetRecord&identifier=oai%3AarXiv%3Ahep-th%2F9901001&metadataPrefix=oai_dc

3.1.1.2 HTTP POST における OAI-PMH 要求のコード化

キーワード引数は、HTTP POSTのメッセージ本文に追加します。要求の Content-Type は必ず、 application/x-www-form-urlencoded とします(must)。たとえば、上記と同じ要求を POST メソッドを使用して送信する際は、URLとしてはベース URL だけを用い,次のようなPOSTフォーマットを使用します。

POST http://an.oa.org/OAI-script HTTP/1.0
Content-Length: 78
Content-Type: application/x-www-form-urlencoded

verb=GetRecord&identifier=oai%3AarXiv%3Ahep-th%2F9901001&metadataPrefix=oai_dc

3.1.1.3 OAI-PMH 要求のキーワード引数に含まれる特殊文字のコード化

URI の構文規則では、いくつかの文字は特定のコンテキストにおいて特殊な役割に限定されており、それとは違った使い方をする場合は必ずエスケープシーケンス、すなわちパーセント記号に16進数の文字コードをつなげて表記します(must)。予約文字は以下のとおりです。

文字
URI 役割
エスケープシーケンス
/
パスコンポーネント分離記号
%2F
?
クエリコンポーネント分離記号
%3F
#
フラグメント識別子
%23
=
名前/値の分離記号
%3D
&
クエリコンポーネントの引数分離記号
%26
:
ホストポート分離記号
%3A
;
Authority 名前空間分離記号
%3B
 
スペース分離記号
%20
%
エスケープ表示記号
%25
+
拡張表記スペース
%2B

したがって上記の文字は、その使用法が既定の URI 役割 と一致しない場合、必ずそれぞれのエスケープシーケンスで表記します(must)。 OAI-PMH の場合、要求の key=value ペアの value 部分に予約文字が入るときは、その予約文字を符号化しなければなりません(must)。これは、OAI-PMH 要求の GETPOST の両方の符号化に適用されます。

3.1.2 HTTP 応答フォーマット

要求に対する応答は、該当する HTTP ヘッダを備えた HTTP 応答の形をとります。

3.1.2.1 Content-Type

すべての OAI-PMH 要求に返される Content-Type は必ず text/xml となります(must)

3.1.2.2 Status-Code

OAI-PMH エラーは、HTTPの Status-Codesとは区別されます。OAI-PMH は HTTP をトランスポート層として使用するため、OAI-PMHを実装したサーバは必ず HTTP ステータスコードの定義に準拠し、その Status-Codes を通して HTTP トランスポート層のステータスをレポートします(must)。OAI-PMH リポジトリは、 "200 OK"のほかに HTTP Status-Codes を使用しても構いません(may)。たとえば、次の Status-Codes が OAI リポジトリのロードバランシングに役立つ場合もあります。

3.1.3 応答圧縮

OAI-PMH では、応答圧縮はオプションです。OAI-PMH 要求に対する応答の圧縮は HTTP レベルで処理され、以下のような制限を伴います。

3.2. XML 応答フォーマット

OAI-PMH 要求に対する応答はすべて、明確に定義された XML インスタンスドキュメントである必要があります(must)。XML のコード化は必ず、ユニコードの UTF-8 表記を使用します(must)。エンティティ参照ではなく、必ず文字参照を使用します(must)。文字参照を使用すると、XML 応答は当該ドキュメント以外のエンティティ宣言に依存せずに処理可能なスタンドアロンのドキュメントとして扱うことができます。

OAI-PMH 要求に対するすべての応答の XML データ は、本セクションの最後に記載した XML スキーマによって検証する必要があります(must)。同スキーマを見ると分かるように、OAI-PMH 要求に対する応答には以下のような共通のマークアップがあります。

  1. 最初のタグの出力は XML の宣言で、必ずバージョンは 1.0 、コード化は UTF-8 となります。例: <?xml version="1.0" encoding="UTF-8" ?>
  2. 残りの内容は、OAI-PMH という名前のルート要素に囲まれています。この要素には、応答の残りの部分や検証スキーマのロケーションで使用される XML の名前空間を定義する以下の3つの属性が必要です(must)
  3. すべての応答について、ルート要素から最初の2つの下位要素は以下のとおりです。
  4. ルート要素から3番目の下位要素は次のどちらかです。

上記GetRecord 要求に対する応答の良い例を以下に示します。

<?xml version="1.0" encoding="UTF-8" ?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
 <responseDate>2002-05-01T19:20:30Z</responseDate>
 <request verb="GetRecord" identifier="oai:arXiv:hep-th/9901001"
          metadataPrefix="oai_dc">http://an.oa.org/OAI-script</request> 
 <GetRecord>
   <record>...</record>
 </GetRecord> 
</OAI-PMH>

3.2.1 OAI-PMH 要求に対する応答を検証する XML スキーマ

<schema targetNamespace="http://www.openarchives.org/OAI/2.0/" 
        xmlns:oai="http://www.openarchives.org/OAI/2.0/" 
        xmlns="http://www.w3.org/2001/XMLSchema" 
        elementFormDefault="qualified" 
        attributeFormDefault="unqualified">

<annotation>
  <documentation>
     XML Schema which can be used to validate replies 
     to all OAI-PMH v.2.0 requests. 
     Herbert Van de Sompel. May 13th 2002.
     Validated with XML Spy v.4.3 on May 13th 2002.
     Validated with XSV 1.203.2.45/1.106.2.22 
     of 2002/01/11 16:40:28 on May 13th 2002.
   </documentation>
</annotation>

<element name="OAI-PMH" type="oai:OAI-PMHtype"/>
  <complexType name="OAI-PMHtype">
    <sequence>
      <element name="responseDate" type="dateTime"/>
      <element name="request" type="oai:requestType"/>
      <choice>
        <element name="error" type="oai:OAI-PMHerrorType" 
                 maxOccurs="unbounded"/>
        <element name="Identify" type="oai:IdentifyType"/>
        <element name="ListMetadataFormats" 
                 type="oai:ListMetadataFormatsType"/>
        <element name="ListSets" type="oai:ListSetsType"/>
        <element name="GetRecord" type="oai:GetRecordType"/>
        <element name="ListIdentifiers" type="oai:ListIdentifiersType"/>
        <element name="ListRecords" type="oai:ListRecordsType"/>
      </choice>
    </sequence>
  </complexType>  

  <!-- define requestType, 
       indicating the protocol request that led to the response -->
  <!-- element content is BASE-URL, 
       attributes are arguments of protocol request, 
       attribute-values are values of arguments of protocol request -->
  <!-- ============================================================= -->

    <complexType name="requestType">
      <simpleContent>
        <extension base="anyURI">
          <attribute name="verb" type="oai:verbType" use="optional"/>
          <attribute name="identifier" type="oai:identifierType" 
                     use="optional"/>
          <attribute name="metadataPrefix" type="oai:metadataPrefixType" 
                     use="optional"/>
          <attribute name="from" type="oai:UTCdatetimeType" 
                     use="optional"/>
          <attribute name="until" type="oai:UTCdatetimeType" 
                     use="optional"/>
          <attribute name="set" type="oai:setSpecType" use="optional"/>
          <attribute name="resumptionToken" type="string" 
                     use="optional"/>
        </extension>
      </simpleContent>
    </complexType>

  <simpleType name="verbType">
    <restriction base="string">
      <enumeration value="Identify"/>
      <enumeration value="ListMetadataFormats"/>
      <enumeration value="ListSets"/>
      <enumeration value="GetRecord"/>
      <enumeration value="ListIdentifiers"/>
      <enumeration value="ListRecords"/>
    </restriction>
  </simpleType>

  <!-- define OAI-PMH error conditions -->
  <!-- =============================== -->

  <complexType name="OAI-PMHerrorType">
    <simpleContent>
      <extension base="string">
        <attribute name="code" type="oai:OAI-PMHerrorcodeType" 
                   use="required"/>
      </extension>
    </simpleContent>
  </complexType>

  <simpleType name="OAI-PMHerrorcodeType">
    <restriction base="string">
      <enumeration value="cannotDisseminateFormat"/>
      <enumeration value="idDoesNotExist"/>
      <enumeration value="badArgument"/>
      <enumeration value="badVerb"/>
      <enumeration value="noMetadataFormats"/>
      <enumeration value="noRecordsMatch"/>
      <enumeration value="badResumptionToken"/>
      <enumeration value="noSetHierarchy"/>
    </restriction>
  </simpleType>

  <!-- define OAI-PMH verb containers -->
  <!-- ============================== -->
  <!-- define Identify container -->

  <complexType name="IdentifyType">
    <sequence>
      <element name="repositoryName" type="string"/>
      <element name="baseURL" type="anyURI"/>
      <element name="protocolVersion">
        <simpleType>
          <restriction base="string">
            <enumeration value="2.0"/>
          </restriction>
        </simpleType>
      </element>
      <element name="adminEmail" type="oai:emailType" 
               maxOccurs="unbounded"/>
      <element name="earliestDatestamp" type="oai:UTCdatetimeType"/>
      <element name="deletedRecord" type="oai:deletedRecordType"/>
      <element name="granularity" type="oai:granularityType"/>
      <element name="compression" type="string" 
               minOccurs="0" maxOccurs="unbounded"/>
      <element name="description" type="oai:descriptionType" 
               minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <!-- define ListMetadataFormats container -->

  <complexType name="ListMetadataFormatsType">
    <sequence>
      <element name="metadataFormat" type="oai:metadataFormatType" 
               maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <!-- define ListSets container -->

  <complexType name="ListSetsType">
    <sequence>
      <element name="set" type="oai:setType" maxOccurs="unbounded"/>
      <element name="resumptionToken" type="oai:resumptionTokenType" 
               minOccurs="0"/>
    </sequence>
  </complexType>

  <!-- define GetRecord container -->

  <complexType name="GetRecordType">
    <sequence>
      <element name="record" type="oai:recordType"/>
    </sequence>
  </complexType>

  <!-- define ListRecords container -->

  <complexType name="ListRecordsType">
    <sequence>
      <element name="record" type="oai:recordType" 
               maxOccurs="unbounded"/>
      <element name="resumptionToken" type="oai:resumptionTokenType" 
               minOccurs="0"/>
    </sequence>
  </complexType>

  <!-- define ListIdentifiers container -->

  <complexType name="ListIdentifiersType">
    <sequence>
      <element name="header" type="oai:headerType" 
               maxOccurs="unbounded"/>
      <element name="resumptionToken" type="oai:resumptionTokenType" 
               minOccurs="0"/>
    </sequence>
  </complexType>

  <!-- define basic types used in replies to 
         GetRecord, ListRecords, ListIdentifiers -->
  <!-- ======================================= -->

  <!-- define recordType -->
  <!-- a record has a header, a metadata part, and 
       an optional about container -->

  <complexType name="recordType">
    <sequence>
      <element name="header" type="oai:headerType"/>
      <element name="metadata" type="oai:metadataType" minOccurs="0"/>
      <element name="about" type="oai:aboutType" 
               minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <!-- define headerType -->
  <!-- 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 indicatating
        that the record is deleted. -->

  <complexType name="headerType">
    <sequence>
      <element name="identifier" type="oai:identifierType"/>
      <element name="datestamp" type="oai:UTCdatetimeType"/>
      <element name="setSpec" type="oai:setSpecType" 
               minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="status" type="oai:statusType" use="optional"/>
  </complexType>

  <!-- define identifierType -->

  <simpleType name="identifierType">
    <restriction base="anyURI"/>
  </simpleType>

  <simpleType name="statusType">
    <restriction base="string">
      <enumeration value="deleted"/>
    </restriction>
  </simpleType>

  <!-- define metadataType -->
  <!-- metadata must be expressed in XML that complies 
       with another XML Schema -->
  <!-- metadata must be explicitly qualified in the response -->

  <complexType name="metadataType">
    <sequence>
      <any namespace="##other" processContents="strict"/>
    </sequence>
  </complexType>

  <!-- define aboutType -->
  <!-- data "about" the record must be expressed in XML -->
  <!-- that is compliant with an XML Schema defined by a community -->

  <complexType name="aboutType">
    <sequence>
      <any namespace="##other" processContents="strict"/>
    </sequence>
  </complexType>

  <!-- define resumptionToken - with 3 optional attributes 
       can be used in ListSets, ListIdentifiers, ListRecords -->

    <complexType name="resumptionTokenType">
      <simpleContent>
        <extension base="string">
          <attribute name="expirationDate" type="dateTime" 
                     use="optional"/>
          <attribute name="completeListSize" type="positiveInteger" 
                     use="optional"/>
          <attribute name="cursor" type="nonNegativeInteger" 
                     use="optional"/>
        </extension>
      </simpleContent>
    </complexType>

  <!-- define descriptionType used for description-element in Identify 
        and for setDescription element in ListSets-->
  <!-- content must be compliant with an XML Schema 
       defined by a community -->

  <complexType name="descriptionType">
    <sequence>
      <any namespace="##other" processContents="strict"/>
    </sequence>
  </complexType>

  <!-- define UTCdatetime -->
  <!-- datestamps are day or seconds granularity -->
  <!-- ======================================== -->

  <simpleType name="UTCdatetimeType">
    <union memberTypes="date dateTime"/>
  </simpleType>

  <!-- define stuff used for Identify verb only -->
  <!-- ======================================== -->

  <simpleType name="emailType">
    <restriction base="string">
      <pattern value="\S+@(\S+\.)+\S+"/>
    </restriction>
  </simpleType>

  <simpleType name="deletedRecordType">
    <restriction base="string">
      <enumeration value="no"/>
      <enumeration value="persistent"/>
      <enumeration value="transient"/>
    </restriction>
  </simpleType>

  <simpleType name="granularityType">
    <restriction base="string">
      <enumeration value="YYYY-MM-DD"/>
      <enumeration value="YYYY-MM-DDThh:mm:ssZ"/>
    </restriction>
  </simpleType>

  <!-- define stuff used for ListMetadataFormats verb only -->
  <!-- =================================================== -->

  <complexType name="metadataFormatType">
    <sequence>
      <element name="metadataPrefix" type="oai:metadataPrefixType"/>
      <element name="schema" type="anyURI"/>
      <element name="metadataNamespace" type="anyURI"/>
    </sequence>
  </complexType>

  <simpleType name="metadataPrefixType">
    <restriction base="string">
      <pattern value="[A-Za-z0-9_!'$\(\)\+\-\.\*]+"/>
    </restriction>
  </simpleType>

  <!-- define stuff used for ListSets verb -->
  <!-- =================================== -->

  <complexType name="setType">
    <sequence>
      <element name="setSpec" type="oai:setSpecType"/>
      <element name="setName" type="string"/>
      <element name="setDescription" type="oai:descriptionType" 
               minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <!-- define setSpecType -->

  <simpleType name="setSpecType">
    <restriction base="string">
      <pattern value=
       "([A-Za-z0-9_!'$\(\)\+\-\.\*])+(:[A-Za-z0-9_!'$\(\)\+\-\.\*]+)*"/>
    </restriction>
  </simpleType>

</schema>

本スキーマの入手先: http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd

3.3 UTCdatetime

日付と時刻は、 ISO8601 を使用して一様にコード化され、プロトコル全体にわたり UTC で表記されます。時刻を加える場合は、必ず特殊な UTC 指示符号 ("Z") を使用します(must)。UTC には日付の意味が含まれますが、タイムゾーンの指示符号は指定されません。たとえば、 1957-03-20T20:30:00Z は UTC 1957年3月20日 PM 8:30:00 です。UTCdatetime は以下のセクションに説明する方法で、プロトコル要求とプロトコル応答のいずれにも使用されます。

3.3.1 プロトコル要求の UTCdatetime

ListIdentifiers ListRecords の要求で任意の引数 from および until の値として使用される日付スタンプISO8601 でコード化され、UTC で表記されます。これらの引数は、 日付スタンプによる選択的ハーベスティングを指定する場合に使用するもので、ISO8601 に定められた単位 "完全な日付" および "完全な日付プラス時間、分、秒" をサポートしています。正しいフォーマットは、YYYY-MM-DDYYYY-MM-DDThh:mm:ssZ です。両方の引数とも必ず同じ単位にします(must)。すべてのリポジトリは必ず、 YYYY-MM-DD をサポートします(must)YYYY-MM-DDThh:mm:ssZ をサポートするリポジトリは、Identify 応答においてその旨を表示します(should)。ハーベスタ による要求が、リポジトリによってサポートされている単位より細かい場合は、エラーになります(must)

3.3.2 プロトコル応答の UTCdatetime

日付スタンプは、ListIdentifiersGetRecord ListRecords の各要求に対する応答に返されるレコードのヘッダに表示されます。 この日付スタンプ ISO8601 でコード化され、UTCで表記されます。これらは、リポジトリによってサポートされる最も細かい単位で表記される必要があります(must)。日付スタンプの値は必ず、日付スタンプによる選択的ハーベスティングの規則に準拠します。

各プロトコル応答には responseDate 要素が含まれ、その要素は必ず UTC による応答の時刻および日付となります(must)。この要素は、 ISO8601 の変数 "完全な日付プラス時間、分、秒" を使用してコード化されます。このフォーマットは YYYY-MM-DDThh:mm:ssZ です。

プロトコル応答の resumptionToken には、 任意の引数 expirationDate を含めても構いません(may)。この引数は UTC で表現され、 ISO8601 の変数 "完全な日付プラス時間、分、秒" を使用してコード化されます。このフォーマットは YYYY-MM-DDThh:mm:ssZ です。

3.4 metadataPrefix とメタデータスキーマ

OAI-PMH は、リポジトリからの複数のメタデータフォーマットによるレポートの抽出をサポートしています。 ListMetadataFormats の要求は、 リポジトリから入手可能なすべてのメタデータフォーマットを返します。各フォーマットには以下のようなプロパティがあります。

ListRecords GetRecord によって返される各レコードのメタデータは必ず、XML 名前空間仕様の規約に準拠します(must)。したがって、メタデータ部のルート要素には必ず xmlns 属性が含まれ(must)、その値はメタデータフォーマットの XML 名前空間 URI となります。また、ルート要素には必ず、メタデータを検証するための XML スキーマの URL を含む値をもつ xsi:schemaLocation の属性も含まれます(must)。この URL は、 ListRecords または GetRecord の要求に対して引数として含まれる metadataPrefix のメタデータスキーマの URL にマッチする必要があります(must) ( metadataPrefix からメタデータスキーマへのマッピングは、 ListMetadataFormats の要求に対するリポジトリの応答によって定義されます)。

相互運用性を保つため、リポジトリは,いかなる修飾子も伴わない Dublin Core によるデータ提供ができねばなりません(must)。したがって本プロトコルでは、 metadataPrefix `oai_dc' および unqualified Dublin Core のメタデータスキーマのURL (http://www.openarchives.org/OAI/2.0/oai_dc.xsd)を予約します。該当する XML名前空間 URI は http://www.openarchives.org/OAI/2.0/oai_dc/ です。

metadataPrefix `all' は、今後の使用に備えて予約されます。実装では、この metadataPrefix を使用しないようにします(should not)

コミュニティでは metadataPrefixes、メタデータスキーム、XML 名前空間 URI のメタデータフォーマットを共有するためのガイドラインを採用します(should)。これらのガイドラインは、OAI-PMH の範囲外です。 XML スキーマのサンプルおよび、 MARC や RFC 1807 などの一般的メタデータフォーマットのインスタンスドキュメントについては、添付書『実装ガイドライン』をご覧ください。

3.5 フローコントロール

OAI-PMH 要求の多くは、個々のエンティティの リスト を返します。たとえば、 ListRecords レコードのリストを、ListIdentifiers ヘッダのリストを、 ListSets セットのリストを、それぞれ返します。 これらの要求はまとめて リスト要求 といいます。リストサイズが大きい場合は、要求や応答を分割すると便利です。分割は以下のように行います。

フローコントロールと resumptionToken の詳細は下記のとおりです。

以下の任意の属性は、 resumptionToken 自体とともに resumptionToken 要素の一部に含めても構いません(may)

以下の例は、完全リストが175件のレコードからなり、リポジトリが1回の応答でレコードを 100 件だけ返すという、一連の ListRecords 要求を示したものです。

このフローコントロールと HTTP トランスポート層の機能が連携したメカニズムには、リポジトリがデータ収集インタフェースの 許容可能な使用方針 を実行するための基本ツールが用意されています。 OAI-PMH を実装するコミュニティによっては、リポジトリのデータ収集インタフェースまたはリポジトリから収集されたメタデータについての許容可能な使用方針を実行するため、このツールの拡張が必要な場合もあります。こうした追加方針の実行は、OAI-PMH の範囲外です。

3.5.1 resumptionTokens のベキ等

リポジトリは resumptionTokens を実行する場合、必ず、ハーベスタが最新の resumptionToken でリスト要求を再発行することにより不完全リストの要求シーケンスを再開する方法で行います(must)。これはハーベスタがネットワークやその他のエラーから回復できるようにするためであり、そうしないとリスト要求シーケンスを初めからやり直す必要があります。 resumptionToken が含まれたリスト要求の再発行は、以下の2つのコンテキストのおいて行われます。

  1. リポジトリに変更がない場合。 リスト要求シーケンスから返される完全リストに変更はありません。この場合、最新のリスト要求すなわち最新の期限切れでない resumptionToken の付いたリスト要求を再発行するとき、リポジトリは必ず同じ不完全リストを返します(must)
  2. リポジトリに変更がある場合。 リスト要求シーケンスから返された完全リストが変更されている場合もあります。こうした変更が生じるのは、リポジトリ内で変更や修正、削除が行われたため、リスト内の抽出されたレコードがその要求の日付スタンプの範囲に入ったりそこから外れたりしたときです。この場合、resumptionToken の値を使用した不完全リスト要求の厳密なベキ等は必須ではありません。その代わり、再発行された要求への応答で返される不完全リストには必ず、最初のリスト要求の範囲内にある元のままの datestamps の付いたレコードがすべて含まれます(must)。再発行された要求への応答で返された不完全リストには、日付スタンプが最初の要求の範囲に入ったりそこから外れたりしたレコードも含まれる場合があります(may)。リポジトリに大きな変更があった場合、リポジトリから badResumptionToken エラーを返して、ハーベスタにリスト要求シーケンスを再開するように知らせた方がよいこともあります(may)。   

3.6 エラーと例外状況

エラーまたは例外状況が発生した場合、リポジトリは必ず、応答に error 要素を一つ以上含めることによって、 HTTP Status-Codes とは別に OAI-PMH エラーを表示します(must)。エラーまたは例外状況の存在を示すには一つの error 要素で十分ですが、リポジトリは要求の処理によって生じるエラーや例外をすべてレポートするようにします(should)。各 error 要素には必ず、下表の code 属性があります(must)。また、エラー情報を人が判読しやすい形で提供するフリーテキストストリング値を含めても構いません(may)。このフリーテキストストリングは、 OAI-PMH では定義しません。

エラーコード 定義説明 該当する Verb
badArgument 要求に不正な引数がある、必要な引数がない、引数が重複している、引数の値の構文が不正である。 すべての verb
badResumptionToken resumptionToken 引数の値が無効または期限切れである。 ListIdentifiers
ListRecords
ListSets

badVerb

verb 引数の値が正しい OAI-PMH verbではない、verb の引数がない、 verb 引数が重複している。 N/A

cannotDisseminateFormat

metadataPrefix 引数の値で指定されたメタデータフォーマットが、アイテムまたはリポジトリでサポートされていない。 GetRecord
ListIdentifiers

ListRecords

idDoesNotExist

このリポジトリでは、 identifier 引数の値が不明または不正である。 GetRecord
ListMetadataFormats

noRecordsMatch

fromuntilsetmetadataPrefix の各引数の値を組み合わせた結果、空のリストとなった。 ListIdentifiers
ListRecords
noMetadataFormats 指定されたアイテムに入手可能なメタデータフォーマットがない。 ListMetadataFormats

noSetHierarchy

リポジトリがセットをサポートしていない。

ListSets
ListIdentifiers
ListRecords

以下の例は、verb 引数が不正な場合のエラー処理を示したものです。要求 URL は今後すべて、読みやすいように折り返して表記します。

要求

http://arXiv.org/oai2?
       verb=nastyVerb

応答

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-05-01T09:18:29Z</responseDate>
  <request>http://arXiv.org/oai2</request>
  <error code="badVerb">Illegal OAI verb</error>
</OAI-PMH>

次の例は、 ListSets 要求でリポジトリがセットを処理しない場合のエラー処理を示したものです。

要求

http://arXiv.org/oai2?
       verb=ListSets
応答
<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-05-01T09:18:29Z</responseDate>
  <request verb="ListSets">http://arXiv.org/oai2</request>
  <error code="noSetHierarchy">This repository does not 
   support sets</error>
</OAI-PMH>

4. プロトコルの要求と応答

本セクションでは、OAI-PMH で定義された要求や verb を列挙します。各要求のドキュメントは以下のように構成されています。

XML スキーマは、すべての OAI-PMH 要求に対する有効な応答のフォーマットを定義します。

4.1. GetRecord

概要と使用上の注意

この verb は、あるリポジトリから個別のメタデータレコードを検索するために使用されます。必須の引数によって、レコードの要求先となるアイテムの識別子と、そのレコードに含まれるメタデータのフォーマットを指定します。 metadataPrefix によって指定されたメタデータフォーマットがそのリポジトリや指定アイテムから入手できなくなった場合、リポジトリによる削除の追跡レベルに応じて、 status 属性の値が "削除済み" のヘッダを返すことができます(may)

引数

エラーおよび例外状況

要求

Dublin Core のメタデータフォーマットによるレコードを要求します。 [URLは読みやすくするするためコード化せずに表記します]
http://arXiv.org/oai2?
       verb=GetRecord&identifier=oai:arXiv:cs/0112017&metadataPrefix=oai_dc

応答

<?xml version="1.0" encoding="UTF-8"?> 
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-02-08T08:55:46Z</responseDate>
  <request verb="GetRecord" identifier="oai:arXiv:cs/0112017"
           metadataPrefix="oai_dc">http://arXiv.org/oai2</request>
  <GetRecord>
   <record> 
    <header>
      <identifier>oai:arXiv:cs/0112017</identifier> 
      <datestamp>2001-12-14</datestamp>
      <setSpec>cs</setSpec> 
      <setSpec>math</setSpec>
    </header>
    <metadata>
      <oai_dc:dc 
         xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
         xmlns:dc="http://purl.org/dc/elements/1.1/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
         http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
        <dc:title>Using Structural Metadata to Localize Experience of 
                  Digital Content</dc:title> 
        <dc:creator>Dushay, Naomi</dc:creator>
        <dc:subject>Digital Libraries</dc:subject> 
        <dc:description>With the increasing technical sophistication of 
            both information consumers and providers, there is 
            increasing demand for more meaningful experiences of digital 
            information. We present a framework that separates digital 
            object experience, or rendering, from digital object storage 
            and manipulation, so the rendering can be tailored to 
            particular communities of users.
        </dc:description> 
        <dc:description>Comment: 23 pages including 2 appendices, 
            8 figures</dc:description> 
        <dc:date>2001-12-14</dc:date>
      </oai_dc:dc>
    </metadata>
  </record>
 </GetRecord>
</OAI-PMH>

要求

Dublin Core のメタデータフォーマットによるレコードを要求します。しかしながら、要求されたレコードは識別子がないので返すことができません。そのため、この応答には record コンテナがありません。この応答には、code 属性が idDoesNotExist という値の error 要素が含まれています。 [URLは読みやすくするするためコード化せずに表記します]
http://arXiv.org/oai2?
       verb=GetRecord&identifier=oai:arXiv:quant-ph/02131001&metadataPrefix=oai_dc

応答

<?xml version="1.0" encoding="UTF-8"?> 
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-02-08T08:55:46Z</responseDate>
  <request verb="GetRecord" identifier="oai:arXiv:quant-ph/0213001"
          metadataPrefix="oai_dc">http://arXiv.org/oai2</request> 
  <error code="idDoesNotExist">No matching identifier in arXiv</error>
</OAI-PMH>

要求

oai_marc メタデータフォーマットによるレコードを要求します。しかしながら、要求されたメタデータフォーマットは、この識別子では抽出できません。そのため、この応答にはレコードがありません。この応答には、 code 属性が cannotDisseminateFormat という値の error 要素が含まれています。[URLは読みやすくするするためコード化せずに表記します]
http://arXiv.org/oai2?
       verb=GetRecord&identifier=oai:arXiv:quant-ph/9901001&metadataPrefix=oai_marc

応答

<?xml version="1.0" encoding="UTF-8"?> 
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-02-08T08:55:46Z</responseDate>
  <request verb="GetRecord" identifier="oai:arXiv:quant-ph/9901001"
           metadataPrefix="oai_marc">http://arXiv.org/oai1</request> 
  <error code="cannotDisseminateFormat"/>
</OAI-PMH>

4.2. Identify

概要と使用上の注意

この verb は、リポジトリについての情報を検索するために使用されます。返された情報の一部は、OAI-PMH の一部として必須のものです。リポジトリは Identify verb を使用して、追加記述情報を返すこともできます(may)

引数

なし

エラーおよび例外状況

応答フォーマット

応答には必ず、以下の要素のインスタンスが一つ含まれます(must)

応答には必ず、以下の要素のインスタンスが一つ以上含まれます(must)

応答には、以下の任意の要素のインスタンスを複数含めても構いません(may)

要求

http://memory.loc.gov/cgi-bin/oai?
       verb=Identify

応答

以下の Identify 要求に対する応答例は、3つの description コンテナから構成されています。
<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-02-08T12:00:01Z</responseDate>
  <request verb="Identify">http://memory.loc.gov/cgi-bin/oai</request>
   <Identify>
    <repositoryName>Library of Congress Open Archive Initiative 
                    Repository 1</repositoryName>
    <baseURL>http://memory.loc.gov/cgi-bin/oai</baseURL>
    <protocolVersion>2.0</protocolVersion>
    <adminEmail>somebody@loc.gov</adminEmail>
    <adminEmail>anybody@loc.gov</adminEmail>
    <earliestDatestamp>1990-02-01T12:00:00Z</earliestDatestamp>
    <deletedRecord>transient</deletedRecord>
    <granularity>YYYY-MM-DDThh:mm:ssZ</granularity>
    <compression>deflate</compression>
    <description>
      <oai-identifier 
        xmlns="http://www.openarchives.org/OAI/2.0/oai-identifier"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation=
            "http://www.openarchives.org/OAI/2.0/oai-identifier
        http://www.openarchives.org/OAI/2.0/oai-identifier.xsd">
        <scheme>oai</scheme>
        <repositoryIdentifier>lcoa1</repositoryIdentifier>
        <delimiter>:</delimiter>
        <sampleIdentifier>oai:lcoa1:loc.music/musdi.002</sampleIdentifier>
      </oai-identifier>
    </description>
    <description>
      <eprints 
         xmlns="http://www.openarchives.org/OAI/1.1/eprints"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/1.1/eprints 
         http://www.openarchives.org/OAI/1.1/eprints.xsd">
        <content>
          <URL>http://memory.loc.gov/ammem/oamh/lcoa1_content.html</URL>
          <text>Selected collections from American Memory at the Library 
                of Congress</text>
        </content>
        <metadataPolicy/>
        <dataPolicy/>
      </eprints>
    </description>
    <description>
      <friends 
          xmlns="http://www.openarchives.org/OAI/2.0/friends/" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/friends/
         http://www.openarchives.org/OAI/2.0/friends.xsd">
       <baseURL>http://oai.east.org/foo/</baseURL>
       <baseURL>http://oai.hq.org/bar/</baseURL>
       <baseURL>http://oai.south.org/repo.cgi</baseURL>
     </friends>
   </description>
 </Identify>
</OAI-PMH>

4.3. ListIdentifiers

概要と使用上の注意

この verb は、 ListRecords の簡易版で、 records ではなくヘッダを検索します。任意の引数により、セットメンバシップや日付スタンプに応じたヘッダの選択的ハーベスティングを行うことができます。要求で指定された引数にマッチするレコードが削除されている場合、 リポジトリによる削除サポートに応じて、返されたヘッダstatus 属性を "削除済み" にすることができます(may)

引数

エラーおよび例外状況

要求

1998年1月15日以降に physics:hep セットにおいて追加、変更、削除されたレコードのヘッダを oldarXiv メタデータフォーマットで一覧表示します。 [URLは読みやすくするするためコード化せずに表記します]
http://an.oa.org/OAI-script?
       verb=ListIdentifiers&from=1998-01-15&metadataPrefix=oldArXiv&set=physics:hep

応答

4つのヘッダのリストが返されます。1つのヘッダはステータスが deleted で、 metadataPrefix によって指定されたメタデータフォーマットでレコードが利用できなくなったことを示しています。また、 resumptionToken (空でない値 xxx45abttyz )が返され、ヘッダのリストが 不完全 であることと、 完全 リストを検索するには次の要求を一つ以上発行する必要があることを示しています。下の例を見ると、 resumptionToken には次に示す3つの任意の属性がすべてあります。@ expirationDateresumptionToken がUTC 2002年6月1日PM 11:20以降、使用できなくなることを示しています、A completeListSize不完全 リストに 6つの識別子が含まれていることを示しています、B cursor のゼロ値:この応答にヘッダが返されたことは一度もないことを示しています。

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-06-01T19:20:30Z</responseDate>
  <request verb="ListIdentifiers" from="1998-01-15" 
           metadataPrefix="oldarXiv"
           set="physics:hep">http://an.oa.org/OAI-script</request>
  <ListIdentifiers>
   <header>  
    <identifier>oai:arXiv:hep-th/9801001</identifier>
    <datestamp>1999-02-23</datestamp>
    <setSpec>physic:hep</setSpec>
   </header>
   <header>    
    <identifier>oai:arXiv:hep-th/9801002</identifier>
    <datestamp>1999-03-20</datestamp>
    <setSpec>physic:hep</setSpec>
    <setSpec>physic:exp</setSpec>
   </header>
   <header>  
    <identifier>oai:arXiv:hep-th/9801005</identifier>
    <datestamp>2000-01-18</datestamp>
    <setSpec>physic:hep</setSpec>
   </header> 
   <header status="deleted">  
    <identifier>oai:arXiv:hep-th/9801010</identifier>
    <datestamp>1999-02-23</datestamp>
    <setSpec>physic:hep</setSpec>
    <setSpec>math</setSpec>
   </header>  
   <resumptionToken expirationDate="2002-06-01T23:20:00Z" 
      completeListSize="6" 
      cursor="0">xxx45abttyz</resumptionToken>
 </ListIdentifiers>
</OAI-PMH>

要求

上記で発行された要求に対して次の要求を発行します。1つの resumptionToken 引数に、前の応答で返された値が含まれます。 [URLは読みやすくするするためコード化せずに表記します]

http://an.oa.org/OAI-script?
       verb=ListIdentifiers&resumptionToken=xxx45abttyz

応答

さらに2つのヘッダが返されます。リスト末尾の resumptionToken 要素には値がなく、リストが全部そろったことを示しています。 completeListSize 属性の値は 6 のまま、 cursor 属性の値は 4 に変わっており、前の応答がすでに4つの識別子を引き渡していることを示しています。

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-06-01T19:30:00Z</responseDate>
  <request verb="ListIdentifiers"
           resumptionToken="xxx45abttyz">http://an.oa.org/OAI-script</request>
 <ListIdentifiers>
  <header>  
  <identifier>oai:arXiv:hep-th/9801020</identifier>
    <datestamp>1999-02-23</datestamp>
    <setSpec>physic:hep</setSpec>
  </header> 
  <header>   
  <identifier>oai:arXiv:hep-th/9801060</identifier>
    <datestamp>1999-02-23</datestamp>
    <setSpec>physic:hep</setSpec>
  </header>  
  <resumptionToken completeListSize="6" cursor="4"/>
 </ListIdentifiers>
</OAI-PMH>

要求

2001年1月1日に Perseus:collection:PersInfo セットにおいて追加または変更された olac-formatted レコードのヘッダを一覧表示します。この要求にマッチするものはないので、応答にはエラータグが含まれ、 ヘッダ要素は含まれていません。 [URLは読みやすくするするためコード化せずに表記します]
http://www.perseus.tufts.edu/cgi-bin/pdataprov?
       verb=ListIdentifiers&metadataPrefix=olac&from=2001-01-01&until=2001-01-01
       &set=Perseus:collection:PersInfo

応答

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-02-08T14:27:19Z</responseDate>
  <request verb="ListIdentifiers" metadataPrefix="olac"
    from="2001-01-01" until="2001-01-01"
    set="Perseus:collection:PersInfo">
    http://www.perseus.tufts.edu/cgi-bin/pdataprov</request>
  <error code="noRecordsMatch"/>
</OAI-PMH>

4.4. ListMetadataFormats

概要と使用上の注意

この verb は、リポジトリから入手可能なメタデータフォーマットを検索するために使用します。任意の引数によって、要求を個々のアイテムで利用可能なフォーマットに限定します。

引数

エラーと例外状況

要求

固有識別子 oai:perseus:Perseus:text:1999.02.0119 のアイテム用メタデータフォーマットについて、リポジトリ http://www.perseus.tufts.edu/cgi-bin/pdataprov から抽出できるものを一覧表示します。 [URLは読みやすくするするためコード化せずに表記します]

http://www.perseus.tufts.edu/cgi-bin/pdataprov?
       verb=ListMetadataFormats&identifier=oai:perseus:Perseus:text:1999.02.0119

応答

この応答は、3つのメタデータフォーマットが所定の識別子 oai_dc、 olac、 perseus についてサポートされていることを示しています。フォーマットを記述する XML スキーマのロケーションと XML 名前空間 URI が、各フォーマットごとに指定されています。

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-02-08T14:27:19Z</responseDate>
  <request verb="ListMetadataFormats"
    identifier="oai:perseus:Perseus:text:1999.02.0119">
    http://www.perseus.tufts.edu/cgi-bin/pdataprov</request>
  <ListMetadataFormats>
   <metadataFormat>
     <metadataPrefix>oai_dc</metadataPrefix>
     <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd
       </schema>
     <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/
       </metadataNamespace>
   </metadataFormat>
   <metadataFormat>
     <metadataPrefix>olac</metadataPrefix>
     <schema>http://www.language-archives.org/OLAC/olac-0.2.xsd</schema>
     <metadataNamespace>http://www.language-archives.org/OLAC/0.2/
      </metadataNamespace>
   </metadataFormat>
   <metadataFormat>
     <metadataPrefix>perseus</metadataPrefix>
     <schema>http://www.perseus.tufts.edu/persmeta.xsd</schema>
     <metadataNamespace>http://www.perseus.tufts.edu/persmeta.dtd
       </metadataNamespace>
   </metadataFormat>
 </ListMetadataFormats>
</OAI-PMH>

要求

リポジトリ http://memory.loc.gov/cgi-bin/oai から抽出できるメタデータフォーマットを一覧表示します。

http://memory.loc.gov/cgi-bin/oai?
       verb=ListMetadataFormats

応答

この応答は、 リポジトリで2つのメタデータフォーマット oai_dcoai_marc がサポートされていることを示しています。フォーマットを記述する XML スキーマのロケーションが、各フォーマットごとに指定されています。フォーマットをリポジトリレベルでサポートしているということは、そのリポジトリにある各アイテムのフォーマットをすべてサポートしているという意味ではありません。

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-06-08T15:19:13Z</responseDate>
  <request verb="ListMetadataFormats">
           http://memory.loc.gov/cgi-bin/oai</request>
  <ListMetadataFormats>
   <metadataFormat>
    <metadataPrefix>oai_dc</metadataPrefix>
    <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
    <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/
      </metadataNamespace>
   </metadataFormat>
   <metadataFormat>
    <metadataPrefix>oai_marc</metadataPrefix>
    <schema>http://www.openarchives.org/OAI/1.1/oai_marc.xsd</schema>
    <metadataNamespace>http://www.openarchives.org/OAI/1.1/oai_marc
      </metadataNamespace>
   </metadataFormat>
  </ListMetadataFormats>
</OAI-PMH>

要求

リポジトリ http://memory.loc.gov/cgi-bin/oai 内で抽出可能な、固有識別子 oai:lcoa1:loc.rbc/rbpe.00000111 のメタデータフォーマットを一覧表示します。しかしながら、この識別子は存在しないので、この応答には error 要素が含まれ、 metadataFormat コンテナは含まれません。 [URLは読みやすくするするためコード化せずに表記します]

http://memory.loc.gov/cgi-bin/oai?
       verb=ListMetadataFormats&identifier=oai:lcoa1:loc.rbc/rbpe.00000111

応答

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-06-08T15:19:13Z</responseDate>
  <request verb="ListMetadataFormats"
           identifier="oai:lcoa1:loc.rbc/rbpe.00000111">
           http://memory.loc.gov/cgi-bin/oai</request>
  <error code="idDoesNotExist">oai:lcoa1:loc.rbc/rbpe.00000111 has the 
       structure of a valid LOC identifier, but it maps to no known 
       item</error>
</OAI-PMH> 

4.5. ListRecords

概要と使用上の注意

この verb は、リポジトリからレコードを収集するために使用されます。任意の引数によって、セットメンバシップや日付スタンプによるレコード選択的ハーベスティングができます。要求で指定された引数にマッチするレコードが削除されている場合、リポジトリの削除サポートに応じて、返されたヘッダstatus 属性を "削除済み" にすることができます(may)。ステータスが削除済みのレコードのメタデータはなくなります。

引数

エラーおよび例外状況

要求

physics セットのサブセット hep において1998年1月15日以降に追加または修正されたレコードを oai_rfc1807 メタデータフォーマットで一覧表示します。 [URLは読みやすくするするためコード化せずに表記します]
http://an.oa.org/OAI-script?
       verb=ListRecords&from=1998-01-15&set=physics:hep&metadataPrefix=oai_rfc1807

応答

以下の2つのレコードが返されます。

注 : この応答には、oai_rfc1807 メタデータの抽出元となりうるアイテムのレコードだけが含まれます。 fromuntilset の各引数に適合しても指定されたフォーマットを抽出できないアイテムのレコードは返されません。 

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
 <responseDate>2002-06-01T19:20:30Z</responseDate> 
 <request verb="ListRecords" from="1998-01-15"
          set="physics:hep"
          metadataPrefix="oai_rfc1807">
          http://an.oa.org/OAI-script</request>
 <ListRecords>
  <record>
    <header>
      <identifier>oai:arXiv:hep-th/9901001</identifier>
      <datestamp>1999-12-25</datestamp>
      <setSpec>physics:hep</setSpec>
      <setSpec>math</setSpec>
    </header>
    <metadata>
     <rfc1807 xmlns=
        "http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1807.txt" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation=
       "http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1807.txt
        http://www.openarchives.org/OAI/1.1/rfc1807.xsd">
        <bib-version>v2</bib-version>
        <id>hep-th/9901001</id>
        <entry>January 1, 1999</entry>
        <title>Investigations of Radioactivity</title>
        <author>Ernest Rutherford</author>
        <date>March 30, 1999</date>
     </rfc1807>
    </metadata>
    <about>
      <oai_dc:dc 
          xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
          xmlns:dc="http://purl.org/dc/elements/1.1/" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
        <dc:publisher>Los Alamos arXiv</dc:publisher>
        <dc:rights>Metadata may be used without restrictions as long as 
           the oai identifier remains attached to it.</dc:rights>
      </oai_dc:dc>
    </about>
  </record>
  <record>
    <header status="deleted">
      <identifier>oai:arXiv:hep-th/9901007</identifier>
      <datestamp>1999-12-21</datestamp>
    </header>
  </record>
 </ListRecords>
</OAI-PMH>

要求

2002年5月1日PM 2:15 から 2:20 までの間に修正または追加されたレコードを、 oai_dc メタデータフォーマットで要求します。 [URLは読みやすくするするためコード化せずに表記します]
http://www.perseus.tufts.edu/cgi-b:in/pdataprov?
       verb=ListRecords&from=2002-05-01T14:15:00Z&until=2002-05-01T14:20:00Z&metadataPrefix=oai_dc

応答

2つのレコードが返されます。2番目のレコードの about 要素には provenance コンテナが含まれており、出自のつながりが分かります。

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
 <responseDate>2002-06-01T19:20:30Z</responseDate> 
 <request verb="ListRecords" from="2002-05-01T14:15:00Z"
          until="2002-05-01T14:20:00Z" metadataPrefix="oai_dc">
          http://www.perseus.tufts.edu/cgi-bin/pdataprov</request>
 <ListRecords>
  <record>
    <header>
      <identifier>oai:perseus:Perseus:text:1999.02.0084</identifier>
      <datestamp>2002-05-01T14:16:12Z</datestamp>
    </header>
    <metadata>
      <oai_dc:dc 
          xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
          xmlns:dc="http://purl.org/dc/elements/1.1/" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
        <dc:title>Opera Minora</dc:title>
        <dc:creator>Cornelius Tacitus</dc:creator>
        <dc:type>text</dc:type>
        <dc:source>Opera Minora. Cornelius Tacitus. Henry Furneaux. 
         Clarendon Press. Oxford. 1900.</dc:source>
        <dc:language>latin</dc:language>
        <dc:identifier>http://www.perseus.tufts.edu/cgi-bin/ptext?
          doc=Perseus:text:1999.02.0084</dc:identifier>
      </oai_dc:dc>
    </metadata>
  </record>
  <record>
    <header>
      <identifier>oai:perseus:Perseus:text:1999.02.0083</identifier>
      <datestamp>2002-05-01T14:20:55Z</datestamp>
    </header>
    <metadata>
      <oai_dc:dc 
          xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
          xmlns:dc="http://purl.org/dc/elements/1.1/" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
        <dc:title>Germany and its Tribes</dc:title>
        <dc:creator>Tacitus</dc:creator>
        <dc:type>text</dc:type>
        <dc:source>Complete Works of Tacitus. Tacitus. Alfred John Church. 
         William Jackson Brodribb. Lisa Cerrato. edited for Perseus. 
         New York: Random House, Inc. Random House, Inc. reprinted 1942.
          </dc:source>
        <dc:language>english</dc:language>
        <dc:identifier>http://www.perseus.tufts.edu/cgi-bin/ptext?
         doc=Perseus:text:1999.02.0083</dc:identifier>
      </oai_dc:dc>
      </metadata>
    <about>
      <provenance
       xmlns="http://www.openarchives.org/OAI/2.0/provenance"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance  
       http://www.openarchives.org/OAI/2.0/provenance.xsd">
       <originDescription harvestDate="2002-01-01T11:10:01Z" altered="true">
        <baseURL>http://some.oa.org</baseURL>
        <identifier>oai:r2.org:klik001</identifier>
        <datestamp>2001-01-01</datestamp>
        <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
        </originDescription>
      </provenance>
    </about>
  </record>
 </ListRecords>
</OAI-PMH>

要求

UTC 2002年6月1日 AM2:00 から 3:00 までの間に修正または追加されたレコードを、 oai_marc メタデータフォーマットで要求します。指定された単位は、このリポジトリではサポートされていないため、code 属性が badArgumenterror が返されます。 [URLは読みやすくするするためコード化せずに表記します]
http://memory.loc.gov/cgi-bin/oai?
       verb=ListRecords&from=2002-06-01T02:00:00Z&until=2002-06-01T03:00:00Z&metadataPrefix=oai_marc

応答

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2002-06-01T19:20:30Z</responseDate> 
  <request verb="ListRecords" from="2002-06-01T02:00:00Z"
           until="2002-06-01T03:020:00Z"
           metadataPrefix="oai_marc">
           http://memory.loc.gov/cgi-bin/oai</request>
  <error code="badArgument"/>
</OAI-PMH>

4.6. ListSets

概要と使用上の注意

この verb は、リポジトリのセット構成を検索するために使用するもので、選択的ハーベスティングに役立ちます。  

引数

エラーと例外状況

要求

http://an.oa.org/OAI-script?
       verb=ListSets

応答

以下の応答は、 setSpec が musicvideo という2つのセットを最上位とするセット階層を示しています。 music セット には、 setSpec が music:(muzak) music:(elec) という2つのサブセットがあります。これらの setSpec music:(elec) で規定されたサブセットには、setDescription 要素 が含まれています。この要素はその内容記述に使用される Dublin Core のコンテナを保持しています。

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
 <responseDate>2002-08-11T07:21:33Z</responseDate>
 <request verb="ListSets">http://an.oa.org/OAI-script</request>
 <ListSets>
  <set>
    <setSpec>music</setSpec>
    <setName>Music collection</setName>
  </set>
  <set>
    <setSpec>music:(muzak)</setSpec>
    <setName>Muzak collection</setName>
  </set>
  <set>
    <setSpec>music:(elec)</setSpec>
    <setName>Electronic Music Collection</setName>
    <setDescription>
      <oai_dc:dc 
          xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
          xmlns:dc="http://purl.org/dc/elements/1.1/" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
          <dc:description>This set contains metadata describing 
             electronic music recordings made during the 1950ies
             </dc:description>
       </oai_dc:dc>
    </setDescription>
   </set>
   <set>
    <setSpec>video</setSpec>
    <setName>Video Collection</setName>
   </set>
 </ListSets>
</OAI-PMH>

要求

http://purl.org/alcme/etdcat/servlet/OAIHandler?
       verb=ListSets

応答

この応答は、リポジトリにセット階層がないことを示しています。

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2001-06-01T19:20:30Z</responseDate> 
  <request verb="ListSets">
           http://purl.org/alcme/etdcat/servlet/OAIHandler</request>
  <error code="noSetHierarchy">This repository does not 
         support sets</error>
</OAI-PMH>

5. Dublin Core

下表は、OAI-PMH において予約された metadataPrefix oai_dc に関連する無制限 Dublin Core の XML スキーマを示しています。 Dublin Core メタデータを含む本ドキュメントの例では、すべてこの XML スキーマで妥当性を検証しています。別のメタデータフォーマットのスキーマについては、添付書『実装ガイドライン』をご覧ください。

予約された oai_dc metadataPrefix に関連する無制限 Dublin Core のメタデータを検証する XML スキーマ

<schema targetNamespace="http://www.openarchives.org/OAI/2.0/oai_dc/" 
        xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
        xmlns:dc="http://purl.org/dc/elements/1.1/" 
        xmlns="http://www.w3.org/2001/XMLSchema" 
        elementFormDefault="qualified" attributeFormDefault="unqualified">
	
<annotation>
  <documentation> 
      XML Schema 2002-03-18 by Pete Johnston.
      Adjusted for usage in the OAI-PMH.
      Schema imports the Dublin Core elements from the DCMI schema for unqualified Dublin Core.
      2002-12-19 updated to use simpledc20021212.xsd (instead of simpledc20020312.xsd)
  </documentation>
</annotation>

<import namespace="http://purl.org/dc/elements/1.1/" 
        schemaLocation="http://dublincore.org/schemas/xmls/simpledc20021212.xsd"/>
	
<element name="dc" type="oai_dc:oai_dcType"/>

<complexType name="oai_dcType">
  <choice minOccurs="0" maxOccurs="unbounded">
    <element ref="dc:title"/>
    <element ref="dc:creator"/>
    <element ref="dc:subject"/>
    <element ref="dc:description"/>
    <element ref="dc:publisher"/>
    <element ref="dc:contributor"/>
    <element ref="dc:date"/>
    <element ref="dc:type"/>
    <element ref="dc:format"/>
    <element ref="dc:identifier"/>
    <element ref="dc:source"/>
    <element ref="dc:language"/>
    <element ref="dc:relation"/>
    <element ref="dc:coverage"/>
    <element ref="dc:rights"/>
  </choice>
</complexType>

</schema>
本スキーマの入手先: http://www.openarchives.org/OAI/2.0/oai_dc.xsd

<?xml version="1.0" encoding="UTF-8"?>
<oai_dc:dc 
    xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
    http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
  <dc:title xml:lang="en">The Cornell Law Quarterly</dc:title>
  <dc:date>1915-1916</dc:date>
  <dc:identifier>http://heinonline.org/HeinOnline/show.pl?
      handle=hein.journals/clqv1%26id=1%26size=4</dc:identifier>
  <dc:rights>Available by Subscription. 
             See http://www.wshein.com</dc:rights>
</oai_dc:dc>

 

<?xml version="1.0" encoding="UTF-8"?>
<oai_dc:dc 
    xmlns:oai="http://www.openarchives.org/OAI/2.0/oai_dc/" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
    http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
  <dc:title xml:lang="en">Grassmann's space analysis</dc:title>
  <dc:creator>Hyde, E. W. (Edward Wyllys)</dc:creator>
  <dc:subject>LCSH:Ausdehnungslehre; LCCN QA205.H99</dc:subject>
  <dc:publisher>J. Wiley &amp; Sons</dc:publisher>
  <dc:date>Created: 1906; Available: 1991</dc:date>
  <dc:type>text</dc:type>
  <dc:identifier>http://resolver.library.cornell.edu/math/1796949
     </dc:identifier>
  <dc:language>english</dc:language>
  <dc:rights xml:lang="en">Public Domain</dc:rights>
</oai_dc:dc>

6. 実装ガイドライン

本書の一部で、添付書『実装ガイダンス』の存在や目的に言及しています。

謝辞

OAI-PMH の策定およびその他の Open Archives Initiative の活動に対して、デジタル図書館連盟ネットワーク情報連合、そして全米科学財団(Grant No. IIS-9817416)にご協力いただきました。

本書は OAI 技術委員会の協議に基づいています。

Caroline Arms <caar@loc.gov> 米国議会図書館
Thomas Baron <thomas.baron@cern.ch> CERN
Steven Bird <sb@ldc.upenn.edu> ペンシルベニア大学
Les Carr <lac@ecs.soton.ac.uk> サウサンプトン大学
Tim Cole <t-cole3@uiuc.edu> イリノイ大学アーバナ・シャンペーン校
Thomas Krichel <krichel@openlib.org> ロングアイランド大学
Carl Lagoze <lagoze@cs.cornell.edu> コーネル大学
Michael Nelson <m.l.nelson@larc.nasa.gov> NASA
Andy Powell <a.powell@ukoln.ac.uk> UKOLN & バース大学
Mogens Sandfaer <ms@dtv.dk> Danmarks Tekniske Videncenter
Hussein Suleman <hussein@vt.edu> バージニア工科大学
Robert Tansley <Robert_Tansley@hplb.hpl.hp.com> HP
Herbert Van de Sompel <herbertv@lanl.gov> ロスアラモス国立研究所
Simeon Warner <simeon@cs.cornell.edu> コーネル大学
Muhammad Zubair <zubair@cs.odu.edu> オールドドミニオン大学
Jeff Young <jyoung@oclc.org> OCLC

上記の皆様のほか、OAI-PMHのバージョン 2.0 アルファテストにご協力いただいたすべての方々に感謝します。

Tim Brody <tim@tim.brody.btinternet.co.uk> サウサンプトン大学
Irena Dijour <irina.dijour@exlibris.co.il> Ex Libris
Naomi Dushay <naomi@cs.cornell.edu> コーネル大学
Susanne Dobratz <susanne.dobratz@rz.hu-berlin.de> フンボルト大学
Curtis Fornadley <curtisf@library.ucla.edu> UCLA
Christopher Gutteridge <cjg@ecs.soton.ac.uk> サウサンプトン大学
Alan Kent <ajk@mds.rmit.edu.au> InQuirion Pty Ltd & RMIT大学
David Letts <david.letts@bl.uk> 英国図書館
Xiaoming Liu <liu_x@cs.odu.edu> オールドドミニオン大学
Jon Phipps <jphipps@cs.cornell.edu> コーネル大学
Francois Schiettecatte <francois@fsconsult.com> FS Consulting Inc

とりわけ、 Pete Johnston <p.johnston@ukoln.ac.uk> と Andy Powell <a.powell@ukoln.ac.uk> には Dublin Core スキーマに関する作業で、 Donna Bergmark <bergmark@cs.cornell.edu> には OAI の検証および登録サービスに関する作業で、多大なご協力をいただき、特別な感謝の意を表します。

OAI-PMH のバージョン 1.0 と 1.1 の編集およびアルファテストにご協力いただいた皆様、本プロトコルをご使用の皆様に感謝します。

ドキュメント履歴

2002-12-19: 改訂版 Dublin Core スキーマ simpledc20021212.xsd を使用するため oai_dc schema を更新。例のprovenance ブロックを修正 (セクション 2.5 および 4.5)。

2002-06-14: OAI-PMH バージョン 2.0 をリリース。

2002-05-02: OAI-PMH ベータバージョン 2.0 をリリース。

2002-05-06: OAI-PMH バージョン 2.0 のアルファ-4 バージョンをリリース。アイテムではなく、レコードと削除済みステータスおよび日付スタンプとの関連付けをドキュメントに反映。 requestURL 要求を変更。 oai-identifier と oai_dc スキーマのスキーマロケーションを変更。 "about"、 "メタデータ"、 "内容記述"、 "setDescription" の検証を正確に変更。

2002-04-07: すべての OAI-PMH 応答を検証する単一スキーマの使用法をドキュメントに反映。

2002-03-30: OAI-PMH バージョン 2.0 のアルファ 2 バージョンをリリース。

2002-03-01: OAI-PMH バージョン 2.0 のアルファバージョンをリリース。