Z39.50[1]は情報検索のための国際標準プロトコルであり、 その特徴は多種多様な環境で構築された情報検索システムに対して 透過的に検索できる点にある。 筆者らはこれまでJAPAN/MARCのタグ・フィールドと Z39.50の代表的アトリビュートセットであるBib-1とのマッピングを行うことにより、 JAPAN/MARCの書誌データを検索できるZ39.50システムを 構築するとともに[2][3][4]、 WoPEcとWAGILSという2つのメタデータを Dublin Core Metadata Element Set(以下Dublin Coreと呼ぶ)とマッピングし、 Dublin Coreのエレメントで検索するシステムを構築してきた[5]。 本論文ではさらにJAPAN/MARCの書誌データを Dublin Coreのスキーマを通して検索できるZ39.50検索システムについて報告する。
Z39.50はデータベースの実装に依存しないスキーマを目指し、 アトリビュートセットと呼ばれる論理的なスキーマを定義している。 しかしながら、Z39.50はアトリビュートセットが複数あると 透過的な検索が妨げられるため、結果として大部分のZ39.50サーバがBib-1という ひとつのアトリビュートセットを使っている。 ところが、Bib-1にマッピングする際のスキーマが定められていないため、 システム依存のマッピングになっており、 異なる検索システムの間では同じフィールドが 別のマッピングをしている可能性があるなど 検索処理の一貫性が保たれていないという問題点が指摘され[6]、 このデータ間のスキーマの違いを吸収する枠組として Dublin Coreの利用が提案されている[7]。
Dublin Core[8]は 基本的な15エレメントを定義することによって インターネット上の多様な情報資源に対応し、 情報資源発見の効率化をはかるために定義されたコアメタデータである。 Dublin Coreは単にシンプルなメタデータとして理解するのではなく、 様々な分野に共通な要素、すなわち様々な分野にできるだけ共通の概念として 認められた属性の要素の集まりとして定義された コアメタデータとして理解すべきである[9]。 Dublin Coreが担う最も重要な役割は相互利用性(Interoperability)であり、 Z39.50のアトリビュートセット、JAPAN/MARCやUS-MARCなどの目録データ、 Webコンテンツ、既存の各種メタデータなど多様な情報資源を Dublin Coreをゲートウェイとして相互に結ぶことで、情報資源の発見が容易になる。
我々は検索システム間の相互接続性を目指したZ39.50と、 データスキーマ間の相互利用性を目指したDublin Coreを結合させ、 様々な情報資源を統一的に検索できるシステムの構築を目指しているが、 今回はZ39.50とDublin Coreを透過的に利用できる基盤整備という観点で システム構築を行った。 そこで、JAPAN/MARCデータを例として Dublin Coreを共通スキーマとしてマッピングを行い、 Z39.50のBib-1におけるDublin Core用のアクセスポイント を通してJAPAN/MARCを検索できるシステムを構築した。 本システムによりJAPAN/MARCだけでなく、 その他の書誌データについてもDublin Coreを共通スキーマとした Z39.50検索システムを容易に構築できるようになった。
本システムはJAPAN/MARCレコードをDublin Coreに基づいて記述し、 利用者はZ39.50のBib-1のDublin Core用アクセスポイントから検索できる。 本システムはプロトコルエンジン、コントロールモジュール、データベース部、 メタデータ変換部からなる(図1)。
プロトコルエンジンはZ39.50プロトコルを解釈し、コントロールモジュールに渡す。 コントロールモジュールはプロトコルエンジンの解釈に基づき、 検索エンジンへパラメータを渡し、 セッション毎の情報と履歴集合を管理する。 プロトコルエンジンにはIndex Data社のYAZ (Yet Another Z39.50 Toolkit)[10]を利用した。
メタデータ変換部は既存の書誌データをDublin Coreに基づくメタデータに変換する。 現在はJAPAN/MARCからDublin Coreへの変換機能を持っている。 JAPAN/MARCのデータ[11]を元に Dublin CoreのRDF(Resource Description Framework)表現[12]に変換した。 RDFは外部表現としてXML(eXtensible Markup Language)を用いるため、 実際にはDublin CoreはXMLで表記される。 データの変換はPerlスクリプト(jmarc2dc.pl)により行なった。 変換元のJAPAN/MARCデータと変換後のDublin Coreデータの一例を それぞれ資料1, 2に示す。 変換時にJAPAN/MARCのフィールド(サブフィールド)と Dublin Coreの項目の間のマッピングを行なう。 変換の際のマッピングの定義は、資料3に示す。 マッピングは、Dublin Coreに対して、一対多となるように行ない、 1つの書誌項目が複数のDublin Coreエレメントに含まれることはない。 また、1つのDublin Coreエレメントに対して、複数のデータ項目が存在した場合は、 RDFにおけるリスト要素を表すBagを用いて表現した。 なお、JAPAN/MARCで独自に定義されている外字については、 適宜変換を行なった。
データベース部はメタデータの検索を行なう。 データベースの検索エンジンには、 全文検索エンジンNamazu[13]を採用した。 本システムでは、Dublin CoreのRDF表現を解析し、 エレメントの内容を抽出するフィルタ(dc.pl)を Namazuのインデクサ(mknmz)のフィルタ機構に組み込んだ。 このフィルタでは、XMLパーサとして、PerlモジュールXML::Parserを利用し、 文字列がどのエレメントに含まれているかを判別して、 Namazuのフィールド用インデクスに登録する。
本システムでは、Z39.50のBib-1のUseアトリビュートに追加された Dublin Core用の15項目[14]に対応した検索ができる (表1参照)。 この15項目のアクセスポイント指定はDublin Coreの項目と1対1の関係にあるため、 アトリビュートの扱いがあいまいになることはない。 Z39.50プロトコルでの検索要求は、 内部的にNamazuの検索式に変換され、検索エンジンに渡される。 また、検索要求としては履歴検索も扱える。
実際にZ39.50クライアントで本システムに接続し、 Dublin Coreアクセスポイントで検索した例を図2に示す。 検索結果を返戻する際は、プレインテキストの形式で返戻する。
多様な情報資源を容易に利用できる仕組みを作りたいという要求は どの分野でも共通の話題であり、 それぞれの立場から様々な提案が行われている。 この節では特にZ39.50に関わる研究について考察する。
Z39.50はZIG(Z39.50 Implementors Group)によって規格の検討と合意がなされており、 現在ZIGにおけるこのマッピング問題に対処することを目指した議論の中で、 複数のアトリビュートセットを同時に扱うことを目的とした Attribute Architecture[15]の定義が進められている。 この枠組の中心はCross Domain(XD) Attribute Set[16]であり、 これは、Dublin Coreを基本にした13項目の アクセスポイント指定からなるアトリビュートセットで、 分野を横断した検索に利用することが期待されている。 しかし、この方法は現行のZ39.50システムに対して、 Bib-1からCross Domain(XD) Attribute Setに変更を求めることになり、 アトリビュートセットの移行によって相互利用性が損なわれる可能性がある。
また、JAPAN/MARCとZ39.50との関わりについて 石田[17][18]は、 Bib-1で流用するのではなくJAPAN/MARC専用のアトリビュートセットを提案している。 石田のシステムはJAPAN/MARCに特化したアトリビュートセットを設計し、 実際にシステムを公開して評価実験を行っている。 しかし、この手法ではJAPAN/MARCを検索する際には JAPAN/MARCの構造に従った検索ができるものの、 JAPAN/MARC以外のデータに対しては適用できず、 Bib-1との互換性もなくなってしまう欠点がある。
Z39.50とDublin Coreを結合した例としては 図書館情報大学電子図書館(ULIS-DL)[19]のZ39.50サービスがある。 ULIS-DLはサブジェクトゲートウェイを目指したメタデータの構築を行っており、 ULIS Coreと呼ばれるDublin Coreに基づいたエレメントセットを用いている。 ULIS-DLはもともとDublin Coreを基本として作られたシステムであるので、 標準検索プロトコルZ39.50と組み合わせるのは自然であり、 データそのものが元々Dublin Coreで作成されているため、 システム構築時にマッピング問題が生じることはない。 しかし、今後ULIS-DLがサブジェクトゲートウェイとしての能力を高め、 他のデータを対象にする場合には 本システムで研究しているスキーマ変換機能が必要になるだろう。
以上のように、Z39.50の視点を重視するのか、 JAPAN/MARCなどある特定データの流通性を重視するのか、 多様なメタデータの相互利用性を重視するのかによってアプローチが異なるが、 本研究ではZ39.50の視点を踏まえた相互利用性を重視する立場から システム構築を行なった。
本論文はZ39.50とDublin Coreのシステム基盤構築に焦点があるため、 JAPAN/MARCとDublin Coreのマッピングについては深く立ち入らなかった。 マッピングについては今後の問題として、 今回のマッピング方針と将来展望について述べる。
Dublin Coreには、Dublin Core Simple(DCS)と Dublin Core Qualifier(DCQ)という考え方の相違による2つのタイプがある。 DCSは15項目のデータ要素をさらに細かく分けることはしない書き方で、 DCQはこの基本要素を細かく分けて記述する書き方である。 今回はDCSを採用し、データは並列に並べた。 JAPAN/MARCのタグに表されているデータのみをDublin Coreに変換し、 JAPAN/MARCレコードのデータ部に含まれていない項目は Dublin Coreへの変換を行なわず該当なしとした。 データのマッピングについては現在検討中で、 DCQによる記述も検討している。
本研究はJAPAN/MARCを例としてDublin Coreを共通スキーマとして マッピングを行い、Z39.50のBib-1のDublin Core用アクセスポイントを通して JAPAN/MARCを検索できるシステムを構築した。 本システムによりJAPAN/MARCだけでなく他のデータについても Dublin Coreを共通スキーマにすれば本システムを利用してZ39.50で検索できる。
本研究用のデータとしてJAPAN/MARCを使うことを許可して くださった国立国会図書館の関係各位に感謝いたします。
なお、本研究は文部省科学研究費基盤研究(C)(2) 課題番号09680389 「Z39.50に基づく文献情報検索システムの構築」の補助を得た。
Dublin CoreとJAPAN/MARCの対応関係
Dublin Core | JAPAN/MARC | フィールドの意味 |
---|---|---|
Title | 251-9$A | タイトルと責任表示に関する事項:本タイトル |
251-9$B | タイトルと責任表示に関する事項:タイトル関連情報 | |
251-9$D | タイトルと責任表示に関する事項:巻次、回次、年次等 | |
280$A | 叢書名に関する事項:叢書名 | |
280$B | 叢書名に関する事項:叢書番号 | |
280$D | 叢書名に関する事項:副叢書名 | |
280$F | 叢書名に関する事項:副叢書番号 | |
281-3$A | シリーズに関する事項:本シリーズ名 | |
281-3$B | シリーズに関する事項:シリーズ名関連情報 | |
281-3$D | シリーズに関する事項:シリーズ番号 | |
281-3$S | シリーズに関する事項:下位シリーズ名 | |
281-3$T | シリーズに関する事項:下位シリーズ番号 | |
281-3$X | シリーズに関する事項:シリーズのISBN | |
291-9$A | 多巻ものの各巻のタイトルと責任表示に関する事項:タイトル | |
291-9$B | 多巻ものの各巻のタイトルと責任表示に関する事項:副書名 | |
291-9$D | 多巻ものの各巻のタイトルと責任表示に関する事項:巻次、回次、年次等 | |
354$A | 原タイトル注記:翻訳資料の原タイトル | |
551-9$A | タイトル標目(タイトル関連情報の読み等を含む):カタカナ形 | |
551-9$X | タイトル標目(タイトル関連情報の読み等を含む):カタカナ形ローマ字形 | |
580$A | 叢書名標目:カタカナ形 | |
580$X | 叢書名標目:ローマ字形 | |
581-3$A | シリーズのタイトル標目:カタカナ形 | |
581-3$X | シリーズのタイトル標目:ローマ字形 | |
591-9$A | 多巻ものの各巻のタイトル標目:カタカナ形 | |
591-9$X | 多巻ものの各巻のタイトル標目:ローマ字形 | |
Creator | 251-9$F | タイトルと責任表示に関する事項:責任表示 |
751-9$A | 著者標目:カタカナ形 | |
751-9$B | 著者標目:漢字形 | |
751-9$X | 著者標目:ローマ字形 | |
Subject | 650$A | 個人件名:カタカナ形 |
650$B | 個人件名:漢字形 | |
650$X | 個人件名:ローマ字形 | |
658$A | 一般件名:カタカナ形 | |
658$B | 一般件名:漢字形 | |
658$X | 一般件名:ローマ字形 | |
677$A | NDC:分類記号 | |
685$A | NDLC分類:分類記号(またはかな付) | |
685$X | NDLC分類:ローマ字付分類記号 | |
Description | 350$A | 一般注記:一般注記 |
377$A | 内容注記:内容に関する注記 | |
Publisher | 270$B | 出版・領布に関する事項:出版者、領布者等 |
Contributor | 281-3$F | シリーズに関する事項:シリーズに関する責任情報 |
291-9$F | 多巻ものの各巻のタイトルと責任表示に関する事項:著者表示 | |
781-3$A | シリーズの著者名標目:ローマ字形 | |
781-3$B | シリーズのの著者標目:巻次の読み | |
781-3$X | シリーズのの著者標目:漢字形 | |
791-9$A | 多巻ものの各巻の著者標目:ローマ字形 | |
791-9$B | 多巻ものの各巻の著者標目:巻次の読み | |
791-9$X | 多巻ものの各巻の著者標目:漢字形 | |
Type | (該当無し) | |
Date | 270$D | 出版・領布に関する事項:出版、領布年月 |
Identifier | 010$A | 国際標準図書番号:ISBN |
020$B | 全国書誌番号:全国書誌番号(JP番号) | |
905$A | NDLの請求記号:請求記号 | |
906$A | NDLの印刷カード番号:印刷カード番号 | |
Format | (該当無し) | |
Language | 101$A | 著作の言語(翻訳物に適用):テキストの言語 |
Source | (該当無し) | |
Relation | (該当無し) | |
Coverage | 270$A | 出版・領布に関する事項:出版地、領布地等 |
Rights | (該当無し) | |
(該当無し) | 001 | レコード識別番号:レコードコントロール番号 |
020$A | 全国書誌番号:国名コード | |
100$A | 一般的処理データ | |
101$C | 著作の言語(翻訳物に適用):原文の言語 | |
251-9$W | タイトルと責任表示に関する事項:資料種別表示 | |
261$A | 並列タイトルに関する事項:並列タイトル | |
265$A | 版に関する事項 | |
275$A | 形態に関する事項:特定資料種別と資料の数量 | |
275$B | 形態に関する事項:大きさ | |
275$E | 形態に関する事項:付属資料 | |
360$A | 装丁と定価に関する事項:装丁 | |
360$B | 装丁と定価に関する事項:本体価格 | |
360$C | 装丁と定価に関する事項:税込価格 | |
386$A | ファイル内容に関する注記(コンピュータファイル):ファイル内容注記 | |
387$A | システム要件に関する注記(コンピュータファイル):システム要件注記 | |
551-9$B | タイトル標目(タイトル関連情報の読み等を含む):漢字形(所在フィールドの識別子) | |
551-9$D | タイトル標目(タイトル関連情報の読み等を含む):巻次の読み | |
580$B | 叢書名標目:漢字形(所在フィールドの識別子) | |
580$D | 叢書名標目:叢書番号 | |
581-3$B | シリーズのタイトル標目:漢字形(所在フィールドの識別子) | |
581-3$D | シリーズのタイトル標目:巻次等の読み | |
591-9$B | 多巻ものの各巻のタイトル標目:漢字形(所在フィールドの識別子) | |
591-9$D | 多巻ものの各巻のタイトル標目:巻次の読み | |
677$V | NDC:NDC版次 |