基于本体的Web服务合成研究,本文主要内容关键词为:本体论文,Web论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
收修改稿日期:2007-04-15
【分类号】 TP31
1 引言
参考W3C对Web服务(Web Services)的定义[1]:Web服务是由URI(统一资源标识符)标识的软件系统,它的公共接口和绑定方法由XML定义和描述,通过定义以及基于XML和Internet协议的消息传递这些软件系统在Web上可以相互发现和相互调用。简单来讲,Web服务是独立的、模块化的应用程序,能够在Web上被描述、发布、查找和调用。
在早期的分布式计算系统中,组件之间的紧密耦合性要求系统遵循太多的来自于不同组织的协议和标准,未来的趋势是从紧耦合的单一系统发展为松耦合的动态绑定组件系统,Web服务正是在这种趋势下出现的。一系列基于XML标准的新技术,如WSDL、SOAP和UDDI的出现使得Web服务迅速发展并已成为目前业界和学术界研究的重点。
一些最新的Web服务应用领域有:电子商务(B2B)、股票交易、电子政务等,全球最大的电子商务网站Amazon在Web服务领域(AWS:WWW.amazon.com/webservices)已经走在了前列,Amazon Web服务(AWS)为软件开发人员提供了访问Amazon技术平台和产品数据的应用程序接口(API),使得开发者可以通过创建动态和高效的Web应用程序来更新或拓展它们的商务。
总的来说,Web服务有两种:简单(Simple)Web服务和合成(Composite)Web服务。简单Web服务可以不依赖于其他Web服务独立地完成客户的要求,如检索信息的Web服务。合成Web服务被定义为简单Web服务或其他合成Web服务的聚合,它们协同工作来提供增值的(Value-added)服务内容。例如,汽车销售代理服务是一个合成Web服务,它由汽车经销、金融业务(如贷款)和汽车保险服务等Web服务合成而成。
目前,基于XML的Web服务的相关技术只为Web服务的描述、信息传递以及Web服务发现提供了语法(Syntax)上的描述,并没有明确其语义(Semantic),这就使得现在的Web服务合成过程非常费时,并容易出错。下一代Web是语义Web(Semantic Web),其目标是为了让计算机能够明确地解释执行任务,而这正好能够解决Web服务研究中的难题。语义Web技术的核心是基于本体的语义描述,所以基于本体的Web服务合成技术将能给Web服务合成提供帮助,并最终实现Web服务自动合成以及未来的智能Web服务。
2 基于OWL-S的Web服务合成描述
2.1 OWL-S定义的Web服务上层本体
为了使用一个Web服务,需要一个计算机可理解的服务描述。本体Web语言OWL的目标之一就是创建这些描述被制定和共享的框架。Web站点应该使用一个基本的类和属性的集合来声明和描述服务,这一点可以在OWL的Ontology架构下完成。OWL-S[2] 即Web服务的语义标记语言,它基于本体Web语言OWL,是由多个组织的研究人员联合在这方面给出的一个Ontology,其上层本体包括3个部分:Service Profile、Service Process和Service Grounding[2]。
Service Profile:指明所描述的Web服务的功能与接口,以便于服务代理能够搜索与匹配该Web服务;Service Process:指明当服务被调用时的操作,以便服务代理进一步匹配,以及服务合成和服务的协调工作及监控;Service Grounding:指定调用服务的具体细节,比如通信协议、调用端口等。其层次关系如图1所示。
图1 OWL-S上层本体[2]
例1给出了一个Web服务" ISBNFinder" 的上层本体描述,该服务提供的Web服务是根据输入的书名找到该书的ISBN号。根据例1的描述,该服务的Service Profile、Service Process和Service Grounding分别为:ISBNFinderProfile、ISBNFinderProcessModel和ISBNFinderGrounding。
〈/service:Service〉
……〈!- - 省略其他部分 - - 〉
〈/rdf:RDF〉
其中Profile将给出该服务的3种信息描述:
(1)服务的提供者:包含了指向提供服务的实体的联系信息;
(2)服务的功能:包含了4类信息IOPE:Input、Output、Precondition和Effect,即服务的输入、输出、前置条件以及预期结果;
(3)服务的特征属性:服务所属的种类、服务质量评价以及参数列表。
Profile提供了服务在注册处所需信息的准确描述,而一旦用户找到了所需的服务,后面和服务的交互通过Process Model进行,OWL1.0定义了ServiceModel的一个子类——ProcessModel,它给出了服务的过程本体,该本体的上层描述如例2所示,即有3种类型的Process:Atomic(原子的)、Simple(简单的)和Composite(合成的)。
在OWL-S中,ServiceProfile和ServiceModel都被认为是抽象表达,只有ServiceGrounding是具体的实现层次的规范。OWL-S选择了已有的工业标准WSDL和SOAP来描述这个实现规范。因为OWL-S也是基于XML的语言,所以很容易对WSDL做出扩展来支持OWL-S。
2.2 OWL-S对Web服务合成的描述
从2.1节可以看到,Web服务上层本体的3个部分分别对Web服务提供了不同的支持,其中Service Process提供了对Web服务合成的描述。
AtomicProcess可以直接被调用,它没有子过程,一步执行。从服务请求者看来,就是传递一个输入消息,服务执行完毕后返回一个输出消息。SimpleProcess是不可调用的,也没有对应的Grounding,但是它们和AtomicProcess一样,被认为只有一个执行步骤。SimpleProcess一般作为元素的抽象,它们或者提供了一些AtomicProcess的视图,或者是对CompositeProcess的简化的表达。CompositeProcess能够被分解为其他组合的或者非组合的Process。分解可以通过SEQUENCE、SPLIT或者IF-THEN-ELSE这样的控制结构来进行[2]。
例3是一个有关“航班订票”的Web服务的描述,该服务(BookFlight_Process)由4个服务按照序列(SEQUENCE,即先后关系)的控制结构来合成进行。
这3个服务分别是:
(1)GetFlightDetails,根据目的地、时间等输入信息取得航班的详细信息,这是一个信息查询的原子服务;
(2)GetContactDetails,根据上一个原子服务得到航班订票联系方式的原子服务;
(3)ReserveFlight,这是一个预订票的原子服务;
(4)ConfirmReservation,这是对预订票进行确认的服务。
由以上4个过程完成整个航班订票的Web服务。该Web服务合成过程可以用图2来表示。当然,合成服务还可以用来合成其他的合成Web服务。
图2 OWL-S描述的服务合成过程
2.3 OWL-S存在的问题
OWL-S基于本体定义了描述Web服务的语义标记,这些语义标记提供了对Web服务自动合成的描述,但是OWL-S中并未给出合成服务如何通过OWL-S的规格说明(Specification)来产生,更重要的是,OWL-S中并未对Web服务的可合成性概念进行定义,而概念的定义恰恰是Web服务(自动)合成的关键和基础。
3 基于本体的Web服务描述和定义
Web服务的合成需要对每一个服务进行描述,使得服务之间可以相互理解和交互。Web服务描述语言WSDL是被W3C标准化的Web服务描述语言,但是WSDL几乎没有提供对Web服务的语义描述,而只是从语法角度提供了对Web服务特征的描述。因此,应该对WSDL中定义的概念进行语义扩展,即在WSDL定义的概念基础上扩展得到基于本体的(Ontology-based)Web服务描述[3]。
这里将通过“房屋销售Web服务”实例给出基于本体的Web服务描述的定义和形式化说明。如图3所示,该Web服务由多个Web服务合成,它们分别是:房屋销售代理(HB)、房屋经销商(HD)、房屋问题检测(HC)、银行信用历史(CH)、金融支持(FI)、保险支持(IN)以及房屋购买历史(HH)等7个Web服务。Web服务通过服务操作调用(Operation Invocation)向用户或者其他服务提供本服务的功能。
图3 Web服务实例“房屋销售Web服务”
如图3所示,箭头(1)-(4)代表用户的调用步骤,而有端点的虚线代表服务间的相互操作,每个端点处代表该端服务提供的一个操作。例如:用户的第一个调用是调用(1),该箭头指向的端点调用了服务HB的一个操作sendMePriceQuote,即需要房屋报价;该操作和服务HD的操作priceQuote(虚线段的另外一个端点)进行交互从而返回用户房屋报价。
Web服务的操作模式(Operation Mode)一般有4种:
(1)请求操作(Solicit-response OP);
(2)响应操作(Request-response OP);
(3)单向操作(One-way OP);
(4)通知操作(Notification OP)。
例如:上文提到的操作sendMePriceQuote是一个请求操作;而操作priceQuote是一个响应操作;图3中服务FI和CH之间的相互操作(3.1.4)左右端分别为notifyCustomerCredit(通知客户信用卡)是一个通知操作;receiveCustomerCredit(收到客户信用卡)是一个单向操作。
每一个操作的输入(Input)/输出(Output)消息(Message)依操作模式而不同,请求操作和响应操作输入输出消息都有,通知操作只有输出消息,而单向操作只有输入消息。每一个消息又包含多个参数(即WSDL中的parts),每个参数有名字(Name)和数据类型(Data Type,描述时一般采用XML Schema中内置的数据类型)。
Synonyms是可选的领域名称,Specialization是领域特征说明。
基于以上定义,给出操作HB5∷sendMePriceQuote的定义实例:
例4操作HB∷sendMePriceQuote被定义为一个六元组(Desc,Mode,In,Out,P,C),其中:
①Desc=“该操作返回所查房屋的参考价格”;Mode=" solicit-response" ;
如图4所示,Binding和Operation是WSDL中提供的Web服务描述原语(在这里作为本体概念,增加了语义上的扩充),Category、Description和Purpose是增加的对Web服务描述的本体概念。因此,一个Web服务可以定义如下:
图4 基于本体的Web服务描述
定义2:Web服务。一个Web服务WS[,i]可以定义为一个五元组(Description[,i]、OP[,i]、Bindings[,i]、Purpose[,i]、Category[,i]),其中:
①Description[,i]是Web服务WS[,i]特征的一个文本描述;
②OP[,i]是WS[,i]所提供的操作集合;
③Bindings[,i]是支持WS[,i]的绑定协议集合;
④Purpose[,i]是WS[,i]的操作目的集合;
⑤Category[,i]是WS[,i]的分类信息集合。
基于以上定义,给出图3中Web服务HD的定义实例:
例5操作HD被定义为一个五元组(Desc、OP、B、P、C),其中:
①OP是该服务所能提供的操作定义,包括3个操作:OP={priceQuote,testQuote,specialOffers};
②B是支持该服务的绑定协议集合,定义为B={" SOAP" },即采用SOAP(简单对象访问协议)协议;
③B和P分别是该操作的操作目的和操作分类定义,定义方法同例1。
4 Web服务可合成性定义
基于以上讨论,Web服务的可合成性通过以下3个定义完成:
定义3:操作模式可合成。两个操作op[,ik]和op[,jl]是模式可合成的仅当:
因此,两个Web服务的和是可合成的当且仅当同时满足以上定义3、定义4和定义5。
5 结语
Web服务以及Web服务合成技术有广泛的应用前景。但是,在结合语义Web的相关技术之前,Web服务合成模型主要基于语法(Syntax)信息,本文讨论的核心问题是如何把Web服务合成的相关概念与语义Web技术中的本体(Ontology)相结合,从而在Web服务的合成技术中融入更多的语义(Semantic)信息。
Web服务的自动合成是目前的研究热点,可合成性定义是关键之一。如何在本文讨论的问题基础上融合更多的语义信息到服务合成本体中是今后的一个研究方向,如在Web服务合成模型中引入“服务合成质量”(Quality of Composition, QoC)的本体信息。