专利名称:面向语义Web服务程序设计的语义数据表示和处理方法
技术领域:
本发明涉及一种面向语义Web服务程序设计的语义数据的表示和处理方法, 属于面向语义Web服务的计算机软件领域。
背景技术:
伴随着电子商务的迅速崛起,Web应用完成了从集中式到分布式的巨大变 革。Web服务作为一种发展非常迅速的、新兴的Web应用模式,已经成为一个崭 新的分布式计算模型,并为互联网上的数据和信息集成提供了有力的支撑。同时, 构建在面向组件编程技术、Web服务和SOA基础上的面向服务编程技术也已发展 成为针对互联网的新一代软件开发技术。BPEL语言是当前企业界事实上的标准 规范。借助于Web服务描述语言WSDL, BPEL通过组装互联网上分散的、功能有 限的单个Web服务来构造企业应用系统。
然而,以BPEL为代表的面向服务程序设计语言一般都在语法层面进行程序 设计,并没有很好的解决互联网开放环境下服务组合所面临的诸多问题。特别是 组合服务与各个成员Web服务之间的静态绑定关系,导致其结构在运行时难以动 态调整。 一方面,因为Web服务的描述缺乏足够的语义信息,以Web服务为构成 要素所设计的程序明显缺乏灵活性和动态适应能力,Web服务的搜索、发现和组 装具有不确定性,软件的可靠性和可用性较差。另一方面,多个Web服务构建并 隶属于同一个应用系统,其中每个服务都是对该系统中可复用资源的抽象,服务 之间在业务逻辑上往往存在比较紧密的数据关联性,即一个服务的输出数据(消 息)与业务相关的另一个服务的输入数据(消息)之间存在着关联性。这种Web 服务之间的数据相关性对于Web服务搜索、发现、组装等任务具有重要的意义, 而BPEL语言和WSDL语言均无法描述这种数据关联信息。
为了能够根据用户提供的信息更加准确地描述并执行Web应用,需要考虑更 加丰富的语义和上下文信息。语义是数据(符号)所代表的概念的含义,以及这 些含义之间的关系,是对数据的抽象或者更高层次的逻辑表示。Web应用中XML 格式的数据处理的实质就是得到被处理的Web数据所代表的含义,实现数据在含 义上的处理。数据正确的语法表达是保证计算机之间能够进行信息交换和处理的前提,而数据语义的描述则是数据可被计算机正确理解和推理的基础。
语义Web服务技术的发展,为描述Web服务及Web数据的语义提供了更有效 的手段。语义Web服务是Web服务和语义Web的有机结合,其目标是以一种明确 的、计算机能够理解的方式来描述Web服务的数据、功能和内容,同时增强已经 存在的Web服务操作的性能和健壮性,为Web服务的发现、执行、解释和组合的 自动化提供有效的支持。
研究表明,借助于语义Web服务技术,Web应用可以基于资源描述框架RDF、 元数据和OWL本体来抽象表示数据,进而提高Web服务的质量,这也使得直接将 语义Web服务作为语义程序的基本构成元素成为可能。
当前,尚不存在直接以语义Web服务和语义数据变量为软件构成元素进行程 序设计的语义程序设计语言。BPEL语言不支持面向语义Web服务的程序设计。 针对语义Web服务而对BPEL语言进行扩展的语言,如BPEL4SWS (BPEL for Semantic Web Services)语言的发展还不够成熟,相应的,也缺乏对于语义数 据进行有效表示和处理的手段和机制。
发明内容
本发明的目的是解决面向语义Web服务程序设计技术缺乏对各种数据的语 义层抽象和表示以及相应的语义数据处理机制,难以有效地支持语义层程序设计 以及语义软件结构和行为的运行时调整和动态演化问题,从而提供一种语义数据 表示和处理方法,使语义程序设计人员能够直接和显式地描述各种数据的语义信 息,并完成语义程序部署和执行阶段的语义数据类型转换和语义数据处理。
实现本发明目的采用的技术方案是根据面向语义Web服务的语义程序设 计特点,制定出了基于XML标准的、面向语义Web服务的语义数据表示规范和处 理方法,可以方便开发者进行实际的语义软件开发。使用该语义数据表示规范可 以协助开发语义Web应用系统,能精确地对各种语义Web服务调用及业务流程所 涉及的语义数据,如输入消息,输出消息和中间数据进行描述,并实现语义信息 处理的自动化。下面就语义数据的表示和处理方法进行说明
一、制定语义数据类型和语义变量的XML Schema模式规范。
XML Schema是W3C官方推荐的XML模式语言标准,用于定义和限制XML词 汇表。它是分层结构的,支持类型、结构以及关系的定义。为了能够在面向语义Web服务的语义程序中表示语义数据,必须首先规范用于表示和描述语义数据的 数据类型系统、相应的语义变量及其他元素、属性和实体,并详细规约这些内容 之间的相互关系。通过制定语义数据类型和语义变量的Schema模式规范,规范 了语义数据类型和语义变量对应的XML文档结构,并对元素和属性的内容进行约 束和限制,从而为使用语义数据类型和语义变量的设计人员提供了模式使用规 范。根据所定义的XML Schema模式规范,语义程序设计人员可以按照需要定义 实际需要的各种语义数据类型和语义变量。 二、定义基于本体的语义数据类型。
根据本发明的一个方面,为面向语义Web服务的语义程序引入了语义数据 类型概念及相应的定义方式。这种语义数据类型使用本体库中的概念定义了语义 程序中所使用的数据类型的语义,专门用于描述语义Web服务与业务流程之间交 换的语义数据以及业务流程状态信息的类型,为数据提供了一种基于本体的表示 方式。
语义数据类型的两种定义方式简单语义数据类型和复杂语义数据类型。 简单语义数据类型用于定义原子数据的语义类型,是组合其他数据的基础。
根据语义数据类型的XML Schema模式规范,简单语义数据类型的XML格式定义
如下
〈semanticTypes〉
〈semaniticType name NCName" ontologyReference=〃anyURI〃>+
</semanticType> </semanticTypes〉
其中,属性name表示语义数据类型的名字,本体引用ontologyReference 指向XML数据所对应的、本体库中一个概念。
复杂语义数据类型主要针对简单语义数据类型无法完成的定义而产生,由多 个语义数据元素复合而成。对于复杂语义数据类型,可能在定义时无法找到完全 对应的本体概念,因此需要通过复合多个语义数据元素来定义复杂语义数据类 型。根据语义数据类型的XML Schema模式规范,其XML格式语法定义如下-<semanticTypes〉 <formula>formula see original document page 8</formula>
其中,语义数据类型semanticTypes的属性name表示该复杂语义数据类型 的名字,每个语义数据元素semanticElement都由一个名字name进行标识,并 使用一个己定义的语义数据类型sType或者一个本体引用ontologyRefenence 来定义。语义数据元素semanticElement中属性Name表示语义数据元素的名字, semanticElement既可以是已定义的简单语义数据类型或已定义的复杂语义数 据类型,也可以是一个指向本体的概念如果该语义数据元素可以使用已有的语 义数据类型进行定义,则用sType属性表示所属的语义数据类型名;否则,就使 用一个指向本体的概念进行标注,本体引用ontologyReference属性指向一个本 体中定义的概念,sType和ontologyReference属性必须选一种。
三、声明语义变量。
语义变量用于存储语义Web服务与业务流程之间交换的语义消息,也用于存 放业务流程的状态信息。与传统程序变量相似,语义变量也可以用于流程的路由 判定和循环控制。语义变量使用预先定义好的语义数据类型进行定义。语义变量 存储简单语义数据、复杂语义数据和流程状态信息。每一个变量在使用之前都必
须预先加以声明。
语义变量具有作用域,每个语义变量只有在定义它的作用域和所包含的作用 域内才是可见的,包括具有全局性作用域的全局语义变量和具有局部作用域的 局部语义变量。
语义变量是语义程序中使用的数据变量表示形式,在程序部署过程中,会根 据语义数据所属语义数据类型的结构,在本体库的支持下,将每一个语义数据转 换成XML表示的语法数据,以便和真正的Web服务进行正确的通信。语义变量的 声明在标签〈semanticVariables〉内进行,根据语义变量的XML Schema模式规范, 相应的XML格式语法结构定义如下 < setnant i cVar i abl e s〉7<semant i cVar iab1e name=〃semant icVariab1eName〃
semanticType=〃QName〃>+ 〈/semanticVariable> </semanticVariables> 其中,属性name表示所定义的语义变量的名字,语义变量的语义数据类型 由属性se腿nticType描述。 四、对语义变量的使用。
1. 在语义Web服务调用活动〈invoke〉中使用语义变量。 通过〈irwoke〉活动,业务流程能够调用其他语义Web服务中的操作。当业务
流程调用语义Web服务的一个操作时,需要发送一组参数,这些参数被建模为语 义Web服务的输入语义消息。〈invoke〉活动中指定了用于容纳相应类型输入语义 消息的语义变量。如果业务流程以同步方式调用语义Web服务的一个操作,则该 操作执行结束的返回结果被建模为语义Web服务的输出语义消息。为了保存这些 返回语义消息,〈irwoke〉活动也指定了与这些语义消息同类型的语义变量。相应 的XML格式的语义变量使用格式如下所述 〈invoke name二〃NCName"
semanticService二〃QName〃
f unc t. i on二〃NCN測e w
i叩utVa:riable二"seiTianticVa:riabl eName" outputVariable二〃semanticVariableName〃7 /〉 其中,属性inputVariable指定了用于容纳输入语义消息的语义变量,属性 outputVariable指定了用于容纳输出语义消息的语义变量。
2. 在语义消息接收活动〈receive〉中使用语义变量。
通常一个语义消息接收活动是一个业务流程的起始点,它会阻塞执行直到匹 配的、启动流程的初始化语义消息到来;也可以等待语义Web服务操作调用后的 返回语义消息,接收所调用操作的返回语义消息。通过语义消息接收活动,业务 流程能够从外部获取语义数据,并将其保存到指定的语义变量中。相应的XML 格式的语义变量使用格式如下所述 〈receive name二〃NCN柳e〃semanticService="QName〃 functiorF〃NCN柳e〃
variable-〃SemanticVariableName〃7/〉 其中,属性variable指定了保存所接收到的语义消息的语义变量。
3. 在语义消息响应活动〈r印ly〉中使用语义变量。
通过〈r印ly〉活动,业务流程能够向外界发送响应语义消息来应答通过 〈receive〉活动所接收到的语义消息。通常,〈r印ly〉活动用于为同歩型业务流程 返回响应语义消息。〈r印ly〉总是与启动业务流程的初始〈receive〉活动相关联。 当使用〈r印ly〉活动为同步型业务流程返回响应语义消息时,需要指定相应类型 的语义变量来保存响应语义消息。相应的XML格式的语义变量使用格式如下所 述
<reply name=〃NCName〃
semant i cServi ce=〃QName〃 function=〃NCNanie〃 var:i able二〃 semant icVariabl eName〃 faultN纖?QN譜"/> 其中,属性variable指定了保存响应语义消息的语义变量。
4. 赋值
为了能够访问语义程序的语义数据,可以对变量定义体进行扩展实现语义变 量的赋值,也可以使用语义程序中的赋值〈assign〉活动实现语义变量之间、语义 变量与语义表达式之间的赋值。
语义变量定义体中实现语义变量赋值的XML语法格式如下所述
〈semanticVari油les〉7
<semanticVariable name二〃semanticVariableName〃 element二〃QName〃? messageType二〃QName〃?H from-spec 〈/semanticVariable〉 〈/semanticVariables〉 赋值〈assign〉活动的XML语法格式定义如下所述<assign name=〃NCName"〉
〈copy〉
from—spec to-spec
〈/copy〉 )+ 〈/assign〉
其中,from-spec指定了赋值的语义数据源,其XML语法格式可以是以下三 种中的一种
(1) 〈from variable=〃semanticVariableName〃 part=〃QName〃〉
〈query queryLanguage二〃肌yURI〃7"
queryContent 〈/query> </from〉
属性variable指定了数据源所在的语义变量,part属性指定了语义变量中 的语义消息分部;query指定了要使用的査询语由'(属性queryLanguage)和査 询内容(queryContent)。这种数据源描述格式的含义是使用XML查询语言在 语义变量的指定分部中查找符合queryContent所指定约束的语义信息作为数据 源。
(2) 〈from expressionLanguage="anyURI" 〉expression</from〉 这种数据源描述格式的含义是使用由expressionLanguage (如XPath )
描述的表达式expression作为数据源。
(3) 〈from〉<literal〉literal value</literal></from〉 这种数据源描述格式的含义是按照字面编码规则(literal)将语义消息
序列化为XML文档流并作为数据源。
To-spec指定了语义数据赋值的目的地,可以是以下三种中的一种 (1) 〈to variable=〃semanticVariableName〃 part=〃QName〃〉 <query queryLanguage=〃anyURI〃?>
queryContent 〈/query〉 〈/to>
11这种数据目的地描述格式的含义是使用XML查询语言在语义变量中查找包 含符合queryContent所指定约束的语义信息的分部作为数据目的地,用来存储 从数据源传递来的语义数据。
(2) <to variable=〃semanticVariableName7〉
这种数据目的地描述格式的含义是把从数据源传递来的语义数据保存在属 性variable所指定的语义变量中。
(3) 〈to expressionLanguage二〃anyURI"7〉expressiorK/to〉
这种数据目的地描述格式的含义是把从数据源传递来的语义数据转换为由
expressionLanguage表达式语言描述的表达式。 五、对语义数据的处理 实现语义数据操作的处理方法包括-
(1) 语义程序变换时语义数据类型的转换。 语义程序的变换是指在部署阶段将语义程序转换成可执行程序的过程。在这
个过程中,首先搜索满足要求的具体服务,然后参考这些服务的WSDL文件中所 定义的消息结构,并根据程序中定义的语义数据的类型和语义数据对应的本体概 念结构,深度优先搜索整个语义本体库,为每个语义数据都生成一个可供运行时 使用的XML语法结构框架,用于存储语义数据转换而成的XML普通语法数据;同 时还为每一个语义数据生成相应的语义数据适配器。如果语义数据是语义Web 服务的输入或输出消息,则语义数据适配器处理语义Web服务描述文档中定义的 数据语义,可以完成语义数据和具体Web服务的输入输出数据之间的适配。上述 的语义数据类型向XML普通语法数据类型的转换结果以XML Schema格式存储, 并与所调用的具体Web服务的数据类型存在对应关系,以供语义程序执行时由语 义程序执行引擎解析调用。
(2) 语义程序运行时语义数据的处理。 语义数据是语义等价而语法异构的数据在语义程序中的统一表示,在语义程
序变换阶段已经为语义程序的语义数据生成了其对应的运行时XML语法结构框 架,该语法结构框架通过相应的XML Schema加以约束。在语义程序执行过程中, 利用该语法结构进行数据的赋值和计算。具体地说,语义程序的服务调用过程中, 具体服务的输入/输出是包含语义数据的各种SOAP消息,这些消息传递到语义数据适配器后,语义数据适配器将根据这些数据所属语义数据类型的本体引用,对 本体库进行深度解析,完成本体概念结构与语义数据类型的语法结构映射,最终 实现语义消息到XML格式语法数据的转换和XML格式语法数据到语义消息的转 换,从而,数据适配器能够解决语义数据的运行时语法结构和Web服务的语法结 构之间的不匹配问题。
在本说明书中,引用了以下术语所表达的意义为
"本体"本体(ontology)是概念模型的明确的规范说明,本体的目标是 捕获相关领域的知识,并对给定领域中的知识集合建模,提供对该领域知识的共 同理解,确定该领域内共同认可的词汇(概念),并从不同层次的形式模式上给 出这些词汇和词汇间相互关系的明确定义。
"OWL":是一种基于RDF (资源描述框架)语法的、XML格式的Web本体语 言,用于描述元数据和用于对该元数据的某种自动处理的图模型。0WL提供了用 于定义结构化Web本体的方法。
"语义Web服务"是Web服务与语义Web技术的有机结合,利用本体领域 模型进行Web服务建模,对借助本体对Web服务进行语义标注,从而为Web服务 的发现、执行、解释和组装提供了有效的支持。
从以上述的技术方案可以看出本发明其主要功能是支持语义程序设计时的 语义数据表示,并在此基础上进行语义数据的转换和运行时动态处理。本发明具 有以下优点
1. 极大地縮减了语义程序的开发工作,利用本发明提供的面向语义Web服 务程序设计的语义数据的表示和处理方法,语义程序设计人员可借助于本体对各 种结构化数据的语义本体标注,来显式地表达数据的语义,同时借助于语义数据 适配机制解决各种语义相同而语法异构数据之间的转换和映射问题,最终实现各 种异构数据资源的最佳处理结果。
2. 显式的语义数据关联,利用本发明方法,语义程序中语法数据的语义可 以通过本体描述,语义数据类型和语义变量作为一种通用的数据模型用于描述特 定类型的、语义相同而语法异构的数据,从而极大地扩展了语义数据的应用空间。
3. 增强了数据描述的表达能力,借助于语义本体,有效地表达语义Web服 务与语义程序流程之间的数据关联。
具体实施例方式
为了更加清楚的阐述本发明的目的、技术方案和优点,下面结合旅游业务的 具体实例对本发明做进一步地详细描述
本发明所述的语义数据的表示和处理方法,主要包括内容如下
一、 制定语义数据类型和语义变量的XML Schema模式规范。 语义数据类型的XML Schema规范包括如下内容
声明父元素semanticTypes作为语义数据类型定义的容器,其中嵌套多个由 子元素semanticType描述的语义数据类型;语义数据类型可以是简单类型也可 以是复杂类型;简单语义数据类型具有name属性和ontologyReference属性, name属性表示数据类型的名称,ontologyReference属性表示与该数据类型对应 的本体库中的一个概念;由子元素semanticType描述的复杂语义数据类型又包 括多个semanticElement子元素,每个子元素者口具有name属性、 ontologyReference属性和sType属性,name属性表示元素的名称, ontologyReference属性表示与该元素对应的本体库中的一个概念,sType属性 表示该元素的语义数据类型,ontologyReference属性和sType属性必须且仅能 采用其中一种。
语义变量的XML Schema规范包括如下内容
声明父元素semanticVariables作为语义变量定义的容器,其中嵌套多个由 子元素semanticVariable描述的语义变量;每一个语义变量都具有name属性和 semanticType属性,name属性表示语义变量的名称,se画ticType属性表示该 语义变量的语义数据类型,语义数据类型必须是预先定义的。
通过制定语义数据类型和语义变量的Schema模式规范,规范了语义数据类 型和语义变量对应的XML文档结构,并对元素和属性的内容进行约束和限制,从 而为使用语义数据类型和语义变量的设计人员提供了模式使用规范。
二、 定义基于本体的语义数据类型
语义数据类型使用本体库中的概念定义了语义程序中所使用的数据类型的 语义,专门用于描述语义Web服务与业务流程之间交换的语义数据以及业务流程 状态信息的类型,为数据提供了一种本体表示方式。
根据语义数据类型的XML Schema模式规范,旅游领域中关于机票、客户和酒店的语义数据可以采用如下的简单语义数据类型方式进行定义 〈semanticTypes〉
〈semaniticType name二"CustomerST〃
ontologyReference二〃onto4tttCustomer7〉 〈semaniticType name="FlightST"
ontologyReference=〃onto4t#Flight7〉 〈semaniticType name二"HotelST"
ontologyReference=〃onto4t#Hotel7〉 〈/semanticTypes〉
说明定义了三个简单语义数据类型CustomerST、 FlightST和HotelST,它 们的语义分别由本体库中的Customer概念、Flight概念和Hotel概念进行描述。
对于复杂的语义数据类型,可能在定义时无法找到完全对应的本体概念,因 此可以通过复合多个语义数据元素来定义。比如, 一个打包的旅游预订可以通过 前面定义的三个语义数据类型复合定义,也可以直接由本体概念引用来定义,其 定义结果可表示成如下两种形式
<semaniticType name="TravelOrderST—A"> 〈semaniticElement name="Customer"
SType二〃CustomerST7〉 〈semaniticElement name二"Flight"
SType=〃FlightST7〉 〈semaniticElement name=〃Hotel" SType=〃HotelST7〉 </semaniticType> 〈/semantictypes〉
说明定义了复杂语义数据类型TravelOrderST—A,其由Customer、 Flight 和Hotel三个语义元素组成,这三个语义元素的语义数据类型分别是 CustomerST、 FlightST和HotelST (这三个语义数据类型必须预先定义好)。
〈semanticTypes〉〈semaniticType name二〃TravelOrderST—B〃〉
〈semaniticElement name二〃Customer"
ontologyReference二〃onto4tWCustomer7〉 〈semaniticElement name二〃Flight〃
ontologyReference二〃onto4tttFlight7〉 <semaniticElement name二〃Hotel〃
onto]ogyReference二〃onto4tftHotel7〉 </semaniticType〉 </semanticTypes〉
说明定义了复杂语义数据类型TravelOrderST—B,其由Customer、 Flight 和Hotel三个语义元素组成,这三个元素直接使用相应的本体概念进行定义。 三、声明基于所述的语义数据类型的语义变量。
语义变量用于存储业务流程与参与业务流程的语义Web服务之间交换的语义 数据(语义消息),也可以表示业务流程运行时的状态信息。语义变量是语义程 序设计时使用的数据变量表示形式。
根据语义变量的XML Schema模式规范,旅游预订业务流程中需要用到的部 分语义变量可以定义成如下形式 〈semantixVariables>
〈semanticVariable name="Client—A"
semanticType二"CustomerST7〉 〈semanticVariable name="DomesticTrainTicket"
semanticType二"TrainTicketST7〉 〈semanticVariable name=〃HotelBooking" semanticType二〃HotelST〃/〉 </seman"ticVa:riables〉
说明定义了三个语义变量,它们的语义数据类型分别为前述已定义的
CustomerST、 TrainTicketST和HotelST语义数据类型。这些变量在设计时用于 表示程序需要的语义数据,在部署时,会根据本体库及具体转换规则将这些语义 变量转换成XML表示的语法级变量。四、对语义变量的使用。
1. 在语义Web服务调用活动〈invoke〉中使用语义变量。
例如,在旅游预订业务流程中,调用一个预订火车票服务可以表示如下形式 〈invoke name=〃InvokeBookingTrainTickets"
SemanticService=〃BookingTrainTicketsService〃 function="reserveTrainTicketsW inputVariable=〃:rese:rveTrainTicketsRequest〃 outpu"tVariable=〃reserveTrainTicketsResponse〃 /〉 说明上述XML格式的代码将触发一个名为InvokeBookingTrainTickets的 invoke活动,该活动将要调用名为BookingTrainTicketsService的语义服务所 提供的名为ReserveTrainTickets的功能;由semanticService属性指定了语义 服务名,由i叩utVariable属性指定了将要传递给语义服务的输入参数,该参数 保存在语义变量reserveTrainTicketsRequest中;如果以同歩方式调用语义服 务,则由outputVariable属性指定语义服务执行结束后的返回信息,并保存在 语义变量reserveTrainTicketsResponse中。上述代码的功能是调用语义服务以 便完成火车票的预订。
2. 在语义消息接收活动〈receive〉中使用语义变量。
例如,在旅游预订业务流程中,接收客户旅游预订请求订单的活动可以表示 如下形式
〈receive name=〃ReceivePurchaseOrder〃 semanticService=〃purchasingService〃 function=〃sendPurchaseOrder〃 variable=〃Purchase0rder7〉 说明上述XML格式的代码将触发一个名为ReceivePurchaseOrder的 receive活云力,该活动a每接收i吾义月艮务purchasingService的sendPurchaseOrder 功能传递来的语义消息,并保存在语义变量PurchaseOrder中。
3. 在语义消息响应活动〈r印ly〉中使用语义变量。
例如,在旅游预订业务流程中,响应旅游预订的活动可以表示如下形式 〈r印ly name=〃SendPurchaseOrder〃
17SeraanticService=〃purchasingSe:rvice〃 function=〃sendPurchaseOrder〃 variable=〃Invoice〃/〉 说明上述XML格式的代码将触发一个名为SendPurchaseOrder的r印ly活 动,该活动将保存在语义变量Invoice中的应答消息发送到语义服务 purchasingService的SendPurchaseOrder功育巨。 4.赋值。
例如,在旅游预订业务流程中,复制语义数据的赋值活动可以定义成如下几 种形式.-
〈assign name二"assignSomeVariable"〉 〈copy〉
〈from〉<literal〉
var i ab1e二〃myVar i ab1e1〃 vari油le二〃myVaxi油le2" 〈/literal〉</from〉 <to variable二〃myVariable7〉 〈/copy〉 </assign〉
说明上述XML格式的代码将触发一个名为assignSomeVariable的赋值活 动,将语义变量myVariablel和myVariable2中的语义数据以语义字节流的方式 赋值给语义变量myVariable。
<semanticVariable name="VariableA" semanticType二〃CreditCardST"〉 <semanticVariable rmme二"VariableBW semanticType二〃CreditCardST〃〉 <semanticVariable name二〃VariableC〃 semanticType二〃Identifier"
〈assign name二〃assignActivity〃〉 〈copy〉
<from vaxiable二〃VariableA7〉 <to variable二"VariableB7〉</copy> <copy〉
<from variable=〃VariableA" part=〃CreditCardID7〉 〈to variable="VariableC7> 〈/copy〉
〈copy〉
〈from vaxiable=〃VariableA〃 part=〃CreditCardID〃
〈query queryLanguage=〃http://www- w3. org/2003/11/xpath ">
/tns:FlightRequest/tns:CardOrigin 〈/query〉
〈to variable=〃VariableC〃 part="Ca_rd0rigin7〉 </copy〉 〈/assign〉
上述XML格式的代码首先定义了三个语义变量VariableA、 VariableB和 VariableC,然后触发名为assignActivity的assign活动分别将语义变量 VariableA中的语义数据复制到语义变量VariableB中;将语义变量VaraibleA 中FlightID分部中的语义数据复制到语义变量VariableC中;将语义变量 VariableA中CreditCardID分部的CardOrigin域中的语义数据复制到语义变量 VariableC的CardOrigin分部中。
五、对语义数据的处理
在基于语义Web服务的电子商务领域旅游预订系统中,用户向旅游预订系统 提交旅游行程计划信息,包括飞机和火车票务预订数据、酒店及租车要求、个人 偏好及支付卡信息等。旅游预订系统根据用户提交的操作请求数据,将这些数据 转换为语义数据,搜索并调用相关的Web服务来完成这些操作,并返回预订结果。 由于语义数据是语义等价而语法异构的普通数据在语义程序中的统一表示,因此 在构建旅游预订系统时,语义数据类型并没有与任何特定的语法数据类型进行绑 定。这样,在部署时,通过语义数据适配器,可以根据本体定义将语义数据类型转换成XML Schema表示的语法数据结构;并在执行时,根据具体Web服务的WSDL 文件中规定的数据格式实现语义数据与具体语法数据的动态绑定。
例如,旅游预订系统中使用了前面已定义的机票、酒店查询请求和客户信息 的语义数据类型,在部署时,在互联网中搜索到一组能够满足相应操作的Web 服务。这些Web服务由某公司发布并基于SOAP,从而可将所定义的语义数据类 型转换为如下的XML Schema格式的语法数据结构
〈xsd:element name二〃FlightST〃〉 <xsd:complexType〉
〈xsd:sequence〉
〈xsd:element name二〃flightlD〃 type二〃xsd:string〃 /> <xsd:element name二"airline〃 type二〃xsd:string〃 /〉 <xsd:element name二〃planeType〃 type二〃xsd:string" /> 〈xsd:element name=〃f1ightCycle〃 type二〃xsd:string〃 /> </xsd:sequence〉 </xsd:complexType〉 〈/xsd:element〉
<xsd:element natne二〃CustomerST〃〉 〈xsd:complexType〉 <xsd:sequence〉
〈xsd:element n柳e二〃ClientName〃 type二〃xsd:string" /〉 〈xsd:element name=〃Ger\der〃 type二〃xsd:string〃 /〉 〈/xsd:sequence〉 </xsd:complexType〉 </xsd:element>
〈xsd:element name="HotelST"> <xsd:complexType〉 <xsch sequence〉
〈xsd: element name:
HotelID〃 type二〃xsd:string〃 /〉
〈xsd:element name二
HotelRanking〃 type二〃xsd:string〃 /〉〈xsd:element name="HotelAdd:ress〃 type=〃xsd: string" /〉 </xsd:sequence> 〈/xsd:complexType> </xsd:element〉
<xsd:element name=〃TravelOrderST—A〃〉 〈xsd:complexType> <xsd:sequence>
〈xsd:element name=〃C〃 type=〃CustomerST〃 /> <xsd:element name=〃F〃 type=〃FlightST〃 /> 〈xsd:element name=〃H〃 type=〃HotelST〃 /> </xsd:sequence> </xsd:complexType〉 〈/xsd:element〉
这样,在旅游预订系统执行过程中,将根据具体Web服务的WSDL文件和上 述转换而来的语法数据结构,完成语义数据到具体语法数据的映射,最终实现具 体Web服务的调用。
如果在执行过程中,在部署阶段发现的Web服务出现故障,则在执行过程中, 旅游预订系统可以重新发现同样功能的其他Web服务。由于服务所属服务提供商 或服务开发平台的差异,新发现的Web服务可能具有不同的接口语法和数据格 式。但是由于在旅游预订系统中定义的语义数据并没有与特定的语法数据进行绑 定,此时,旅游预订系统可以在运行时用一个语义等价而语法异构的服务代替另 一个服务。比如,采用Yahoo Travel提供的、使用REST体系结构风格构建的 Web服务,这种Web服务与前面所调用的Web服务功能相同但语法结构完全不同。 相应的,再次通过语义数据适配器实现语义数据类型与具体语法数据类型的映 射,保证了系统的顺利运行。进而避免了一旦服务失效或接口和数据语法发生变 化,绑定该服务的程序都需要重新开发和部署。
综上所述,传统的数据表示和处理机制通常都基于固定的语法结构,并且针 对特定的需求, 一旦需求发生变化,数据结构就需要根据数据内容的变化进行重 新设计,进而导致程序的重新设计,程序设计人员的工作量较大。
21本发明为面向语义Web服务的语义程序提供的一种语义数据表示方法和相应 的处理机制,本发明的语义数据类型通过本体库中的本体概念进行描述,设计人 员只需要使用语义变量就可以在语义上简单地描述相关的数据,而无需关心具体 数据的语法格式。在语义程序执行中,语义数据适配器会将语义程序接收的和产 生的语义数据,动态地转换为具体的、满足要求的语法数据,从而为同一类的语 义程序设计提供了通用的语义数据表示和处理框架,提高了语义程序对需求动态 变化的适应性,并且开发出的程序具有更大的灵活性。
以上,结合实施例对本发明的语义数据表示方法和处理机制进行了解释和说 明。这些实施例只是示范性的,而不是对本发明进行限制。
权利要求
1.一种面向语义Web服务程序设计的语义数据表示和处理方法,其特征在于包括以下步骤(1)制定语义数据类型和语义变量的XML Schema模式规范;(2)定义基于本体的语义数据类型;(3)声明语义变量;(4)对语义变量的使用;(5)对语义数据的处理。
2. 根据权利要求1所述面向语义Web服务程序设计的语义数据的表示和处理方 法,其特征在于,根据语义数据类型的XML Schema模式规范,定义两种类型的 语义数据类型简单语义数据类型和复杂语义数据类型,语义数据类型的XML Schema模式规范严格约束了语义数据类型的XML语法格式。
3. 根据权利要求2所述面向语义Web服务程序设计的语义数据的表示和处理方 法,其特征在于,简单语义数据类型包括语义数据类型的名字和该语义数据类型 在本体中对应的本体概念,简单语义数据类型的XML格式定义如下<semanticTypes>7<semaniticType name=〃NCName〃 ontologyReference=〃£myURI〃>+</semanticType> 〈/semanticTypes〉其中,属性name表示语义数据类型的名字,本体引用。ntologyReference 指向XML数据所对应的、本体库中一个概念;复杂语义数据类型由简单语义数据 类型直接复合而成,或者由多个本体中的概念直接复合而成,包括语义数据类型 的名字和多个语义元素,其中,每一个语义元素都有一个名字并与本体中的一个 概念对应,复杂语义数据类型的XML格式定义如下 〈seman t i cTypes〉" 〈semanticType name=〃NCName〃〉+〈semanticElement name二〃NCName〃 SType二〃QName〃?ontologyReference=〃anyURI〃< /〉+ </semanticType〉 </seraanticTypes〉其中,语义数据类型semanticTypes的属性name表示该复杂语义数据类型 的名字,每个语义数据元素semanticElement都由一个名字name和一个本体引 用ontologyRef匿nce来定义,语义数据元素SemanticElement中属性Name表 示语义数据元素的名字,SemanticElement既可以是已定义的简单语义数据类型 或已定义的复杂语义数据类型,也可以是一个指向本体的概念,语义数据类型用 SType表示,本体引用ontologyReference指向一个本体中定义的概念,SType 禾口 ontologyReference属性必须选一禾中。
4. 根据权利要求1或3所述面向语义Web服务程序设计的语义数据的表示和处 理方法,其特征在于,根据语义变量的XML Schema模式规范,定义用于存储语 义数据的语义变量,语义数据的类型由预先定义好的语义数据类型进行描述,语 义变量的XML语法格式由语义变量的XML Schema模式规范严格约,根据语义变 量的XML Schema模式规范,语义变量的XML格式语法结构定义如下<semanticVa:riables> 〈semant. i cVariab 1 e name=〃semant i cVariab 1 eName"semant i cType=〃QName〃 〉+ </semanticVari油le〉 〈/semanticVariables〉 其中,属性name表示所定义的语义变量的名字,语义变量的语义数据类型 由属性semanticType描述。
5. 根据权利要求1所述面向语义Web服务程序设计的语义数据的表示和处理方 法,其特征在于,在业务流程与语义Web服务的交互活动中直接使用语义变量, 包括在语义Web服务调用活动、语义消息接收活动和语义应答活动中指定语义变 量,用于存储和传递语义Web服务间流动的语义消息;指定语义变量,用于存储 业务流程执行过程中所产生的语义状态信息;使用语义变量构造语义表达式。
6. 根据权利要求1所述面向语义Web服务程序设计的语义数据的表示和处理方 法,其特征在于,对语义数据的处理包括语义程序变换时完成语义数据类型的转 3换和语义程序运行时语义数据的处理,其中在本体库的支持下,语义数据类型在 部署时被转换为XSD格式的语法数据类型,该语法数据类型与所发现的Web服务 的WSDL文件相对应;在此基础上,语义数据在运行时与具体Web服务的输入输 出数据实现动态绑定。
全文摘要
本发明公开了一种面向语义Web服务程序设计的语义数据表示和处理方法,包括以下步骤(1)制定语义数据类型和语义变量的XML Schema模式规范;(2)定义基于本体的语义数据类型;(3)声明语义变量;(4)对语义变量的使用;(5)对语义数据的处理。本发明是根据面向语义Web服务的语义程序设计特点,制定出了基于XML标准的、面向语义Web服务的语义数据表示规范和处理方法,可以方便开发者进行实际的语义软件开发。使用该语义数据表示规范可以协助开发语义Web应用系统,能精确地对各种语义Web服务调用及业务流程所涉及的语义数据,并实现语义信息处理的自动化。
文档编号G06F17/30GK101526898SQ20091006166
公开日2009年9月9日 申请日期2009年4月17日 优先权日2009年4月17日
发明者华 崔, 时 应, 曹虹华, 曾志浩, 洋 肖, 童 薛, 袁文杰, 贾向阳, 楷 赵 申请人:武汉大学