基于OWL-S API的数字图书馆服务组合应用研究
毕强1, 韩毅2
1.吉林大学管理学院 长春130022
2.空军航空大学图书馆 长春130022
摘要

以数字图书馆服务组合的结构模型为逻辑起点,分析研究数字图书馆服务发现、匹配及组合的过程,并对基于OWL-S API的数字图书馆服务组合进行应用探索。

关键词: 数字图书馆; OWL-S; API; 服务组合
Study on the Application of the Digital Library Service Combination Based on OWL-S API
Bi Qiang1, Han Yi2
1.School of Management, Jilin University,Changchun 130022,China
2.Library of Aviation University of AirForce,Changchun 130022,China
Abstract

Making the structure model of service combination as logical starting point, the authors analyze and study the service discovery, matching and combination of digital libraries. They also explore the service combination application of digital library service combination based on OWL-S API.

Keyword: Digital library; OWL-S; API; Service combination

数字图书馆从“传统”的Web服务到语义Web服务,从简单的服务到组合式服务,服务请求者从人到计算机(程序或Agent),服务描述从基于词汇到基于Ontology,数据交换从基于语法到基于语义,将目前数字图书馆依赖技术驱动服务质变为业务驱动服务、服务驱动技术,客观上提出了许多值得深入研究的问题。本文对基于OWL-S API的数字图书馆服务组合进行了应用探索,并尝试将其应用到数字图书馆服务的实践。

1 数字图书馆服务组合的结构模型及OWL-S API
1.1 结构模型

基于OWL-S的服务组合包括服务发现、匹配、调用、组合与执行。服务的发现和匹配基于OWL-S Service Profile,Service Profile本体描述了服务查询代理用来判断服务是否满足它要求的一组属性信息,如服务提供的功能,它的输入、输出,执行的前提条件,执行产生的结果等。在服务发现及匹配后,就可以根据目标基于OWL-S

Service Model来进行服务的调用、组合及执行。在给出了一个高层的目标描述后,通过OWL-S,用于选择和组合服务的信息将在服务器上被编码。OWL-S必须提供单个服务进行选择的先决条件和组合顺序[ 1]。基于OWL-S的数字图书馆服务的组合由传输层,XML消息层,服务描述层,实现层,服务查找、发布与组合等5层组成,如图1所示:

图1 OWL-S服务组合的结构模型

传输层、XML消息层、服务描述层与传统的Web服务协议栈一致;服务查找、发布与组合层采用OWL-S框架。

OWL-S对服务的执行可以看作是一系列函数调用的集合,它通过计算机可解释的API来调用这些函数,这就是OWL-S API。

1.2 OWL-S API[ 2]

OWL-S API支持对语义Web服务的描述、读写以及调用原子的或者组合的Web服务,它由Maryland 大学计算机系的Sirin 开发[ 3]。OWL-S API的类库主要建立在Axis, Jena 以及Pellet上。Apache Axis[ 4]是Apache Web Service项目中的子项目,其最初起源于IBM的SOAP4J,应该属于最早的一批用于构造基于SOAP应用的Framework。它支持WSDL1.1,可自动由Java Object生成WSDL;Jena[ 5]主要用来处理RDF,应用Jena的推理能力从本体推断模型知识;Pellet[ 6]是一个开源的基于Java的OWL推理机。

2 数字图书馆服务发现、匹配及组合
2.1 服务发现与匹配原型

服务发现是实现服务匹配、组合与执行的前提。要实现基于功能的服务发现,首先必须解决因缺乏共同语义解释而造成的语义冲突问题,其次应考虑添加Web服务的语义信息使用户获得服务功能信息,因此需要采用本体论建立领域本体库,为领域信息提供统一的描述和表现形式。同时利用OWL-S对服务进行语义描述,使用户能够了解服务的功能细节,加强服务描述信息的机器可理解性。

服务自动发现实现中的核心问题是服务的自动匹配和定位,围绕这个核心,近年来已产生了许多研究成果[ 7, 8, 9, 10, 11],大都采用OWL-S Profile来提供发布服务属性和功能描述的广告,构建基于Ontology的服务搜索引擎,采取服务参数匹配和输入参数匹配的分级匹配方式,最终实现基于概念推理的服务自动定位。

上述研究成果一般认为,服务发现的实质是请求描述与服务广告描述之间的匹配问题[ 12],而采用关键字匹配的方式缺乏对用户查询请求中有用信息的提取和处理,不能很好地描述用户查询请求中所需服务的能力,并且服务请求者无法从广告描述中获悉服务功能信息,因此需要构造查询处理器来抽取查询请求中的服务特征信息,形成标准的语义请求描述,同时需要建立发现引擎,实现针对服务功能信息的语义匹配,从而提高服务查准率。根据目前的研究成果,服务发现匹配模型一般如图2所示:

图2 服务发现匹配模型

图2中给出创建服务广告、进行服务发现所必需的组成部分。服务提供者用WSDL文件(网络服务的描述语言)描述服务的特征,OWL-S编辑器中的“WSDL2OWLS”转换工具可以把它转换成OWL-S描述[ 13] 。OWL-S对服务进行语义描述,可使用任何一种推理机来进行查询,查询得到的信息同服务请求进行匹配。匹配系统应用了本体的概念对服务请求和服务广告的功能性、输入、输出(FOI)进行比较,确定FOI的相似性。网络本体语言(OWL)使得人们能够对概念进行语义描述,将复杂的概念分解为简单的概念。使用斯坦福大学开发的OWL编辑器Protégé,构建其本体[ 14]。再通过推理机采用适当的推理规则就可以确定本体中两个不同概念间语义的相似性。

这种模型利用推理机与本体知识基础相结合,检索语义信息。由功能本体确定服务请求和服务广告功能上的语义相似性;领域本体确定输入和输出的相似性。由预先设定的算法执行匹配,确定服务广告FOI和请求FOI的相似程度。算法将基于相似性,返回与服务申请较为相关的服务。

2.2 服务组合流程

当服务请求者发出请求(包括服务功能描述和可以提供的输入以及期望的输出),系统将该请求转换成Service Profile形式,再将其交给匹配引擎;匹配引擎利用OWL推理机对功能描述进行基于OWL-S Ontology库和服务描述库的匹配,得到一组满足条件的服务。这种匹配不是简单的基于关键字方式,而是基于语义约束的模糊匹配;再使用匹配引擎逐个检查找到的服务的输入是否是请求者所提供的输入的子集和其输出是否包含请求者所期望的输出;这样匹配率最高的服务就是服务发现的目标。服务组合流程如图3所示:

图3 服务组合流程

3 基于OWL-S API的数字图书馆服务组合应用框架
3.1 框架描述

为实现基于OWL-S API的数字图书馆服务的组合应用,首先要考虑的就是将现有的应用包装为WSDL描述的Web Service,目前业界应用最广的一种途径就是通过Apache Axis架构来进行。由于WSDL与OWL-S在表达服务的方法上各有不同,因此需使用OWL-S框架中的Service Grounding本体将过程模型的描述和WSDL中的通信协议及消息描述联系起来。它描述了如何访问一个服务。OWL-S的前两部分Service Profile和Service Model用于智能代理完成服务的语义注册、查询和组合。Service Grounding部分用于服务的实际调用执行。为了实现完整的Grounding,OWL-S和WSDL是互补的,因为两者实际上覆盖了不同的概念空间[ 1],如图4所示[ 15]:

图4 OWL-S和WSDL之间的映射关系

对映射的OWL-S进行语义标注后,在数字图书馆的语义服务注册中心进行注册,完成Web Service的收集,具体过程如图5所示:

图5 基于OWL-S API的数字图书馆应用框架

OWL-S API框架主要应用于解决用户需求:

(1)用户对数字图书馆提出需求,通过对此需求进行基于语义的解析,使用OWL-S API在服务注册中心进行服务的匹配与查找;

(2)在匹配到所需服务之后,使用OWL-S API对匹配的服务进行组装;

(3)调用OWL-S API执行引擎,执行所组装的服务。

下面对基于OWL-S API的服务匹配及服务组合过程分别进行描述。

3.2 基于OWL-S API的服务匹配实现

服务匹配是服务发现与服务调用组装之间的关键过程,服务匹配主要关注几个服务之间输入输出参数的匹配问题,用以确定哪些服务可以进行组合。OWL-S服务匹配标准主要包括Exact,Subsume以及Relaxed等,匹配主要应用Pellet推理机,具体匹配流程如下:

Begin

For I = 0 to N //遍历所有本体

matchmaker.addOntology //装入服务本体

End

List findServices //查找服务本体所包含的服务

kb = OWLFactory.createKB() //创建知识库

kb.setReasoner("Pellet") //调用推理机

Matches() // 进行匹配

End

3.3 基于OWL-S API的服务组合实现

OWL-S服务组合过程的定制主要通过OWL-S的控制构造将被组合的Web 服务有序地封装起来,并形成一个逻辑上的整体。OWL-S本体模型中的控制结构主要包括:Sequence,Split,Split+Join,Any-Order,Choice,If-Then-Else,Repeat-While等,它们可以用来控制服务的组合过程。

OWL-S API实现服务组合通过如下过程:创建一个复合过程(CompositeProcess),将前面服务发现和匹配所得到的服务通过一定的序列加入此复合过程(CreateSequence),最后通过过程执行引擎执行复合过程(ProcessExecutionEngine)。

OWL-S API类CreateSequence表明了如何将一系列服务串联起来,并自动产生一个描述新服务的Profile,这个类假定每个服务都是单输入、单输出的(除了第一个服务和最后一个服务),这样前面的服务输出将作为后一个服务的输入。第一个服务不需要有输入,最后一个服务不需要有输出。组合服务的名字命名为 [Service1 + Service2 + ... + ServiceN]。

4 基于OWL-S API的服务组合实证

OWL-S API是Mindswap[ 16]的一个研究项目,这个项目已经发布了一些实例,如价格比较实例,但这个实例只是基于OWL-S的描述。目前,数字图书馆的技术趋势就是将服务Web化,因此基于浏览器的Web服务应用更能够展示下一代数字图书馆的优越性。基于这个目的,本文在Mindswap实例基础上,使用Java与OWL-S API类库将其实现,能够基于浏览器来运行并直观显示[ 17]

4.1 引例

组合服务实证的目的描述:Amazon[ 18]和Barnes & Nobles[ 19]都提供了开放的WSDL服务,如Amazon WSDL中有一个名为FindAmazonPrice,可以根据输入的书目信息来获取Amazon网站上某本书的价格;同样Barnes & Nobles WSDL也有FindBNPrice服务,来获取Barnes & Nobles网站中某本书的价格,将这两个服务组合,从而可以判定关于某本特定的书,哪个网站的价格比较低。该组合服务的基本流程如图6所示:

图6 书目价格比较服务组合流程

4.2 基于OWL-S API的服务组合实现

在基于OWL-S API实现上述目标的过程中,设计以下组合过程,并将其过程基于Protégé+OWL-S插件生成直观视图,从而便于直观地表达组合过程的基本目的。

(1) 服务匹配过程

例1显示了基于OWL-S API的服务匹配过程:

例1:

public class Matchmaker {

OWLKnowledgeBase kb;

……

public Match(int matchType, Output output, Input input) {

this.matchType = matchType;

this.outputService = output.getService();

this.output = output;

this.inputService = input.getService();

this.input = input;

}

……

public Matchmaker() {

kb = OWLFactory.createKB();

kb.setReasoner("Pellet"); }

……

public int getMatchType(OWLType outputType, OWLType inputType) {

if(outputType.isEquivalent(inputType))

return Match.EXACT;

else if(outputType.isSubTypeOf(inputType))

return Match.SUBSUME;

else if(inputType.isSubTypeOf(outputType))

return Match.RELAXED;

else return Match.FAIL;

}

……

public static void main(String[] args) throws FileNotFoundException, URISyntaxException {

Matchmaker matchmaker = new Matchmaker();

matchmaker.addOntology("http://www.mindswap.org/2004/owl-s/1.1/BNPrice.owl");

matchmaker.addOntology("http://www.mindswap.org/2004/owl-s/1.1/BookFinder.owl");

List matches = matchmaker.displayAllMatches();

……

}

(2) 服务组合视图

根据图6所示的流程图,将BookFinderProcess、AmazonPriceProcess、BNPriceProcess、ComparePriceProcess按需组合,就形成了所需要的书目价格比较组合服务。该服务包含了OWL-S的顺序组合、Split+Join组合、If-Then-Else组合等三种结构,整体视图如图7所示:

图7 价格比较服务组合的整体视图

(3)服务组合代码

服务组合代码如例2所示,实现如下过程:

Begin

createSequenceProcess(BookFinder.owl & BNPrice.owl)//将两个服务本体进行组合,

输入书名,

通过服务本体BookFinder.owl得到书号,

将书号输入服务本体BNPrice.owl,

输出书目价格。

End

例2 :

……

CompositeProcess createSequenceProcess(CompositeProcess compositeProcess, List services) {

Sequence sequence = ont.createSequence();

compositeProcess.setComposedOf(sequence);

Perform[] performs = new Perform[services.size()];

for(int i = 0; i < services.size(); i++) {

Service s = (Service) services.get(i);

Process P= s.getProcess();

performs[i] = ont.createPerform();

performs[i].setProcess(p);

sequence.addComponent(performs[i]);

if(i > 0) {

……

}

}

Perform firstPerform = performs[0];

Perform lastPerform = performs[services.size()-1];

boolean createInput = firstPerform.getProcess().getInputs().size() > 0;

boolean createOutput = lastPerform.getProcess().getOutputs().size() > 0;

if(createInput) {

……

}

if(createOutput) {

……

}

return compositeProcess;

}

基于OWL-S的服务组合执行结果界面如图8所示。

图8 测试结果视图

5 结 语

面向服务架构(SOA)是未来数字图书馆发展的目标之一,而服务作为SOA中的基础组成部分,对其进行深入的研究是数字图书馆领域当前面临的重要课题。本文基于SOA思想,从数字图书馆的基本服务入手,尝试初步实现数字图书馆基本服务的组合过程,以期为数字图书馆全面实现SOA的基础研究提供参考。

参考文献
[1] 刘云生, 刘昕. 基于语义Web的动态服务组合技术研究[J]. 网络安全技术与应用, 2006(7): 44-46. [本文引用:2]
[2] The Mindswap Group . OWL-S API [EB/OL]. [2009-06-19]. http://www.mindswap.org/2004/owl-s/api/. [本文引用:1]
[3] Sirin E. OWL-S 1. 1 API [CP/OL]. [2009-07-20]. http://owl-s-api.projects.semwebcentral.org/. [本文引用:1]
[4] The Axis Development Team. WebServices - Axis [EB/OL]. [2009-09-10]. http://ws.apache.org/axis/. [本文引用:1]
[5] The Jena Development Team. Jena - A Semantic Web Framework for Java [EB/OL]. [2009-10-15]. http://jena.sourceforge.net/index.html. [本文引用:1]
[6] C&P Team. Pellet: OWL 2 Reasoner for Java [EB/OL]. [2009-09-13]. http://clarkparsia.com/pellet/. [本文引用:1]
[7] 沈玮韡, 蔡鸿明, 姜丽红. 一种基于语义Web服务的服务自动发现的实现[J]. 计算机工程, 2006, 32(18): 211-213. [本文引用:1]
[8] 徐利谋, 金可音, 阳辉, . 基于OWL-S的服务发现算法研究[J]. 计算机工程与科学, 2007, 29(8): 64-67. [本文引用:1]
[9] 王燕, 陈明, 王智广. 基于语义的Web服务发现算法[J]. 计算机应用与软件, 2009, 26(1): 13-15. [本文引用:1]
[10] 袁小玲, 李婷, 吴业福. 语义Web服务发现模型和匹配算法研究[J]. 武汉理工大学学报, 2009, 31(3): 33-36. [本文引用:1]
[11] 郭李娟, 史浩山, 王巍. 基于OWL-S/UDDI的Web服务发现机制[J]. 科学技术与工程, 2007, 7(9): 2103-2107. [本文引用:1]
[12] 郭学俊, 杜春, 秦雪杰. 基于本体的Web服务发现模型研究[J]. 计算机技术与发展, 2006, 16(6): 207-209, 212. [本文引用:1]
[13] Saadati S, Denker G. An OWL-S Editor Tutorial[EB/OL]. [2009-05-07]. http://owlseditor.semwebcentral.org/documents/tutorial.pdf. [本文引用:1]
[14] OWL Web Ontology Language Overview[EB/OL]. [2008-10-23]. http://www.w3.org/TR/owl-features/. [本文引用:1]
[15] Martin D, Burstein M, Lassila O. Describing Web Services Using OWL-S and WSDL[EB/OL]. [2009-03-25]. http://www.daml.org/services/owl-s/1.1/owl-s-wsdl.html. [本文引用:1]
[16] The Mindswap Group. Maryland Information and Network Dynamics Lab Semantic Web Agents Project[EB/OL]. [2009-06-13]. http://www.mindswap.org/. [本文引用:1]
[17] The Mindswap Group. OWL-S Services [EB/OL]. [2009-03-19]. http://www.mindswap.org/2004/owl-s/services.shtml. [本文引用:1]
[18] Amazon. com. Amazon Web Services[EB/OL]. [2009-05-15]. http://aws.amazon.com/. [本文引用:1]
[19] Abundant Technologies. Barnes & Noble Price Web Service[CP/OL]. [2009-06-12]. http://www.abundanttech.com/WebServices/BNPrice/default.aspx. [本文引用:1]