編集者
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
の各要素にタイプ定義を追加