編集者
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>
-- コーネル大学 - コンピュータサイエンス
本ドキュメントは、 Open Archives Initiative メタデータ収集プロトコル (OAI-PMH) の付録『実装ガイドライン』の一部です。
OAI 識別子フォーマットは、OAI-PMH を実装したリポジトリのアイテムに、永続リソース識別子を設定するためのものです。ここでは OAI-PMH 内の識別子に使用できるフォーマットの一例を紹介します。
oai-identifiers は、RFC1737 で定められた Uniform Resource Names (URN) です。これはリソース識別子であり、リソースロケータ (URL) ではありません。なお、ここでいう リソース とはメタデータ (アイテム) であり、メタデータで記述される "要素"
や基底オブジェクトではありません。メタデータで記述されたオブジェクトの識別子と
oai-identifier の対応関係は、本仕様書やOAI-PMHの範囲外です。基準の遵守と既存スキームへの適合については、本ドキュメントの最後に説明します。
oai-identifier 構文は、RFC 2396 で定められた "一般的絶対 URI" 構文 <scheme>:<scheme-specific-part> の制限規定です。以下の記述では、RFC 2396 と同一の表記規約ならびに digit、 alpha、alphanum、reserved、unreserved、uric の同じ定義が使用されています。
oai-identifier = scheme ":" namespace-identifier ":" local-identifier scheme = "oai" namespace-identifier = domainname-word "." domainname domainname = domainname-word [ "." domainname ] domainname-word = alpha *( alphanum | "-" ) local-identifier = 1*uric
local-identifier には uric 要素の使用が認められています。 reserved セットの文字には local-identifier コンポーネントにおける特殊な意味はないので、拡張表記は行わなくても構いません。
unreserved と reserved の各セットにない文字はすべて、(OAI-PMH 要求と同じコード化により) 拡張表記を行う必要があります(must)。unreserved と reserved の各セットにある文字は、拡張表記を行ってはいけません(must not)。 oai-identifier は必ず拡張表記を行うようにします。escaped 文字の使用が認められる唯一の目的は、リポジトリの内部識別子を oai-identifier の local-identifier 部とマップすることにあります。参考のため、 RFC 2396 による定義のコピーを以下に示します。
uric = reserved | unreserved | escaped
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
unreserved = alphanum | mark
mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
oai-identifier の escaped 文字の整合性が失われないように、 hex
進数には必ず A から F の大文字を使用します (must)。これは RFC 2396 のさらなる制限規定です。ゆえに escaped と hex の定義は以下のようになります。
escaped = "%" hex hex hex = digit | "A" | "B" | "C" | "D" | "E" | "F"
組織は必ず、各自が登録したドメイン名と一致する namespace-identifier の値を選択・保持します。なお、oai-identifier は大文字と小文字が区別されるため、必ず大文字の使用スタイルを決めて、これを一貫して使用します。一つのドメイン名に別種の大文字は使用しないようにします。
ドメイン名の登録を行うのは、oai-identifiers の追加登録を省くためです。旧バージョンの v1.0/1.1 仕様で必須とされた OAI
登録をしなくても、ドメイン名に基づく識別子があればグローバルな一意性が保たれます。
2つの oai-identifiers は、ストリングが同じであれば等価です。 oai-identifiers の3つのパーツはすべて、大文字と小文字が区別されます。 escaped 要素は、必ず拡張表記にします。 escaped 要素に使用できる(要求される)のは拡張文字だけであり、文字をそのまま使用することはできないため、意味があいまいになることはありません。
oai-identifier スキームは OAI-PMH v1.0 で導入され、OAI-PMH v1.1 でも変更されていません。このスキームは広く採用されており、既存の識別子も旧スキーマ
http://www.openarchives.org/OAI/1.1/oai-identifier.xsd を参照することで引き続き使用することができます
(may)。
新しい oai-identifier スキームを使用するには、リポジトリに以下のような変更が必要です (must)。
Identify 応答を変更して、新しいスキーマを参照します。
namespace-identifier に基づきドメイン名を決定・採用して、repository-identifier を置き換えます。
local-identifier コンポーネントは、必ず本仕様の制限文字セット (uric) を使用するようにします。これによって、local-identifier コンポーネントを生成する場合、内部識別子の拡張表記が必要になる場合もあります
(may)。
<space> と # の文字は、以前の oai-identifier スキームでは使用しましたが、local-identifier コンポーネントでは使用できません。
oai-identifier は、OAI-PMH 要求の引数として使用する場合、コード化を正しく行う必要があります
(must)。具体的には
local-identifier 部の escaped 文字のコロン (:)、分離記号、パーセント (%) 記号は、 URL コード化を行います
(must)。たとえば、oai-identifier oai:an.oai.org:ab%3Ccd であれば、OAI-PMH 要求で identifier=oai%3Aan.oai.org%3Aab%253Ccd とコード化します。したがって oai-identifier の作成元である内部識別子の文字は、URL コード化を2回施されることになります。最初は
oai-identifier を作成するとき、次は URL に oai-identifier を表記するときです。URL をデコードすると oai-identifier に戻ります。
次の oai-identifier 識別子は有効です。
oai:arXiv.org:hep-th/9901001
oai:foo.org:some-local-id-53
oai:FOO.ORG:some-local-id-53 ; 上記と同じではありません。
; foo.org _and_ FOO.ORG は使用しません。
oai:foo.org:some-local-id-54
oai:foo.org:Some-Local-Id-54 ; 上記と同じではありません。別の識別子です。
oai:wibble.org:ab%20cd ; 内部識別子のスペースが正しく拡張表記されています。
oai:wibble.org:ab?cd ; クエスチョンマークは拡張されません。
次の oai-identifier 識別子は有効ではありません。
something:arXiv.org:hep-th/9901001 ;誤ったスキーム oai:999:abc123 ; namespace-identifier は数字で始めてはなりません。 oai:wibble:abc123 ; namespace-identifier は必ずドメイン名にします。 oai:wibble.org:ab cd ; スペースは使用できません (%20 と拡張表記する必要があります)。 oai:wibble.org:ab#cd ; # は使用できません。 oai:wibble.org:ab<cd ; < は使用できません。 oai:wibble.org:ab%3ccd ; < の拡張表記は %3c ではなく %3C とします。
description コンテナの XML スキーマ次の XML スキーマ (oai-identifier.xsd) は、Identify 応答で description コンテナのフォーマットを定義しるため、リポジトリが oai-identifier フォーマットに準拠していると分かります。
レコードの固有識別子の OAI フォーマットを共有するリポジトリの
|
<schema targetNamespace="http://www.openarchives.org/OAI/2.0/oai-identifier"
xmlns:oai-identifier="http://www.openarchives.org/OAI/2.0/oai-identifier"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<annotation>
<documentation>
Schema for description section of Identify reply of OAI-PMH v2.0.
For repositories that comply with the oai format for unique identifiers
for items records.
See: http://www.openarchives.org/OAI/2.0/guidelines-oai-identifier.htm
Validated with http://www.w3.org/2001/03/webdata/xsv on 16May2002
Simeon Warner $Date: 2002/06/21 20:14:34 $
</documentation>
</annotation>
<element name="oai-identifier" type="oai-identifier:oai-identifierType"/>
<complexType name="oai-identifierType">
<sequence>
<element name="scheme" minOccurs="1" maxOccurs="1"
type="string" fixed="oai"/>
<element name="repositoryIdentifier" minOccurs="1" maxOccurs="1"
type="oai-identifier:repositoryIdentifierType"/>
<element name="delimiter" minOccurs="1" maxOccurs="1"
type="string" fixed=":"/>
<element name="sampleIdentifier" minOccurs="1" maxOccurs="1"
type="oai-identifier:sampleIdentifierType"/>
</sequence>
</complexType>
<simpleType name="repositoryIdentifierType">
<restriction base="string">
<pattern value="[a-zA-Z][a-zA-Z0-9\-]*(\.[a-zA-Z][a-zA-Z0-9\-]+)+"/>
</restriction>
</simpleType>
<simpleType name="sampleIdentifierType">
<restriction base="string">
<pattern
value="oai:[a-zA-Z][a-zA-Z0-9\-]*(\.[a-zA-Z][a-zA-Z0-9\-]+)+:[a-zA-Z0-9\-_\.!~\*'\(\);/\?:@&=\+$,%]+"/>
<!--meta ., \, ?, *, +, {, } (, ), [ or ] -->
</restriction>
</simpleType>
</schema>
|
| 本スキーマの入手先 http://www.openarchives.org/OAI/2.0/oai-identifier.xsd |
以下の例は、ゼロ以上の <description> コンテナが含まれる Identify 応答の抜粋です。
<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>bespa.org</repositoryIdentifier>
<delimiter>:</delimiter>
<sampleIdentifier>oai:bespa.org:medi99-123</sampleIdentifier>
</oai-identifier>
</description>
|
<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>oai-stuff.foo.org</repositoryIdentifier>
<delimiter>:</delimiter>
<sampleIdentifier>oai:oai-stuff.foo.org:5324</sampleIdentifier>
</oai-identifier>
</description>
|
次の2つのセクションでは、oai-identifier がどのように RFC1737 で定められた URN スキームの要件に準拠するかを説明します。
oai-identifiers は、2つの等価な oai-identifiers はどこでも同じ意味をもつ (同一のメタデータアイテムを識別する) という意味で、グローバルなスコープをもちます。oai-identifier は、別のメタデータアイテムには割り当てません。重複の探知に役立つように、同一のメタデータアイテムには
oai-identifier が複数ないようにします。これは、同一の基底リソースを表すメタデータアイテム(すなわち
oai-identifier)は1つしかないという意味ではありません。oai-identifiers は永続するようにします。つまり、oai-identifiers はグローバルな一意性を維持し、アイテムは同一の oai-identifiers を保持するものとします (これは RFC1737よりかなり弱い規定です) 。oai-identifiers の使用は、構文に限定しません。 namespace-identifier と local-identifier の2つのパートに分離すると、URI スキームと同じようにスケーラビリティが確実なものとなります。oai-identifiers の改訂は、 OAI-PMH バージョン 1.0 および 1.1 向けに作成された既存の oai-identifiers に適合していません。リポジトリではまだ以前のスキームを使用できます。これについては
"後方互換性" を参照してください。oai-identifier スキームは、 namespace-identifier と local-identifier のモデル向けです。 local-identifier の構文は未定義で、拡張に利用しても構いませんが、その他の構文は利用できません。
namespace-identifier 構文の拡張や新たな URIスキームの策定を行えば、さらに複雑なスキームでもサポートすることができます
(OAI-PMH では、任意の URI を識別子として使用できます) (これは RFC1737 よりかなり弱い規定です)。oai-identifiers は、リポジトリ内でメタデータアイテムの識別子として使用するものです。相互に連関するリポジトリとハーベスタがセットとなったコンテキストと無関係に使用するものではありません。
oai-identifiers の取得元となったリポジトリが分かれば、(OAI-PMH インタフェースが使用可能であれば)、アイテムのステータスを取得して、それからメタデータを抽出することはできます。総合的な解決スキームの提案や想定はなされません。そのようなスキームにすると、登録データベースの追加が必要となるからです
(これは RFC1737 よりかなり弱い規定です)。oai-identifiers は、人が使用するためではなく、OAI-PMH 専用に設計されています。したがって、テキストや電子メールなどのプレゼンテーションは重要ではありません。そのため、要件のコード化は
RFC1737 の規定よりかなりシンプルです。
oai-identifier の記述方法は一つに限ります。
oai-identifiers を比較するアルゴリズムは、シンプルでローカルなものとします。
oai-identifiers は変更せずに、一般的なインターネットプロトコル(HTTP など)によって、一般的なコード化方式
(XML、RDF など)を使用して、転送できるものとします。
oai-identifiers は解析しやすいものとします。
oai-identifiers は、コンピュータプログラム内で送信や管理の利便性を図るため、短くします。
OAI-PMH の策定およびその他の Open Archives Initiative の活動に対して、デジタル図書館連盟とネットワーク情報連合、そして全米科学財団(Grant No. IIS-9817416)からご支援をいただきました。 OAI-PMH バージョン 2.0 の策定で多大なご協力をいただいた個人の皆様に、プロトコルドキュメントにおいて感謝の意を表します。
2002-06-14: OAI-PMH バージョン 2.0 のリリースに合わせて本ドキュメントをリリース
2002-06-21: スキーマの scheme と delimiter の各要素にタイプ定義を追加