Z39.50

Z39.50は遠隔のデータベースに対して情報検索を行うためのクライアント・サーバ型通信プロトコルである。ANSI/NISO標準およびISO国際標準（ISO 23950）となっており、標準の管理は米国議会図書館が行っている。
概要.
Z39.50プロトコルは異なるプラットフォーム上で動作するオンライン検索システム間の相互運用性を確保する目的で開発され、しばしば総合目録システムや統合検索を実現するために利用されてきた。1990年代には欧米の図書館業界で広く採用され、図書館管理システムおよび個人用の参照文献管理ソフトウェア等で利用されている。図書館間相互貸借用の蔵書検索もZ39.50を通じて行う実装も出ている。
Z39.50の開発は1970年代に始まり、1988年、1992年、1995年にそれぞれプロトコルの第1版から第3版が発表された。情報検索に関わる要求として、検索(Search)、表示(Retrieve)、ソート(Sort)、索引語ブラウズ(Scan)などの多くの機能を含んでいる。検索要求はアトリビュートと呼ばれる属性を用いて表現され、通常は「Bib-1」アトリビュートセットが使われる。
課題.
Z39.50は多くの機能を盛り込んだ通信プロトコルであるため、実際には、開発者および商用ベンダによる実装では全てを実装したものは無く、実装依存になっている部分もある。Z39.50の文法は検索対象となるデータベースの構造からは抽象化され分離されている。例えば、クライアントが著者名検索（アトリビュートUse=1003）を指定した場合、その検索がデータベース側で実際のデータフィールドのどの項目にマッピングされ、検索が実行されるかはサーバ実装に任されている。このため、対象データベースの構造を知らなくともZ39.50による検索式を発行できる。しかし一方で、たとえ同一の検索式を投げた場合でもサーバが変われば、それぞれで異なる結果が返ってくることとなる。この例では、あるサーバは著者索引を持っていてそこから結果を返したり、別のサーバでは著者かどうかは無視して個人名索引から検索を行ったり、また別のサーバでは索引を持たずにキーワード検索を行ったり、もしくは単に対応しないというエラーを返したり、様々な実装方法が出てくる。
この状況に対応する試みとして、Bathプロファイル（この名称は検討ワーキンググループが1999年に初会合をもったイギリスの都市バースによるもの）が提案された。この提案では、よく行われる書誌検索における検索書式を明確に規定して、Bathプロファイル対応のサーバにおけるその検索要求に対する期待される挙動を規定した。Bathプロファイルの現場での対応はそれほど素早くないものの、Z39.50の弱点を補うものとして注目を浴びている。現在、Bathプロファイルはカナダ国立図書館公文書館が管理している。
Z39.50はWWW出現以前の技術であり、ウェブ普及以降のより現代的な環境に沿うように作り変えようという試みもいくつかある。これらの試みは ZING (Z39.50 International: Next Generation) と呼ばれるグループおよび仕様群としてまとめられ、新たな方向性を打ち出している。最も重要な提案は2つのほぼ対となる仕様 Search/Retrieve via URL/Search/Retrieve Web Service (SRU/SRW) である。この2つの仕様ではZ39.50通信プロトコルへの対応を完全に廃止し、HTTPプロトコルに基づくものとした上で、検索要求の構造といった利点を活かそうとする方向で仕様が作られた。SRUはRESTに基づくもので、検索要求をURLのquery-stringにて表現できるようにしたものである。一方、SRWはSOAPを使い、検索要求をXMLに基づく表現で送る。どちらも、検索要求に対するサーバからの応答には、XMLを使用することを前提としている。これらのプロトコルは、広く採用されているWebサービス向けツールを採用することで、図書館向けソフトウェアという比較的狭い範囲の市場に対してもその適用が容易になり、Z39.50プロトコルよりも開発者の参入障壁が低くなることが期待できる。Z39.50仕様に基づいた検索式記述言語CQLも同時に開発された(CQLはSRU Vesion1.1ではCommon Query Languageを表すものとされたが, Version1.2でContextual Query Languageに改められた)。