Open Archives Initiative メタデータ・ハーベスティング・プロトコル |
|
プロトコル バージョン 2.0 (2002-06-14)
|
|
旧バージョン : プロトコル1.1 (2001-07-02)
|
編集者
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. 実装ガイドライン
謝辞
ドキュメント履歴
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) "コミュニティ独自の" 規約に言及しています。 この規約については、添付書『実装ガイドライン』をご覧ください。
ハーベスタ (harvester) は、OAI-PMH 要求を発行するクライアントアプリケーションです。 リポジトリからメタデータを収集する手段として、サービス提供者によって使用されます。
リポジトリ (repository) とは,本ドキュメントに定められた方法で6つの OAI-PMH の要求を処理する機能を有する,ネットワークアクセス可能なサーバのことを言います。リポジトリは、メタデータをハーベスタに提供するため、データ提供者によって管理されます。OAI-PMH では様々なリポジトリ構成に対応するため、OAI-PMHで入手可能なメタデータに関するエンティティを明に3つに区分して考えます。
固有識別子 (unique identifier ) は、あるリポジトリ内のアイテムを明確に識別するもので、アイテムからメタデータを抽出ために OAI-PMH の要求において用いられます。アイテムには、複数フォーマットによるメタデータを含めても構いません(may)。固有識別子はアイテムに対してマップされます。一つのアイテムから入手可能なレコードはすべて同じ固有識別子を共有します。
固有識別子のフォーマットは、URI (ユニフォームリソース識別子) 構文のフォーマットに合致している必要があります(must)。各コミュニティは、個々のリポジトリ相互を通じた可用性のために、コミュニティ独自の URI スキームを開発しても構いません(may)。固有識別子のスキームコンポーネントは、識別子がそのスキームに準拠していない場合、URI 公認スキームのコンポーネントと同一のものであってはいけません(must not)。リポジトリは、添付書『実装ガイドライン』に定められた oai-identifier 構文を実装することができます(may) 。
本プロトコルでは、固有識別子の役割は2つあります。
なお、ここで言う識別子は、リソース の識別子では ありません 。リソース識別子の態様は、OAI-PMH の埒外です。リポジトリは、収集されたメタデータの関連リソースにアクセスしやすくするため、メタデータレコードの要素を利用してレコード (およびそのアイテムの識別子)と関連リソースの識別子 (URL、URN、DOI など) との関連付けを行います(should)。 Dublin Core の必須フォーマットには、そのための identifier エレメントがあります。
次の例は、あるレコードとそのコンポーネントの 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> |
セット (set) は、選択的ハーベスティングを行う目的でアイテムをグループ化するための任意の構成体です。リポジトリでは、アイテムをセットに整理することができます(may)。セットの構造は、フラットつまり単一型リストでも階層型でも構いません(may)。複数の階層に、別個の独立した上位ノードをもたせることができます。セットの階層構造は、以下のように setSpec パラメータの構文で表現します。リポジトリでセット構造を定義する場合、 ListIdentifiers、 ListRecords、 GetRecord の各要求に対して返されるアイテムのヘッダ内のセットメンバシップ情報を必ずリポジトリに含めます(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)。上の例では、あるアイテムを subject と institution:florida の両方に配することが想定できます。ハーベスタは、あるリポジトリ内のセットをすべて収集しても、そのリポジトリ内のすべてのアイテムからメタデータを取得した,との予断をするべきではありません(should not)。アイテムは、セット階層の内のノードに割り当てられる場合もありえます(may)。
本プロトコルでは、リポジトリ内のセットやセット配列の実際の意味は定義しません。各コミュニティが、必要に応じ,setNames と setSpec のために,例えば統制された語彙を用いるなどして,明確に定義付けられたセット構成を形成し,さらにそれらをハーベスタに提供するメカニズムを開発することが想定されています。たとえば、ある特定分野のe-printアーカイブを共同構築するグループは、統制された主題分類体系に基づいてリポジトリ内のメタデータを整理可能なセット構成を採用するのがよいかもしれません。
リポジトリのセット階層は、本プロトコルでは,setSpecs により表されます。ListSets は、リポジトリ内のセット構成を示すリストを返します。このリストの各メンバには必ず setSpec と setName が含まれ(must)、場合によっては setDescription も含まれます(may)。 ListRecords と ListIdentifiers の要求には、任意の set 引数が含まれることもあり(may)、その値が setSpec の場合、選択的ハーベスティングの対象とするセットが指定されます。セット階層についての上の例では、setSpec institution:nebraskaを要求に用いることにより,この setSpecで表されるセットに含まれるアイテムから抽出されるレコードだけを得ることができます。以下の4点に注意してください。
選択的ハーベスティング を行えば、 ハーベスタは,各リポジトリで取得可能なメタデータの在り様に従い,ハーベスト対象を限定することができます。 OAI-PMH は、OAI-PMH 要求において,組み合わせ可能な(may)2種類のハーベスティング基準(日付とセットメンバシップ)による選択的ハーベスティングをサポートしています。
ハーベスタは、日付 を利用して、指定された期間内に作成、削除、変更されたレコードだけを収集することができます(may)。日付による選択的ハーベスティングを指定するには、任意の引数の値( from と until )として日付を ListRecords と ListIdentifiers の要求に含めます。そうするとデータ収集の対象は、 from と until の引数で指定された範囲に限定されます。日付の範囲は、 from を省略した場合は最も古い日付までが範囲となり、 until を省略した場合は最新の日付までが範囲となります。範囲の限界値それ自体もその範囲に含まれます 。たとえばfromによる範囲指定は "以上" 、until による範囲指定は "以下" と解釈されます(must)。したがって、from の引数は必ず until の引数以下になります(must)。そうでない場合、リポジトリは badArgument エラーを発行します。
リポジトリは必ず、fromとuntilの引数による日単位での選択的ハーベスティングをサポートするものとします(must)。オプションとして秒単位の選択的ハーベスティングをサポートする場合は,Identify要求への応答においてそれを示します。要求と応答における日付の値は必ず、本ドキュメントに示すUTCdatetimeの仕様に準拠しなければなりません(must)。何らかの変更が発生した場合,リポジトリはそのレコードの日付を更新しなければなりません(must)。結果として,日付の更新はXMLコード化されたレコードのメタデータ部にも反映されます。ここで言う変更とは、(以下ですべてではありませんが)レコードのメタデータ部の変更、レコードのメタデータ・フォーマットの変更、別のメタデータ・フォーマットの追加、メタデータ・フォーマットのサポート終了などを指します。
選択的ハーベスティングの日付の範囲は、ListRecordsとListIdentifiers の要求で指定できる(may) fromとuntilという引数によって表現されます。リポジトリは必ず下記の規則に従い、そのリポジトリ内で生じた変更の種類に応じて、指定された日付範囲にマッチしたListRecords の応答を生成します(must)。 ListIdentifiersの要求に対する応答も,レコードでなくヘッダのみを返戻する点を除き,これに準じます。
GetRecord、ListRecords、 ListIdentifiers の各要求に対して返されるすべてのヘッダには、上記の規則に基づき、作成、変更、削除の行われた最新の日時を反映した日付が含まれます。
ハーベスタは、セットメンバシップを選択的ハーベスティングの基準として指定することができます。セットによるデータ収集を指定するには、ListRecords と ListIdentifiers の要求に対する任意の set 引数の値に setSpec を加えます。これによって各セット内のアイテムからレコードを選択的ハーベスティングします。
setSpec を引数として使用する場合、応答には必ず次の要素が含まれます(must)。
OAI-PMH 要求の送信には必ず、HTTP の GET または POST メソッドを使用します(must)。POST メソッドには、引数の長さが無制限であるという利点があります。リポジトリは GET と POST の両メソッドをサポートする必要があります(must)。すべての要求にはベース URL が一つあります。このベース URL によって、リポジトリとして機能する HTTP サーバのホスト名及びポート番号(加えて場合によりパス)が特定されます。リポジトリは,そのベース URLを、 Identify応答に含まれるbaseURLの値として示します。なお、パスの構成はそのリポジトリの HTTP サーバの構成に依存します。
全ての要求は,ベース URLに加え,キーワード引数 (keyword arguments)のリストからなります。キーワード引数は key=value という対の形をとります。引数の配列はどんな順序でも構いませんが、複数の引数は必ずアンド記号[&]で区切らなければなりません(must)。どの OAI-PMH 要求も、ハーベスタにより発行された OAI-PMH 要求を示す,ひとつの key=value の対を必ず含みます(must)。
追加のkey=valueの対の数及び内容は、個々の要求のための引数によります。
ただし、URI の特殊文字を符号化する必要がある(must)ため、上記の GET 要求のURLは実際には以下となります。
http://an.oa.org/OAI-script?
verb=GetRecord&identifier=oai%3AarXiv%3Ahep-th%2F9901001&metadataPrefix=oai_dc
キーワード引数は、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
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 要求の GET と POST の両方の符号化に適用されます。
すべての OAI-PMH 要求に返される Content-Type は必ず text/xml となります(must)。
OAI-PMH では、応答圧縮はオプションです。OAI-PMH 要求に対する応答の圧縮は HTTP レベルで処理され、以下のような制限を伴います。
OAI-PMH 要求に対する応答はすべて、明確に定義された XML インスタンスドキュメントである必要があります(must)。XML のコード化は必ず、ユニコードの UTF-8 表記を使用します(must)。エンティティ参照ではなく、必ず文字参照を使用します(must)。文字参照を使用すると、XML 応答は当該ドキュメント以外のエンティティ宣言に依存せずに処理可能なスタンドアロンのドキュメントとして扱うことができます。
OAI-PMH 要求に対するすべての応答の XML データ は、本セクションの最後に記載した XML スキーマによって検証する必要があります(must)。同スキーマを見ると分かるように、OAI-PMH 要求に対する応答には以下のような共通のマークアップがあります。
上記の 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> |
<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 |
日付と時刻は、 ISO8601 を使用して一様にコード化され、プロトコル全体にわたり UTC で表記されます。時刻を加える場合は、必ず特殊な UTC 指示符号 ("Z") を使用します(must)。UTC には日付の意味が含まれますが、タイムゾーンの指示符号は指定されません。たとえば、 1957-03-20T20:30:00Z は UTC 1957年3月20日 PM 8:30:00 です。UTCdatetime は以下のセクションに説明する方法で、プロトコル要求とプロトコル応答のいずれにも使用されます。
ListIdentifiers と ListRecords の要求で任意の引数 from および until の値として使用される日付スタンプは ISO8601 でコード化され、UTC で表記されます。これらの引数は、 日付スタンプによる選択的ハーベスティングを指定する場合に使用するもので、ISO8601 に定められた単位 "完全な日付" および "完全な日付プラス時間、分、秒" をサポートしています。正しいフォーマットは、YYYY-MM-DD と YYYY-MM-DDThh:mm:ssZ です。両方の引数とも必ず同じ単位にします(must)。すべてのリポジトリは必ず、 YYYY-MM-DD をサポートします(must)。YYYY-MM-DDThh:mm:ssZ をサポートするリポジトリは、Identify 応答においてその旨を表示します(should)。ハーベスタ による要求が、リポジトリによってサポートされている単位より細かい場合は、エラーになります(must)。
日付スタンプは、ListIdentifiers、 GetRecord 、 ListRecords の各要求に対する応答に返されるレコードのヘッダに表示されます。 この日付スタンプは ISO8601 でコード化され、UTCで表記されます。これらは、リポジトリによってサポートされる最も細かい単位で表記される必要があります(must)。日付スタンプの値は必ず、日付スタンプによる選択的ハーベスティングの規則に準拠します。
各プロトコル応答には responseDate 要素が含まれ、その要素は必ず UTC による応答の時刻および日付となります(must)。この要素は、 ISO8601 の変数 "完全な日付プラス時間、分、秒" を使用してコード化されます。このフォーマットは YYYY-MM-DDThh:mm:ssZ です。
プロトコル応答の resumptionToken には、 任意の引数 expirationDate を含めても構いません(may)。この引数は UTC で表現され、 ISO8601 の変数 "完全な日付プラス時間、分、秒" を使用してコード化されます。このフォーマットは YYYY-MM-DDThh:mm:ssZ です。
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 などの一般的メタデータフォーマットのインスタンスドキュメントについては、添付書『実装ガイドライン』をご覧ください。
OAI-PMH 要求の多くは、個々のエンティティの リスト を返します。たとえば、 ListRecords はレコードのリストを、ListIdentifiers はヘッダのリストを、 ListSets は セットのリストを、それぞれ返します。 これらの要求はまとめて リスト要求 といいます。リストサイズが大きい場合は、要求や応答を分割すると便利です。分割は以下のように行います。
フローコントロールと resumptionToken の詳細は下記のとおりです。
以下の任意の属性は、 resumptionToken 自体とともに resumptionToken 要素の一部に含めても構いません(may)。
以下の例は、完全リストが175件のレコードからなり、リポジトリが1回の応答でレコードを 100 件だけ返すという、一連の ListRecords 要求を示したものです。
このフローコントロールと HTTP トランスポート層の機能が連携したメカニズムには、リポジトリがデータ収集インタフェースの 許容可能な使用方針 を実行するための基本ツールが用意されています。 OAI-PMH を実装するコミュニティによっては、リポジトリのデータ収集インタフェースまたはリポジトリから収集されたメタデータについての許容可能な使用方針を実行するため、このツールの拡張が必要な場合もあります。こうした追加方針の実行は、OAI-PMH の範囲外です。
リポジトリは resumptionTokens を実行する場合、必ず、ハーベスタが最新の resumptionToken でリスト要求を再発行することにより不完全リストの要求シーケンスを再開する方法で行います(must)。これはハーベスタがネットワークやその他のエラーから回復できるようにするためであり、そうしないとリスト要求シーケンスを初めからやり直す必要があります。 resumptionToken が含まれたリスト要求の再発行は、以下の2つのコンテキストのおいて行われます。
エラーまたは例外状況が発生した場合、リポジトリは必ず、応答に 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 |
from、 until、 set、 metadataPrefix の各引数の値を組み合わせた結果、空のリストとなった。 | ListIdentifiers ListRecords |
noMetadataFormats | 指定されたアイテムに入手可能なメタデータフォーマットがない。 | ListMetadataFormats |
noSetHierarchy |
リポジトリがセットをサポートしていない。 | ListSets |
以下の例は、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> |
XML スキーマは、すべての OAI-PMH 要求に対する有効な応答のフォーマットを定義します。
この verb は、あるリポジトリから個別のメタデータレコードを検索するために使用されます。必須の引数によって、レコードの要求先となるアイテムの識別子と、そのレコードに含まれるメタデータのフォーマットを指定します。 metadataPrefix によって指定されたメタデータフォーマットがそのリポジトリや指定アイテムから入手できなくなった場合、リポジトリによる削除の追跡レベルに応じて、 status 属性の値が "削除済み" のヘッダを返すことができます(may)。
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> |
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> |
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> |
この verb は、リポジトリについての情報を検索するために使用されます。返された情報の一部は、OAI-PMH の一部として必須のものです。リポジトリは Identify verb を使用して、追加記述情報を返すこともできます(may)。
なし
応答には必ず、以下の要素のインスタンスが一つ含まれます(must)。
応答には必ず、以下の要素のインスタンスが一つ以上含まれます(must)。
応答には、以下の任意の要素のインスタンスを複数含めても構いません(may)。
http://memory.loc.gov/cgi-bin/oai? verb=Identify
<?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> |
この verb は、 ListRecords の簡易版で、 records ではなくヘッダを検索します。任意の引数により、セットメンバシップや日付スタンプに応じたヘッダの選択的ハーベスティングを行うことができます。要求で指定された引数にマッチするレコードが削除されている場合、 リポジトリによる削除サポートに応じて、返されたヘッダの status 属性を "削除済み" にすることができます(may)。
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つの任意の属性がすべてあります。@ expirationDate : resumptionToken が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> |
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> |
この 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_dc と oai_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> |
この verb は、リポジトリからレコードを収集するために使用されます。任意の引数によって、セットメンバシップや日付スタンプによるレコードの選択的ハーベスティングができます。要求で指定された引数にマッチするレコードが削除されている場合、リポジトリの削除サポートに応じて、返されたヘッダの status 属性を "削除済み" にすることができます(may)。ステータスが削除済みのレコードのメタデータはなくなります。
http://an.oa.org/OAI-script? verb=ListRecords&from=1998-01-15&set=physics:hep&metadataPrefix=oai_rfc1807
注 : この応答には、oai_rfc1807 メタデータの抽出元となりうるアイテムのレコードだけが含まれます。 from、 until、 set の各引数に適合しても指定されたフォーマットを抽出できないアイテムのレコードは返されません。
<?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> |
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> |
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> |
この verb は、リポジトリのセット構成を検索するために使用するもので、選択的ハーベスティングに役立ちます。
http://an.oa.org/OAI-script? verb=ListSets
以下の応答は、 setSpec が music と video という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> |
下表は、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 & 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> |
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 のアルファバージョンをリリース。