SemanticWebServices沈坚shenjian@net.pku.edu.cn隋鑫suixin@ebusiness.pku.edu.cn罗引luoyin@ailab.pku.edu.cn王彬wbin@pku.edu.cn摘要本文主要介绍了目前SemanticWebServices研究领域的一些研究成果和相关技术。SemanticWebServices是将SemanticWeb技术应用到WebServices领域,实现WebServices的自动发现,调用和组装。本文分三部分,首先简单介绍SemanticWeb的知识和技术;然后介绍OWL-S规范,这是WebService的Ontology,用来描述具有语义信息的WebService;昀后介绍如何利用OWL-S来实现服务发现,调用和组装的自动化。附录1包括了对于OWL-S白皮书的一些理解和认识。关键词SemanticWeb,WebServices,OWL-S1.引言WebServices是一种新兴的分布式技术。传统Web应用技术解决的问题是如何让人来是来使用Web应用所提供的服务,而WebServices则要解决如何让计算机系统来使用Web应用所提供的服务。而在WebServices中加入语义的支持,使得计算机之间能够理解互相通信的内容,从而实现自动化。首先看一个WebService应用场景。图1语义Web服务的一个应用场景要参加一个DAMLPI会议,我们希望设计一个会议安排agent来实现诸如机票预定,汽车租赁等功能。我们通常会到网上搜索提供相应服务的Service,然后hardcoding到我们的agent中。理想的,我们希望在这个过程中不需要人的参与,也就是说,这个agent,能自动的去寻找符合要求的Service,自动的把那些服务组合起来,自动的按序调用执行,完成我们想要的功能。要实现Web服务发现,调用和组装的自动化,有两个关键问题。首先,对于服务发现,不能仅仅依赖关键词搜索,而需要按照服务所提供的功能搜索,这样才能找到确实需2004年WebServices课程讨论报告1要的服务,服务的功能不可能依靠若干关键词完整表达。其次,对于服务调用和服务组装自动化,需要基于语义的互操作,也就是说,服务之间必须能够理解互相交换的信息。即使一个服务的输出参数和另一个服务的输入参数名字相同,类型也相同,也不能将它们连接起来,因为,我们无法保证两个参数的含义是相同的。这都需要语义的支持!目前语义Web服务的主要方法是利用Ontology来描述Web服务,然后通过这些带有语义信息的描述实现Web服务来实现服务的自动发现,调用和组装。SemanticWeb和WebServices是语义Web服务的两大支撑技术。OWL-S是连接两大技术的桥梁,目前SemanticWebServices的研究主要围绕OWL-S展开。本文将按照如下方式讨论,首先介绍SemanticWeb的相关技术,然后重点介绍OWL-S,昀后介绍目前的一些利用OWL-S来实现服务自动发现,调用和组装的研究。由于OWL-S的早期版本称为DAML-S,而本文的一些引用资料中仍然使用DAML-S,我们不区分OWL-S和DAML-S。2.SemanticWeb2.1今天的Web随着Internet的发展,人们已经习惯于在web上获得各种各样的信息。人们借助于搜索引擎,门户网站来查询自己想要的信息。然而,由于今天的Web的内容基本上都是只有人才能读懂的,而web上的数据却急剧的上升,使人淹没在数据的海洋中,却难以找到想要的信息,搜索引擎返回的结果也多到人们不能逐一的进行挑选。所谓的web,实质是一个URI的空间,在这个空间中,任何一个URI都可以连接到另一个URI上,而毫无限制和说明。Web的这种模型,一方面是它成为一个可以包容万物的普遍的模型,另一方面却使机器难以加入其中来帮助人们找到和处理所需的信息,而不是淹没在数据的海洋中。人们设计Web的初衷是使它成为一个信息空间,它应该不仅适用于人与人之间的交流,更应该能使机器加入进来以帮助人们。为了这个目标,TimBerners-Lee提出了:Machine-Understandableinformation:SemanticWeb2.2WhatissemanticWeb?SemanticWeb并不是抛开今天的Web的另一条道路,而是今天的Web的扩展。它使包含在它内部的信息拥有明确定义的语义,而这种语义能够使机器与人进行更好的合作。具体地说:“Web”是一个可导航的空间,在其中每一个URI都映射到一个资源。“Semantic”意味着机器可处理的,对于数据来说,Semantics告诉了机器在这些数据上所能做的操作。那自然语言适不适合表达这种Semantics呢?虽然自然语言有很强的表达能力,但由于它的歧义性,使它不能满足机器可处理的要求。2.3SemanticWeb的结构SemanticWeb的发明人TimBerners-Lee提出了SemanticWeb的一种层次化的结构,如下图:2图2语义Web的层次结构下面是各层的描述:zURI(UniformResourceIdentifiers)作为资源(任何东西都可以看作资源)标识机制,提供对资源的标准化的名字描述;zUnicode提供世界上各种语言的统一的字符编码标准zXML(ExtensibleMarkupLanguage)定义了结构化的数据描述方式,是数据互操作的语法基础,但没有包含任何特殊的语义。看下面的例子从这个图中可以看出,虽然我们对数据加了标记,但其他人却不知道他多代表的意义。SLR………../SLRzNamespace提供将名字分类的机制,使得重名但含义不同的资源能够一起使用。zRDF,RDFSchemaRDF(ResourceDescriptionFramework)是描述数据语义的基础。它定义了描述资源以及陈述事实的基本方式:主语、谓语、宾语的三元组。3图3RDF示例这是RDF陈述一个的简单例子,在这个例子中,主语是这个网页,谓语是,而宾语是。RDFSchema是一种RDF词汇描述语言,在RDF之上定义了一个昀小的语义模型(词汇集)支持复杂词汇的建模,包括Resource,Class,Property,subClassOf,subPropertyOf,range,domain等基本元素。zOntologyVocabulary为什么需要OntologyOntology提供了一种明确的定义语义的方式,通过Ontology的定义的语义,使机器能够进行互操作,使机器能够理解数据的语义。从而达到SemanticWeb的数据是机器可理解的要求。Ontology的定义Ontologyisaformal,explicitspecificationofasharedconceptualization.在上面的定义中:conceptualization是指通过识别出世界上的一种现象的相关概念来对这种现象所建立的抽象模型。Explicit是指所识别的这些概念的类型,和他们使用上的限制是清晰的定义了。Formal指ontology是机器可处理的。Shared是指anontology捕获的是一种普遍的知识,也就是说,它应该被多数人所接受。建立一个ontologyOWL(WebOntologylanguage)OWL(WebOntologyLanguage)是W3C提出的一种本体描述语言,OWL源自于DAML+OIL,保持了DAML+OIL的框架和大多数语法、语义特征,同时针对不同的应用范围(不同的表示能力和计算能力)做了扩充和限制,形成了三个子语言:OWLFull,OWLDL和OWLLite;三个子语言的限制由少到多,其表达能力依次下降,但可计算性(结论可由计算机通过计算自动得出)依次增强。如下图:4OWLFullOWLDLOWLLiteOWLFullOWLDLOWLLite图4OWl语言的分类OWLFull:提供昀丰富的表达能力和昀大的RDF语法自由度,支持OWL的全部语法结构,但没有可计算性保证。OWL允许本体扩大预定义词汇的含义,但OWLFull基本上不可能完全支持计算机自动推理。OWLLite:OWLLite提供昀小的表达能力和昀强的语义约束,适用于只需要层次式分类结构和少量约束的本体,例如词典。因为其语义较为简单,OWLLite比较容易被工具支持。OWLDL:OWLDL得名于它的逻辑基础——描述逻辑。OWLDL处于OWLFull和OWLLite之间,兼顾表达能力和可计算性。OWLDL支持所有的OWL语法结构,但在OWLFull之上加强了语义约束,使得能够提供计算完备性(computationalcompleteness,即任何结论都能确保通过计算得到)和可判定性(decidability,所有结论都保证在有限时间内得到)。建立一个ontology的步骤具体的建立一个ontology,一般分为以下几步:1.定义ontology中的Class,Class指的就是概念。2.把这些Class组织成一个层次化的结构。3.填充Property在相应的Class上的值。4.定义Property和描述这些Property对相应的Class的限制。zLogicLayer:逻辑层在本体所描述的知识之上提供逻辑推理能力(基于规则)。例如,定义这样一个规则,任何月销售额超过100万元的销售人员将被评为明星销售员,Mike上月销售额为120万元。于是逻辑系统能够推理得出:Mike是明星销售员工。zProofLayer:有了对事实的逻辑描述,就能够提供对事实的复杂的“证明”。例如,销售记录Mike上月一共卖出63万元的机床设备和58万元的测量设备,而产品管理系5统表明,机床设备和测量设备是互斥的(即交集为空),接着,计算系统给出63+58=121,并且121100,就能得出这样一个证明:Mike是明星销售员工。在SemanticWeb的开放环境中进行推理是一个困难的任务,因为任何一个推论都可能涉及到大量信息的处理。研究者由此提出了语义网总线(SemanticWebBus)的设想。如图3所示,语义网中充斥着各种信息处理器(图中圆形所示)[AaronSwartz,2002],其中一些仅仅提供本体数据(ontology&data)供其它处理器使用,另外一些则根据这些本体数据构建逻辑规则,启发式引擎则负责根据本体、数据和逻辑规则进行推理,得到“结论”(Proof),并把这种结论返回到逻辑规则和本体数据中去。zTrustLayer:在之前所有层次的基础之上,会形成无数对于某一事实的陈述,这些陈述合理与否依赖于它们所处的上下文环境。因此当人或计算机访问这些陈述时,需要根据上下文和自己的需求自行判定该陈述是否可信(Trust)。采用加密技术和数字签名技术(渗透到每个层次的规范中去)是实现判定可性的一个重要手段,并可以由此形成一个信任的Web(WebofTrust)。例如,John声明:所有一级代理商有权委托二级代理商,而Jane是我公司的一级代理商之一。Jane的声明是:所有与我公司有三年以上合作关系的,将获得二级代理商资格,Joe是我公司一个有4年合作关系老伙伴。同时,所有这些声明都有数字签名保证了是可信的,于是,可以得出结论:Joe将获得John公司的二级代理商资格由于后面会用到OWL,所以下面先对OWL做一个简介。2.4OWL语法简介zClassesClasses提供了组织具有相似特征的资源的一种抽象方式。每一个OWLClass联系到一个individual的集合,这个集合叫做它的外延,集合中的individual叫做它的instance。可以通过指定一个Class名字或说明一个匿名的Class的外延来描述一个Class