The Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH) は初め、1990年代後半に、分散型メタデータ/データリポジトリから メタデータを収集するための標準として開発された。 OAI-PMH 標準の現行バージョンは 2002年6月時点で 2.0 であり、 2008年12月に若干の改訂が行われた。
OAI-PMH 標準はトランスポート層として Hypertext Transport Protocol (HTTP) を使用し、 また 6個の問い合わせメソッド(規格では verb と呼ばれる)を 指定している。それらのメソッドは OAI-PMH 準拠のデータプロバイダ (規格ではリポジトリと呼ばれる)によってサポートされなければならない。 各メソッドは以下の通り。
OAI-PMH 準拠のデータプロバイダは HTTP GET と HTTP POST の両方から 要求を受け取らなければならない。 データプロバイダからの応答は XMLエンコード(バージョン 1.0)のストリームとして 返されなければならない。 エラー処理はデータプロバイダがサポートしなければならず、ハーベスタに 正しいエラー応答コードを返さなければならない。 全 6個の verb について詳しい規定と例は OAI-PMH standards document の第4節に書かれている。
OAI-PMH は最低でも無修飾の Dublin Core メタデータのサポートを要求する。 EML は全般的に Dublin Core よりもきめ細かいメタデータを提供するが、 両者は同じ(または類似の)要素を多く共有している。 Metacat の OAI-PMH は EML を Dublin Core に変換し、「単純」で 「無修飾」の Dublin Core を生成する。その生成物は、 OAI-PMH において metadataPrefix シンボルとして予約されている oai_dc と結合される。
以下の表は Metacat の OAI-PMH によって実行される EML から Dublin Core への 要素の写像をまとめたものである。各要素の写像ごとに注意書きを付けてある。
EML 要素 | DC 要素 | 注意書き |
---|---|---|
Title | title | |
Creator | creator | 作成者名 (givenName と surName 要素)を使用する。組織名であってもよい |
keyword | subject | keyword 要素ごとにひとつの subject 要素 |
abstract | description | テキスト整形タグは展開されなければならない |
publisher | publisher | 公開者名 (givenName と surName 要素)のみ使用する。組織名であってもよい |
associatedParty | contributor | 関係者名 (givenName と surName) のみを使用する。組織名であってもよい |
pubDate | date | 1対1 の写像 |
dataset, citation, protocol, software | type | type の値は、特定のフィールド値よりも EML 文書の種類によって来まる |
physical | format | mime type を format の値として使う? たとえば、EML の <physical> 要素内に <textFormat> 要素がある場合、format の値として ‘text/plain’ を使う? |
|
identifier | identifier 要素の値として packageId を使うことができる。 第2の identifier 要素として EML 文書の URL を使うことができる。 |
dataSource | source | 参照されているデータソースの文書 URL を使う? |
Citation | relation | 参照されている引用文献の文書 URL を使用する? |
geographicCoverage | coverage | 地理的説明および境界座標用にばらばらの coverage 要素を追加する。 境界座標については、ラベルは最小限にする。たとえば、 81.505000 W, 81.495000 W, 31.170000 N, 31.163000 N |
taxonomicCoverage | coverage | 属名/種名の二名式学名のみ使用する。各学名ごとにばらばらの coverage 要素を使用する。 |
temporalCoverage | coverage | 利用可能な期間の初めの日付と終わりの日付を入れる。たとえば 1915-01-01 to 2004-12-31 |
intellectualRights | rights | テキスト整形タグは展開しなければならない。 |
Metacat OAI-PMH は、特定のバージョンの EML を等価な Dublin Core に 変換するための XSLT スタイルシートをひと揃い持っている。
Metacat は OAI-PMH サービスのインタフェイスを 2つサポートしている。 ひとつはデータプロバイダ(またはリポジトリ)であり、 もうひとつはハーベスタサービスのインタフェイスである。
Metacat の OAI-PMH データプロバイダサービスのインタフェイスは、 全6種の OAI-PMH メソッド (GetRecord, Identify, ListIdentifiers, ListMetadataFormats, ListRecords, ListSets) をサポートしている。これは OAI-PMH バージョン2 の仕様書に定義されている 通りのもので、標準の HTTP URL を通して HTTP GET と HTTP POST 要求を 受け付ける。
Metacat の OAI-PMH データプロバイダサービスは、 Online Computer Library Center (OCLC) OAICat Open Source Software を基本実装として使用し、それに Metacat との統合を容易にするための 調整を加えて実装していた。
Metacat の OAI-PMH データプロバイダの利用者は、以下の問題に注意する べきである。
Metacat の OAI-PMH ハーベスタサービスのインタフェイスは、 OAI-PMH メソッドを利用して OAI-PMH 互換のデータプロバイダに メタデータや関連する情報を要求する。それには HTTP-GET または HTTP-POST 要求のどちらかの形式で 標準の HTTP URL を使用する。
Metacat の OAI-PMH ハーベスタクライアントは OCLC の OAIHarvester2 オープンソースコードを基本実装とし、 Metacat との統合をサポートするのに必要な調整を加えて使用している。
Metacat の OAI-PMH ハーベスタの利用者は、以下の問題に 注意するべきである。
このデータプロバイダサーブレットを設定して有効化するには、
Tomcat を停止し、Tomcat のアプリケーションディレクトリ内にある Metacat コンテクストディレクトリの Metacat プロパティファイル (metacat.properties) を編集する。 Metacat コンテクストディレクトリはそのアプリケーションの名前である (たいていは knb )。
<tomcat_app_dir>/<context_dir>/WEB-INF/metacat.properties
以下のプロバティを適切に変更する。
``oaipmh.repositoryIdentifier`` – A string that identifies this repository
``Identify.adminEmail`` – The email address of the repository administrator
配置記述ファイル (web.xml) を編集する。これも WEB-INF ディレクトリ内に ある。DataProvider サーブレットの servlet-name と servlet-mapping の項目がコメントでなくなるように周囲の “<!–“ と “–>” という文字列を 削除する。
<servlet>
<servlet-name>DataProvider</servlet-name>
<description>Processes OAI verbs for Metacat OAI-PMH Data Provider (MODP)</description>
<servlet-class>edu.ucsb.nceas.metacat.oaipmh.provider.server.OAIHandler</servlet-class>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DataProvider</servlet-name>
<url-pattern>/dataProvider</url-pattern>
</servlet-mapping>
metacat.properties と web.xml ファイルを保存して Tomcat を起動する。
以下の表は、DataProvider サーブレットで使用される metacat.properties の設定のすべてを記述したものである。
プロバティ名 | 例 | 説明 |
---|---|---|
oaipmh.maxListSize | 5 | ListIdentifiers と ListRecords メソッドの呼び出しで返されるレコードの最大数 |
oaipmh.repositoryIdentifier | metacat.lternet.edu | このリポジトリを識別するための文字列 |
AbstractCatalog.oaiCatalogClassName | edu.ucsb.nceas.metacat.oaipmh.provider.server.catalog.MetacatCatalog | AbstractCatalog インタフェイスを実装した Java クラス。 このクラスはリポジトリ内にどのレコードが存在するか、その日付はいつかを調べる。 |
AbstractCatalog.recordFactoryClassName | edu.ucsb.nceas.metacat.oaipmh.provider.server.catalog.MetacatRecordFactory | RecordFactory クラスを拡張した Java クラス。このクラスは OAI-PMH メタデータレコードを作成する。 |
AbstractCatalog.secondsToLive | 3600 | resumptionToken の生存時間(秒単位)。 |
AbstractCatalog.granularity | YYYY-MM-DD or YYYY-MM-DDThh:mm:ssZ | 日付記録の粒度。‘days granularity’ または ‘seconds granularity’ を使用出来る。 |
Identify.repositoryName | Metacat OAI-PMH Data Provider | このリポジトリの名前。 |
Identify.earliestDatestamp | 2000-01-01T00:00:00Z | このリポジトリでサポートている最も古い日付記録 |
Identify.deletedRecord | yes or no | このリポジトリが削除済みのレコードの状態を知らせる場合は ‘yes’ 、そうでなければ ‘no’ |
Identify.adminEmail | mailto:tech_support@someplace.org | このリポジトリの管理者のメールアドレス |
Crosswalks.oai_dc | edu.ucsb.nceas.metacat.oaipmh.provider.server.crosswalk.Eml2oai_dc | EML 2.x.y から oai_dc (Dublin Core) への変換を制御する Java クラス。 |
Crosswalks.eml2.0.0 | edu.ucsb.nceas.metacat.oaipmh.provider.server.crosswalk.Eml200 | EML 2.0.0 メタデータを供給する Java クラス。 |
Crosswalks.eml2.0.1 | edu.ucsb.nceas.metacat.oaipmh.provider.server.crosswalk.Eml201 | EML 2.0.1 メタデータを供給する Java クラス。 |
Crosswalks.eml2.1.0 | edu.ucsb.nceas.metacat.oaipmh.provider.server.crosswalk.Eml210 | EML 2.1.0 メタデータを供給する Java クラス。 |
Metacat OAI-PMH Data Provider の使い方を示した URL の例を以下に示す。
OAI-PMH Verb | 説明 | URL |
---|---|---|
GetRecord | LSID 識別子を使って EML 2.0.1 レコードを得る | http://<your_context_url>/dataProvider?verb=GetRecord&metadataPrefix=eml-2.0.1&identifier=urn:lsid:knb.ecoinformatics.org:knb-ltergce:26 |
GetRecord | LSID 識別子を使って oai_dc (Dublin Core) レコードを得る | http://<your_context_url>/dataProvider?verb=GetRecord&metadataPrefix=oai_dc&identifier=urn:lsid:knb.ecoinformatics.org:knb-lter-gce:26 |
Identify | このデータプロバイダを識別する | http://<your_context_url>/dataProvider?verb=Identify |
ListIdentifiers | このリポジトリにある全 EML 2.1.0 識別子のリストを得る | http://<your_context_url>/dataProvider?verb=ListIdentifiers&metadataPrefix=eml-2.1.0 |
ListIdentifiers | このリポジトリである日付の範囲にある oai_dc (Dublin Core) 識別子をすべてリストする | http://<your_context_url>/dataProvider?verb=ListIdentifiers&metadataPrefix=oai_dc&from=2006-01-01&until=2010-01-01 |
ListMetadataFormats | このリポジトリでサポートされているメタデータフォーマットの 一覧 | http://<your_context_url>/dataProvider?verb=ListMetadataFormats |
ListRecords | このリポジトリにある全 EML 2.0.0 レコードのリスト | http://<your_context_url>/dataProvider?verb=ListRecords&metadataPrefix=eml-2.0.0 |
ListRecords | このリポジトリにある全 oai_dc (Dublin Core) レコードのリスト | http://<your_context_url>/dataProvider?verb=ListRecords&metadataPrefix=oai_dc |
ListSets | このリポジトリでサポートされている set のリスト | http://<your_context_url>/dataProvider?verb=ListSets |
Metacat OAI-PMH Harvester (MOH) はコマンドラインプログラムとして 実行される。:
sh runHarvester.sh -dn <distinguishedName> \
-password <password> \
-metadataPrefix <prefix> \
[-from <fromDate>] \
[-until <untilDate>] \
[-setSpec <setName>] \
<baseURL>
以下の例では、コマンドラインから Metacat OAI-PMH ハーベスタを実行する 方法を説明している。
システムコマンドウィンドウまたはターミナルウィンドウを開く。
METACAT_HOME 環境変数に Metacat のインストールディレクトリを設定する。 以下に例を示す。
Windows では:
set METACAT_HOME=C:\somePath\metacat
Linux/Unix (bash shell) では:
export METACAT_HOME=/home/somePath/metacat
以下のディレクトリに移動する。
Windows では:
cd %METACAT_HOME%\lib\oaipmh
Linux/Unix では:
cd $METACAT_HOME/lib/oaipmh
4. Run the appropriate Metacat OAI-PMH Harvester shell script, as determined by the operating system: 4. OS に応じて適切な Metacat OAI-PMH ハーベスタのシェルスクリプトを 実行する。
Windows では:
runHarvester.bat \ -dn uid=jdoe,o=myorg,dc=ecoinformatics,dc=org \ -password some_password \ -metadataPrefix oai_dc \ http://baseurl.repository.org/knb/dataProviderLinux/Unix では:
sh runHarvester.sh \ -dn uid=jdoe,o=myorg,dc=ecoinformatics,dc=org \ -password some_password \ -metadataPrefix oai_dc \ http://baseurl.repository.org/knb/dataProvider
以下の表でコマンドラインオプションとパラメータを説明する。
オプションまたはパラメータr | 例 | 説明 |
---|---|---|
-dn | -dn uid=dryad,o=LTER,dc=ecoinformatics,dc=org | 収集した文書をMetacatに投入する時に使用する LDAP アカウントの完全な識別名(必須) |
-password | -password some_password | 収集した文書をMetacatに投入する時に使用する LDAP アカウントのパスワード(必須) |
-metadataPrefix | -metadataPrefix oai_dc | 外部リポジトリから収集する文書の種類(必須) |
-from | -from 2000-01-01 | 収集する文書の日付の下限(任意) |
-until | -until 2010-12-31 | 収集する文書の日付の上限(任意) |
-setSpec | -setSpec someSet | この set に属している文書を収集する(任意) |
base_url | http://baseurl.repository.org/knb/dataProvider | 外部リポジトリの基本URL |
エラーコード | 説明 | 適用される Verbs |
badArgument | 要求に不正な引数が入っていた、必須の引数が無い、引数が重複していた、 または引数の値が不正な文法である。 | すべて |
badResumptionToken | resumptionToken 引数の値が不正であるか、期限切れである。 | ListIdentifiers ListRecords ListSets |
badVerb | verb 引数の値が正規の OAI-PMH verb ではない、verb 引数が無い、 または verb 引数が重複している。 | なし |
cannotDisseminateFormat | metadataPrefix 引数に指定されたメタデータフォーマットが、文書もしくは リポジトリがサポートしていない。 | GetRecord ListIdentifiers ListRecords |
idDoesNotExist | identifier 引数の値がこのリポジトリでは未知であるか不正である。 | GetRecord ListMetadataFormats |
noRecordsMatch | from, until, set, metadataPrefix 引数の値を組み合わせた結果 空のリストになった | ListIdentifiers ListRecords |
noMetadataFormats | 指定された文書には利用可能なメタデータフォーマットがない | ListMetadataFormats |
noSetHierarchy | このリポジトリは set をサポートしていない | ListSets ListIdentifiers ListRecords |