Mozilla RDF / Z39.50 統合プロジェクト

連絡先:
Dan Brickley (daniel.brickley@bristol.ac.uk)
Ray Denenberg Z39.50 Maintainance Agency, Library of Congress (rden@loc.gov)
Eliot Christian GILS initiative, (echristi@usgs.gov)
Sebastian Hammer Index Data (quinn@indexdata.dk)
Chris Waterson (waterson@netscape.com)

本プロジェクトは、Mozilla の RDF ベースの情報管理環境下での Z39.50 の検索機能の統合を検討するプロジェクトです。

目的

  • Mozilla 内から検索可能な Z39.50 データソースを構築すること
  • Z39.50 アトリビュートセットの RDF 表現を検討すること

既に、ネットワーク上には多くの Z39.50 サーバが存在しています。 これらのサーバに検索クエリを送ったり、 Mozilla 標準の bookmark/sitemap インタフェース内で検索結果レコードを保持したりできるような Mozilla ユーザインタフェースによる何らかの手法を検討し、それを明らかにしていくことができるものと考えています。

背景: Z39.50

ANSI/NISO Z39.50 はクライアント/サーバ環境における、情報検索のための通信プロトコルです。 これは、書誌情報・電子図書館アプリケーションで広く利用されています。 Z39.50 は、書誌データ検索に関連する実践の結晶であり、 コミュニティ特有のメタデータ・アトリビュートセットに対して相互運用可能なセマンティクスを提供する仕様です。 ここで紹介する Z39.50 統合プロジェクトは、 Mozilla の RDF ベースの 'Aurora' 環境の中から Z39.50 データソースおよびメタデータ・アトリビュートセットを利用できるような 適切なメカニズムを検討し、それを明らかにしようとするものです。

手始めに

このページでは、Z39.50, RDF, Mozilla の各コミュニティからの寄与者に対して、 共通する問題の解決に取りかかる足掛かりとなるような有用なリソース群を提供することを目指します。 Z39.50 は、このプロトコルに不案内な人にはやや複雑なものでしょうが、 この分野には、経験あふれる多くの開発者たちがいます。 われわれが真に必要としているものは、 最善の方法で Mozilla に新機能をハックしたいという外部の寄与者向けの優れた入門用文書です。 Mozilla RDF ページからリンクされている文書のうちのいくつかは、 その足掛かりになるでしょう。 また、手始めとして Mozilla の初期リリースの一つを ダウンロードし、その動作を見てみるとよいでしょう。

Mozilla に不案内な Z39.50 開発者の方へ...

もしも Z39.50 がわかる人なら、これが容易なことだと分かるでしょう(多分)…。 Mozilla の UI 全体は、 XUL ファイル、Javascript、RDF クエリおよびアグリゲーションのようなサービスに対する XP-COM インタフェースの呼び出しの3つ から構成されています。 XUL によってユーザインタフェースがどのように構成されるかは クロスプラットホーム・フロントエンドを読んで研究してみると良いでしょう。 XUL は XML アプリケーションの一つで、 XML, HTML, Javascript, RDF を使ってインタフェースを作成できます。 XUL テンプレートリファレンスでは、 RDF データグラフの検索に基づいた XUL ウィジェット(ツリー、メニュー)の配置の詳細について解説しています。 また、W3C RDF ページにある仕様書を読んだり、このサイト上の RDF-in-Mozilla 関連のリンクをたどって調べてみたりするのも良いでしょう。 Mozilla では、たいていの重要なデータソースは、 RDF グラフの抽出を経てユーザインタフェースに渡されます。 Z39.50 サーバからのデータを、このようなグラフとして、 もしくは XUL ベースのユーザインタフェース要素として取得する方法については、 検討すべきオプションがいくつもあります。 新しい RDF データソースの実装者向けの順を追った手引書としては、 データソース HOWTO を参照してください。

基本的なレシピは次の通りです。 まず、 (できるだけ多くのプラットホームで) われわれのコンポーネントをコンパイルします。 これは、 RDF データソース API と できるだけ多くの追加 XP-COM API (たぶん流通している Z39.50 レファレンスの IDL を見つけて)を実装したものです。 それから、Mozilla の 'components/' ディレクトリにファイルを置いて、 ブラウザが起動する際に、新しいコンポーネントとして検査させます。 これは、Mozilla を構成する Javascript, RDF, XUL の世界で見えるように記述されたものです( Mozilla の上位アーキテクチャの概要については WebReview.com の 1999年8月の記事を参照)。

Javascript からコンポーネントを呼び出す基本的なやり方は次のようなものです。 まずコンポーネントはそれぞれ名前(例: 'component://z3950service')を持ち、 一つもしくは複数のスクリプト可能なインタフェースを持ちます。 以下の擬似コード片は Z39.50 オブジェクトの初期化を示しています。 これは Z39.50 のよりネイティブなインタフェースを提供する一方で、 あたかも RDF グラフであるかのようにも扱えます。

 var z3950 = Components.classes["component://z3950service"].createInstance();
 z3950 = z3950.QueryInterface(Components.interfaces.nsIRDFDataSource);
 zapi = z3950.QueryInterface(Components.interfaces.IZ3950Service);

次は何をすればよいでしょう。 まず、 どこかに行ってしまわないこと、 また、 Mozilla の 開発ロードマップ にあるスケッチや Mozilla RDF ページ と合わないようなことに 注力してしまわないことが重要です。 このためには、 mozilla-rdf フォーラムでアイデアを提案することが一番の方法です (ニュースグループやメーリングリストでのアクセスについての詳細は コミュニティを参照のこと)。

プロトタイプ

さて、これが次にやるべきことになるでしょう。 Mozilla Z39.50 クライアントがどのようなものになるかを示すようなモノを作成するには、どちらかと言えばシンプルにやる必要があるでしょう (例えば、XML/RDF ファイルを出力する Z39.50 - CGI スクリプト)。 いったんこれができれば、 含まれていた問題を評価し、完全な Z39.50 データソースに望むもの(以下を参照)を 把握するのは容易になるでしょう。 例えば: 検索結果をブックマークとして格納できる方が良いのか?とか、 データ構造の表現として Dublin Core の RDF ボキャブラリを使えるか?とか。

注意 M9 Mozilla マイルストーンには、非 Z39.50 のインターネット検索機能があります。 (検索エンジンの検索結果 HTML ページを取得して解析する「screenscraping」手法に基づく)

Z39.50 RDF データソースへ向けて

Z39.50 へのネイティブなクライアントサイドでの対応が Mozilla に統合される際には、 われわれは、Z39.50 クライアントを実装し、 Mozilla での RDF データソースに仕上げられるコードを探さねばなりません。 これには、IndexData 社の Yaz ツールキットが使えると思います。 これは、Z39.50 クライアントのコード用の確固とした基礎となるでしょう (YAZ は、主な制約が帰属権および「無保証」である 寛大なライセンス の下で公開されています)。 作業の主に実質的な部分は、 YAZ を RDF APIs に結合し、RDF と Z39.50 のデータモデルを組み合わせる方法を検討することになるでしょう

未解決の課題

この部分は、個別のページとして、 もっと構造化した課題リストへ発展させるべきでしょうが、 今の所、自由形式のブレインストームが適していそうですので…。

Mozilla RDF の「検索可能なモノ」の概念とは何でしょうか? Mozilla が対応すべきネットワーク上の検索プロトコルは、他にもありますか? 完全な Z39.50 対応をクライアントに追加すること (例えば、他のライブラリを通じて??)は実現可能でしょうか? それとも、HTTP 上で(XML/RDF かなにかで)トンネリングするのが、 現実的でしょうか? サードパーティによって寄与されるコードには、どんな制約がありますか? どのくらい正確に、 外部で書かれたコード (例えば、Yaz)を XP-COM プラグインデータソースとして 結合できるでしょうか?

問題概要状況など(備考)
Yaz library Yaz の ライセンス が Mozilla と一緒に使えるかどうか確認をとれる? Mozilla.org の助言がほしい。これは Frequently asked question にもあるけど、問題はないみたい…。
サービス記述 様々な Z39.50 サービス(接続の詳細、対象の範囲など)の XML/RDF 表現が必要でしょう。 GILS Locator Records (たぶん RDF と Dublin Core に変更される?)がこれの基礎になるかも。 SmartBrowsing や Mozilla の他の RDF データサービスとの調整が重要。 また、この記述が Mozilla の他の部分(キャッシュサービスのローカル設定、アイコン用の CSS/XUL、chrome など)でどう動くかを見極める必要あり。 ウェブ上のサービス用のサイトマップである RDF サイトマップに関連して: これに、Z39.50 検索サーバ(や他のインタフェース)がどこにあるかを記述する RDF/XML を入れられるようにすべきだろう(RDF サイトマップに関する文書が必要)。
Necko との協調 Necko は Mozilla の新しいネットワークライブラリ。 ネットワーク上のサーバへの接続は Necko を通じて行われるべきだろう。 それをする方法はまだ分からんけど…。 Necko 概要が助けになるけど、 コピーすべきコード例が欲しい…。 理想的には、Z39.50 URLs と関連付けされたプロトコルハンドラから書き始めたい。 HTTP トンネリングした Z39.50 という考え方もある。 こっちの方が近道かな…。
非 Z39.50 検索 RDF/XUL からアクセス可能な Z39.50 以外の検索サービスもあるでしょう。 例えば、ポータル検索、ブックマークの「探索」など。 不必要な重複を避けるのも重要なので、 Mozilla.org が計画・調整している作業などについての ロードマップをもらっておきたい。 M9 に対する Bug 11347 はロードマップを更新する必要についての覚書。 重複を避ける一番の方法は公開フォーラム上で議論をし、 ニュースグループ上での RDF 検索に関する 過去のスレッド を読み返しておくことだろう。
BER ユーティリティ Z39.50 は ASN.1 と BER 符号化を使う。 Yaz には BER を扱うコードがあるけど、Mozilla の LDAP ライブラリも BER ツールがあるみたい。どうするのが一番? LDAP の BER ユーティリティが XP-COM その他から利用できるかどうか、要調査。 重複問題を重く見るか、 LDAP の作業と連携する複雑さを取るか。 ところで、LDAP の RDF データソースはまだ計画段階??
Sebastian より: われわれが実行時読込可能なモジュールとしてそれをすべて構築できれば、 2つのBERスタックを取り扱うオーバーヘッドはさほど問題にならないと思うよ。 BERコードのサイズ自体は、 実際の構造化された Z39.50 (あるいは LDAP)の PDU を符号化する 上位レイヤのものより小さいだろうからね。
[Status: CLOSED]
Yaz の BER ライブラリを使う方が良いというのが一般的なコンセンサス。

議論

適切なメーリングリスト/ニュースグループへのリンクについては、メインの Mozilla RDF ページをご覧ください。

リソース

Z39.50 関連

Mozilla 関連

断り書き

本プロジェクトは予備的なものであり、 Z39.50 コミュニティの専門知識を Mozilla で構築中の検索環境に提供することが 容易かどうかを見る実験でもあります。 つまり、「5.0リリース」に Z39.50 コードを追加するという方針決定や この問題に技術的なリソースを注ぎこむという約束をするものでは けっしてありません。 これは言う必要はないかもしれませんが、 Mozilla は NSCP/AOL ではありませんので…。 基本的には、なんらかの XML/RDF ベースのクライアント/サーバのメタデータ検索機能は Mozilla に採用されるでしょう。 願わくば、これが既存の Z39.50 実装と連携し、互換性あるものとなりますように。 しかし、われわれはあなた方の手助けを必要としています…。


Author: Dan Brickley daniel.brickley@bristol.ac.uk
Last Updated: Id: z3950.html,v 1.6 1999/08/22 19:48:30 daniel.brickley%bristol.ac.uk Exp