一种基于sawsdl的语义信息提取的方法

文档序号:7928100阅读:249来源:国知局
专利名称:一种基于sawsdl的语义信息提取的方法
技术领域
本发明涉及一种基于SAWSDL的语义信息提取的方法,主要应用于Web服务中。
背景技术
Web服务为在分布的软件系统之间交换信息提供了基于标准的基础。基于XML规范 的WSDL指定了一个在语法级上的标准方法来描述一个Web服务的接口和怎样调用它们。 而语法描述仅提供了关于一个接口的输入和输出消息的结构和怎样调用它们的信息,还 需要语义来描述一个Web服务实际做什么。当用形式语言表达的时候,这些语义消除了 Web服务接口的描述的歧义,为软件构件的自动发现、组合和集成铺平了道路。WSDL没 有明确的提供机制来指定一个Web服务的语义。所以,两个完全不同的服务可能有类似 的描述。在Web服务描述中,解决这种歧义是自动化Web服务的发现和组合的重要步骤。 SAWSDL规范定义了一种机制,能够将语义注释加到WSDL部件中,其是W3C的推荐标准。 SAWSDL没有指定一种表示语义模型的语言,如本体。它提供的机制能在WSDL部件内将 在WSDL文档内或外定义的语义模型中的概念作为注释索引。用形式语言表达的这些语 义有助于消除在Web服务自动发现和组合期间Web服务描述的歧义。
为了使用户能够找到需要的Web服务,服务开发者需要将Web服务的描述信息存储 到注册中心,同时使用户能够根据语义信息高效地査找到Web服务,也需要将SAWSDL 文档中的语义信息提取出来并存储到注册中心。WSDL存在两个版本1.1和2.0,因此 SAWSDL也存在相应的两个版本。目前存在的对SAWSDL文档的分析工具是由乔治亚州大 学和赖特州立大学开发的Woden4SAWSDL和SAWSDL4J。 Woden4SAWSDL是一个WSDL 2.0 分析器,其API类可以产生和分析SAWSDL。但它不能处理基于WSDL 1. 1的SAWSDL文档。 SAWSDL4J是实现SAWSDL规范的一个API接口,允许开发者产生基于SAWSDL的应用。它 的目标虽然是既能处理WSDL 1. 1文档也能处理WSDL2.0文档,但只实现了处理WSDL 1. 1
文档。另外其功能并没有完全实现。
这两种工具都提供了 SAWSDL文档的一个对象模型。当用户需要提取SAWSDL文档中 的语义注释信息时,需要利用其提供的API进行复杂的编程,然而这两种工具都没有提 供比较详细的使用说明。由于SAWSDL文档规范中没有对前置条件precondition和后置 条件effect声明,所以都没有对这些条件的处理。 发明目的本发明的技术解决问题克服现有技术的不足,提供一种基于SAWSDL的语义信息 提取的方法,该方法利用了一个XML描述文件,它能够自动判断WSDL的版本,并提供 了提取语义信息的规则和方法,不需要用户进行复杂的编程。
本发明的技术解决方案 一种基于SAWSDL的语义信息提取的方法,其特征在于
包括以下步骤
第一步,判断SAWSDL文档是基于WSDL 1. 1还是基于WSDL 2.0,即通过对WSDL的 开始标签的来判断,如果是〈definitions〉则是WSDL l丄如果是〈description〉则是 WSDL 2.0,如果是基于WSDL 2.0,则转第三歩,如果是基于WSDL 1.1,则转第二步。
第二步,将基于WSDL 1. 1的SAWSDL文档转换为基于WSDL 2. 0的SAWSDL文档。
第三步,从基于WSDL 2.0的SAWSDL文档中提取语义注释的信息。
第四步,将提取出的语义信息输出到模板文件中。
本发明与现有技术相比的有益效果在于本发明既能处理基于WSDL1. 1的SAWSDL 文档,也能处理基于WSDL 2.0的SAWSDL文档。不需要用户进行复杂的编程,用户只需 要从基于WSDL 2. 0的SAWSDL文档中提取语义注释的信息即可得到Web服务的语义描述 信息,不需要了解任何分析器的API,而其他方法需要用户通过调用分析器API进行复 杂的编程才能完成。使用本发明的方法,用户可以得到Web服务的关于接口、操作、输 入和输出的语义描述信息,方便对这些信息的存储和查询。另外本发明也能提取前置条 件precondition和后置条件effect的语义信息。


图l为本发明的基于SAWSDL语义信息的提取方法的流程图; 图2为本发明中的SAWSDL从基于WSDL 1. 1到基于WSDL 2.0的转换流程图; 图3为本发明的提取SAWSDL中的语义信息流程图流程图; 图4为本发明从SAWSDL中提取i叩uts的语义注释信息的流程图。
具体实施例方式
首先应当对本发明以下用到的一些相关背景知识进行一下简要的介绍。 SAWSDL (Semantic Annotations for WSDL and XML Schema)是利用WSDL的扩展 机制在WSDL中增加Web服务的语义描述的规范。由于目前使用的WSDL有1. 1和2. 0两 种版本,因此SAWSDL也存在基于WSDL 1. 1和基于WSDL 2. 0两种。 在WSDL 1. 1中使用下列部件定义Web服务
* types -数据类型定义的容器,它使用某种类型系统(如XSD)。在types中 使用element引用一个XSD元素,simpleType和co即lexType分别表示XSD中的简单类型和复杂类型。
* message -通信数据的抽象类型化定义。 一条message (消息)由逻辑上的消 息构件(part)组成,每一个构件(part)使用某种类型系统来定义。
* operation -对服务所支持的操作的抽象描述。
參portType -操作的抽象集合,这些操作由一个或多个端点支持。
* binding -特定端口类型的具体协议和数据格式规范。 參port -定义为绑定和网络地址组合的单个端点。
* service -相关端点的集合。
其中允许添加语义注释的部件包括portType、 simpleType、 complexType、 eleraent、 part,在operation部件中需要添加扩展部件attrExtensions,还可以在operation部 件中添加扩展部件precondition禾n effect。
在WSDL 2. 0中用interface替代了 WSDL 1. 1中的PortType并去掉了 Message部 件。允许添力口语义注释的部件包括interface、 operation、 simpleType、 complexType、 ele腦t、 input和output,也可以在operation部件中添力口扩展部件precondition禾口 effect。
在SAWSDL文档中,语义注释使用sawsdl:modeReference属性,其属性值即为语义 注释信息。
本发明利用SODL语言描述SAWSDL到描述模板协议状态模型之间的迁移规则,然后 利用SODL语言的运行环境,以SODL描述文件作为输入,按照描述文件中指明的操作过 程,从SAWSDL中提取语义注释部分的语义信息并将其转换成一个描述模板文件。
S0DL语言介绍面向服务架构中对协议的无二义性理解以及协议实现的正确性证明 是异构环境下服务的各个参与方之间实现互联和互操作的重要保证。SODL (Service—Oriented Description Language)面向月艮务描述i吾言,是北航i十算机新技术 研究所根据面向服务架构(SOA)的协议特点,为了满足上述需要,提出的一种Web服务 协议语义的形式化表示模型。S0DL基于XML语言规范,借鉴了 XML语言统一的信息表示 形式和自我描述的特点。该语言采用状态机模型为Web服务协议栈中的各层协议建立起 统一的表示结构;并以类程序设计语言方式提出一种基于状态迁移的协议变换过程,描 述协议的语义内涵;同时,SODL给出协议层之间的对应关系描述,进而完整地刻画面向 服务的企业级应用环境及服务基础设施所应提供的逻辑功能与业务特性,能够对复杂协 议的体系结构以及协议实现给出严格地描述,为面向服务架构下协议的形式化证明及实 现提供一种新的解决方案。S0DL主要用,于描述协议状态模型之间的迁移规则'。在S0DL源'文件中,元素名称提 供了过程调用等执行流程信息;属性给出了具体的状态转移规则。SODL语言规范包括数 据描述和操作描述两部分,数据描述以XML形式定义协议状态变量和协议操作变量的内 容;操作描述则是定义在元数据描述上的一组集合操作,包括语句(Handler)操作和表 达式(Expression)操作两种,分别以SODL文档元素和属性的形式表示。
语句是语义上用于描述协议语义操作过程和转换规则的XML元素。例如,以下为SODL 语言中判断语句的结构定义
< sodl:if sodl:condition="表达式,,〉 <sodl:then>
{语句} </so.dl: then〉 [<sodl:else〉
{语句} </sodl:else〉] 〈/ sodl:if>
在上例中,〈sodl: then〉和〈sodl :else〉分别规定了当其父元素〈sodl: if〉中的条件 表达式计算结果为"真"和为"假"时的逻辑跳转入口。与高级程序设计语言中的结构 化控制语句类似,S0DL语句是在XML文法规范的基础上进一步规定了元素之间的执行关 系。通过此类控制语句即可将一系列状态迁移操作联结为一个完整的协议描述过程。
表达式是描述状态变量之间迁移规则和求值过程的实体。例如给出以下表达式 入("WSDL—Docl", "definitions\portType〃, 〃國e〃, 〃 add")。该表达式的语义为从 输入的XML变量〃WSDL—Docl〃中,按照路径〃definitionsXportType"选出包含属性名为 〃name〃,且其对应属性值为〃 add〃的元素集合。在S0DL语言中,表达式通常位于元素 值或属性值位置,给出了对应元素和状态变量的计算过程。另一方面,由于表达式参数 中通常包含其他变量,因此,求值的过程同时也给出了状态变量之间的转换关系。
在此基础上,提供了 SODL语言的运行环境,该运行环境以SODL描述文件作为输入; 按照描述文件中指明的操作过程,完成相应的操作并得到变换结果,从而完成基于SODL 的协议形式化描述的自动实现过程。
下面结合附图对本发明进行详细阐述。
如图1所示,本发明的步骤如下
第一步,判断SAWSDL文档是基于WSDL 1. 1还是基于WSDL 2. 0,如果基于WSDL 2. 0,则转第三步,如果基于WSDL 1.1,则转第二步,根据文档的开始标签判浙WS'DL的版本,
如果是〈definitions〉则是1. 1,如果是〈description〉则是2. 0。
第二步,将基于WSDL 1. 1的SAWSDL文档转换为基于WSDL 2. 0的SAWSDL文档。 在基于WSDL 1. 1到基于WSDL 2. 0的SAWSDL转换时,需要遵循如下规则
* simpleType、 complexType、 element部件没有变化。
* portType部件转换为interface部件。
* operation中的扩展部件attrExtensions转换为WSDL 2. 0中的operation部件 的语义属性。
參part部件转换为WSDL 2. 0中对应的input或output。
* 在WSDL 2. 0中没有message和part部件。
* operation部件中的precondition和effect部件仍转换为operation部件中的 precondition禾口 effect。
将基于WSDL 1. 1的SAWSDL文档转换为基于WSDL 2. 0的SAWSDL文档,即将WSDL 1. 1 文档转换为WSDL 2. 0文档,同时将语义注释元素和属性也迁移到WSDL 2. 0文档中,包 括以下步骤
(1) 判断是否存在portType部件,如果存在则转到步骤(2),否则转到步骤(12);
(2) 判断是否存在operation部件,如果存在则转到步骤(3),否则转到步骤(1);
(3) 处理operation的语义注释,将扩展部件attrExtensions中的语义注释转换 为WSDL 2. 0中operation的语义属性,即将operation的扩展部件attrExtensions中 的语义注释属性作为WSDL 2. 0中叩eration的语义属性;
(4) 判断是否存在input部件,如果存在则转到歩骤(5),否则转到步骤(6);
(5) 将WSDL 1.1中的i叩ut部件转换为WSDL 2.0中的i叩ut部件,即将WSDL 1. 1 中的input部件作为WSDL 2.0中的i叩ut部件,转到步骤(4);
(6) 判断是否存在output部件,如果存在则转到步骤(7),否则转到步骤(8);
(7) 将WSDL 1. 1中的output部件转换为WSDL 2. 0中的output部件,即将WSDL 1. 1 中的output部件作为WSDL 2. 0中的output部件,转到步骤(6);
(8) 判断是否存在precondition部件,如果存在则转到步骤(9),否则到步骤 (10);
(9) 将precondition部件转换到WSDL 2. 0中的operation中,即将precondition 部件作为WSDL 2.0中的operation的部件,转到步骤(8);
(10)判断是否存在effect部件,如果存在则转到步骤(11),否则转到步骤(2);(11) 将effect部件转换到WSDL 2. 0中的邻era'Uon中,.即将effect部件作为 WSDL 2.0中的operation中的部件,转到步骤(10);
(12) 删除WSDL 1. 1中的message部件;
U3)判断是否存在binding部件,如果存在则转到步骤U4),否则转到步骤(16);
(14) 判断binding中是否存在operation部件,如果存在则转到步骤(15)步, 否则转到步骤(13);
(15) 转换binding中的operation部件- 添力口 ref禾口 wsoap:soapAction属性, 转到步骤(14);
(16) 判断是否存在service部件,如果存在则转到步骤(17),否则结束;
(17) 转换service中的port部件建立endpoint部件,并添加name、 binding 和address属性,转到步骤(16)。
第三步,从基于WSDL 2.0的SAWSDL文档中提取语义注释的信息从基于WSDL 2.0 的SAWSDL中提取Web服务的语义注释信息包括以下步骤
(1) 通过判断是否存在〈interface〉标签来判断是否存在interface部件,如果存 在则转到步骤(2),否则结束;
(2) 判断interface部件中是否存在语义注释属性sawsdl:modeReference,如果 存在则转到步骤(3),否则转到步骤(4);
(3) 提取interface的属性sawsdl:modeReference的值;
(4) 判断是否存在operation部件,如果存在则转到步骤(5),否则转到步骤(l);
(5) 判断operation部件中是否存在语义注释属性,如果存在则转到步骤(6), 否则转到步骤(7);
(6) 提取operation的属性sawsdl:modeReference的值;
(7) 提取inputs中的语义注释信息;
从SAWSDL中提取inputs的语义注释信息包括如下步骤
(a) 判断是否存在i叩ut部件,如果存在则转到步骤(b),否则结束;
(b) 判断是否i叩ut存在注释属性,如果存在则转到步骤(c),否则转到步骤(d);
(c) 提取input的语义注释信息,即提取input的属性sawsdl :modeReference的 值,转到步骤(a);
(d) 判断i叩ut是否存在element部件注释,如果存在则转到步骤(e),否则转 到步骤(f);
(e) 提取element的语义注释信息作为i叩ut语义信息,转到步骤(a);(f) 判断element是否存在type属性,如果存在则转到步骤(g> ,否则转到步 骤(n);
(g) 判断type是否为si即leType类型,如果是则转到步骤(h),否则转到步骤 (i);
(h) 提取si即leType的语义注释信息作为input的语义信息,转到步骤(a);
(i) 判断type是否为complexType类型,如果是则转到步骤(j),否则转到步 骤(n);
(j)判断co卿lexType类型是否存在语义注释,如果存在则转到步骤(k),否则 转到步骤(1);
(k)提取complexType类型的语义注释信息作为i叩ut的语义信息,转到步骤(1);
(I) 判断complexType是否存在子元素,如果存在则转到步骤(m),否则转到步 骤(a);
(m)提取complexType类型的子元素的语义注释信息作为i叩ut的语义信息,转 到步骤(i);
(n)判断element中是否存在嵌套的co即lexType类型,如果存在则转到步骤(k), 否则转到步骤(a)。-
(8) 提取outputs中的语义注释信息;
(9) 判断是否存在procondition部件,如果存在则转到步骤(10),否则转到步 骤(11);
(10) 提取procondition中的语义注释信息,转到步骤(9);
(II) 判断是否存在effect部件,如果存在则转到步骤U2),否则转到步骤(4); (12)提取effect中的语义注释信息,转到歩骤Ul)。
在提取inputs和outputs的语义注释信息时遵循如下规则
*如果i叩ut/output部件存在注释属性,则忽略element和type部件中的注释。 *如果element部件中存在注释属性,则忽略type部件中的注释。 * 如果comlpeType中存在注释属性,则忽略comlpeType部件中的element的注释。 第四步,将提取出的语义信息输出到模板文件中。
(1) 在模板中写入XML文档的头信息。
(2) 输出categorization标签,其属性name的值为interface的name属性的值, 属性modelReference的值为第三步提取的interface的sawsdl :modelReferenc属性值。
(3) 输出categorization的所有子元素operation,其属性name的值为operation的name属性值.,,.属性modelReference的值为'邻eration的saws'dl'"':moder股ferenc属 性值。
(4) 输出每个operation的所有子元素i叩ut,其属性隠e的值为i叩ut的element 属性值;输出input的子元素modelReference,其值为第三步提取的i叩ut的语义注释 {曰息。
(5) 输出每个operation的所有子元素output,其属性腿e的值为output的 element属性值;输出output的子元素modelReference,其值为第三步提取的output 的语义注释信息。
(6) 输出每个operation的所有子元素precondition,其值为第三步提取的 precondition的语义注释信息。
(7) 输出每个operation的所有子元素effect,其值为第三步提取的effect的语 义注释信息。
本发明说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员
来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也
应视为本发明的保护范围。
权利要求
1、一种基于SAWSDL的语义信息提取的方法,其特征在于步骤如下第一步,判断SAWSDL文档是基于WSDL 1.1或是基于WSDL 2.0,如果基于WSDL 2.0,则转第三步,如果基于WSDL 1.1,则转第二步;第二步,将基于WSDL 1.1的SAWSDL文档转换为基于WSDL 2.0的SAWSDL文档;第三步,从基于WSDL 2.0的SAWSDL文档中提取语义注释的信息;第四步,将提取出的语义信息输出到模板文件中。
2、根据要求1所述的基于SAWSDL的语义信息提取的方法,其特征在于所述第二步,将基于WSDL 1. 1的SAWSDL文档转换为基于WSDL 2. 0的SAWSDL文档,包括以下步骤(1) 判断是否存在portType部件,如果存在则转到步骤(2),否则转到步骤(12);(2) 判断是否存在叩eration部件,如果存在则转到步骤(3),否则转到步骤(l);(3) 处理operation的语义注释,将扩展部件attrExtensions中的语义注释转换 为WSDL 2. 0中operation的语义属性;(4) 判断是否存在input部件,如果存在则转到步骤(5),否则转到步骤(6);(5) 将WSDL 1. 1中的i叩ut部件转换为WSDL 2. 0中的input部件,转到步骤(4);(6) 判断是否存在output部件,如果存在则转到步骤(7),否则转到步骤(8);(7) 将WSDL 1. 1中的output部件转换为WSDL 2.0中的output部件,转到步骤(6);(8) 判断是否存在precondition部件,如果存在则转到步骤(9),否则到步骤(10);(9) 将precondition部件转换到WSDL 2. 0中的operation中,转到步骤(8);(10) 判断是否存在effect部件,如果存在则转到步骤(11),否则转到步骤(2);(11) 将effect部件转换到WSDL 2. 0中的operation中,转到步骤(10);(12) 删除WSDL 1.1中的message部件;(13) 判断是否存在binding部件,如果存在则转到步骤(14),否则转到步骤(16);(14) 判断binding中是否存在operation部件,如果存在则转到步骤(15)步, 否则转到步骤(13);(15) 转换binding中的operation部件,转到步骤(14);(16) 判断是否存在service部件,如果存在则转到步骤(17),否则结束;(17) 转换service中的port部件,转到步骤(16)。
3、根据要求l所述的基于SAWSDL的语义信息提取的方法,其特征在于所述第三步,从基于WSDL 2. 0的SAWSDL中提取Web服务的语义注释信息包括以下步骤(1) 判断是否存在interface部件,如果存在则转到步骤(2),否则结束;(2) 判断interface部件中是否存在语义注释属性,如果存在则转到步骤(3), 否则转到步骤(4);(3) 提取interface中的语义注释信息;(4) 判断是否存在operation部件,如果存在则转到步骤(5),否则转到步骤(l);(5) 判断operation部件中是否存在语义注释属性,如果存在则转到步骤(6), 否则转到步骤(7);(6) 提取operation中的语义注释信息;(7) 提取inputs中的语义注释信息;(8) 提取outputs中的语义注释信息;(9) 判断是否存在procondition部件,如果存在则转到步骤(10),否则转到步 骤(11);(10) 提取procondition中的语义注释信息,转到步骤(9);(11) 判断是否存在effect部件,如果存在则转到步骤(12),否则转到步骤(4);(12) 提取effect中的语义注释信息,转到步骤(11)。
4、根据要求3所述的基于S,SDL的语义信息提取的方法,其特征在于所述步骤 (7)从SAWSDL中提取inputs的语义注释信息包括如下步骤(a) 判断是否存在i叩ut部件,如果存在则转到步骤(b),否则结束;(b) 判断i叩ut是否存在注释属性,如果存在则转到步骤(c),否则转到步骤(d);(c) 提取input的语义注释信息,转到步骤(a);(d) 判断input是否存在element部件注释,如果存在则转到步骤(e),否则转 到步骤(f);(e) 提取element的语义注释信息作为i叩ut语义信息,转到步骤(a);(f) 判断element是否存在type属性,如果存在则转到步骤(g),否则转到步骤 (n);(g) 判断type是否为si即leType类型,如果是则转到步骤(h),否则转到步骤 (i);(h) 提取simpleType的语义注释信息作为input的语义信息,转到步骤(a);(i) 判断type是否为complexType类型,如果是则转到步骤(j),否则转到步骤 (n);U)判断co即lexType类型是否存在语义注释,如果存在则转到步骤'(k),否则 转到步骤(1);(k)提取complexType类型的语义注释信息作为i叩ut的语义信息,转到步骤(l); (1)判断co即lexType是否存在子元素,如果存在则转到步骤(ni),否则转到步 骤(a);(m)提取complexType类型的子元素的语义注释信息作为i叩ut的语义信息,转到 步骤(i);(n)判断element中是否存在嵌套的complexType类型,如果存在则转到步骤(k), 否则转到步骤(a)。
全文摘要
一种基于SAWSDL的语义信息提取的方法,主要应用Web服务中,其步骤如下(1)判断SAWSDL文档是基于WSDL 1.1还是基于WSDL 2.0,如果基于WSDL 2.0,则转步骤(3),如果基于WSDL 1.1,则转步骤(2),(2)将基于WSDL 1.1的SAWSDL文档转换为基于WSDL 2.0的SAWSDL文档;(3)从基于WSDL 2.0的SAWSDL文档中提取语义注释的信息;(4)将提取出的语义信息输出到模板文件中。本发明既可以从基于WSDL 1.1的SAWSDL文档中提取语义信息,也可以从基于WSDL 2.0的SAWSDL文档中提取语义信息;不需要用户进行复杂的编程,只需要利用一个提供的XML描述文件并调用一个API方法即可。
文档编号H04L29/06GK101426028SQ20081022744
公开日2009年5月6日 申请日期2008年11月25日 优先权日2008年11月25日
发明者建 刘, 红 朱, 宁 李, 静 李, 马殿富 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1