OAI logo

Open Archives Initiative メタデータ・ハーベスティング・プロトコル実装ガイドライン

- OAI 識別子フォーマットの仕様と XML スキーマ

プロトコル バージョン 2.0 (2002-06-14)
ドキュメント バージョン (2002/06/21T21:48:00Z)
http://www.openarchives.org/OAI/2.0/guidelines-oai-identifier.htm

編集者

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 識別子フォーマットの仕様と XML スキーマ

1. はじめに

OAI 識別子フォーマットは、OAI-PMH を実装したリポジトリのアイテムに、永続リソース識別子を設定するためのものです。ここでは OAI-PMH 内の識別子に使用できるフォーマットの一例を紹介します。

oai-identifiers は、RFC1737 で定められた Uniform Resource Names (URN) です。これはリソース識別子であり、リソースロケータ (URL) ではありません。なお、ここでいう リソース とはメタデータ (アイテム) であり、メタデータで記述される "要素" や基底オブジェクトではありません。メタデータで記述されたオブジェクトの識別子と oai-identifier の対応関係は、本仕様書やOAI-PMHの範囲外です。基準の遵守と既存スキームへの適合については、本ドキュメントの最後に説明します。

2. 内容記述

2.1 構文

oai-identifier 構文は、RFC 2396 で定められた "一般的絶対 URI" 構文 <scheme>:<scheme-specific-part> の制限規定です。以下の記述では、RFC 2396 と同一の表記規約ならびに digitalphaalphanumreservedunreserveduric の同じ定義が使用されています。

  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 コンポーネントにおける特殊な意味はないので、拡張表記は行わなくても構いません。 unreservedreserved の各セットにない文字はすべて、(OAI-PMH 要求と同じコード化により) 拡張表記を行う必要があります(must)unreservedreserved の各セットにある文字は、拡張表記を行ってはいけません(must not)oai-identifier は必ず拡張表記を行うようにします。escaped 文字の使用が認められる唯一の目的は、リポジトリの内部識別子を oai-identifierlocal-identifier 部とマップすることにあります。参考のため、 RFC 2396 による定義のコピーを以下に示します。

  uric        = reserved | unreserved | escaped
  reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
  unreserved  = alphanum | mark
  mark        = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"

oai-identifierescaped 文字の整合性が失われないように、 hex 進数には必ず A から F の大文字を使用します (must)。これは RFC 2396 のさらなる制限規定です。ゆえに escapedhex の定義は以下のようになります。

  escaped     = "%" hex hex
  hex         = digit | "A" | "B" | "C" | "D" | "E" | "F"

2.2 名前空間の識別子

組織は必ず、各自が登録したドメイン名と一致する namespace-identifier の値を選択・保持します。なお、oai-identifier は大文字と小文字が区別されるため、必ず大文字の使用スタイルを決めて、これを一貫して使用します。一つのドメイン名に別種の大文字は使用しないようにします。

ドメイン名の登録を行うのは、oai-identifiers の追加登録を省くためです。旧バージョンの v1.0/1.1 仕様で必須とされた OAI 登録をしなくても、ドメイン名に基づく識別子があればグローバルな一意性が保たれます。

2.3 等価

2つの oai-identifiers は、ストリングが同じであれば等価です。 oai-identifiers の3つのパーツはすべて、大文字と小文字が区別されます。 escaped 要素は、必ず拡張表記にします。 escaped 要素に使用できる(要求される)のは拡張文字だけであり、文字をそのまま使用することはできないため、意味があいまいになることはありません。

2.4 後方互換性

oai-identifier スキームは OAI-PMH v1.0 で導入され、OAI-PMH v1.1 でも変更されていません。このスキームは広く採用されており、既存の識別子も旧スキーマ http://www.openarchives.org/OAI/1.1/oai-identifier.xsd を参照することで引き続き使用することができます (may)

新しい oai-identifier スキームを使用するには、リポジトリに以下のような変更が必要です (must)

2.5 OAI-PMH 要求の引数の用法

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 に戻ります。

2.6 例

次の 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 とします。

3. description コンテナの XML スキーマ

次の XML スキーマ (oai-identifier.xsd) は、Identify 応答で description コンテナのフォーマットを定義しるため、リポジトリが oai-identifier フォーマットに準拠していると分かります。

レコードの固有識別子の OAI フォーマットを共有するリポジトリの description

<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\-_\.!~\*&apos;\(\);/\?:@&=\+$,%]+"/>

<!--meta ., \, ?, *, +, {, } (, ), [ or ] -->
    </restriction>
  </simpleType>

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

3.1 例

以下の例は、ゼロ以上の <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>

4. 基準の遵守と既存スキームへの適合

次の2つのセクションでは、oai-identifier がどのように RFC1737 で定められた URN スキームの要件に準拠するかを説明します。

4.1 機能的要件

4.2 要件のコード化

oai-identifiers は、人が使用するためではなく、OAI-PMH 専用に設計されています。したがって、テキストや電子メールなどのプレゼンテーションは重要ではありません。そのため、要件のコード化は RFC1737 の規定よりかなりシンプルです。

謝辞

OAI-PMH の策定およびその他の Open Archives Initiative の活動に対して、デジタル図書館連盟ネットワーク情報連合、そして全米科学財団(Grant No. IIS-9817416)からご支援をいただきました。 OAI-PMH バージョン 2.0 の策定で多大なご協力をいただいた個人の皆様に、プロトコルドキュメントにおいて感謝の意を表します

ドキュメント履歴

2002-06-14: OAI-PMH バージョン 2.0 のリリースに合わせて本ドキュメントをリリース
2002-06-21: スキーマの schemedelimiter の各要素にタイプ定義を追加