互操作协议之二:ZING
Z39.50在Web时代的发展
Z39.50协议研发于Web技术出现之前,信息技术特别是网络技术在该协议推广应用的同时有了很大的进步,浏览器/服务器的架构迅速得到普及,客户机/服务器结构已不能满足最终用户的需要,于是许多Z39.50的应用都建立了浏览器/Web服务器/应用服务器三层架构,Web服务器通过CGI与Z39.50的客户端进行通信,再通过Z39.50服务器实现互操作。Z39.50可能还将跨越各个Web服务器,才能与世界各地的数据库应用服务器通信。
我们知道本来Z39.50协议就是为了打破异构数据库应用的封闭性,实现互操作的分布式检索。上述这种三层架构的组合在体系结构上和效率上都是非常不合理的。自2001年Z39.50准备推出第四版开始,就一直在研究和考虑这个问题,希望在体系架构上对Z39.50有一个彻底的改变,目前已经有了一些初步成果。
被称作ZING(Z39.50-International: Next Generation)的“下一代Z39.50协议”目前的版本是1.0,包括SRW/SRU、CQL、ZOOM、ez3959和ZeeRex五个部分。一方面可以看成是Z39.50各种功能在新的网络协议和应用模式下的拆解,另一方面是一种简化,许多相应的功能并没有Z39.50中所规定的那么完整、全面,其中一些只是为了实现新技术与老的协议的“兼容”而设立。
SRW/SRU:SRW(Search/Retrieve for the Web)和SRU(Search/Retrieve URL Service)
这两者是针对Web的信息检索协议,利用Web服务的架构,实现了Z39.50的一些基本服务。是ZING的核心功能。SRW使用HTTP与SOAP的无状态通信,采用XML作为信息传输编码,也可以单纯使用URL传递查询请求,用WSDL来定义Z39.50传输的格式信息,检索结果也以XML格式输出。而SRU只能通过URL参数方式提交检索请求,不支持完整的SOAP消息包(指支持SOAP消息报中的内容序列)。
SRW/SRU支持网络上现存的多种检索方式,这是其与Z39.50最大的不同之处。各种不同的检索服务都可以采取模块化方式组合调用,共同返回结果,而不像Z39.50一样对于规定了单一的检索方式。例如可以采用SRW/SRU将Google开放的检索API和A9开放的检索API进行整合,就是一种典型的Mashup,当然这样的整合也可以不采用SRW/SRU进行,但是这样做能够保证与其他任何支持SRW/SRU的系统(数字图书馆)进行高层互操作。这样使这个协议就具有了开放性,从而成为解决系统互操作问题的强大工具。
CQL:Common Query Language通用查询语言
CQL是一种类似于SQL,但远比SQL简单的查询语言,既有简单性,又能够混合指令与参数,并结合Z39.50 type-1的丰富性。目前的CQL支持布尔操作、混合检索点和检索词、支持指定元数据标签、支持结果及查询、支持服务器自动确定检索对象、支持多种匹配方式(精确匹配、数字比较、词根检索、盥洗次检索、模糊检索、语音检索等),可满足绝大多数简单查询的需要。XCQL指的是以XML方式编码查询提问语句的格式。
ZOOM:Z39.50 Object-Orientation Model Z39.50面向对象模型
ZOOM是一组符合Z39.50的面向对象的API结构,可以做为建立Z39.50客户端或SRW/SRU应用的起点和基础工具。
ez3950:Simple Implementation of Z39.50 over SOAP using XML Encoding Rule (XER)
ez3950是一个应用XER(XML Encoding Rule)和SOAP协议实现简单的Z39.50协议应用的机制和方法。也就是利用XER支持到ASN.1标准的动态转换,而不用修改Z39.50对后者的支持。
ZeeRex:
针对Z39.50的解释(Explain)功能的XML版本,反映SRW服务器组成和提供的功能信息,记录了数据库、检索点(Index)、数据记录格式以及客户段能够采用的参数说明信息等等,类似于一个服务注册体系中需要登记的信息。