摘 要: OAI旨在通过定义简单的协议来解决元数据的交互性问题,以便有效分发数据内容。本文简要介绍了OAI的历史并详细阐述了元数据收获的技术标准及其应用。
关键词: OAI协议 交互性 元数据
1999年10月,在美国圣达菲举行的一次会议上讨论了开发电子文本的解决方案,提出了开放文献倡导OAI(Open Archives Initiative),从此开始了基于框架的数据交互。OAI在组织性和技术性上得到了不断发展,焦点也由原来单一的电子文本扩展到了各个领域的内容提供者。OAI已经开发出一个精简的并且经过广泛测试的技术框架,并已经建立了支持开放文献倡导的组织机构。
OAI中的开放并不意味着任意的、没有限制地存取知识仓库中的信息,因为随意存取信息不仅涉及版权问题,而且还存在网络安全及信息滥用问题。而“文献”在这里已经成为广义上的存储信息的知识仓库。
1 OAI技术框架
OAI技术框架以提供一个低障碍的交互方法为目的。通常,交互性的成本随着功能的增长而增长。OAI技术框架虽然不想代替其他的交互协议,但它提供了一种更易实现和易配置的方案。
技术协议基于二种不同角色:
(1)数据提供者:把OAI技术作为提供元数据的方法。
(2)服务提供者:使用OAI协议从数据提供者收获元数据,并作为增值服务的基础。
如图1所示,数据提供者对来自服务提供者的OAI Request消息做出响应,从它管理的知识仓库以OAI Response消息的形式向服务器发布元数据。服务器获得元数据并提供增值服务。OAI对数据提供者提供的元数据格式作了规定,即Dublin Core格式或者服务提供者要求的元数据格式。数据提供者按照规定的格式以XML文档的形式为服务提供者提供元数据。一个数据提供者可以向多个服务提供者提供元数据,一个服务提供者也可以从多个数据提供者处获取元数据。数据提供者和服务提供者只是角色的划分,一个组织既可以是数据提供者也可以是服务提供者。
2 元数据
OAI技术框架对元数据提出交互性和可扩展性二个基本要求。交互性和可扩展性已经成为元数据团体讨论的主题。
为了使元数据具有交互性,OAI统一规定数据提供者提供的元数据格式为Dublin Core元数据核心集[2]。这样做虽然加重了数据提供者的负担,但却为元数据信息的发布提供了统一的接口。表1给出了Dublin Core的15个元素。
DC只有15个元素,且都具有一个能够普遍理解的语义,适合各种领域使用。每个元素都可以自由选用及重复使用,元素的含义不因其是否嵌入所描述的资源而受到影响。DC并非某一具体学科专用,它支持任何内容的资源描述,使得跨学科的语义描述有了互操作性的可能。OAI要求在OAI Records中包含多个DC元素,并且保持了元素的可选性。这样更益于交互性,数据提供者可以根据自己的需求提供DC元数据。
OAI技术框架支持DC之外的其他元数据集。但是元数据Records必须以XML文档的形式给出。而且这些XML文档必须有相应的XML Schema来验证。OAI倡导开发特定领域的元数据集规范。
3 元数据记录Records
OAI技术框架定义了一个记录Record,它以XML字节流的形式作为收获的元数据。Record包括以下三个部分:
(1)Header:包含了发布这个Record的Item的惟一标识符Identifier以及用来确定选择性收获的属性:Record被产生、删除或者最近被修改的日期Datestamp以及发布这个Record的Item所属知识仓库集合setSeps。
(2)metadata:包含了单一格式的元数据。OAI数据提供者必须能够发布包含DC元数据的record,其他的元数据格式是可以选择的。
(3)About:描述关于Record的Metadata部分的来源以及版权信息。
元数据Record来源于知识仓库,即数据提供者的服务器。抽象地说,知识仓库包含许多Item,每个元数据Record从知识仓库中相应的Item获取。具体来说,每个Record有一个标识符Identifier,用来标识从哪个知识仓库中的Item取得元数据Metadata。
程序1为一个OAI Record的示例。
程序1
4 开放文献元数据收获协议OAI-PMH
OAI-PMH(OAI Protocol for Metadata Harvesting)定义了数据提供者和服务提供者之间的交互机制。OAI-PMH由六种Request或者verb组成,分别是GetRecord、Identify、ListIdentify、ListMetadataFormats、ListRecords、ListSets。协议以HTTP POST和GET二种方法来实现。知识仓库必须支持这二种方法。OAI Request的结构如下:
(1)基本URL:作为知识仓库的HTTP服务器的主机地址,有一个可选择的路径来处理OAI Request。
(2)关键字参数:包含了一个“关键字-值”的列表,其形式为“Verb=OAI Request”。每个OAI Request至少有一对关键字-值来表示OAI Request的名字。
程序2给出了用HTTP GET和POST方法请求的示例,从基本URL为http://arXiv.org/oai1的arXiv预印文本文献库知识仓库中请求以oai_dc格式返回标识符为oai:arXiv.org:cs.SE/0101002的记录。
程序2
以HTTP GET方法Request的示例:http://arXiv.org/oai1?
verb=GetRecord&
identifier=oai:arXiv.org:cs.SE/0101002&
metadataPrefix=oai_dc
以HTTP POST方法Request的示例:POST http://arXiv.org/oai1
Content-Length:82
Content-Type:application/x-www-form-urlencoded
verb=GetRecord&
identifier=oai:arXiv.org:cs.SE/0101002&
metadataPrefix=oai_dc
作为对OAI Request的响应,OAI Response包括了以下几个部分:
(1)XML声明,例如。
(2)根元素OAI-PMH以及它的三个命名空间URI(统一资源标识符)属性。
(3)响应时间ResponseDate以及对应的Request。
(4)与Request相同类型的元素,即在Request中的Verb参数的值。
程序3为对GetRecord请求响应Response的示例。
程序3
下面对OAI-PMH协议的各种请求做一个总结。
(1)GetRecord。这个请求用来从知识仓库中的Item得到单个得元数据Record。要求具体的标识符参数Identifier。从程序3中可以清楚地看到。
(2)Idetify。这个请求用来得到知识仓库的信息。响应应该包括以下一些信息:①知识仓库的名字。②知识仓库的基本URL。③知识仓库所支持的OAI协议的版本。④知识仓库管理员的e-mail地址。
(3)ListIdentifier。这个请求用来得到所有可以从知识仓库中获取的记录的标识符。几个可选参数有选择地得到这些标识符,例如from、until确定得到在具体的日期范围内增、删、改记录的标识符。
(4)ListMetadataFormats。这个请求用来得到所有能从知识仓库返回的元数据格式。
(5)ListRecords。这个请求用来从知识仓库获取记录集。可选参数允许选择性地进行获取。或者从特定的Set中取记录集,或者按照一定日期范围内进行增、删、改来收获记录集。
(6)ListSets。这个请求用来得到知识仓库中的所有Set。
5 结束语
本文详细论述了基于OAI技术框架的元数据的交互,并给出了应用示例。OAI协议的实现为不同格式的数字资源共享提供了更多的灵活性,有广阔的发展前景。目前,许多国外数字图书馆已经能够支持OAI服务,如法国国家图书馆、英国图书馆UKOLN、美国Digital Library Federation、UC Berkeley等。我国数字图书馆的建设中,OAI也将成为一个通用的标准,为数字资源的共享和交互提供强有力的支持。
参考文献
1 王爱华,张铭,杨冬青等.基于OAI的数字图书馆中元数据互操作框架.计算机工程应用,2002;(1)
2 Lagoze C,Sompel H V.Building a low-barrier interoperability framework.Digital Library Research Group
Cornell University.http://www.openarchives.org/documents/oai.pdf