エクスポート
目的・用途
本機能は、アイテム詳細画面から特定のアイテムの情報を設定されたスキーマ形式に出力する機能である。
利用方法
エクスポートは、アイテム詳細画面の右下にあるOAI-PMH, BIBTEX, JSONのボタンを押下することで、アイテムの情報がスキーマ形式に出力される。
利用可能なロール
ロール | システム 管理者 |
リポジトリ 管理者 |
コミュニティ 管理者 |
登録ユーザー | 一般ユーザー | ゲスト (未ログイン) |
---|---|---|---|---|---|---|
利用可否 | ○ | ○ | ○ | ○ | ○ | ○ |
機能内容
1. OAI-PMHスキーマを管理
【Administration > アイテムタイプ管理 (Item Types) > OAIスキーマ (OAI Schema)> 作成画面】にOAI-PMHスキーマを設定できる
設定内容は以下の通りであるスキーマファイルをアップロードする。必須項目
DublinCore : 別紙の「oai_dc」を参照。
JPCOAR:(https://github.com/JPCOAR/schema/blob/master/1.0/jpcoar_scm.xsd)
(https://github.com/JPCOAR/schema/blob/master/2.0/jpcoar_scm.xsd)DDI : 別紙の「ddi_2_5_1.zip」を参照。
ファイル名(File Name)。必須項目
アップロードされたスキーマファイルのファイル名を設定するスキーマ名(Schema Name)。必須項目
OAI-PMH出力ができるため、以下のようなスキーマ名を設定する必要があるDublinCoreスキーマ:「oai_dc」
JPCOARスキーマ:「jpcoar_1.0」
DDIスキーマ:「ddi」
ルート名(Root Name)。必須項目
OAI-PMH出力ができるため、以下のようなルート名を設定する必要があるDublinCoreスキーマ:「dc」
JPCOARスキーマ:「jpcoar_1.0」
DDIスキーマ:「codeBook」
ジップ名(Zip Name)
アップロードファイルのフォーマットはzipファイルの場合、必須項目になり、zipファイル名を入れるスキーマロケーション(Schema Location)
スキーマの参照ロケーションを入れるコメント(Comment)
2. OAI-PMHスキーマをマッピング
【Administration >アイテムタイプ管理 ( Item Types) >マッピング (Mapping)画面】:作成されたOAI-PMHスキーマにマッピングを実施
システムが付与する情報
「システムが付与したアイテムタイプ (親)」領域でWEKOでのシステム操作を介して作成されるデータをマッピング可能とする
対象データは、以下とするファイル情報
https://schema.irdb.nii.ac.jp/ja/schema/35updatedの日付のマッピングは、Getrecord、ListRecord、ListIdentifierのheaderにおいて、「datestamp=record.updated,」が使用されており、invenio_records.api.get_recordからDBのupdatedを取得している。
jpcoarスキーマガイドラインに記載されている以下の項目は不要となる
datacite:date dateType="Created"
datacite:date dateType="Updated"
アイテムタイプのメタデータ
「アイテムタイプ(親)」領域でアイテムタイプのメタデータをマッピング可能とするDDI : 別紙「USER3-7>DDIハーベスト規格ver2_2019120」を参照。
JPCOAR (https://support.irdb.nii.ac.jp/sites/default/files/2018-08/mapping_jpcoar_v1.0.1_1.pdf)
3. OAI-PMHのプロバイダ機能の有効・無効をインデックスごとに設定可能
【Administration > インデックスツリー管理 (Index Tree)>ツリー編集 (Edit Tree)画面】での「ハーベスト公開 (Harvest Publish)」領域でインデックスごとにハーベスト公開制御を設定可能
「公開する」(Open to public)チェックボックスにチェックを入れる場合、ハーベスト公開が有効になる
当該インデックス配下のアイテムについて、 OAI-PMHの出力を可能とするOAI-PMHリクエスト(GetRecord)に対して、OAI-PMHの正常レスポンスを返す
アイテム詳細画面の「OAI-PMH」領域でのボタン押下に対して、OAI-PMHの正常レスポンスを返す
「公開する」(Open to public)チェックボックスにチェックをはずす場合、ハーベスト公開が無効になる
当該インデックス配下のアイテムについて、 OAI-PMHの出力を不可とするOAI-PMHリクエスト(GetRecord)に対して、OAI-PMHの「idDoesNotExist」エラーレスポンスを返す
アイテム詳細画面の「OAI-PMH」ボタン押下に対して、OAI-PMHの「idDoesNotExist」エラーレスポンスを返す
OAI-PMH機能の有効・無効の切り替え条件
リポジトリ管理者およびシステム管理者が切り替え可能。コミュニティ管理者は、コミュニティオーナーとなっている管理対象インデックスのみ切り替え可能。
Verb | WEKO3 (oaiserver_identifyレコードなし) |
WEKO3 (outPutSetting = f) |
WEKO3 (outPutSetting = T) |
---|---|---|---|
GetRecord | 出力なし (noRecordsMatch) |
出力なし (noRecordsMatch) |
出力 |
ListRecords | 出力なし (noRecordsMatch) |
出力なし(noRecordsMatch) | 出力 |
ListIdentifiers | 出力なし (noRecordsMatch) |
出力なし (noRecordsMatch) |
出力 |
ListMetadataFormats | 出力 | 出力 | 出力 |
ListSets | 出力† | 出力† | 出力 |
Identify | 出力 | 出力 | 出力 |
※非公開状態にあるアイテムは出力しない
†ただし、非公開インデックス(非公開、OAI-PMH非公開)は出力しない
4. アイテムのメタデータをOAI-PMH出力
【前提条件】
「3.1. OAI-PMHスキーマを管理」及び「3.2. OAI-PMHスキーマをマッピング」が設定済み対応しているOAI-PMHスキーマ
JPCOAR
DDI
DublinCore
アイテム詳細画面での「OAI-PMH」領域にOAI-PMHスキーマボタンを押すと、該当フォーマットとしてアイテムのメタデータをOAI-PMH出力する
OAI-PMHの要求リクエストでエラーまたは例外状況が発生した場合に下記のOAI-PMHエラーを返せる
「3.6 エラーと例外状況 」(https://www.nii.ac.jp/irp/archive/translation/oai-pmh2.0/OpenArchivesProtocol.htm#ErrorConditions)
※DDIマッピングがない場合のエラーコード修正は以下の様に設定されている。
https://github.com/RCOSDP/weko/blob/0.9.22/modules/invenio-oaiserver/invenio_oaiserver/config.py#L207-L212公開/非公開インデックスに属するアイテムのOAI-PMHの出力を制御する
アイテムが非公開の場合はdelete情報を出力する
アイテムが非公開インデックスにのみ属している場合は、アイテムが公開でも非公開でもdelete情報を出力する
アイテムが非公開インデックスと公開インデックスの両方に属している場合は、delete情報は出力しない(アイテムが公開の場合)
DOI有無での出力条件
インデックスの設定について、
・「公開する」にチェックがついている、かつ「公開日が未来の日付」である
・「ハーベスト公開」の「公開する」にチェックがついている
上記の条件を満たすとき、OAI-PMH出力は以下のように対応する。アイテムにDOI付与がある場合
OAI-PMH出力しない
ListRecordsではrecordを出力しない
GetRecordではnoRecordsMatchを出力するアイテムにDOI付与が無い場合
削除レコードを出力する
ListRecords、GetRecordでは\を出力する
項目が複数登録される場合、DDIスキーマでの「titl」以外、繰り返し出力する
JPCOARのOAI-PMH出力にて、定められた統制語彙でない値が設定されている項目は対象外とする
対象項目:以下の項目の属性「nameIdentifierScheme」の値
作成者識別子(jpcoar:creator -> jpcoar:nameIdentifier)
寄与者識別子(jpcoar:contributor -> jpcoar:nameIdentifier)
権利者識別子(jpcoar:rightsHolder -> jpcoar:nameIdentifier)
定められた統制語彙は以下のリンクを参照する
https://schema.irdb.nii.ac.jp/en/schema
identifierTypeに関して、JPCOARのOAI-PMH出力では以下の通りに出力をする(※最大で3つ(URI、HDL、DOI)、最小で1つ(URIのみ)のidentifierが出力される)
URI(必ず存在する。https://FQDN/records/item\_id): "identifierType=URI" として出力する
HDLが存在する場合: "identifierType=HDL" として出力する
DOIが存在する場合: "identifierType=DOI" として出力する
DDIのOAI-PMH出力にて、親タグが言語ごとに繰返し出力できる
対応している親タグ
「stdyDscr>citation」
「stdyDscr>stdyInfo」
「stdyDscr>method」
「stdyDscr>dataAccs」
「stdyDscr>othrStdyMat」
「citation」親タグに対して出力を以下のように制限する
「citation>titlStmt>titl」が繰り返し不可により、同一言語にtitlの値が複数定義される場合、最初に出るtitlを出力する
「citation>titlStmt>titl」が必須項目により、titlの値が無い場合は取得する最初のtitlを設定する
「citation>rspStmt>AuthEnty」にて「ja-kana」の言語を選択する場合、jaの扱いとして出力する
DDIスキーマにOAI-PMH出力構築
https://ddialliance.org/sites/default/files/ddi-lite.html
以下のハーベスト出力条件に従って出力する
インデックスの公開/非公開、ハーベスト設定のON/OFFの設定は、アイテムが直接紐づいているインデックスとその上位のインデックスについても対象とする
複数のインデックスに所属する場合、インデックスの公開が優先される。
複数のインデックスに所属する場合、ハーベスト設定のOFFが優先される。
インデックス状態によるアイテム公開制御仕様:
別紙「ItemACL_latest.xlsx」を参照。アイテムの公開日について、以下の制御を行う
Administration > ItemTypes > Metadata でアイテムタイプの"公開日"の「Hide」オプションがON(非表示とする)の場合、アイテムの「公開日」はOAI-PMH出力しない
Admin > ItemTypes > Metadata でアイテムタイプの"公開日"の「Hide」オプションがOFF(表示する)の場合、アイテムの「公開日」をOAI-PMHに出力する
公開日が未来日のアイテムに関しては以下の制御を行う
アイテムの公開日が未来日の場合
アイテムにDOI付与がある場合
OAI-PMH出力しない
ListRecordsではrecordを出力しない
GetRecordではidDoesNotExistを出力する
アイテムにDOI付与が無い場合
削除レコードを出力する
ListRecords、GetRecordでは\
を出力する
インデックスについて、以下の場合
・「公開する」にチェックがついている、かつ「公開日が未来の日付」である
・「ハーベスト公開」の「公開する」にチェックがついているアイテムにDOI付与がある場合
OAI-PMH出力しない
ListRecordsではrecordを出力しない
GetRecordではidDoesNotExistを出力する
アイテムにDOI付与が無い場合
削除レコードを出力する
ListRecords、GetRecordでは\
を出力する
親インデックスが非公開または公開日が未来の日付の場合のとき、非ログイン状態で以下の挙動をする
アイテム詳細画面やコンテンツファイルのURLに直接アクセスすると、ログイン画面に遷移する
OAI-PMHで\
を出力する(DOIが付与されていない場合) OAI-PMHのGetRecordでidDoesNotExistを出力する(DOIが付与されている場合)
ランキング表示で、当該インデックスのみに紐づいたアイテムは表示しない
新着情報やインデックスのRSSで、当該インデックスのみに紐づいたアイテムは表示されない
5. Sets
インデックス単位でのOAI-PMHによるSet提供ができる
当該Setには当該インデックスの下位のインデックスも含む【Administaration>インデックスツリー編集 (Index Tree) > Edit Tree画面】にて公開のインデックスを追加/更新/削除するとSetsの情報も自動的に反映される
【Administration > OAI-PMH > Sets画面】でのSetsの設定が可能
Created: Sets 情報作成日時
Updated: Sets 情報更新日時
id: Sets 情報のID(システム設定)
Spec: インデックスパス ※パスの区切りは:(コロン)
例 1628576973067:1628576975817Name: Sets 情報の名前(システムインデックス名)
Description: 概要
Search Pattern: 検索パターン ※パスの区切りは/(スラッシュ)
例 path:"1628576973067/1628576975817"
6. Other Formats
アイテム詳細画面の「Other Formats」で以下の形式でアイテム情報を出力できる
JSON
アイテムのメタデータをJSON形式でエクスポートする。
アイテム詳細画面のエクスポートエリアに表示されているJSONリンクを押下する。/records/\
- /export/json
表示例は別紙「JSON出力例.txt」を参照。
設定
シリアライザ:
BIBTEX
アイテムのメタデータをBIBTEX形式でエクスポートする。
アイテム詳細画面のエクスポートエリアに表示されているBIBTEXリンクを押下する。/records/\
- /export/bibtex
表示例は別紙「BIBTEX出力例.txt」を参照。
設定
シリアライザ:
関連モジュール
weko-schema-ui
invenio-oaiserver
invenio_records
処理概要
1. 設定
プロバイダ不可の場合に対してのエラーコードを設定する
設定キー:OAISERVER_CODE_NO_RECORDS_MATCH
パス:
https://github.com/RCOSDP/weko/blob/v0.9.22/modules/invenio-oaiserver/invenio_oaiserver/config.py#L207プロバイダ不可の場合に対してのエラーメッセージを設定する
設定キー:OAISERVER_MESSAGE_NO_RECORDS_MATCH
パス:
https://github.com/RCOSDP/weko/blob/v0.9.22/modules/invenio-oaiserver/invenio_oaiserver/config.py#L210
2. 実装方法
- OAI-PMHスキーマボタンを押すと、以下のフローを実施する
(1)「identifier」の値を元に、対象アイテムに対してプロバイダの有効・無効をチェックする
/oaiにアクセスすることで、invenio_oaiserver.views.server.responseが呼び出され、リクエストのverbの値によってinvenio_oaiserver.response.pyのが呼び出される。
verbの値によって呼び出されたでinvenio_oaiserver.api.OaiIdentify.get_allを呼び出す。そしてinvenio_oaiserver.models.Identifyを呼び出して、「oaiserver_identify」テーブルから「Administration>OAI-PMH>Identify」に設定したデータを取得して「Identify」の値とする。
「Identify」の値を元にプロバイダ機能が無効の場合にinvenio_oaiserver.response.get_error_code_msgを呼び出して使用する。
なおverbの値がgetreccordの場合は、invenio_oaiserver.response.errorを呼び出して使用する。以下のケースに当たれば、プロバイダ機能が無効とし、エラーレスポンスを返す
ケース
アイテムがプロバイダ機能の無効と設定しているインデックスに属する
アイテムが非公開と設定しているインデックスに属する
アイテムが非公開と設定する
エラー内容
エラーコード:コンフィグに設定している「OAISERVER_CODE_NO_RECORDS_MATCH」キー
エラーメッセージ:コンフィグに設定している「OAISERVER_MESSAGE_NO_RECORDS_MATCH 」キー
getrecordのエラーコード:errorに渡す引数
「idDoesNotExist」getrecordのエラーメッセージ:errorに渡す引数
「No matching identifier」
プロバイダ機能が有効になる場合、(2)に進む
(2)システムプロパティーを処理する
(2.1)ファイル情報のプロパティー
invenio_oaiserver.response.combine_record_file_urlsを使用する。
ファイルのマッピングがメタデータレコードに含まれる場合、ファイルのURLを生成し、「File」プロパティーとし情報を返す
(2.2)識別子のプロパティー
invenio_oaiserver.response. get_identifierを使用する。
DOI、またはHDLのURLがメタデータレコードに含まれる場合、「system_identifier_doi」プロパティーとし情報を返す
DOI、またはHDLのURLがメタデータレコードに含まれない場合、レコードIDを元に、識別子の値を生成し、「system_identifier_doi」プロパティーとし情報を返す
(3)「_init_」メソッドで以下の情報を取得し、メタデータレコードにマッピングデータを組み込む
weko_schema_ui.schema.SchemaTree._init_を使用する。
メタデータレコード
マッピングデータ
非表示の属性
スキーマオブジェクト
(4)weko_schema_ui.schema.SchemaTree.create_xmlで以下の処理を実施する
(4.1)メタデータレコードでの各データを処理する
非表示の属性に属するデータ、または値が空白のデータが対象外とする
「get_mapping_value」関数でメタデータレコードをXML構成に変換する
(4.2)対象OAI-PMHスキーマがDDIスキーマであるかどうか、チェックする
対象OAI-PMHスキーマがDDIスキーマの場合、以下の処理を実施する
階層にある子タグ(node)をマージする
繰り返し用の親タグを指定する。現在対応している親タグ(5件)は以下の通りである
「stdyDscr>citation」
「stdyDscr>stdyInfo」
「stdyDscr>method」
「stdyDscr>dataAccs」
「stdyDscr>othrStdyMat」
対象OAI-PMHスキーマがDDIスキーマ以外の場合、(4.3)に進む
(4.3)メタデータレコードをOAI-PMHスキーマでの該当ノードに指定する
(4.4)(4.3)での結果をOAI-PMHスキーマの構築にビルドし、該当スキーマのOAI-PMH出力を返す
対象OAI-PMHスキーマがDDIスキーマの場合、追加で処理を実施する
(4.2)に指定された親タグを言語ごとに分ける
「citation」親タグに対して以下のように制限する
「citation>titlStmt>titl」が繰り返し不可により、同一言語にtitlの値が複数定義される場合、最初に出るtitlを出力する
「citation>titlStmt>titl」が必須項目により、titlの値が無い場合は取得する最初のtitlを設定する
「citation>rspStmt>AuthEnty」にて「ja-kana」の言語を選択する場合、jaの扱いとして出力する
1つのインデックスに対して1つのクエリを作成しているが、クエリの数(インデックスの件数が多い)が1024を超えている場合は、クエリのインデックスリスト部分を分割する
Elasticsearch の利用
scroll APIを利用している。 ESの index.max_result_window 以上の結果を取得することができる。
更新履歴
日付 | GitHubコミットID | 更新内容 |
---|---|---|
|
353ba1deb094af5056a58bb40f07596b8e95a562 | 初版作成 |