« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| 公告 |
暂无公告... |
Blog信息 |
blog名称: 日志总数:4 评论数量:34 留言数量:0 访问次数:37329 建立时间:2006年2月24日 |

| |
基于语义的Web服务自动化技术(续) 科学研究
alandun 发表于 2006/3/3 22:15:45 |
4.1 用DAML-S实现Web服务发现自动化
DAML-S的Service Profile使用ontology来描述了Web服务的性能及其执行效果。在进行Web服务发布时,可以将Service Profile和UDDI中的Web服务描述绑定在一起,即使用UDDI的TModel对DAML-S的服务描述进行编码。这样,在进行服务发现时,也就是在对服务进行匹配时就需要一个基于DAML+OIL逻辑推理的Web服务匹配引擎,其结构如图2所示。当Web服务请求者向UDDI发出请求(包括服务功能描述和可以提供的输入以及期望的输出),则UDDI将该请求转换成Service Profile形式,再将其交给匹配引擎。然后匹配引擎利用DAML+OIL推理机对功能描述进行基于DAML Ontology库和Web服务描述库的灵活匹配,得到一些满足条件的Web服务。当然,这种匹配不是简单的基于关键字方式,而是基于语义约束的模糊匹配。例如客户需要购买猫粮,由于猫是宠物的一种,所以宠物食品店提供的宠物食品出售服务会被选中,而这是传统的UDDI无法做到的。接着再使用匹配引擎逐个检查找到的Web服务的输入是否是请求者所提供的输入的子集和其输出是否包含请求者所期望的输出;这样匹配率最高的服务就是Web服务发现的目标。
4.2 用DAML-S实现Web服务执行自动化
为了实现Web服务执行自动化,DAML-S首先使用Service Grounding定义代理该如何访问Web服务,包括代理和服务之间的交互信息、服务的输入输出和服务执行时机等。然后类似BPEL4WS,用Process Model定义服务之间的交互过程,即规定Web服务所完成的所有任务(此处任务可以是一个Web服务)、执行任务的顺序,并在服务执行过程中监控各个服务的状态。当然在上述过程中已经涉及到Web服务组合自动化,接下来有更详细的叙述。
4.3 用DAML-S实现Web服务组合自动化
DAML-S把一个Web服务认为是一个过程(Process),因而用过程模型(Process Model)来描述Web服务的执行和组合。过程模型主要由两部分组成:过程模型(Process Model)和过程控制模型(Process Control Model)。其中过程模型描述了服务组件的操作或者进程,说明了服务规划、组合信息以及代理和服务之间的配合;过程控制模型则允许代理对服务执行过程进行监控。而且DAML-S针对这两部分定义了过程本体论(Process Ontology)和过程控制本体论(Process Control Ontology)。
勿庸置疑,过程本体论中最基本的实体类型是过程(Process)。一个过程应该有一些输入和一些输出。另外,要执行一个过程还可能需要一些前置条件,例如可能需要特殊的设备、某些参数(譬如压力)要达到一定的阀值等等。当然,过程执行完成之后会产生一定的效应。因此一个过程具有如下属性:前置条件、参数和执行结果,其中参数又包括输入、输出参数和参与者信息。
过程可以被分为两种:基本过程(Primitive Process)和组合过程(Composite Process)。组合过程继承于过程,是但是比过程多了一个称为组件的属性。一个组合过程是由多个子基本过程或子组合过程嵌套组成。而组件属性就描述了这些子过程的执行顺序和条件。基于组合方式的不同,组合过程分为以下几类:Sequence、Split、Split + Join、Choice、Unordered、Condition、If-Then-Else、Iterate、Repeat-While和Repeat-Until.。利用这些组合过程就可以完成对现实中组合Web服务的建模。下面举一个例子来说明如何使用过程模型来实现自动化的Web服务组合。
假设客户要通过名称为AmazonBuyBook的Web服务到亚马逊网上书店购买一本书。整个购买过程又可以分解为以下几个简单的Web服务:找到适当的书籍(LocateBook)、放入购物车(PutInCart)、付款(Payment)等。因此AmazonBuyBook是一个组合Web服务。下面首先将AmazonBuyBook定义成过程。此时的AmazonBuyBook过程还是一个整体过程,即没有被展开。
<rdfs:Class rdf:ID="AmazonBuyBook">
<rdfs:subClassOf rdf:resource=
"http://www.daml.org/services/daml-s/2001/05/Process.daml#Process"/>
</rdfs:Class>
<rdf:Property rdf:ID="bookName">
<rdfs:subPropertyOf rdf:resource=
"http://www.daml.org/services/daml-s/2001/05/Process.daml#input"/>
<rdfs:domain rdf:resource="#AmazonBuyBook"/>
<rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#string"/>
</rdf:Property>
<rdf:Property rdf:ID="eReceiptOutput">
<rdfs:subPropertyOf rdf:resource=
"http://www.daml.org/services/daml-s/2001/05/Process.daml#output"/>
<rdfs:range rdf:resource="#EReceipt"/>
</rdf:Property>
<rdf:Property rdf:ID="creditCardValidity">
<rdfs:subPropertyOf rdf:resource=
"http://www.daml.org/services/daml-s/2001/05/Process.daml#parameter"/>
<rdfs:range rdf:resource="#ValidityType"/>
</rdf:Property>
在上述定义中,属性bookName(书名)是过程AmazonBuyBook必需的一个输入参数;属性eReceiptOutput(电子收据)是其输出,表示买书是否成功;而属性creditCardValidity(信用卡有效性)是付款时要用到的信息,既不是输入,也不是输出。
三个简单Web服务的过程定义如下:
<rdfs:Class rdf:ID="LocateBook">
<rdfs:subClassOf rdf:resource="#AmazonBuyBook"/>
</rdfs:Class>
<rdfs:Class rdf:ID="PutInCart">
<rdfs:subClassOf rdf:resource="#AmazonBuyBook"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Payment">
<rdfs:subClassOf rdf:resource="#AmazonBuyBook"/>
</rdfs:Class>
接着将AmazonBuyBook按顺序方式(Sequence)扩展成ExpandedAmazonBuyBook,并将其定义如下:
<process:expand>
<rdfs:Class> rdfs:about ="#AmazonBuyBook"</rdfs:Class>
<rdfs:Class> rdfs:about ="#ExpandedAmazonBuyBook"</rdfs:Class>
</process:expand>
<rdfs:Class rdf:ID="ExpandedAmazonBuyBook">
<daml:intersectionOf rdf:parseType="daml:collection">
<daml:Class rdf:about=
"http://www.daml.org/services/daml-s/2001/05/Process.daml#Sequence"/>
<daml:Restriction>
<daml:onProperty rdf:resource=
"http://www.daml.org/services/daml-s/2001/05/Process.daml#components"/>
<daml:toClass>
<daml:Class>
<daml:intersectionOf rdf:parseType="daml:collection">
<daml:Restriction>
<daml:onProperty rdf:resource=
"http://www.daml.org/services/daml-s/2001/05/Process.daml#firstItem"/>
<daml:toClass rdf:resource ="#LocateBook"/>
</daml:Restriction>
<daml:Restriction>
<daml:onProperty rdf:resource=
"http://www.daml.org/services/daml-s/2001/05/Process.daml#secondItem"/>
<daml:toClass rdf:resource ="#PutInCart"/>
</daml:Restriction>
<daml:Restriction>
<daml:onProperty rdf:resource=
"http://www.daml.org/services/daml-s/2001/05/Process.daml#thirdItem"/>
<daml:toClass rdf:resource ="#Payment"/>
</daml:Restriction>
</daml:intersectionOf>
</daml:Class>
</daml:toClass>
</daml:Restriction>
</daml:intersectionOf>
</rdfs:Class>
有了上述定义,我们可以看到,调用执行AmazonBuyBook的过程就是顺序执行LocateBook、PutInCart和Payment这三个简单Web服务的过程。每一个过程的前置条件都是上一个服务的执行效果,而其执行效果则是下一个服务的前置条件。客户端程序或代理只要给出AmazonBuyBook需要的前置条件,则Web服务基础构架(例如改进的UDDI)就能自动挑选、组装适当的简单Web服务,然后按顺序执行来完成任务,最后将执行效果返回给客户端,例如确认单、电子收款收据以及邮寄过来的实体书,而无需客户代理了解其中细节。这样就实现了Web服务执行和组合自动化。
5.结束语
尽管已经有类似DAML-S、OWL-S等语言来描述语义Web服务,但还有许多的研究工作需要我们来完成。譬如如何将现有的Web服务语义进行完整描述,如何实现更精准的语义匹配引擎,如何进一步改进现有架构使Web服务更加自动化,组合Web服务语义保持问题等等;另外,语义Web服务的实现需要也更庞大详细的ontology库的支持。
From: http://www.xml.org.cn/blog/more.asp?name=holysword&id=2327 |
|
回复:基于语义的Web服务自动化技术(续) 科学研究
hijk(游客)发表评论于2006/3/18 10:18:16 |
|
» 1 »
|