CN101526898A - 面向语义Web服务程序设计的语义数据表示和处理方法 - Google Patents
面向语义Web服务程序设计的语义数据表示和处理方法 Download PDFInfo
- Publication number
- CN101526898A CN101526898A CN200910061664A CN200910061664A CN101526898A CN 101526898 A CN101526898 A CN 101526898A CN 200910061664 A CN200910061664 A CN 200910061664A CN 200910061664 A CN200910061664 A CN 200910061664A CN 101526898 A CN101526898 A CN 101526898A
- Authority
- CN
- China
- Prior art keywords
- semantic
- data type
- semantic data
- name
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向语义Web服务程序设计的语义数据表示和处理方法,包括以下步骤:(1)制定语义数据类型和语义变量的XML Schema模式规范;(2)定义基于本体的语义数据类型;(3)声明语义变量;(4)对语义变量的使用;(5)对语义数据的处理。本发明是根据面向语义Web服务的语义程序设计特点,制定出了基于XML标准的、面向语义Web服务的语义数据表示规范和处理方法,可以方便开发者进行实际的语义软件开发。使用该语义数据表示规范可以协助开发语义Web应用系统,能精确地对各种语义Web服务调用及业务流程所涉及的语义数据,并实现语义信息处理的自动化。
Description
技术领域
本发明涉及一种面向语义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 forSemantic 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>?
<semanticType name=″NCName″>+
<semanticElement name=″NCName″sType=″QName″?
ontologyReference=″anyURI″?/>与
</semanticType>
</semanticTypes>
其中,语义数据类型semanticTypes的属性name表示该复杂语义数据类型的名字,每个语义数据元素semanticElement都由一个名字name进行标识,并使用一个已定义的语义数据类型sType或者一个本体引用ontologyRefenence来定义。语义数据元素semanticElement中属性Name表示语义数据元素的名字,semanticElement既可以是已定义的简单语义数据类型或已定义的复杂语义数据类型,也可以是一个指向本体的概念:如果该语义数据元素可以使用已有的语义数据类型进行定义,则用sType属性表示所属的语义数据类型名;否则,就使用一个指向本体的概念进行标注,本体引用ontologyReference属性指向一个本体中定义的概念,sType和ontologyReference属性必须选一种。
三、声明语义变量。
语义变量用于存储语义Web服务与业务流程之间交换的语义消息,也用于存放业务流程的状态信息。与传统程序变量相似,语义变量也可以用于流程的路由判定和循环控制。语义变量使用预先定义好的语义数据类型进行定义。语义变量存储简单语义数据、复杂语义数据和流程状态信息。每一个变量在使用之前都必须预先加以声明。
语义变量具有作用域,每个语义变量只有在定义它的作用域和所包含的作用域内才是可见的,包括:具有全局性作用域的全局语义变量和具有局部作用域的局部语义变量。
语义变量是语义程序中使用的数据变量表示形式,在程序部署过程中,会根据语义数据所属语义数据类型的结构,在本体库的支持下,将每一个语义数据转换成XML表示的语法数据,以便和真正的Web服务进行正确的通信。语义变量的声明在标签<semanticVariables>内进行,根据语义变量的XML Schema模式规范,相应的XML格式语法结构定义如下:
<semanticVariahles>?
<semanticVariable name=″semanticVariableName″
semanticType=″QName″>+
</semanticVariable>
</semanticVariables>
其中,属性name表示所定义的语义变量的名字,语义变量的语义数据类型由属性semanticType描述。
四、对语义变量的使用。
1.在语义Web服务调用活动<invoke>中使用语义变量。
通过<invoke>活动,业务流程能够调用其他语义Web服务中的操作。当业务流程调用语义Web服务的一个操作时,需要发送一组参数,这些参数被建模为语义Web服务的输入语义消息。<invoke>活动中指定了用于容纳相应类型输入语义消息的语义变量。如果业务流程以同步方式调用语义Web服务的一个操作,则该操作执行结束的返回结果被建模为语义Web服务的输出语义消息。为了保存这些返回语义消息,<invoke>活动也指定了与这些语义消息同类型的语义变量。相应的XML格式的语义变量使用格式如下所述:
<invoke name=″NCName″
semanticService=″QName″
function=″NCName″
inputVariable=″semanticVariableName″?
outputVariable=″semanticVariableName″?/>
其中,属性inputVariable指定了用于容纳输入语义消息的语义变量,属性outputVariable指定了用于容纳输出语义消息的语义变量。
2.在语义消息接收活动<receive>中使用语义变量。
通常一个语义消息接收活动是一个业务流程的起始点,它会阻塞执行直到匹配的、启动流程的初始化语义消息到来;也可以等待语义Web服务操作调用后的返回语义消息,接收所调用操作的返回语义消息。通过语义消息接收活动,业务流程能够从外部获取语义数据,并将其保存到指定的语义变量中。相应的XML格式的语义变量使用格式如下所述:
<receive name=″NCName″
semanticService=″QName″
function=″NCName″
variable=″SemanticVariableName″?/>
其中,属性variable指定了保存所接收到的语义消息的语义变量。
3.在语义消息响应活动<reply>中使用语义变量。
通过<reply>活动,业务流程能够向外界发送响应语义消息来应答通过<receive>活动所接收到的语义消息。通常,<reply>活动用于为同步型业务流程返回响应语义消息。<reply>总是与启动业务流程的初始<receive>活动相关联。当使用<reply>活动为同步型业务流程返回响应语义消息时,需要指定相应类型的语义变量来保存响应语义消息。相应的XML格式的语义变量使用格式如下所述:
<reply name=″NCName″
semanticService=″QName″
function=″NCName″
variable=″semanticVariableName″?
faultName=″QName″?/>
其中,属性variable指定了保存响应语义消息的语义变量。
4.赋值
为了能够访问语义程序的语义数据,可以对变量定义体进行扩展实现语义变量的赋值,也可以使用语义程序中的赋值<assign>活动实现语义变量之间、语义变量与语义表达式之间的赋值。
语义变量定义体中实现语义变量赋值的XML语法格式如下所述:
<semanticVariables>?
<semanticVariable name=″semanticVariableName″
element=″QName″?messageType=″QName″?>+
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=″anyURI″?>?
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>
这种数据目的地描述格式的含义是:使用XML查询语言在语义变量中查找包含符合queryContent所指定约束的语义信息的分部作为数据目的地,用来存储从数据源传递来的语义数据。
(2)<to variable=″semanticVariableName″/>
这种数据目的地描述格式的含义是:把从数据源传递来的语义数据保存在属性variable所指定的语义变量中。
(3)<to expressionLanguage=″anyURI″?>expression</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本体语言,用于描述元数据和用于对该元数据的某种自动处理的图模型。OWL提供了用于定义结构化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属性表示语义变量的名称,semanticType属性表示该语义变量的语义数据类型,语义数据类型必须是预先定义的。
通过制定语义数据类型和语义变量的Schema模式规范,规范了语义数据类型和语义变量对应的XML文档结构,并对元素和属性的内容进行约束和限制,从而为使用语义数据类型和语义变量的设计人员提供了模式使用规范。
二、定义基于本体的语义数据类型
语义数据类型使用本体库中的概念定义了语义程序中所使用的数据类型的语义,专门用于描述语义Web服务与业务流程之间交换的语义数据以及业务流程状态信息的类型,为数据提供了一种本体表示方式。
根据语义数据类型的XML Schema模式规范,旅游领域中关于机票、客户和酒店的语义数据可以采用如下的简单语义数据类型方式进行定义:
<semanticTypes>
<semaniticType name=″CustomerST″
ontologyReference=″onto4t#Customer″/>
<semaniticType name=″FlightST″
ontologyReference=″onto4t#Flight″/>
<semaniticType name=″HotelST″
ontologyReference=″onto4t#Hotel″/>
</semanticTypes>
说明:定义了三个简单语义数据类型CustomerST、FlightST和HotelST,它们的语义分别由本体库中的Customer概念、Flight概念和Hotel概念进行描述。
对于复杂的语义数据类型,可能在定义时无法找到完全对应的本体概念,因此可以通过复合多个语义数据元素来定义。比如,一个打包的旅游预订可以通过前面定义的三个语义数据类型复合定义,也可以直接由本体概念引用来定义,其定义结果可表示成如下两种形式:
<semanticTypes>
<semaniticType name=″TravelOrderST_A″>
<semaniticElement name=″Customer″
SType=″CustomerST″/>
<semaniticElement name=″Fl ight″
SType=″FlightST″/>
<semaniticElement name=″Hotel″
SType=″HotelST″/>
</semaniticType>
</semantictypes>
说明:定义了复杂语义数据类型TravelOrderST_A,其由Customer、Flight和Hotel三个语义元素组成,这三个语义元素的语义数据类型分别是CustomerST、FlightST和HotelST(这三个语义数据类型必须预先定义好)。
<semanticTypes>
<semaniticType name=″TravelOrderST_B″>
<semaniticElement name=″Customer″
ontologyReference=″onto4t#Customer″/>
<semaniticElement name=″Flight″
ontologyReference=″onto4t#Flight″/>
<semaniticElement name=″Hotel″
ontologyReference=″onto4t#Hotel″/>
</semaniticType>
</semanticTypes>
说明:定义了复杂语义数据类型TravelOrderST_B,其由Customer、Flight和Hotel三个语义元素组成,这三个元素直接使用相应的本体概念进行定义。
三、声明基于所述的语义数据类型的语义变量。
语义变量用于存储业务流程与参与业务流程的语义Web服务之间交换的语义数据(语义消息),也可以表示业务流程运行时的状态信息。语义变量是语义程序设计时使用的数据变量表示形式。
根据语义变量的XML Schema模式规范,旅游预订业务流程中需要用到的部分语义变量可以定义成如下形式:
<semanticVariables>
<semanticVariable name=″Client_A″
semanticType=″CustomerST″/>
<semanticVariable name=″DomesticTrainTicket″
semanticType=″TrainTicketST″/>
<semanticVariable name=″HotelBooking″
semanticType=″HotelST″/>
</semanticVariables>
说明:定义了三个语义变量,它们的语义数据类型分别为前述已定义的CustomerST、TrainTicketST和HotelST语义数据类型。这些变量在设计时用于表示程序需要的语义数据,在部署时,会根据本体库及具体转换规则将这些语义变量转换成XML表示的语法级变量。
四、对语义变量的使用。
1.在语义Web服务调用活动<invoke>中使用语义变量。
例如,在旅游预订业务流程中,调用一个预订火车票服务可以表示如下形式:
<invoke name=″InvokeBookingTrainTickets″
SemanticService=″BookingTrainTicketsService″
function=″reserveTrainTickets″
inputVariable=″reserveTrainTicketsRequest″
outputVariable=″reserveTrainTicketsResponse″/>
说明:上述XML格式的代码将触发一个名为InvokeBookingTrainTickets的invoke活动,该活动将要调用名为BookingTrainTicketsService的语义服务所提供的名为ReserveTrainTickets的功能;由semanticService属性指定了语义服务名,由inputVariable属性指定了将要传递给语义服务的输入参数,该参数保存在语义变量reserveTrainTicketsRequest中;如果以同步方式调用语义服务,则由outputVariable属性指定语义服务执行结束后的返回信息,并保存在语义变量reserveTrainTicketsResponse中。上述代码的功能是调用语义服务以便完成火车票的预订。
2.在语义消息接收活动<receive>中使用语义变量。
例如,在旅游预订业务流程中,接收客户旅游预订请求订单的活动可以表示如下形式:
<receive name=″ReceivePurchaseOrder″
semanticService=″purchasingService″
function=″sendPurchaseOrder″
variable=″PurchaseOrder″/>
说明:上述XML格式的代码将触发一个名为ReceivePurchaseOrder的receive活动,该活动将接收语义服务purchasingService的sendPurchaseOrder功能传递来的语义消息,并保存在语义变量PurchaseOrder中。
3.在语义消息响应活动<reply>中使用语义变量。
例如,在旅游预订业务流程中,响应旅游预订的活动可以表示如下形式:
<reply name=″SendPurchaseOrder″
SemanticService=″purchasingService″
function=″sendPurchaseOrder″
variable=″Invoice″/>
说明:上述XML格式的代码将触发一个名为SendPurchaseOrder的reply活动,该活动将保存在语义变量Invoice中的应答消息发送到语义服务purchasingService的sendPurchaseOrder功能。
4.赋值。
例如,在旅游预订业务流程中,复制语义数据的赋值活动可以定义成如下几种形式:
<assign name=″assignSomeVariable″>
<copy>
<from><literal>
variable=″myVariable1″
variable=″myVariable2″
</literal></from>
<to variable=″myVariable″/>
</copy>
</assign>
说明:上述XML格式的代码将触发一个名为assignSomeVariable的赋值活动,将语义变量myVariable1和myVariable2中的语义数据以语义字节流的方式赋值给语义变量myVariable。
<semanticVariable name=″VariableA″semanticType=″CreditCardST″>
<semanticVariable name=″VariableB″semanticType=″CreditCardST″>
<semanticVariable name=″VariableC″semanticType=″Identifier″>
<assign name=″assignActivity″>
<copy>
<from variable=″VariableA″/>
<to variable=″VariableB″/>
</copy>
<copy>
<from variable=″VariableA″part=″CreditCardID″/>
<to variabl e=″VariableC″/>
</copy>
<copy>
<from variable=″VariableA″part=″CreditCardID″
<query queryLanguage=″http://www.w3.org/2003/11/xpath″>
/tns:FlightRequest/tns:CardOrigin
</query>
<to variable=″VariableC″part=″CardOrigin″/>
</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=″flightID″type=″xsd:string″/>
<xsd:element name=″airline″type=″xsd:string″/>
<xsd:element name=″planeType″type=″xsd:string″/>
<xsd:element name=″flightCycle″type=″xsd:string″/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name=″CustomerST″>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=″ClientName″type=″xsd:string″/>
<xsd:element name=″Gender″type=″xsd:string″/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name=″HotelST″>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=″Hotel ID″type=″xsd:string″/>
<xsd:element name=″HotelRanking″type=″xsd:stri ng″/>
<xsd:element name=″HotelAddress″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服务功能相同但语法结构完全不同。相应的,再次通过语义数据适配器实现语义数据类型与具体语法数据类型的映射,保证了系统的顺利运行。进而避免了一旦服务失效或接口和数据语法发生变化,绑定该服务的程序都需要重新开发和部署。
综上所述,传统的数据表示和处理机制通常都基于固定的语法结构,并且针对特定的需求,一旦需求发生变化,数据结构就需要根据数据内容的变化进行重新设计,进而导致程序的重新设计,程序设计人员的工作量较大。
本发明为面向语义Web服务的语义程序提供的一种语义数据表示方法和相应的处理机制,本发明的语义数据类型通过本体库中的本体概念进行描述,设计人员只需要使用语义变量就可以在语义上简单地描述相关的数据,而无需关心具体数据的语法格式。在语义程序执行中,语义数据适配器会将语义程序接收的和产生的语义数据,动态地转换为具体的、满足要求的语法数据,从而为同一类的语义程序设计提供了通用的语义数据表示和处理框架,提高了语义程序对需求动态变化的适应性,并且开发出的程序具有更大的灵活性。
以上,结合实施例对本发明的语义数据表示方法和处理机制进行了解释和说明。这些实施例只是示范性的,而不是对本发明进行限制。
Claims (6)
1.一种面向语义Web服务程序设计的语义数据表示和处理方法,其特征在于包括以下步骤:
(1)制定语义数据类型和语义变量的XML Schema模式规范;
(2)定义基于本体的语义数据类型;
(3)声明语义变量;
(4)对语义变量的使用;
(5)对语义数据的处理。
2.根据权利要求1所述面向语义Web服务程序设计的语义数据的表示和处理方法,其特征在于,根据语义数据类型的XML Schema模式规范,定义两种类型的语义数据类型:简单语义数据类型和复杂语义数据类型,语义数据类型的XMLSchema模式规范严格约束了语义数据类型的XML语法格式。
3.根据权利要求2所述面向语义Web服务程序设计的语义数据的表示和处理方法,其特征在于,简单语义数据类型包括语义数据类型的名字和该语义数据类型在本体中对应的本体概念,简单语义数据类型的XML格式定义如下:
<semanticTypes>?
<semaniticType name=″NCName″
ontologyReference=″anyURI″>+
</semanticType>
</semanticTypes>
其中,属性name表示语义数据类型的名字,本体引用ontologyReference指向XML数据所对应的、本体库中一个概念;复杂语义数据类型由简单语义数据类型直接复合而成,或者由多个本体中的概念直接复合而成,包括语义数据类型的名字和多个语义元素,其中,每一个语义元素都有一个名字并与本体中的一个概念对应,复杂语义数据类型的XML格式定义如下:
<semanticTypes>?
<semanticType name=″NCName″>+
<semanticElement name=″NCName″SType=″QName″?
ontologyReference=″anyURI″?/>+
</semanticType>
</semanticTypes>
其中,语义数据类型semanticTypes的属性name表示该复杂语义数据类型的名字,每个语义数据元素semanticElement都由一个名字name和一个本体引用ontologyRefenence来定义,语义数据元素SemanticElement中属性Name表示语义数据元素的名字,semanticElement既可以是已定义的简单语义数据类型或已定义的复杂语义数据类型,也可以是一个指向本体的概念,语义数据类型用SType表示,本体引用ontologyReference指向一个本体中定义的概念,SType和ontologyReference属性必须选一种。
4.根据权利要求1或3所述面向语义Web服务程序设计的语义数据的表示和处理方法,其特征在于,根据语义变量的XML Schema模式规范,定义用于存储语义数据的语义变量,语义数据的类型由预先定义好的语义数据类型进行描述,语义变量的XML语法格式由语义变量的XML Schema模式规范严格约,根据语义变量的XML Schema模式规范,语义变量的XML格式语法结构定义如下:
<semanticVariables>?
<semanticVariable name=″semanticVariableName″
semanticType=″QName″>+
</semanticVariable>
</semanticVariables>
其中,属性name表示所定义的语义变量的名字,语义变量的语义数据类型由属性semanticType描述。
5.根据权利要求1所述面向语义Web服务程序设计的语义数据的表示和处理方法,其特征在于,在业务流程与语义Web服务的交互活动中直接使用语义变量,包括在语义Web服务调用活动、语义消息接收活动和语义应答活动中指定语义变量,用于存储和传递语义Web服务间流动的语义消息;指定语义变量,用于存储业务流程执行过程中所产生的语义状态信息;使用语义变量构造语义表达式。
6.根据权利要求1所述面向语义Web服务程序设计的语义数据的表示和处理方法,其特征在于,对语义数据的处理包括语义程序变换时完成语义数据类型的转换和语义程序运行时语义数据的处理,其中在本体库的支持下,语义数据类型在部署时被转换为XSD格式的语法数据类型,该语法数据类型与所发现的Web服务的WSDL文件相对应;在此基础上,语义数据在运行时与具体Web服务的输入输出数据实现动态绑定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910061664A CN101526898A (zh) | 2009-04-17 | 2009-04-17 | 面向语义Web服务程序设计的语义数据表示和处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910061664A CN101526898A (zh) | 2009-04-17 | 2009-04-17 | 面向语义Web服务程序设计的语义数据表示和处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101526898A true CN101526898A (zh) | 2009-09-09 |
Family
ID=41094769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910061664A Pending CN101526898A (zh) | 2009-04-17 | 2009-04-17 | 面向语义Web服务程序设计的语义数据表示和处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101526898A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101917413A (zh) * | 2010-07-29 | 2010-12-15 | 清华大学 | 基于服务质量优化和语义信息集成的服务组装系统及方法 |
CN102073725A (zh) * | 2011-01-11 | 2011-05-25 | 百度在线网络技术(北京)有限公司 | 结构化数据的搜索方法和实现该搜索方法的搜索引擎系统 |
CN102799632A (zh) * | 2012-06-25 | 2012-11-28 | 北京航空航天大学 | 基于vba和四面体数据模型的文本信息获取与描述方法 |
CN102937965A (zh) * | 2012-09-29 | 2013-02-20 | 山东浪潮齐鲁软件产业股份有限公司 | 一种基于数据模型的元系统设计方法 |
CN103473243A (zh) * | 2012-06-08 | 2013-12-25 | 富士通株式会社 | 生成语义网络服务文档的方法和设备 |
CN105868364A (zh) * | 2016-03-29 | 2016-08-17 | 中国电子科技集团公司第二十八研究所 | 一种基于字节流的结构化数据表示方法 |
CN106156143A (zh) * | 2015-04-13 | 2016-11-23 | 富士通株式会社 | 网页处理装置和网页处理方法 |
CN107491479A (zh) * | 2017-07-05 | 2017-12-19 | 上海大学 | 一种基于本体库的标签管理方法 |
CN110874529A (zh) * | 2018-08-31 | 2020-03-10 | 通用电气公司 | 用于属性链中的隐含图形模式的方法和系统 |
CN111045661A (zh) * | 2019-12-04 | 2020-04-21 | 西安鼎蓝通信技术有限公司 | 基于语义和特征码的XML Schema生成方法 |
-
2009
- 2009-04-17 CN CN200910061664A patent/CN101526898A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101917413A (zh) * | 2010-07-29 | 2010-12-15 | 清华大学 | 基于服务质量优化和语义信息集成的服务组装系统及方法 |
CN101917413B (zh) * | 2010-07-29 | 2013-07-17 | 清华大学 | 基于服务质量优化和语义信息集成的服务组装系统及方法 |
CN102073725A (zh) * | 2011-01-11 | 2011-05-25 | 百度在线网络技术(北京)有限公司 | 结构化数据的搜索方法和实现该搜索方法的搜索引擎系统 |
CN103473243B (zh) * | 2012-06-08 | 2017-03-01 | 富士通株式会社 | 生成语义网络服务文档的方法和设备 |
CN103473243A (zh) * | 2012-06-08 | 2013-12-25 | 富士通株式会社 | 生成语义网络服务文档的方法和设备 |
CN102799632A (zh) * | 2012-06-25 | 2012-11-28 | 北京航空航天大学 | 基于vba和四面体数据模型的文本信息获取与描述方法 |
CN102799632B (zh) * | 2012-06-25 | 2015-01-21 | 北京航空航天大学 | 基于vba和四面体数据模型的文本信息获取与描述方法 |
CN102937965B (zh) * | 2012-09-29 | 2016-09-28 | 上海浪潮云计算服务有限公司 | 一种基于数据模型的元系统设计方法 |
CN102937965A (zh) * | 2012-09-29 | 2013-02-20 | 山东浪潮齐鲁软件产业股份有限公司 | 一种基于数据模型的元系统设计方法 |
CN106156143A (zh) * | 2015-04-13 | 2016-11-23 | 富士通株式会社 | 网页处理装置和网页处理方法 |
CN105868364A (zh) * | 2016-03-29 | 2016-08-17 | 中国电子科技集团公司第二十八研究所 | 一种基于字节流的结构化数据表示方法 |
CN105868364B (zh) * | 2016-03-29 | 2020-06-12 | 中国电子科技集团公司第二十八研究所 | 一种基于字节流的结构化数据表示方法 |
CN107491479A (zh) * | 2017-07-05 | 2017-12-19 | 上海大学 | 一种基于本体库的标签管理方法 |
CN110874529A (zh) * | 2018-08-31 | 2020-03-10 | 通用电气公司 | 用于属性链中的隐含图形模式的方法和系统 |
CN110874529B (zh) * | 2018-08-31 | 2023-10-13 | 通用电气公司 | 用于属性链中的隐含图形模式的方法和系统 |
CN111045661A (zh) * | 2019-12-04 | 2020-04-21 | 西安鼎蓝通信技术有限公司 | 基于语义和特征码的XML Schema生成方法 |
CN111045661B (zh) * | 2019-12-04 | 2023-07-04 | 鼎蓝惠民信息技术(西安)有限公司 | 基于语义和特征码的XML Schema生成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101526898A (zh) | 面向语义Web服务程序设计的语义数据表示和处理方法 | |
US9176951B2 (en) | Mechanism and system for representing and processing activity models | |
Fujii et al. | Dynamic service composition using semantic information | |
Noy et al. | Evaluating Ontology-Mapping Tools: Requirements and Experience. | |
Ozorhan et al. | Automated composition of web services with the abductive event calculus | |
Perez-Soler et al. | Towards automating the synthesis of chatbots for conversational model query | |
CN103577931A (zh) | 一种基于语义的可复用软件服务管理系统及其实现方法 | |
Musyaffa et al. | Minimally invasive semantification of light weight service descriptions | |
Rongen et al. | Modelling with AAS and RDF in Industry 4.0 | |
Cardoso | Approaches to developing semantic web services | |
Vaculín et al. | The process mediation framework for semantic web services | |
Lemmens et al. | Enhancing Geo‐Service Chaining through Deep Service Descriptions | |
Karakoc et al. | A workflow-based Web service composition system | |
Tietz et al. | Task-based recommendation of mashup components | |
Gamha et al. | A framework for the semantic composition of web services handling user constraints | |
Dong et al. | Dynamic web service composition based on OWL-S | |
Bergweiler | Interactive service composition and query | |
Gonen et al. | Ontological support for the evolution of future services oriented architectures | |
Sheshagiri | Automatic composition and invocation of semantic web services | |
Prazeres et al. | Toward semantic web services as mvc applications: from owl-s via uml | |
Haller et al. | A process ontology for business intelligence | |
Shen et al. | Mapping web services specifications to process ontology: Opportunities and limitations | |
Tietz et al. | A requirements model for composite and distributed web mashups | |
Li et al. | Automatic composition of web services based on rules and meta-services | |
Vidal et al. | Applying semantics to grid middleware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20090909 |