編者
OAI役員:
Herbert Van de Sompel <herbertv@lanl.gov> --
ロスアラモス国立研究所 - 研究図書館
Carl Lagoze <lagoze@cs.cornell.edu> --
コーネル大学 - コンピュータ情報科学
OAI技術委員会委員:
Michael Nelson <mln@cs.odu.edu> --
オールドドミニオン大学 - コンピュータサイエンス学科
Simeon Warner <simeon@cs.cornell.edu> --
コーネル大学 - コンピュータ情報科学
貢献者:
Patrick Hochstenbach <hochsten@lanl.gov> --
ロスアラモス国立研究所 - 研究図書館
Henry Jerez <hjerez@lanl.gov> --
ロスアラモス国立研究所 - 研究図書館
本ドキュメントは Open Archives Initiative メタデータハーベスティングプロトコル (OAI-PMH) の付録 「実装ガイドライン」 の一部です。
1. はじめに
2. 概念と定義
3. 静的リポジトリに関する記述
3.1 静的リポジトリの概要
3.2 静的リポジトリ適合規則
3.3 静的リポジトリゲートウェイによる中継開始
3.4 静的リポジトリゲートウェイによる中継終了
3.5 静的リポジトリの稼動確認アクセス
3.6 静的リポジトリの例
4. 静的リポジトリゲートウェイに関する記述
4.1 静的リポジトリの中継開始
4.2 静的リポジトリの中継終了
4.2.1 リクエストによる中継終了
4.2.2 一方的な中継終了
4.3 静的リポジトリの中継処理
4.4 静的リポジトリゲートウェイに対するOAI-PMHに関する補足的問題
4.4.1 静的リポジトリゲートウェイにより返される OAI-PMH Identify レスポンスの内容
4.4.2 静的リポジトリゲートウェイのフローコントロール
4.5 セキュリティについて
A1. XMLスキーマ
A1.1 静的リポジトリXMLスキーマ
A1.2 制限付きOAI-PMH XMLスキーマ
謝辞
ドキュメント履歴
本ドキュメントを理解するためにはOAI-PMH の知識が必要です。
ここで紹介する静的リポジトリは比較的変更が少ない小規模のメタレコードコレクションを OAI-PMH により公開する簡単な方法を提供します。静的リポジトリは 以下のような組織を対象としています。
静的リポジトリは永続的なHTTP URLでアクセス可能なXMLファイルです。XMLファイルはメタデータレコードとリポジトリ情報を持ちます。
静的リポジトリは中継者となる1つの静的リポジトリゲートウェイを介してOAI-PMHでアクセス可能になります。各静的リポジトリの中継者を1つの 静的リポジトリゲートウェイに制限するのは、複数のゲートウェイが1つのリポジトリを中継した場合に考えられるメタデータレコードの重複を減少させるためです。 静的リポジトリゲートウェイはXMLの形で提供される静的リポジトリのメタデータレコードとリポジトリ情報を使って、その情報にアクセスする6つのOAI-PMHリクエストを 処理します。静的リポジトリゲートウェイは各静的リポジトリに固有の静的リポジトリベースURLを割り当てるので、ハーベスターは他の OAI-PMHリポジトリとまったく同じ方法で静的リポジトリにアクセスできます
静的リポジトリと静的リポジトリゲートウェイおよびハーベスタの関係を下の図に示しました。静的リポジトリと静的リポジトリゲートウェイについては これから説明します。静的リポジトリのみに関心のある方は静的リポジトリゲートウェイについて説明した4章はとばしても構いません。
静的リポジトリと静的リポジトリゲートウェイおよびOAI-PMHハーベスタ |
---|
![]() |
本仕様を理解するために基本となる概念は次の通りです。
静的リポジトリ: 静的リポジトリとは、ある永続的なHTTP URLをアクセスポイントとする3.2節で述べる適合規則に従う1つのXMLファイルです。 静的リポジトリはメタデータレコードとリポジトリ情報を持ちます。リポジトリ情報はメタデータを静的リポジトリゲートウェイを介してOAI-PMHにより収集するために必要となります。 静的リポジトリはOAI-PMHリポジトリではありません。なぜなら、静的リポジトリは ファイルであり、6つのOAI-PMHリクエストを処理できるサーバではないから です。
静的リポジトリURL: 静的リポジトリのアクセスポイントとなるHTTP URLです。
静的リポジトリゲートウェイ: 静的リポジトリゲートウェイは、1つ以上の静的リポジトリに中継機能を提供します。静的リポジトリゲートウェイは、各静的リポジトリに 固有の静的リポジトリベースURLを割り当てます。このベースURLの接頭辞にはすべて、共通の静的リポジトリゲートウェイURLが 付きます。このベースURLにより各静的リポジトリは別個のOAI-PMHリポジトリと して公開されます
静的リポジトリゲートウェイURL: 静的リポジトリゲートウェイのHTTP URLです。ゲートウェイが中継するすべての静的リポジトリのベースURLに 共通の接頭辞となります。
中継: 静的リポジトリゲートウェイと1つ以上の静的リポジトリの関係であり、静的リポジトリゲートウェイが配下の静的リポジトリへのOAI-PMHアクセスを可能とするものです。この中継はハーベスタには隠されています。つまり、実際は静的リポジトリゲートウェイで処理されるのですが、ハーベスタはOAI-PMHリクエストを目的とする静的リポジトリを表す静的リポジトリベースURLに送ることになります。
静的リポジトリベースURL: 静的リポジトリのコンテンツを静的リポジトリゲートウェイによる中継を介してOAI-PMHでアクセスするための ベースURLです。この静的リポジトリベースURLは以下の要素をつなげたものです。
http://gateway:port/gatewaypath
/
] 。 静的リポジトリゲートウェイURLがスラッシュで終わっている場合はこのスラッシュを追加しては
いけません。 http://host:port/path/file
のような形でなければなりませんが、URIスキームを表す
接頭辞の部分(http://
)は取り除きます。したがって、host:port/path/file
のような形になります。 たとえば、http://gateway.institution.org/oai
にある静的リポジトリゲートウェイを中継者とする
http://an.oai.org/ma/mini.xml
の静的リポジトリへのOAI-PMHリクエストは次の静的リポジトリベースURLに対して
発行しなければなりません。
http://gateway.institution.org/oai/an.oai.org/ma/mini.xml
静的リポジトリは小規模で比較的変更の少ないメタデータコレクションに向いています。メタデータと識別子、日付スタンプはすべて1つのXMLファイルで管理されます。 このXMLファイルは3.2節で述べる適合規則に従わなければなりません。このXMLファイルはXML編集ツールやテキスト編集ソフトを使って 手書きで作成することもできますし、既存のデータベースから情報を抽出するプログラムを書いて定期的に作成することもできるでしょう。
静的リポジトリは、唯一つの静的リポジトリURLによってのみアクセスされるものでなければなりません。これは次のような形をした HTTP URLでなければなりません。
http://host:port/path/file
HTTP URLには余分な断片やクエリ文字列を含んでいてはいけません。静的リポジトリの内容は、メタデータレコードと
静的リポジトリゲートウェイによる中継に必要なリポジトリ情報です。静的リポジトリには標準的なOAI-PMHリポジトリに比べて
多くの制約があります。静的リポジトリは、セット、
削除レコード、
応答圧縮、YYYY-MM-DD
以外の
日付単位、および
resumptionTokens
をサポートしません。
静的リポジトリは以下の適合規則に従わなければなりません。
text/xml
でなければなりません。baseURL
要素の値は、静的リポジトリゲートウェイを介して利用可能な静的リポジトリを指す静的リポジトリベースURL
に一致しなければなりません。3.3節ではこのベースURLの構成と静的リポジトリゲートウェイによる中継を開始する過程について
記述します。 ListRecords
要素内のメタデータレコードの内容は
OAI-PMHレコードフォーマットに従わなければなりません。 setSpec
要素があってはいけません。headers
要素にstatus
属性があってはいけません。Identify
パートにはcompression
要素があってはいけません。YYYY-MM-DD
の粒度で表現しなければなりません。これは、granularity
要素による
日付単位として指定されなければなりません。
resumptionToken
要素を含んでいてはいけません。静的リポジトリのメタデータレコードに使用する識別子はRFC1737で示されている要件を満たすために OAI識別子ガイドラインあるいはその他のURN(Uniform Resource Names)の形式に 従うことを強く推奨します。そうすれば収集したメタデータレコードの重複を簡単に見つけることができるようになります。
静的リポジトリに対するOAI-PMHアクセスは静的リポジトリゲートウェイによる中継を介してのみ可能です。この中継を開始するために静的リポジトリの管理者はまず 中継者として作動する静的リポジトリゲートウェイを1つ選択しなければなりません。そして、次の形式のHTTP GETリクエストを発行しなければなりません。
<静的リポジトリゲートウェイURL>?initiate=<静的リポジトリURL>
たとえば、 静的リポジトリURLがhttp://an.oai.org/ma/mini.xml
の静的リポジトリの管理者が、
静的リポジトリゲートウェイURLがhttp://gateway.institution.org/oai
の静的リポジトリゲートウェイに中継を要求する場合は、
次のHTTP GETリクエストを発行しなければなりません。:
http://gateway.institution.org/oai?initiate=http://an.oai.org/ma/mini.xml
中継開始にこれ以外の処理が必要かどうか、また、このリクエストが発行されてから実際に静的リポジトリゲートウェイによる中継が始まるまでの時間は、ゲートウェイの 運営方針や実装によります。たとえば、静的リポジトリゲートウェイは、ゲートウェイ管理者を介して中継を開始する前に電子メールを交換する必要があるという方針を持つことが できます。静的リポジトリゲートウェイの管理者は静的リポジトリの稼動確認アクセスに関する指示に従い、中継開始の試みが成功するか否かをチェックするべきです。
静的リポジトリゲートウェイによる中継を終了させるには、静的リポジトリの管理者はまず静的リポジトリURLから静的リポジトリを削除するか、
baseURL
要素を変更して、静的リポジトリベースURLと一致しないようにします。次に管理者は次のHTTP GETリクエストを
発行しなければなりません。
<静的リポジトリゲートウェイURL>?terminate=<静的リポジトリURL>
たとえば、 静的リポジトリURLがhttp://an.oai.org/ma/mini.xml
の静的リポジトリの管理者が、
静的リポジトリゲートウェイURLがhttp://gateway.institution.org/oai
の静的リポジトリゲートウェイによる中継の終了を要求する場合は、
次のHTTP GETリクエストを発行しなければなりません。:
http://gateway.institution.org/oai?terminate=http://an.oai.org/ma/mini.xml
静的リポジトリゲートウェイは以下の規則に従って終了リクエストに応答します。
baseURL
要素がもはや静的リポジトリベースURLに一致しなくなった場合は、直ちに中継を終了するべきです。baseURL
要素がまだ静的リポジトリベースURLに一致する場合は、中継終了リクエストを無視しなければなりません。中継終了にこれ以外の処理が必要かどうか、また、このリクエストが発行されてから実際に中継が終了するまでの時間は、静的リポジトリゲートウェイの 運営方針や実装によります。静的リポジトリゲートウェイの管理者は静的リポジトリの稼動確認アクセスに関する指示に従い、中継終了の試みが成功するか否かをチェックするべきです。
静的リポジトリの管理者はリポジトリへのアクセスが1つの静的リポジトリゲートウェイの中継に依存していることを承知しているべきです。
静的リポジトリ適合規則は、静的リポジトリのbaseURL
要素と、静的リポジトリゲートウェイの中継によって利用可能となる
静的リポジトリベースURLとが一致することを要求することにより、2つ以上の静的リポジトリゲートウェイによる中継を禁止しています。
管理者は次のタイミングでしかるべき静的リポジトリベースURLに対しOAI-PMHのIdentifyリクエストを発行して中継が正常に行われているか否かをチェックすることを推奨します
このIdentifyリクエストに対するレスポンスは以下のいずれかになります。
Status-Code
が"200 (OK)
"で、Identifyレスポンスを含むHTTPレスポンス。IdentifyレスポンスのbaseURL
要素は静的リポジトリのbaseURL
要素に一致します。このレスポンスは中継が成功したことを示しています。 Status-Code
が"502 (Bad Gateway)
"のHTTPレスポンス。このレスポンスは中継が拒絶されたか終了したことを示しています。その理由は、静的リポジトリが静的リポジトリ適合規則に従っていないか、たとえば静的リポジトリゲートウェイの運営方針に合致しないなどの何か他の理由です。レスポンスには、拒絶や終了の理由を人間が読んでわかる形で示したReason-Phrase
が含まれている場合もあります。Status-Code
が "503 (Service unavailable)
"で、Retry-After
ヘッダに期限が指定されているHTTPレスポンス。このレスポンスはゲートウェイが中継の開始を遅らせていることを示しています。ゲートウェイが他の処理で忙しいか、静的リポジトリが以前に依頼した中継の開始処理を実行するために遅らせているかでしょう。静的リポジトリの管理者はRetry-After
で示された期間待ってから、OAI-PMHのIdentifyリクエストを再発行して静的リポジトリゲートウェイが中継をしているかどうかを調べるべきです。 以下に静的リポジトリの例を示しました。ご覧の通り、この例は次の要素を含んでいます。
Identify
要素。子要素baseURL
の内容は静的リポジトリベースURLです。このURLで選択されている静的リポジトリ
ゲートウェイがこの静的リポジトリをOAI-PMHでアクセス可能にします。 ListMetadataFormats
要素。この要素の内容から、この例では、metadataPrefix
がoai_dc
とoai_rfc1807
である
2つのメタデータフォーマットをサポートしていることがわかります。ListRecords
要素。各ListRecords要素のmetadataPrefix
属性を見ればわかるように、最初のListRecords
要素はすべて
oai_dc
フォーマットのメタデータレコードを含み、2番目のListRecords要素はすべてoai_rfc1807
フォーマットのメタデータレコードを含んでいます。静的リポジトリの例 |
---|
<?xml version="1.0" encoding="UTF-8"?> <Repository xmlns="http://www.openarchives.org/OAI/2.0/static-repository" xmlns:oai="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/static-repository http://www.openarchives.org/OAI/2.0/static-repository.xsd"> <Identify> <oai:repositoryName>Demo repository</oai:repositoryName> <oai:baseURL>http://gateway.institution.org/oai/an.oai.org/ma/mini.xml</oai:baseURL> <oai:protocolVersion>2.0</oai:protocolVersion> <oai:adminEmail>jondoe@oai.org</oai:adminEmail> <oai:earliestDatestamp>2002-09-19</oai:earliestDatestamp> <oai:deletedRecord>no</oai:deletedRecord> <oai:granularity>YYYY-MM-DD</oai:granularity> </Identify> <ListMetadataFormats> <oai:metadataFormat> <oai:metadataPrefix>oai_dc</oai:metadataPrefix> <oai:schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</oai:schema> <oai:metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</oai:metadataNamespace> </oai:metadataFormat> <oai:metadataFormat> <oai:metadataPrefix>oai_rfc1807</oai:metadataPrefix> <oai:schema>http://www.openarchives.org/OAI/1.1/rfc1807.xsd</oai:schema> <oai:metadataNamespace>http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1807.txt</oai:metadataNamespace> </oai:metadataFormat> </ListMetadataFormats> <ListRecords metadataPrefix="oai_dc"> <oai:record> <oai:header> <oai:identifier>oai:arXiv:cs/0112017</oai:identifier> <oai:datestamp>2001-12-14</oai:datestamp> </oai:header> <oai: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> </oai:metadata> </oai:record> <oai:record> <oai:header> <oai:identifier>oai:perseus:Perseus:text:1999.02.0084</oai:identifier> <oai:datestamp>2002-05-01</oai:datestamp> </oai:header> <oai: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:identifier>http://www.perseus.tufts.edu/cgi-bin/ptext? doc=Perseus:text:1999.02.0083</dc:identifier> </oai_dc:dc> </oai:metadata> </oai:record> </ListRecords> <ListRecords metadataPrefix="oai_rfc1807"> <oai:record> <oai:header> <oai:identifier>oai:arXiv:cs/0112017</oai:identifier> <oai:datestamp>2001-12-14</oai:datestamp> </oai:header> <oai: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>cs/0112017</id> <entry>December 23, 2001</entry> <title>Using Structural Metadata to Localize Experience of Digital Content</title> <author>Naomi Dushay</author> <date>December 14, 2001</date> </rfc1807> </oai:metadata> <oai: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> </oai:about> </oai:record> </ListRecords> </Repository> |
注: 静的リポジトリにしか関心のない方はこの章をとばしても構いません。
静的リポジトリゲートウェイは1つ以上の静的リポジトリに中継機能を提供します。ゲートウェイが中継する各静的リポジトリの
OAI-PMH ベースURLは一意ですが、共通の接頭辞として
静的リポジトリゲートウェイURLを持ちます。メタデータレコードの過度の重複を防ぐために、静的リポジトリゲートウェイは
OAI-PMHリクエストに含まれている 静的リポジトリベースURLが目的の静的リポジトリのbaseURL
要素の値と一致しない場合は、そのリクエストを処理してはいけません。静的リポジトリゲートウェイは静的リポジトリにあるメタデータを変更してはいけません。下流のサービスとしてメタデータの
変更、補強、クロスウォークが考えられますが、静的リポジトリゲートウェイの目的は
静的リポジトリを中継することだけです。
静的リポジトリゲートウェイの実装には3つの側面があります。
本ドキュメントの3.3節では静的リポジトリの管理者がどのようにして単一の静的リポジトリゲートウェイによる中継を開始するかを記述しています。 本節では静的リポジトリゲートウェイ側からこの過程を記述します。
静的リポジトリゲートウェイは次の形のHTTP GETリクエストを処理しなければなりません。
<静的リポジトリゲートウェイURL>?initiate=<静的リポジトリURL>
静的リポジトリゲートウェイはこのリクエストを受けてから実際に中継者として作動するまでの間に、任意の運営方針や処理を実装することができます。この処理には OAI-PMHでは対象外のユーザの認証と承認のような付加的な処理が考えられます。
静的リポジトリの中継は、静的リポジトリ管理者からのリクエストにより、あるいは、静的リポジトリゲートウェイにより一方的に終了することができます。
本ドキュメントの3.4節では静的リポジトリの管理者がどのようにして単一の静的リポジトリゲートウェイによる中継を終了するかを記述しています。 本節では静的リポジトリゲートウェイ側からこの過程を記述します。
静的リポジトリゲートウェイは次の形のHTTP GETリクエストを処理しなければなりません。
<静的リポジトリゲートウェイURL>?terminate=<静的リポジトリURL>
このようなリクエストを受けたら、静的リポジトリゲートウェイは静的リポジトリを読み込んで、次の規則に従わなければなりません。
baseURL
要素がもはや静的リポジトリベースURLに一致しなくなった場合は、直ちに中継を終了するべきです。baseURL
要素がまだ静的リポジトリベースURLに一致する場合は、中継終了リクエストを無視しなければなりません。終了に関しては静的リポジトリの管理者に電子メールで通知する(アドレスは静的リポジトリのadminEmail
要素から知ることができます)ことを推奨します。
静的リポジトリゲートウェイはいつでも中継を一方的に終了することができます。この終了の理由としては以下のようなものがあげられます。
baseURL
要素の値と一致しない場合は、中継を直ちに終了することを推奨します。これは静的リポジトリが別の静的リポジトリゲートウェイで中継を開始したことを
示しているからです。 終了に関しては静的リポジトリの管理者に電子メールで通知する(アドレスは静的リポジトリのadminEmail
要素から知ることができます)ことを推奨します。
静的リポジトリゲートウェイは、いったん静的リポジトリの中継を受け付けたら、中継関係にある間は静的リポジトリベースURLに向けられた6つの OAI-PMHリクエストすべてに応答しなければなりません。
公開するメタデータの正確さを保証するために静的リポジトリゲートウェイは最新版の静的リポジトリを使用しなければなりません。静的リポジトリゲートウェイは
OAI-PMHリクエストを受付けるたびにHTTP GETリクエストを発行して、永続的な静的リポジトリURLから静的リポジトリを取り込むことでこれを
実行することができます。あるいは、静的リポジトリゲートウェイは静的リポジトリをキャッシュすることにより実行性能を最適化することもできます。後者の場合、
静的リポジトリゲートウェイはOAI-PMHリクエストに応答する前に毎回静的リポジトリURLの版次とキャッシュした静的リポジトリの版次を比べることにより
最新性のテストを行わなければなりません。このテストはキャッシュ版の静的リポジトリの日付を設定したIf-Modified-Since
ヘッダを付けたHTTP GETリクエストを
使用して行うべきです。
静的リポジトリベースURLへのOAI-PMHリクエストに対する静的リポジトリゲートウェイのレスポンスは以下のいずれかの形を取らなけらばなりません。
Status-Code
が"502 (Bad Gateway)
"のHTTPレスポンスで応答する
べきです。拒否や終了の理由は静的リポジトリが静的リポジトリ適合規則に従っていない場合や、静的リポジトリゲートウェイの運営方針に
合致しないなど何か他の理由が考えられます。レスポンスには拒否や終了の理由を人間が読んでわかる形で示すReason-Phrase
も含めることができます。 Retry-After
ヘッダに再開時間を指定したStatus-Code
が"503 (Service unavailable)
"のHTTPレスポンスで応答するべきです。静的リポジトリゲートウェイはRetry-After
時間後に発行される
中継開始を求める別のリクエストに応答するための準備をしなければなりません。 Status-Code
が"504 (Gateway Timeout)
"のHTTPレスポンスで応答しなければなりません。Status-Code
が"503 (Service
Unavailable)
"のHTTPレスポンスで応答することができます。この場合、静的リポジトリURLから静的リポジトリを取り込んでそれを確認するまでにかかる
推定時間の値をRetry-After
に指定します。Status-Code
が"502 (Bad Gateway)
"のHTTPレスポンスで応答しなければなりません。レスポンスにはリクエストの失敗の理由を人間が読んで
わかる形で示したReason-Phrase
も含めるべきです。ゲートウェイはキャッシュ版の静的リポジトリを使ってハーベスティングリクエストに応答しては
いけません。 静的リポジトリゲートウェイによるOAI-PMHの処理はOAI-PMH仕様書により規定されています。 この節ではこの仕様に関連するいくつかの問題について記述します。
静的リポジトリゲートウェイが中継する各静的リポジトリに対するIdetifyレスポンスにはgateway 記述を含めなければなりません。この記述はOAI-PMHレスポンスが静的リポジトリゲートウェイにより返されたことを明らかにします。 gateway 記述は以下の要素を含まなければなりません。
source
- 静的リポジトリURL gatewayDescription
- 値はhttp://www.openarchives.org/OAI/2.0/guidelines-static-repository.htm
でなければなりません。gatewayAdmin
- 静的リポジトリゲートウェイの管理者の電子メールアドレス。
gatewayURL
- 静的リポジトリゲートウェイURL。これは静的リポジトリゲートウェイにより割り当てられたすべての
ベースURLの一部であり、ゲートウェイによりアクセス可能となる
すべての静的リポジトリに共通です。gateway 記述には、以下を含めることもできます。
gatewayNotes
- 静的リポジトリゲートウェイの特定の実装に関する補足情報を示すURL。この要素は、利用方針やソフトウェア
バージョン、関連情報などを記述するのに使用できるでしょう。静的リポジトリが動的に発見されるように、静的リポジトリゲートウェイは中継するすべての静的リポジトリに対するIdentifyレスポンスに friends 記述を含めることができます。この記述を含める場合、 friends 記述は、静的リポジトリゲートウェイを介してハーベスト可能なすべての静的リポジトリの ベースURLのリストでなければなりません。リストにあげた 静的リポジトリの利用(不)可能性を時間をかけて追跡することなどにより、静的リポジトリゲートウェイは friends記述を定期的に更新するための方針を整備することができます。
3.6節の例で示した静的リポジトリに対して発行されたIdentifyリクエストに静的リポジトリゲートウェイURLが
http://gateway.institution.org/oai
である静的リポジトリゲートウェイが応答したレスポンスの例を以下に示しました。
baseURL
要素の内容は、静的リポジトリゲートウェイのURL(http://gateway.institution.org/oai
)と静的リポジトリURLから
接頭辞http://
を除いて得られる部分、すなわち各々an.oai.org/ma/mini.xml
、site1.org/mini/file1
、loca.org:8080/data
および univ.edu/lib/pubs.xml
を結合したものです。loca.org:8080/data
にあるコロンは妥当なbaseURL
を作成するためにURL符号化され
なければならないことに注意してください。さらに結合する文字列の間に1つのスラッシュ文字 [/
]が追加されていることにも注意してください。 静的リポジトリに対して発行された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://gateway.institution.org/oai/an.oai.org/ma/mini.xml</request> <Identify> <repositoryName>Demo repository</repositoryName> <baseURL>http://gateway.institution.org/oai/an.oai.org/ma/mini.xml</baseURL> <protocolVersion>2.0</protocolVersion> <adminEmail>jondoe@oai.org</adminEmail> <earliestDatestamp>2002-09-19</earliestDatestamp> <deletedRecord>no</deletedRecord> <granularity>YYYY-MM-DD</granularity> <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://gateway.institution.org/oai/site1.org/mini/file1</baseURL> <baseURL>http://gateway.institution.org/oai/loca.org%3A8080/data</baseURL> <baseURL>http://gateway.institution.org/oai/univ.edu/lib/pubs.xml</baseURL> </friends> </description> <description> <gateway xmlns="http://www.openarchives.org/OAI/2.0/gateway/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/gateway/ http://www.openarchives.org/OAI/2.0/gateway.xsd"> <source>http://an.oai.org/ma/mini.xml</source> <gatewayDescription>http://www.openarchives.org/OAI/2.0/guidelines-static-repository.htm</gatewayDescription> <gatewayAdmin>pat@institution.org</gatewayAdmin> <gatewayURL>http://gateway.institution.org/oai/</gatewayURL> </gateway> </description> </Identify> </OAI-PMH> |
他のOAI-PMHリポジトリ同様、静的リポジトリゲートウェイは大きなレスポンスを分割する方法として
resumptionTokens
を使用することができます。しかしながら、
resumptionToken
を持つハーベスティングリクエストに応答する前に静的リポジトリは静的リポジトリが変更されていないことを保証しなければなりません。
言い換えれば、リストリクエストシークエンスにおける一揃いの
リクエストはすべて同一の静的リポジトリコンテンツに対するものでなければなりません。これを保証するために静的リポジトリゲートウェイはリストリクエストシークエンス
の各リクエスト毎に最新性のテストを行わなければなりません。静的リポジトリゲートウェイは静的リポジトリに対するリストリクエストシーケンスの最初のリクエストの
日付をIf-Modified-Since
ヘッダに設定したHTTP GETリクエストを使ってこの最新性のテストを行うべきです。最新性のテストの結果、リストリクエスト
シークエンスの途中で静的リポジトリが変更されたことがわかった場合、静的リポジトリゲートウェイは
OAI-PMHエラー badResumptionToken
を発行しなければ
なりません。
静的リポジトリゲートウェイを運用する際には以下のセキュリティ問題に注意する必要があります。
静的リポジトリは静的リポジトリXMLスキーマに対して妥当でなければなりません。このスキーマは、OAI-PMH v.2.0の型定義を制限することにより多くの 静的リポジトリ適合規則を強制する制限付きOAI-PMH XMLスキーマを介して、OAI-PMH v.2.0名前空間から要素をインポート しています。
静的リポジトリXMLスキーマ |
---|
<?xml version="1.0" encoding="utf-8"?> <schema targetNamespace="http://www.openarchives.org/OAI/2.0/static-repository" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:sr="http://www.openarchives.org/OAI/2.0/static-repository" xmlns:oai="http://www.openarchives.org/OAI/2.0/" elementFormDefault="qualified" attributeFormDefault="unqualified"> <import namespace="http://www.openarchives.org/OAI/2.0/" schemaLocation="http://www.openarchives.org/OAI/2.0/OAI-PMH-static-repository.xsd"/> <annotation> <documentation> This XML Schema specifies the structure of an OAI-PMH Static Repository. A Static Repository is an XML file that is valid according to this XML Schema and is described in http://www.openarchives.org/OAI/2.0/guidelines-static-repository.htm A Static Repository is made accessible as an XML file on a standard web-server. No special software is required at the end of the organization that makes the Static Repository available. A Static Repository becomes harvestable via the OAI-PMH through the intermediation of a Static Repository Gateway. This Static Repository XML Schema by Herbert Van de Sompel and Henry N. Jerez (Los Alamos National Laboratory, Research Library, Digital Library Research and Prototyping Team; original 2002-10-26), and Simeon Warner (Cornell University). Inspired by the Vida work by Steven Bird for OAI-PMH v1.0 and for the Open Languages Archives Community; see http://www.language-archives.org/docs/implement.html#Vida Beta2 release: 2004-03-30 Release: 2004-04-23 $Date: 2004/04/23 15:17:46 $ </documentation> </annotation> <element name="Repository" type="sr:RepositoryType"/> <complexType name="RepositoryType"> <annotation> <documentation>The Repository element has 2 child elements, Identify and ListMetadataFormats, that are derived from the OAI-PMH v2.0 XML Schema. The third element, ListRecords, is repeatable and is an extension of the ListRecords defined in the OAI-PMH v2.0 XML Schema; it has an additional attribute indicating the metadataPrefix of the included metadata records. </documentation> </annotation> <sequence> <element name="Identify" type="oai:IdentifyType"/> <element name="ListMetadataFormats" type="oai:ListMetadataFormatsType"/> <element name="ListRecords" type="sr:ListRecordsType" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="ListRecordsType"> <annotation> <documentation>The ListRecords element contains all records with metadata expressed in one of the metadata formats supported by the Static Repository. The mandatory metadataPrefix attribute specifies the metadataPrefix of the included metadata; it must correspond with a value of the metadataPrefix element contained in the ListMetadataFormats element. </documentation> </annotation> <complexContent> <extension base="oai:ListRecordsType"> <attribute name="metadataPrefix" type="oai:metadataPrefixType" use="required"/> </extension> </complexContent> </complexType> </schema> |
このスキーマは次のURLから入手できます。 http://www.openarchives.org/OAI/2.0/static-repository.xsd |
制限付きOAI-PMH XMLスキーマ |
---|
<schema targetNamespace="http://www.openarchives.org/OAI/2.0/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:oai="http://www.openarchives.org/OAI/2.0/" elementFormDefault="qualified" attributeFormDefault="unqualified"> <annotation> <documentation>This schema restricts the contents a number of elements in the OAI-PMH v2.0 schema for use with the static repository schema: http://www.openarchives.org/OAI/2.0/static-repository.xsd All elements remain in the namespace http://www.openarchives.org/OAI/2.0/ used by OAI-PMH v2.0 and element instances accepted by these restricted definitions would be valid according to the main schema: http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd Simeon Warner (Cornell University), 2004-02-12. Release: 2004-04-23 $Date: 2004/05/11 14:40:07 $ </documentation> </annotation> <redefine schemaLocation="http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <complexType name="ListRecordsType"> <annotation> <documentation>ListRecords block restricted so that it must not include a resumptionToken element.</documentation> </annotation> <complexContent> <restriction base="oai:ListRecordsType"> <sequence> <element name="record" type="oai:recordType" maxOccurs="unbounded"/> </sequence> </restriction> </complexContent> </complexType> <complexType name="IdentifyType"> <annotation> <documentation>Identify block restricted so that it must not include a compression element. Some element types also restricted.</documentation> </annotation> <complexContent> <restriction base="oai:IdentifyType"> <sequence> <element name="repositoryName" type="string"/> <element name="baseURL" type="anyURI"/> <element name="protocolVersion" type="oai:protocolVersionType"/> <element name="adminEmail" type="oai:emailType" maxOccurs="unbounded"/> <element name="earliestDatestamp" type="oai:UTCdatetimeType"/> <element name="deletedRecord" type="oai:deletedRecordType"/> <element name="granularity" type="oai:granularityType"/> <element name="description" type="oai:descriptionType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </restriction> </complexContent> </complexType> <complexType name="recordType"> <annotation> <documentation>All records must have header and metadata. As deleted records are not supported it is not permissible to have header only.</documentation> </annotation> <complexContent> <restriction base="oai:recordType"> <sequence> <element name="header" type="oai:headerType"/> <element name="metadata" type="oai:metadataType"/> <element name="about" type="oai:aboutType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </restriction> </complexContent> </complexType> <complexType name="headerType"> <annotation> <documentation>The header element must not contain any setSpec elements or a status attribute.</documentation> </annotation> <complexContent> <restriction base="oai:headerType"> <sequence> <element name="identifier" type="oai:identifierType"/> <element name="datestamp" type="oai:UTCdatetimeType"/> </sequence> <attribute name="status" type="oai:statusType" use="prohibited"/> </restriction> </complexContent> </complexType> <simpleType name="granularityType"> <annotation> <documentation>The only granularity permitted is YYYY-MM-DD.</documentation> </annotation> <restriction base="oai:granularityType"> <enumeration value="YYYY-MM-DD"/> </restriction> </simpleType> <simpleType name="deletedRecordType"> <annotation> <documentation>As deleted records are not supported, the deletedRecord element may only have the value 'no'.</documentation> </annotation> <restriction base="oai:deletedRecordType"> <enumeration value="no"/> </restriction> </simpleType> </redefine> </schema> |
このスキーマは次のURLから入手できます。 http://www.openarchives.org/OAI/2.0/OAI-PMH-static-repository.xsd |
OAI-PMHの策定およびその他のOpen Archives Initiativeの活動に対して全米科学財団(Grant No. IIS-9817416)からご支援をいただきました。OAI-PMHバージョン2.0の策定で 多大なご協力をいただいた個人の皆様に、プロトコルドキュメントにおいて 感謝の意を表します。
この静的リポジトリの仕様は、OAI-PMHの実装を先導するコミュニティOpen Language Archives Community (OLAC)のために Steven BirdとGary Simonsが開発したViDa (Virtual Data Provider)から着想しました。Steven Bird とGary Simons の両氏には特に感謝いたします。また、有益なコメントを いただいた Pete Johnston、Tim Cole、Tom Habingの3氏にも感謝いたします。
2004-04-23: OAI静的リポジトリおよびOAI静的リポジトリゲートウェイ仕様書のリリース。
2003-10-10: ベータリリース。
2002-11-13: アルファリリース。
2002-09-28: OAIコアチームへのこのドキュメント最初のプレリリース。