把Web服务映射到本体转让专利

申请号 : CN200610004710.7

文献号 : CN100583093C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 于尔根·安格勒于尔根·哈巴特哈拉尔德·舍宁韦尔特·沃特费尔德凯·温克勒米夏埃尔·格斯曼

申请人 : 翁托普里塞有限公司软件公开股份有限公司

摘要 :

公开了一种企业信息集成系统。该系统基于不同的层:各数据源,对应于所述各数据源的数据模式的各源本体,集成了不同源本体的集成本体,查询输入级,优选按web服务的形式。在各级别之间使用映射规则。对文档风格的web服务和XML文档到本体的映射,给出了详细的规则,除了其他之外,覆盖了分别映射到类特性和关系(对象特性)的简单内容和复杂内容元素。

权利要求 :

1.一种用于把XML数据结构映射到本体的方法,该方法包括:-提供具有相应XML模式定义的XML文档;

a)按下述方式把XML模式声明和定义映射到本体模式定义:-把XML元素和属性声明映射到本体特性定义;

-把XML复杂类型定义映射到本体类定义;

b0)利用所述XML模式验证所述XML文档以产生该XML文档的 PSVI注解;

b)使用通过验证所述XML文档所得到的所述PSVI注解,按下述 方式把带有已知PSVI类型的XML节点映射到本体实例:-把PSVI复杂类型注解映射到本体类实例;

-把元素和属性节点映射到本体特性实例;

c)定义下述预定义的本体模式定义:

-定义预定义的本体类定义、预定义的本体数据类型特性定义以及 预定义的对象特性定义;

d)按下述方式把不带有PSVI类型注解的XML节点映射到本体实 例和本体定义:-把XML元素和属性节点映射到所述预定义的本体特性定义的本 体特性实例和所述预定义的本体类定义的本体类实例;

e)并且在评估来自所述XML文档的查询数据时自动执行这种映 射。

2.根据权利要求1所述的方法,其中:

把XML复杂类型定义映射到本体类定义包括:

a1)把XSD复杂类型定义映射到该本体的类定义;

并且把XML元素和属性声明映射到本体特性定义包括:a2)把XSD复杂类型定义的XSD复杂内容元素声明映射到该 本体的对象特性定义,该对象特性具有域类和范围类,该域类是其中 使用该元素的类,并且该对象特性的范围类是该复杂内容元素的复杂 类型所要映射到的类;

a3)把XSD简单元素声明映射到该本体的数据类型特性定义, 该数据类型特性具有域类,该域类是其中使用该元素的类,并且范围 类型是该简单类型元素声明的XML模式类型;

a4)把带有属性的XSD简单内容元素声明映射到该本体的对 象特性定义,该对象特性具有域类和范围类,该域类是其中使用该元 素的类,并且该对象特性的范围类是该简单内容元素的复杂类型所要 映射到的类;

a5)把XSD属性声明映射到该本体的数据类型特性定义,该 数据类型特性具有域类,该域类是其中使用该元素的类,并且范围类 型是该属性声明的XML模式类型。

3.根据权利要求1所述的方法,其中:

把PSVI复杂类型注解映射到本体类实例包括:

b1)对每个带有复杂类型注解的XML元素节点生成该本体的 类的实例,该实例的类是该复杂类型定义所要映射到的类;

并且把元素和属性节点映射到本体特性实例包括:

b2)把XML简单类型元素节点映射到该本体的数据类型特性 实例,该数据类型特性实例的域类实例是对其中使用该元素节点的 PSVI类型注解生成的实例;

b3)把带有属性的XML简单内容元素节点映射到该本体的对 象特性实例,该对象特性具有域类实例和范围类实例,该对象特性实 例的域类实例是对其中使用该元素的类型注解生成的实例,该对象特 性实例的范围类实例是对该XML简单内容元素节点的PSVI类型注解 生成的类实例;

b4)把XML复杂内容元素节点映射到该本体的对象特性实 例,该对象特性具有域类实例和范围类实例,该对象特性实例的域类 实例是对其中使用该元素的PSVI类型注解生成的实例,并且该对象特 性实例的范围类实例是对该XML复杂内容元素节点的PSVI类型注解 生成的类实例;

b5)把XML简单类型属性节点映射到该本体的数据类型特性 实例,该数据类型特性实例的域类实例是对其中使用该属性节点的 PSVI类型注解生成的实例。

4.根据权利要求1所述的方法,其中:

定义预定义的本体类定义、预定义的本体数据类型特性定义以及 预定义的对象特性定义包括:c1)定义单一的类定义,该类是所有生成的类定义的超类;

c2)定义单一的对象特性定义,该对象特性是所有生成的对象特性 定义的超对象特性,该对象特性具有域类和范围类,它们是所述的超 类;

c3)定义单一的数据类型特性定义,该数据类型特性是所有生成的 数据类型特性定义的超数据类型特性,该数据类型特性具有域类,它 是所述超类,范围类型是任何原子类型。

5.根据权利要求4所述的方法,其中:

把XML元素和属性节点映射到所述预定义的本体特性定义的本 体特性实例和所述预定义的本体类定义的本体类实例包括:d1)对每个非叶子节点的XML元素节点

d1a)生成该本体的所有生成的类的预定义超类的实例;以及d1b)生成该预定义超对象特性的对象特性实例,该对象特性实例 的域类实例是对包含元素节点生成的实例,并且该范围类实例是对该 XML元素节点生成的类实例;

d2)对每个不带有属性节点的XML叶子元素节点,生成该预定义 超数据类型特性的数据类型特性实例,该数据类型特性的域类实例是 对该包含元素节点生成的实例;

d3)对每个带有属性节点的XML叶子元素节点,生成该预定义超 对象特性的对象特性实例,该对象特性的域类实例是对该包含元素节 点生成的实例,并且该范围类实例是对该元素节点生成的类实例;

d4)对每个XML属性节点,生成该预定义超数据类型特性的数据 类型特性实例,该数据类型特性的域类实例是对该属性所属于的元素 节点生成的实例。

6.根据权利要求1所述的方法,其中本体类的对象和数据类型特 性能够被标记成落地的。

7.一种把文档风格的web服务映射到本体的方法,包括:根据权利要求1所述的方法执行所需要的XML数据结构的映射;

执行XML web服务到本体的映射,包括执行下述的步骤:-提供带有相应web服务描述的XML SOAP webservice;

g)按下述方式把该web服务描述定义映射到本体模式定义:-把操作定义映射到该本体的类定义;

-把部件定义映射到本体特性定义;

h)按下述方式把该SOAP请求的输入和输出消息映射到本体实例:-把单一的SOAP请求映射到单一的本体类实例;

-把表示该输入和输出消息的部件的元素节点映射到本体特性实 例。

8.根据权利要求7所述的方法,其中:

把部件定义映射到本体特性定义包括:

g2)如果该输入或输出消息的部件被定义成复杂内容元素声明,其 映射到该本体的对象特性定义,该对象特性具有域类和范围类,该域 类是从该操作定义映射的类,并且该对象特性的范围类是该复杂内容 元素的复杂类型所要映射到的类;

g3)如果该输入或输出消息的部件被定义成不带有属性的XSD简 单类型元素声明,其映射到该本体的数据类型特性定义,该数据类型 特性具有从该操作定义映射的域类,并且范围类型是该简单类型元素 声明的XML模式类型;

g4)如果该输入或输出消息的部件被定义成带有属性的XSD简单 内容元素声明,其映射到该本体的对象特性定义,该对象特性具有域 类和范围类,该域类是从该操作定义映射的类,并且该对象特性的范 围类是该简单内容元素的复杂类型所要映射到的类。

9.根据权利要求7所述的方法,其中:

把单一的SOAP请求映射到单一的本体类实例包括:

h1)对操作的每个SOAP请求,生成该本体的类的实例,该实 例的类是该操作定义要映射到的类;

并且,把表示该输入和输出消息的部件的元素节点映射到本体特 性实例包括:h2)如果该输入和输出消息包含XML简单类型元素节点,其 映射到该本体的数据类型特性实例,该数据类特性实例的域类实例是 对该SOAP请求的操作生成的实例;

h3)如果该输入或输出消息包含带有属性的XML简单内容元 素节点,其映射到该本体的对象特性实例,该对象特性具有域类实例 和范围类实例,该对象特性实例的域类实例是对该SOAP请求的操作 生成的实例,该对象特性实例的范围类实例是对该XML简单内容元素 节点的PSVI类型注解生成的类实例;

h4)如果该输入或输出消息包含XML复杂内容元素节点,其 映射到该本体的对象特性实例,该对象特性具有域类实例和范围类实 例,该对象特性实例的域类实例是对该SOAP请求的操作生成的实例, 并且该对象特性实例的范围类实例是对该XML复杂内容元素节点的 PSVI类型注解生成的类实例。

说明书 :

技术领域

本发明涉及对分布数据源的统一查询以及有效恢复在分布数据源 中所存储数据的方法。

本发明特别涉及把XML文档的数据结构映射到本体(ontology)。

背景技术

企业数据系统,尤其是对大型企业,通常要包括多个数据源,这 些数据源可基于不同的数据模式,如
关系型数据库
XML文档、XML模式、XML文档类型定义(DTD)
Web服务
Adabas文件
SGML文本
接口描述语言(IDL)
JAVA接口
资源描述框架(RDF)
统一建模语言(UML)
本体Web语言(OWL)
对象角色建模
话题映射(Topic maps)
等等
由于几代IT技术的演进和/或数据的合并和获取等,具有不同数据 模式的几个数据库可以包含不同业务领域中的信息。另一方面,还可 以从Web服务获得信息页。例如,企业人事数据可能存储在服从第一 关系数据库模式的关系数据库中,而企业财务数据可能存储在服从第 二关系数据库模式的关系数据库中。常常这些不同的数据源可能会重 叠,而且用户很难进行跨企业数据源的查询。
因此,需要工具用于数据集成或信息集成,并且需要统一的查询 工具使得用户可以跨越服从不同数据模式的数据源来查询数据。当单 一的查询问题要涉及多个数据源的时候也需要统一的查询工具。
相关技术的说明
属于同一个专利族的专利申请US 2004/0216030 A1、US 2004/0093559 A1、US 2004/0093344 A1、US 2003/0179228 A1、US 2003/0177481 A1、US 2003/0163597 A1、US 2003/0163450 A1、US 2003/0120665 A1、以及US 2003/0101170 A1描述了数据模式的映射, 除了其他之外,中央本体模型包括关系数据库模式和XML模式用于解 决数据集成问题(后面将详细说明本体的概念)。不同数据模式的基 本结构映射到中央本体模型的类和属性。这样,对关系数据库模式, 表(table)通常映射成类(class),而表的字段(field)通常映射成类 的属性(property)。类似地,对XML模式,复杂类型通常映射成本 体类,而复杂类型中的元素和属性通常映射成本体属性。
这样,在XML文档和本体结构之间需要映射。
XML数据可源于:
Web服务
XML文档或数据库
另外的XML数据源
最常见的情况是,Web服务把XML文档作为输入并产生XML 文档作为输出。这样的Web服务被称作“文档风格的Web服务”。
XML简介
XML是可扩展置标语言(eXtensible Markup Language)的英文缩 写。置标语言是一组标记和文本值(简单说明)。当今最著名的置标 语言是HTML,用来设计网页。XML使得人们可以设计他们自己的置 标语言,使这种置标语言适于存储任何类型的信息。下面是XML文档 的例子:

    
       

            Oakroad 5
            Lyngby
            Denmark
       

       124-21424-21
       jd@example.com
       friend
       co-worker
   

看一看这个文档很快就知道它的用途:它是用于存储联系地址的
置标语言。再仔细看一看各元素(element)或节点:
...
称作打开标记(opening tag)。该打开标记中的 name=″John Doe″称作属性(attribute)。该属性的名为″name″,并且 该属性的值或实例为″John Doe″。″...″是该元素的内容。这既可以是更 多的元素也可以是文本数据。是关闭标记。
元素总是要关闭,以构造良好的XML文档。在XML文档中的注 释具有和HTML文档同样的文法。
<!—此处写注释-->
要注意XML文档的结构。最外层的元素,即包含所有其他标记的 元素,被称作根节点或根元素。在上述的例子中,是根节 点。在另外元素内容中的任何元素称作该元素的子女节点。
XML文档可以看作是分层的树形结构。每个元素是一个节点。最 顶上的节点是根元素或根节点。注意,除了根节点之外的所有的节点 有且只有一个双亲节点。
所有XML文档的起始行都是
<?xml version=″1.0″encoding=″iso-8859-1″?>
对encoding属性可以有变化。增加下述的处理指令:
<?xml-stylesheet href=″stylesheet.xsl″type=″text/xsl″?>
这表示无论用什么程序来表现该XML文档,都使用XSL风格页。 制作包含该行的XML文档可使得Internet Explorer(6.0及更高版本) 可根据该风格页表现该文档。
XML模式简介
XML模式用来说明XML文档的结构。XML模式语言也称作XML 模式定义(XSD)。请看下面的记作“note.xml”的例子XML文档:
<?xml version=″1.0″?>

Tove
Jani
Reminder
Don′t forget me this weekend!

下面的记作″note.xsd″的XML模式文件用于定义上述的XML文档 (″note.xml″)的元素:
<?xml version=″1.0″?>
targetNamespace=″http://www.w3schools.com″
xmlns=″http://www.w3schools.com″
elementFormDefault=″qualified″>











该note元素被称作复杂类型(复杂元素),因它包含其他的元素。 这些其他的元素(to,from,heading,body)被称作简单类型(简单元素), 因它们不包含另外的元素。
type=″xs:string″用于定义数据类型,这里是定义了字符串 (string)。也可以定义其他数据类型,如“整数(integer)”、“日 期(date)”等。这些简单类型被称作“原子(atomic)”类型。
元素是每个XML模式的根元素:
<?xml version=″1.0″?>
...
...

元素可包含某些属性。模式声明(declaration)常常如下 面的样子:
<?xml version=″1.0″?>
targetNamespace=″http://www.w3schools.com″
xmlns=″http://www.w3schools.com″
elementFormDefault=″qualified″>
...

下面的片断:
xmlns:xs=″http://www.w3.org/2001/XMLSchema″
指示在该模式中使用的元素和数据类型(schema、element、 complexType、sequence、string、boolean  等)来自 “http://www.w3.org/2001/XMLSchema”名字空间(namespace)。它 还指示来自“http://www.w3.org/2001/XMLSchema”名字空间的元素和 数据类型应该带有前缀“xs:”。
下面的片断:
targetNamespace=″http://www.w3schools.com″
指示由该模式定义的元素(note,to,from,heading,body)来自 “http://www.w3schools.com”名字空间。
片断:
xmlns=″http://www.w3schools.com″
指定了默认的名字空间声明。该声明告知模式验证器 (schema-validator)在该XML文档中使用的所有元素都在 ″http://www.w3schools.com″名字空间中声明。
片断:
elementFormDefault=″qualified″
指示该XML示例文档所使用的在该模式中声明的任何元素必须 是名字空间合格的。
该XML文档具有到XML模式的参照:
<?xml version=″1.0″?>
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
xsi:schemaLocation=″http://www.w3schools.com note.xsd″>
Tove
Jani
Reminder
Don′t forget me this weekend!

一旦使XML Schema Instance名字空间可用:
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
就可以使用schemaLocation属性。该属性有两个值。第一个值是要 使用的名字空间。第二个值是要使用该名字空间的XML模式的位置:
xsi:schemaLocation=″http://www.w3schools.com note.xsd″
对XML文档可生成XML模式,该XML模式包含该XML文档 中所包含数据的数据类型定义。利用这样的XML模式,可以验证相 应的XML文档,即可以在这方面检查该文档中的数据,不论它们是否 服从正确的数据类型。该验证过程产生XML文档的注解版本,对每个 数据或XML实例包含PSVI实例(PSVI=post schema validation info set,后模式验证信息集),即所谓的标记,它是从该XML文档到合适 数据类型的参照。PSVI实例包含有关XML实例的数据类型的信息。
PSVI的一个例子是:

它是上述的所给的例子加PSVI注解的版本:

    
                                country=″france″>35
        
            Oakroad 5
            
            Lyngby
            Denmark
            
        
        124-21424-21
        jd@example.com
        
        friend
        co-worker
    

xsi:type=″fullpersoninfo″是PSVI注解。它按附加属性的形式给出。
对于带有多重节点的XML分层结构,所需要的映射是困难的。

发明内容

因此,本发明的目的是提供一种详尽的方法,用于把XML数据结 构映射到本体构造。
本发明的第一方面用于实现这个目的。在本发明的其他方面说明 优选的实施例。
本发明各个方面的合理组合也在本发明的公开范围之内。
一般而言,对于XML文档,复杂类型(complex type)映射到本 体类(ontology class),复杂类型中的元素和属性(attribute)映射到 本体特性(ontology property)。
为了映射XML文档和文档风格WEB服务,建议下面的方法。在 下面将祥述该方法的各个步骤。不必按该文本中给定的次序来执行这 些步骤。而且,没有明确陈述的另外步骤也可以作为该方法的一部分。
在描述该方法之前,需要定义更多的XML模式的元素。
简单类型(SimpleType)元素
XSD simpleType元素是其类型为简单类型(如type=″xs:string″) 的元素:

带有属性的简单内容(simpleContent)元素
simpleContent元素包含在只有文本的复杂类型上或在简单类型上 的扩展或限制作为内容,并且不包含元素,但具有属性。相应的双亲 元素是complexType元素(见下述)。下面是不包含元素的XML元素 ():
35

下述例子声明了complexType,“鞋尺码(shoesize)”,其内容 被定义成整数数据类型并带有国家(country)属性:


        
            
        
    



复杂内容(complexContent)元素
complexContent元素在包含有混合内容或仅包含元素的复杂类型 上定义扩展和限制。
下面的例子具有复杂类型,“fullpersoninfo”,其通过对带有三 个附加元素(address、city、country)的继承类型进行扩展,从另外的 复杂类型“personinfo”导出:

        
            
            
            
        



        
            
            
        



    
        
            
                
                
                
            

        
    


在上述的例子中,″employee″元素必须按顺序包含下述元素: ″firstname″、″lastname″、″address″、″city″、以及″country″。
简言之,XSD complexContent元素是其类型带有complexContent 的复杂类型(comlexType)的元素。
建议的方法
所建议的用于把XML数据结构映射到本体的方法包括下述步骤:
-提供具有相应XML模式定义的XML文档;
a)按下述方式把XML模式声明和定义映射到本体模式定义:
-把XML元素和属性声明映射到本体特性定义;
-把XML复杂类型(complexType)定义映射到本体类定义;
b0)利用所述XML模式验证所述XML文档以产生该XML文档的 PSVI注解;
b)使用通过验证所述XML文档所得到的所述PSVI注解,按下述 方式把带有已知PSVI类型的XML节点映射到本体实例:
-把PSVI复杂类型(complexType)注解映射到本体类实例;
-把元素和属性节点映射到本体特性实例;
c)定义下述预定义的本体模式定义:
-定义预定义的本体类定义、预定义的本体数据类型(datatype) 特性定义以及预定义的对象特性定义;
d)按下述方式把不带有PSVI类型注解的XML节点映射到本体实 例和本体定义:
-把XML元素和属性节点映射到所述预定义的本体特性定义的 本体特性实例和所述预定义的本体类定义的本体类实例;
e)并且在评估来自所述XML文档的查询数据时自动执行这种映 射。
在下面的段落中将详细描述根据本发明的方法。
按照下面详细说明的方式把XML模式声明和定义映射到本地模 式定义,即在模式一级做完整的映射。声明(declaration)是可在XML 模式以及XML文档中找到的名字(name)。除了在XML文档中通过 xsi:type机制显式地赋予类型,声明只出现在XML模式中。
把XSD complexType定义映射到本体的类定义。类的名字是复杂 类型(complexType)的名字(或系统定义的名字)。
把XSD complexType定义的XSD complexContent元素声明映射 到本体的对象特性定义,该对象特性具有域类(domain class)和范围 类(range class),在域类中使用该元素,而该复杂内容(complexContent) 元素的复杂类型(complexType)映射到对象特性的范围类。在上述给 出的例子中,XSD complexContent元素声明的例子是″employee″。
一般而言,特性的域类是这样的类,该类的特性由所述特性来定 义。而范围(range)定义所述特性的允许值。如上述给出的类 ″companytype″具有数据类型特性″name″和对象特性″employee″,其具有 范围(类)″fullpersoninfo″和域(类)″companytype″。
把XSD simpleType元素映射到本体的数据类型特性定义,该数据 类型(datatype)特性具有域类,该域类是其中使用了该元素的类,而 该范围类型是simpleType元素声明的XML模式类型。在上述给出的例 子中XSD simpleContent元素声明的例子是″firstname″。
更精确地定义,XSD simpleContent元素是其类型为带有简单内容 (simpleContent)的复杂类型(comlexType)的元素。术语XSD simpleContent元素也用于simpleType元素(type=″xs:string″),即, 用于其元素内容为simpleType的元素。
把带有属性的XSD simpleContent元素声明映射到本体的对象特 性定义,该对象特性具有域类和范围类,该域类是其中使用了该元素 的类,并且该对象特性的范围类是simpleContent元素的complexType 所映射到的类。上述给出的例子中带有属性的XSD simpleContent元素 声明的例子是″shoesize″。
把XSD属性声明映射到本体的datatype特性定义,该datatype特 性具有域类,该鱼类是其中使用了该元素的类,并且该范围类型是该 属性声明的XML模式类型。在上述给出的例子中XSD属性声明的例 子是″country″。
如果使用通过XML模式验证XML文档得到的信息(PSVI注解), 按照下述方式把带有已知类型的XML节点映射到本体实例。
如上面定义的,PSVI注解(如xsi:type=″fullpersoninfo″)用于引 导本体模式构造,该构造然后再用XML元素的实例来补充。对于本体, “数据”被称作实例。类的实例被称作“对象”。XML文档的“实例” 被称作“节点”。
有时候,类的“对象特性”被称作“关系(relations)”。它们定 义了从一个类或对象到另外类或对象的指针。通常,类之间的对象特 性以及特性的继承要结合到本体中。除了对象特性,所谓的datatype 特性是标准的,可以按数据的形式对其定义类的特性。
对每个带有complexType注解的XML元素节点,产生该本体的类 的实例,该实例的类是该complexType定义所要映射到的类。在上述 给出的例子中,带有complexType注解的元素节点的例子是 ″employee″。
把XML simpleType元素节点映射到本体的datatype特性实例,该 datatype特性实例的域类实例是对其中使用该元素节点的PSVI类型注 解生成的实例。在上述给出的例子中,XML simpleType元素节点的例 子是″″firstname″=Peter″。
把带有属性的XML simpleContent元素节点映射到该本体的对象 特性实例,具有域类实例和范围类实例,该对象特性实例的域类实例 是对其中使用该元素的类型注解生成的实例,该对象特性实例的范围 类实例是对该XML simpleContent元素节点的PSVI注解生成的类实 例。在上述给出的例子中,XML simpleContent元素节点的例子是
35.
把XML complexContent元素节点映射到该本体的对象特性实例, 该对象特性具有域类实例和范围类实例,该对象特性实例的域类实例 是对其中使用该元素的PSVI类型注解生成的实例,并且该对象特性实 例的范围类实例是对该XML complexContent元素节点的PSVI类型注 解生成的类实例。在上述给出的例子中,XML complexContent元素节 点的例子是:

                        country=″france″>35
        

            Oakroad 5
            

            Lyngby
            Denmark
            

        

        124-21424-21
                
        friend
        co-worker

把XML simpleType属性映射到该本体的datatype特性实例,该 datatype特性实例的域类实例是对其中使用属性节点的PSVI类型注解 生成的实例。在上述给出的例子中,XML simpleType属性节点的例子 是
country=″France″.
定义下述预定义的本体模式定义:
-单一的类定义,其为所有生成的类定义的超类(super class);
-单一的对象特性定义,其为所有生成的对象特性定义的超对象 (super object)特性,该对象特性具有域类和范围类,它们是所述的超 类;
-单一的datatype特性定义,其为所有生成的datatype特性定义的 超datatype特性,该datatype具有作为所述超类的域类,该范围类型是 任何原子类型。
如果通过XML模式验证了XML文档,按下述方式把不带有PSVI 类型注解的XML节点映射到本体实例和本体定义:
对每个不是叶子节点的XML元素节点,生成该本体的所有生成的 类的预定义超类的实例;以及生成该预定义超对象特性的对象特性实 例,该对象特性实例的域类实例是对包含元素节点生成的实例,并且 该范围类实例是对该XML元素节点生成的类实例。叶子节点是位于最 低级的节点。
对每个不带有属性节点的XML叶子元素节点,生成预定义超 datatype特性的datatype特性实例,该datatype特性的域类实例是对该 包含元素节点生成的实例。“包含元素节点”是该XML文档的上一级 节点。在上面给出的例子中,不带有属性节点的XML叶子元素节点是 ″″firstname″=Peter″。
对每个XML属性节点,生成该预定义的超datatype特性的 datatype特性实例,该datatype特性的域类实例是对该属性所属于的 元素节点生成的实例。
通常,不带有PSVI类型的XML节点是通过XSD通配符验证的 节点。作为默认,优选使用下述预定义的本体模式定义:
  class   GeneralWSInstance   object property   GeneralWSObjectProperty   datatype property   GeneralWSDatatypeProperty
这样,本体实例和特性实例总是具有这些本体定义作为类型:或 者直接对不带有PSVI类型的XML节点,或者间接对带有PSVI类型 的节点,因所有生成的本体定义具有这些本体定义作为超类和超特性。
优选从该模式定义生成类是特性类型。如果不能这样(如对通配 符元素没有PSVI类型),利用默认的定义生成类和特性定义。
把XML web服务映射到本体
如果根据上述的方法完成所需要的XML数据结构的映射,则可实 现文档风格的web服务到本体的映射。
更详细地,为了把XML web服务映射到本体,执行下述的步骤:
提供带有相应web服务描述符(WSDL)的XML SOAP webservice。
按下述方式把WSDL定义映射到本体模式定义:
-把操作定义映射到该本体的类定义;
-把部件定义(part definition)映射到本体特性定义。
SOAP请求的输入和输出消息按下述方式映射到本体实例:
-单一的SOAP请求映射到单一本体类实例;
-表示输入和输出消息的部件的元素节点映射到本体特性实例。
更精确地,可按下述方式完成WSDL定义到本体模式定义的映射:
-把操作定义映射到该本体的类定义;
-如果该输入或输出消息的部件被定义成complexContent元素声 明,其映射到该本体的对象特性定义,该对象特性具有域类和范围类, 该域类是从该操作定义映射的类,并且该对象特性的范围类是 complexContent元素的complexType所映射到的类;
-如果该输入和输出消息的部件被定义成XSD simpleType元素声 明,其映射到该本体的datatype特性定义,该datatype特性具有从该操 作定义映射的域类以及范围类型,该范围类型是该simpleType元素声 明的XML模式类型。
-如果该输入或输出消息的部件被定义成带有属性的XSD simpleContent元素声明,其映射到该本体的对象特性定义,该对象特 性具有域类和范围类,该域类是从该操作定义映射的类,并且该对象 特性的范围类是simpleContent元素的complexType所映射到的类。
操作的例子是附录A中的″getProductDetails″。带有simpleType的 元素声明的部件定义的例子是附录A中的″ProductNumber″。带有 complexContent元素声明的部件定义的例子是附录A中的 ″ProductDetails″。
进而,该soap请求的输入和输出消息按下述方式映射到本体实例:
-对操作的每个SOAP请求,生成该本体的类的实例,该实例的类 是这样的类,该操作定义要映射到该类;
-如果该输入或输出消息包含XML simpleType元素节点,其映射 到该本体的datatype特性实例,该datatype特性实例的域类实例是对该 SOAP请求的操作生成的实例;
-如果该输入或输出消息包含带有属性的XML simpleContent元素 节点,其映射到该本体的对象特性实例,该对象特性具有域类实例和 范围类实例,该对象特性实例的域类实例是对该SOAP请求的操作生 成的实例,该对象特性实例的范围类实例是对该XML simpleContent 元素节点的PSVI类型注解生成的类实例;
-如果该输入或输出消息包含XML complexContent元素节点,其 映射到该本体的对象特性实例,该对象特性具有域类实例和范围类实 例,该对象特性实例的域类实例是对该SOAP请求的操作生成的实例, 并且该对象特性实例的范围类实例是对该XML complexContent元素节 点的PSVI类型注解生成的类实例。
请求操作的例子是附录C中的″getProductDetails″的输入消息。简 单元素节点部件的例子是附录C中的SOAP请求的输入消息中的节点 ″ProductNumber″。复杂内容元素节点部件的例子是附录C中的SOAP 请求的输出消息中的节点″ProductDetails″。
输入消息的落地
为了使得web服务能够产生结果或输出,必须定义良好的输入。 该输入可以不包含变量;所有的变量必须具有指定的值。换言之,所 有的变量必须“落地(grounded)”。本体的特性是“落地”的,是指 该特性存在实例或值。因此,需要本体的定义,其中本体类的对象或 datatype特性可以被标记成落地的。
通过结合附图阅读说明书以及权利要求书,可以理解本发明的其 他目的和优点。

附图说明

为了更完整地理解本发明,可参照附图阅读说明书。附图包括:
图1示出了企业信息集成平台的一般视图;
图2示出了把XML数据结构映射到本体的一般概述;以及
图3示出了示例性的数据结构。

具体实施方式

内容
1.系统的一般视图
2.F-Logic介绍
3.映射
3.1.数据库的映射
3.1.1.关系数据库到源本体的映射
3.2.XML映射
3.2.1.带有complexContent的XML参数映射到本体
3.3.Web服务映射
3.3.1.输入变量的落地
4.定义成参数化查询的外部视图
5.作为web服务的出版
附录A web服务的web服务模式的例子
附录B包含在依据附录A的web服务的web服务描述中的XML 模式
附录C用于依据附录A的web服务的SOAP请求
1.系统的一般视图
图1示出了企业信息集成平台的一般视图。其中示出了若干数据 源XML、DB1、DB2和RPC,RPC是远程过程调用并代表一种web服 务。存在源本体100、102、104和106分别对应每个数据源。这些源 本体被集成到集成本体108。该集成本体及其下层结构可通过预定义的 外部视图V1、V2和V3来存取。对应这些外部视图的是web服务WS1、 WS2和WS3。这些web服务可用于把查询输入到系统。推理机或运行 时单元110被用于回答这些查询。在这一端,它把该查询输入通过web 服务翻译成用该集成本体108的查询语言表示的查询。而且,它动态 地访问本体结构100、102、104、106和108以及为回答该查询的对应 规则。这些规则的一部分在源本体100、102、104和106与各数据源 之间映射。这些映射包含内置函数(built-in)用于访问各数据源。运 行时引擎110在使用规则评估查询的同时直接访问外部数据源。
根据示例性的第一实施例,本发明包含系统,优选的是计算机系 统,用于统一查询符合不同数据模式的分布数据源。
该系统包含多个数据源,各数据源分别符合给定的数据模式。这 些数据源的不同数据模式例如可以是关系数据库、XML文本、web服 务等。不同的数据源可存储在不同的存储介质上、存储在网络中的不 同计算机上、存储在不同的工厂,或者存储在一个计算机或一个硬盘 驱动器上。
每种数据模式具有用来组织数据的结构以及数据模式查询语言, 如SQL、Xquery、web服务的API的远程过程调用等。
该系统还包括多个源本体,各对应到一个数据源。每个源本体包 括一组结构。通常,该组结构至少包括类和该类的特性。有时候在文 献中,类(class)也被称作“类别(category)”,特性(property)也 被称作“属性(attribute)”。通常,对象特性和各类之间的关系以及 数据类型特性的继承等也结合到本体中。
该数据被称作类的实例。换言之,类是集合,而数据/实例是集合 的成员。
优选实现作为类分层结构的对象模型。在分层结构之内,在预定 级别上的各类被分别分派到更高级别的确定一个类,也即只允许单继 承。一般来说,类结构也可以更一般地实现成无回路的图(acyclic graph),对此可允许多继承。
例如类的例子可以是类“人”。该类“人”的特性的例子是人的 “姓名”。类或数据可以通过对象特性联系起来,如人A和人B“合 作”。
定义每个数据源和其对应的源本体之间的映射。利用该映射,把 数据源的数据模式的结构映射到源本体的结构。如,对关系数据库模 式,表(table)通常映射到源本体的类,而表的字段(field)通常映射 到类的特性。
使用基于谓词逻辑的陈述性规则系统,实现各数据源和其对应的 源本体之间的映射。陈述性规则系统的一个重要特征是规则计算的结 果不依赖于规则定义的次序。
该映射包括工具(mean),用于通过数据源的数据模式查询语言 来查询该数据源。
另外,该系统包括集成本体。该集成本体又包括一组结构,通常 至少有类和特性。
在优选的实施例中,集成本体具有与其相关联的本体查询语言。 该集成本体的本体查询语言不必与源本体的本体查询语言相同,尽管 出于实用的原因通常是相同的。
该系统提供每个源本体与该集成本体之间的映射。从字面上看, 集成本体是最高级的或全局的本体。利用该映射,各源本体的结构映 射到该集成本体的结构。集成本体给出数据的统一视图。这使得可以 做信息集成。
该映射不必把源本体的类映射到该集成本体的类,也不必把源本 体的特性映射到集成本体的特性。这些本体可具有不同的结构,这可 以适当地在个别情况下把特定类映射到特性。如,一个源本体可能具 有类“激光打印机”,而集成本体可具有类“打印机”并带有特性“型 号”,其实例(实现、数据)可以是“激光打印机”。
源本体和集成本体之间的映射还可以使用基于谓词逻辑的陈述性 规则系统来实现。
该系统还包括用于输入与各数据源的数据有关的查询工具。
最后,至少存在一个基于谓词逻辑的推理单元,用于通过使用规 则来评估查询。由该推理单元来回答查询。为此,该推理单元对规则 评估,它选择适于回答问题的规则。在自顶向下的方法中,规则相继 地从集成本体导出到相关的源本体。另外,把相关的源本体映射到相 应数据源的规则包括用于通过该数据源的数据模式查询语言来查询该 数据源的工具。这些工具把各查询翻译成该数据模式的语言。可以回 答这些查询并返回结果。推理单元使用这些结果在web服务的级别上 回答查询。因此,该推理单元用作运行时(runtime)单元来回答查询。 利用来自本体的信息和规则,可直接查询下层数据源。它是单独的单 元而不是本体结构的一部分。
本系统相对于现有技术的主要优点在于映射中所使用的强有力而 灵活的规则。结构可以被转换;结构可以被重命名;值可以被改变、 转换或计算。
基于本体和陈述性规则的系统提供了无与伦比的建模数据和过程 的可能性。
而且,很容易把具有新数据模式的新数据源集成到本系统中。它 可以在新的源本体和新的数据模式之间定义映射。在该源本体和集成 本体之间的映射不需要新的编程的过程,只需纯的建模。
为了获得该系统的许多优点,关键是使该系统建立在谓词逻辑的 基础上或基于谓词逻辑的规则的基础上,而不是建立在现有技术中常 用的商业规则的基础上。对此需要做一些解释。如果我们把谓词逻辑 限制在具有否定的霍恩(horn)逻辑(规范逻辑)而不是商业规则,并 且规范逻辑规则应该至少与它们的外部表示如它们的句法密切关联。 相对地,它们底层背景理论基本是不同的。规范逻辑有很好的理论基 础:谓词逻辑的模型伦。Herbrand模型是事实的集合(有时候是无限 的)。规范逻辑规则和实事的集合的意思由唯一的最小Herbrand模型 来定义。这样,不严格地说,规范逻辑规则和实事的集合是实事集合 的简化,即最小的Herbrand模型。该最小Herbrand模型的定义独立于 给定的规则顺序、独立于给定的规则体顺序并独立于计算该模型的推 理算法。对于商业规则的含义没有可用的理论。商业规则的含义由简 单的推理算法Rete算法给出。该算法的结果严重依赖规则的顺序、规 则体顺序和规则头中使用的操作。这样,对于规则含义的确定没有独 立的理论,必须等待推理算法的回答,以得到规则集合的确切含义。 更糟糕的是,每个商业规则系统的表现都是不同的。
为了提高本系统的易用性,可自动生成对应于数据源和其数据模 式的源本体。同样可自动生成源本体和其对应的数据源之间的映射。
如所提到的,可使用谓词逻辑明确定义本体和本体之间的映射。 这些模型可用推理机直接执行。这样,在实现阶段就不会损失信息, 也无需信息的再解释,并且该执行对应于原始含义,而且该执行可以 立刻开始。
为了加速系统的工作,用作推理引擎的推理单元可在查询评估期 间动态存取本体的规则和结构。当推理单元存取存储有模型的数据结 构,就给出了实现动态存取的方法。这样就可以动态建模该数据集成, 并同时查询所建模的结构。也可以对模型测试。而且,这种系统的知 识工程师和用户可以同时工作在系统上。
在优选的实施例中,集成本体具有与其相关联的本体查询语言, 并且该系统包括工具用于把每个查询翻译成该集成本体的本体查询语 言。
为了进一步提高该系统的灵活性和性能,至少一个本体补充有基 于谓词逻辑的陈述性规则系统,用于表示附加的信息。
为了符合流行的标准,优选实施例中的该系统包括至少一个web 服务形式的查询单元,用于输入与该集成本体有关的查询。把该查询 由web服务输入翻译成该集成本体的本体查询语言,使得可对分布数 据进行统一的查询。一般来说,对所有相关的查询定义单独的web服 务。
为了使数据模式查询语言的能力尽可能强并加速查询的计算,该 系统包括用于标示查询或规则或可结合成该数据源的数据模式查询语 言中的复杂查询的规则的组合的工具,以及用于把这些查询或规则或 者规则组合翻译成该数据源的数据模式查询语言中的复杂查询。如对 关系数据库,结合了不同表和字段以及它们的数据项的查询可以被标 示并被翻译成相应的SQL查询。
为了在运行时进一步加速查询的计算,该系统包括工具用来动态 过滤那些在web服务级别上对回答该查询没有影响的数据或规则或查 询。
为了更好满足不同用户组的需求,该系统可包括多个集成本体, 集成不同的数据源或集成相同的数据源,并且表示数据上的不同视图。
2.F-Logic介绍
为了明确表达查询,通常使用逻辑语言F-Logic作为本体查询语言 (参见J.Angele,G.Lausen:″Ontologies in F-Logic″in S.Staab,R. Studer(Eds.):Handbook on Ontologies in Information Systems. International Handbooks on Information Systems,Springer,2003,page 29)。为了获得F-Logic功能性的某些直观理解,使用下述的例子,在 其中对西方世界所熟知的圣经人物之间的关系做映射。
首先,定义本体,即类和其分层结构以及一些实事:
abraham:man.
sarah:woman.
isaac:man[fatherIs->abraham;motherIs->sarah].
ishmael:man[fatherIs->abraham;motherIs->hagar:woman].
jacob:man[fatherIs->isaac;motherIs->rebekah:woman].
esau:man[fatherIs->isaac;motherIs->rebekah].
这里明确定义了一些类:″man″和″woman″。如亚伯拉罕(Abraham) 是男人(man)。类″man″具有特性″fatherIs″和″motherIs″,这代表双亲。 例如男人以撒(Isaac)有父亲亚伯拉罕(Abraham)和母亲撒拉(Sarah)。 在这个特定的例子中,各特性是对象特性(object properties)。
尽管F-Logic适于定义本体的类结构,但是,在许多情况下,也使 用本体语言RDF或OWL用于这种目的。
另外,给出某些规则来定义各类之间的依赖性:
FORALL X,Y X[sonIs->>Y]<-Y:man[fatherIs->X].
FORALL X,Y X[sonIs->>Y]<-Y:man[motherIs->X].
FORALL X,Y X[daughterIs->>Y]<-Y:woman[fatherIs->X].
FORALL X,Y X[daughterIs->>Y]<-Y:woman[motherIs->X].
利用F-Logic编写的规则包括规则头(左侧)和规则体(右侧)。 这样,上面所给例子中的第一条规则的意思就是:如果Y是男人,其 父亲是X,则Y是X的儿子之一(可能有多个儿子)。单箭头″->″表 示对给定的数据类型(datatype)或对象特性只可能有一个值,而双箭 头″->>″表示对特性可赋予多于一个的值。
最后,明确构造一个查询,查找“生有儿子且该儿子的父亲为亚 伯拉罕的所有女人”。换句话说,就是查找同亚伯拉罕生过儿子的所 有女人:
FORALL X,Y<-X:woman[sonIs->>Y[fatherIs->abraham]].
该查询的文法类似于规则定义,但省去了规则头。
查询结果是撒拉和夏甲:
X=sarah
X=hagar
3.映射
3.1.数据库的映射
对于数据库的映射,定义特殊的内置函数(built-in)。利用该内 置函数可以存取数据库。它建立诸如SQL的查询来存取数据库。该内 置函数结合到映射规则中。
下面的例子说明了在作为数据库类型的MS SQLServer上对数据 库的存取,运行在称作″host″的特殊计算机或端口上。该数据库包含表 ″Person″,该表含有有关人的″Id″、″name″和″town″的信息。映射规则 具有格式:
X:Person[hasName->Y;livesInTown->Z]<-
dbaccess(″MS SQL″,host,Person,f(Id,X,Name,Y,Town,Z)).
3.1.1.关系数据库到源本体的映射
关系数据库包含一组表。每个表由固定数目的命名列构成。对每 个列给定数据类型。表的内容必须符合这些数据类型。对表中的行, 必须给出(唯一)关键码,用于明确标示一个行。该关键码可由某些 列的值构成,或使用如数字的另外的单独的值。外码定义到其他表的 链接;它们表示其他表的关键码,因此代表对象特性。
按如下来定义关系数据库到其对应的源本体的映射:
-每个表映射到本体中的类。
-表中不表示外码的每个列,即不表示关系的每个列,映射到本体 的对应类的数据类型特性。
-表示外码的每个列映射到本体的二元关系。
-表中的每个行映射到本体的实例。由该行的关键码或由该行的所 有值(当没有可用的关键码)生成该实例的唯一标识符。
-该行中的值映射到所述的数据类型特性值和对象特性。
可按下述方式对关系数据库的数据模式自动生成源本体和映射:
-类名是表名。
-特性名是列名。
-如果有主关键码(primary key),则由数据库名、数据库位置、 表名加上该主关键码生成该实例的唯一标识符。
-如果没有唯一关键码,使用该行中所有的值v1、...、vn通过连接 这些值建立唯一的关键码。
-通过该行中的值直接给出实例的特性值。
-通过所述的外码的关键码转换建立对象特性。
参加例子:表″person″包含″id″、″name″、″city″、″street″、″zip″、 ″married″。″id″是关键码。该表包含有数据项″1″、″Peter″、″New York″、 ″King street″、″12″、″2″。
相应的源本体是如下的样子(按F-Logic的形式):
Person[
name=>STRING;
city=>STRING;
street=>STRING;
zip=>NUMBER;
married=>Person].
通过下述的规则给出该表到概念″Person″的映射:
f(database,person,X):Person[id->X;name->Y;city->Z;street->U; zip->V;married->f(database,foreigntablename,W)]<-dbaccess(database, person,access(id,X,name,Y,city,Z,street,U,zip,V,married,W)).
源本体以及从该表到源本体的映射因此可自动生成。
3.2.XML映射
在XML实例和F-Logic实例或源本体的结构之间需要映射。
对于XML文档,可以产生XML模式,其包含XML文档中包含 的数据的数据类型定义。利用这样的XML模式,可以验证对应的XML 文档,即可在这方面来检查该文档中的数据,看其是否符合正确的数 据类型。验证过程产生XML文档的注解版本,对每个元素或XML实 例包含有PSVI实例(PSVI=post schema validation info set,后模式验 证信息集合),其参照XML模式的适当数据类型。PSVI实例包含有 关XML实例的数据类型的信息。
现在,我们利用XML模式来考察XML实例,在设计时其具有固 定的模式。对XML实例给出PSVI实例,其对类型信息做注解并从XML 表示的具体词汇中做摘要。
该映射应该尽可能的保留信息。当然丢失某些信息也是可接受的, 因做这种保留的工作量太大,如
-通过嵌套序列、选择或所有模型组来约束复杂内容模型。
-利用如0、1以及无界的量来约束最小发生次数(MinOccurs)和 最大发生次数(MaxOccurs)。
有利用相关联的XML模式结构把XML元素节点映射到本体实例 和模式的模式驱动映射。
该映射按如下来定义:
-把XML simpleType元素说明映射到本体的datatype特性定义(如 表的列)。
-把XML complexType定义映射到本体类定义。
-把XML complexContent元素说明映射到本体的对象特性定义。
-把带有属性的XML simpleContent元素说明映射到本体的对象特 性定义。
通过下面的例子说明该映射。利用附录B中的目录模式来说明该 例子的XML模式。在图3中可见该结构。
下面的XML文档的例子适合该模式。
xmlns=″http://www.example.com/ProductCatalog.xsd″
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
xmlns:tns=″http://www.example.com/ProductCatalog.xsd″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″
xsi:schemaLocation=″http://www.example.com/ProductCatalog.xsd
ProductCatalog.xsd″>
    25
    kg
    
        27
        24
        21
    

    cm
    red

对该带有简单和复杂类型元素说明的XML模式,产生下述的本 体,该例子用语言F-Logic表达:
productDetailsType[].
dimensionsType[].
productDetailsType[Weight=>xsd#INTEGER;
WeightUnit=>xsd#STRING;
Dimensions=>>dimensionsType;
DimensionsUnit=>xsd#STRING;
        Colour=>colourType].
dimensionsType[Height=>xsd#INTEGER;
Width=>xsd#INTEGER;
Depth=>xsd#STRING].
colourType[value=>xsd#STRING;
transparency=>xsd#INTEGER].
该XML映射把上述XML实例映射到下述的本体的实例:
instance2productDetailsType:productDetailsType.
instance2productDetailsType[Weight->>″24,6″;
WeightUnit->>″pounds″;
Dimensions->>instance4dimenstionsType;
DimensionsUnit->>″inches″;
         Colour->>instance5ColourType].
instance4dimensionsType:dimensionsType.
instance4dimensionsType[Width->>24.0;
Depth->>21.0;
Height->>26.0].
instance5ColourType:ColourType.
instance5ColourType[value->″red”;
transp arency->>50].
图2示出了XML数据结构到本体映射的一般视图。模式定义映射 到模式定义,并且实例映射到实例。
这通过一般内置函数(generic built-in)来实现,其具有作为输入 的XML模式信息及其到本体定义的映射。通过存取XML实例,该内 置函数具有所有的信息,用于构造相应的作为带有本体模式信息的变 量给出的本体实例。这根据上述的模式驱动映射来实现。
根据该类属XML内置函数,该映射通过生成的F-Logic映射规则 来实现,该生成的F-Logic映射规则通过XML内置函数把生成的本体 类和特性映射到相应的XML构造。下面是这种生成规则的例子:
FORALL VAR0,VAR1,VAR2,VAR3,VAR4,VAR5
(id(″productDetailsType”,VAR0):
         productDetailsType[
      Weight->>VAR1;
      WeightUnit->>VAR2;
      Dimensions->>VAR3;
      DimensionsUnit->>VAR4;
            Colour->>VAR5]
<-
XMLBuiltin(″datasource-URL″,VAR0
    ”XMLSchemaDefiniton”,”MappingToOntology”,
           F(VAR1,VAR2,VAR3,VAR4,VAR5))
该内置函数生成Xqueries。该Xqueries的XML结果根据该规则映 射到本体实例。
3.2.1.把带有complexContent的XML参数映射到本体
一般来说,web服务方法本身可以映射到源本体的类(概念), 其所有参数映射到数据类型或对象特性。SimpleType XML元素说明象 表那样映射,即可以直接映射到数据类型或对象特性。需要解决的问 题是带有复杂内容(complexContent)的参数。
下面的表1定义了从带有包括复杂内容的XML模式信息的XML 元素节点到F-Logic/本体模式(以F-Logic表示的本体)的映射。
  XML schema   F-Logic schema   命名的complexType   类带有所有元素的特性和包含在complexType   内容模型中的属性。忽略模型组(序列、选项、   所有)                                 productDetailsType[      Weight=>xs#NUMERIC;      WeightUnit=>xs#STRING;      Dimensions=>DimensionsUnitType]   匿名complexType   类带有从路径到complexType的生成名:   对匿名complexType使用封装元素名
  ...                                       ...  productDetailsType.Unit[    unitName=>xs#STRING;    unitSpecification=>xs#STRING]   元素complexContent的元素  ObjectProperty带有对complexType的类范围,  如关系                                                    [..  ProductDetails=>productDetailsType  ]  productDetailsType[    Weight=>xs#NUMERIC;    WeightUnit=>xs#STRING;    Dimensions=>DimensionsUnitType;    DimensionUnit=>xs#STRING  ]  DimensionsUnitType[    Height=>xs#NUMERIC;    Width->xs#NUMERIC;    Depth->xs#NUMERIC;]   带有simpleCntent的元素  datatypeProperty     [weight=>xs:int]   属性  DatatypeProperty带有名字前缀@     [@anAttribute=>xs#STRING]   MinOccurs=0   MaxOccurs>1  =>  ==>   subtyping  subtype
                                      Employee::Person[   load=>xs#integer   ]   带有complexContent的通配符元素   对类无特别特性定义                                 [..   ProductDetails=>productDetailsType   ]
表1
下述的表2定义了从带有包括复杂内容的XML模式信息的XML 元素节点到F-Logic/本体实例(以F-Logic表示的本体)的映射。
  XML instance   (PSVI)   F-Logic instance   带有从PSVI指定xsi:type的元素复杂   内容   对象带有生成的对象标识符(由对象特性参   考)        24.6     pounds            26       24       21        inches      ProductDetailsType(id1):productDetailsType[   Weight->24.6;   WeightUnit->″pounds″;   Dimensions->DimensionsUnitType(id2)   DimensionsUnitType(id2):   DimensionsUnitType[     Height->26;     Width->24;     Depth->21]   没有命名类型的复杂内容元素节点   带有生成的对象标识符的对象(由对象特性   参考)
         kg            http://www.std.org/u   nit/measures             ProductDetailsType.Unit(Obj1):   productDetailsType.anType 1[unitName->   ″kg″;       unitSpecification->   ″http://www.std.org/unit/measures″]   复杂内容(complexContent)元素节点   对象类型特性实例         24.6      pounds               26         24         21         inches      [..   ProductDetails->productDetailsType(id1)   ]   productDetailsType(id1):productDetailsType[   Weight->24.6;   WeightUnit->″pounds″;   Dimensions->DimensionsUnitType(id2);   DimensionUnit->″inches″   ]   DimensionsUnitType(id2):   DimensionsUnitType[     Height->26;     Width->24;     Depth->21]   元素(Element)   数据类型特性(datatypeProperty)   4711      [weight->4711]   XML属性节点   Datatype Property实例      [@anAttribute->″EUR″]   假定:XML元素没有任何类型注解   对象特性实例   24.6     pounds   inches      [..   ProductDetails->GeneralWSInstance(id1)   ]   GeneralWSInstance(id1):GeneralWSInstance[   Weight->24.6;   WeightUnit->″pounds″;   Dimensions->GeneralWSInstance(id2);   DimensionUnit->″inches″   ]
表2
忽略下述的模式概念:
模型组序列中的差异、选择和所有混合内容。
不映射的XML节点:
-处理指令节点以及
-注释
3.3.Web服务映射
Web服务可以被看作是带有一组输入参数和一组输出参数的远程 过程调用(RPC),其包括结果。
例如,发布城市的当前温度信息的web服务可具有作为输入参数 的邮政编码以及作为输出参数的温度。相应的源本体可具有类“地点 (place)”,其带有两个特性:“邮政编码(zip code)”和“温度 (temperature)”。
这里只考虑文档风格的web服务,其中所有的输入参数包含在输 入消息的单一的XML元素中,并且所有的输出参数包含在输出消息的 单一XML元素中。所述XML元素由XML模式定义来描述。该web 服务由参照XML模式定义的WSDL(web服务描述语言)来描述。
附录A包含下述的定义web服务getProductDetails的例子,其使 用在描述XML映射中使用的相同模式的元素。
Web服务操作映射到本体类,该类把输入消息的元素和输出消息 的元素作为特性。这些元素的内容如上述的XML映射所规定的映射到 本体定义。因此上述的web服务将产生下述的本体定义。
//CLA SSES-------------------
getProductDetailsOperation[].
productDetailsType[].
dimensionsType[].
getProductDetailsType[].
//PROPERTIES--------------------
getProductDetailsOperation[
ProductNumber=>ProductNumberType;
ProductDetails=>productDetailsType].
productDetailsType[Weight=>xsd#INTEGER;
WeightUnit=>xsd#STRING;
Dimensions=>>dimensionsType;
DimensionsUnit=>xsd#STRING;
Colour=>colourType].
dimensionsType[Height=>xsd#INTEGER;
Width=>xsd#INTEGER;
Depth=>xsd#STRING].
colourType[value=>xsd#STRING;
transparency=>xsd#INTEGER].
在附录C中,有根据给定的WSDL定义的SOAP请求的例子。 SOAP代表“简单对象存取协议(Simple Object Access Protocol)”; 它是轻便的基于XML的消息协议,在向网络上发送web服务请求中的 信息并响应消息之前,使用该协议编码这些信息。
该web服务映射把上述的web服务的SOAP请求映射到下述的本 体实例。注意只有第一个实例是专门针对该web服务映射的。其他的 实例与XML映射例子中的相同。
instance1GetProductDetailsOperation:getProductDetailsOperation.
instance1GetProductDetailsOperation[ProductNumber->>605001;
   ProductDetails->>instance2productDetailsType].
instance2productDetailsType:productDetailsType.
instance2productDetailsType[Weight->>″24,6″;
   WeightUnit->>″pounds″;
  Dimensions->>instance4dimenstionsType;
  DimensionsUnit->>″inches″;
  Colour->>instance5ColourType].
instance4dimenstionsType:dimensionsType.
instance4dimenstionsType[Width->>24.0;
   Depth->>21.0;
   Height->>26.0].
   instance5ColourType:ColourType.
   instance5ColourType[value->″red”;
   transparency->>50].
根据上面规定的映射,一般内置函数″webservice″实现该对应的 SOAP请求到本体实例的转换。该内置函数获得WSDL描述及其到本 体定义的映射作为输入。由此从SOAP请求的结果构造本体实例。
根据该类属web服务内置函数,通过生成的F-Logic映射规则实 现该映射,所述规则把生成的本体类和特性映射到该web服务内置函 数。下面是生成的规则的例子:
FORALL PN,PD
getProductDetailsOperation(PN):getProductDetailsOperation
     [ProductNumber->PN;ProductDetails->PD]
<-webservice(″http://www.example.com/Products″,
input(”ProductNumber”,PN),
output(”ProductDetails”,PD))
附录A至C示出了web服务,通过相应的的SOAP请求描述web 服务,以及说明该请求如何映射到本体模式和实例。
3.3.1.输入变量的落地
为了使web服务能够产生结果或输出,必须仔细定义输入。输入 可以不包含变量;所有的变量必须要赋值。换言之,所有的变量必须 是“落地的”。如果本体的特性具有实例或值,则称该特性是“落地 的(grounded)”。
下面的例子说明了特性的落地。该例子中,通过下述的规则把产 品细节(Product Details)从web服务映射到本体:
FORALL PN,PD
   getProductDetailsOperation(PN):
   getProductDetailsOperation[
   ProductNumber->PN;ProductDetails->PD]
<-webservice(http://
   www.example.com/Products,
            input(“ProductNumber”,PN),
            output(“ProductDetails”,PD)).
由于产品号是对该web服务的输入,它必须有一个值,它必须是 落地的。如果有另外的规则把该源本体映射到集成本体,如:
FORALL X,Y
     X:Product[PoNumber->Y]<-
X:getProductDetailsOperation[ProductNumber->Y].
则该集成本体的数据类型特性“PONumber”必须是落地的。另一 方面,对产品号可用性的查询检查,如:
FORALL X<-X:Product[PoNumber->5].
是可执行的,由于值5是落地的值,因此对该web服务的输入 (“ProductNumber”,5)是落地的,并且该web服务是可执行。
对此,可以定义本体定义的扩展,这种扩展可以把本体类的对象 或数据类型特性标记成落地的。只有对这样的本体元素的查询才是允 许的,其中这些元素是直接落地的或者等同于其他落地的特性。如果 输入是落地的,或者换句话说,被标记成必须落地的,则这些直接依 赖或(通过规则)间接依赖该WSDL操作的特性定义就是落地的。依 赖该WSDL的输入的特性定义事先不落地。
例如,对集成本体的查询,当查询所有产品号是不允许的:
FORALL X,Y<-X:Product[PoNumber->Y].
因数据类型特性“PoNumber”不落地,对web服务内置函数的输 入参数没有可用的值(通过规则来传递)。因此,不能执行该web服 务,也不能回答该查询。
解决该问题的另一个方法是通过使用推理机的指令。在该实施例 中,推理机知道那个对象或数据类型特性必须落地(它们在本体中必 须是未标记的),并拒绝没有适当落地的查询。推理机通过规则图(系 统图)来传递所述落地的特性。因此,不需要通过说明哪个特性必须 落地以及哪个特性不需要落地来扩展本体。
如果集成本体的某些特性或类落地,通过该集成本体的落地的本 体特性可以扩展映射,以便使WSDL操作的输入消息的部分落地。如, 通过馈送带有来自集成本体的值的web服务的输入值,可以扩展web 服务的映射。如果该集成本体知道所有可能的产品号(如通过从数据 库的映射),这些产品号可以用作对web服务的输入:
FORALL PN,PD,X
           getProductDetailsOperation(PN):
           getProductDetailsOperation[
           ProductNumber->PN;ProductDetails->PD]
<-X:Product[PoNumber->PN]and
           webservice(http://www.example.com/Products,
           input(“ProductNumber”,PN),
           output(“ProductDetails”,PD)).
因此,扩展了映射。使用来自集成本体的产品号通过值来初始化 变量PN,并因此使web服务的输入落地。这使得诸如
FORALL X,Y<-X:Product[PoNumber->Y].
的查询可被回答,因对于所有的产品号,该本体知道(如通过数 据库映射)可以执行web服务内置函数。
4.定义成参数化查询的外部视图
在集成数据上的不同外部视图可通过指定预定义的查询来定义。 它们可被理解成预定义的对该集成本体的参数化查询,并使用该集成 本体的查询语言来构成。
4.1.例子
考察在web服务输入级别上提出的查询如何被转换到web服务数 据源级别上。然后再考察上述给出的web服务getProductDetails的例子。
我们给出一个对包含有附录A中的例子web服务Catalog的集成 本体的查询例子:
Forall X,Y,Z,U<-X:getProductDetails[ProductNumber->50600; getProductDetails->Y[Weight->Z;WeightUnit->U]].
5.Web服务输入
对每个外部视图,可以定义该系统的相应web服务访问,这使得 可以相应地查询该系统。在最一般的情况下,这样的web服务以XML 文档作为输入并生成XML文档作为输出或回答。这样的web服务被称 作“文档风格的web服务”。
这样,对上述给出的web服务getProductDetails的例子,输入的 XML文档可以是如下的样子

123

输出可以是如下的样子

60
kg

更详细的解释在后面给出。
尽管结合特定的实施例说明并示出了本发明,本领域的普通技术 人员能够理解,如所说明的和所主张的权利,在不脱离这里所说明的 本发明的基本原理的前提下,可以有各种变化和修改。在不脱离其精 神实质和基本特征的前提下,本发明可以用其他的特定形式来实现。 从各个方面来说,所给出的实施例都应该被理解成是示例性的,而不 是限制性的。因此,本发明的范围由权利要求书来限定,而不是由上 述的说明来限定。权利要求的等价物的含义和范围内的所有变化都在 所主张的权利要求之内。
引用的参考文献
美国专利US 2004/0216030A1
美国专利US 2004/0093559A1
美国专利US 2004/0093344A1
美国专利US 2003/0179228A1
美国专利US 2003/0177481A1
美国专利US 2003/0163597A1
美国专利US 2003/0163450A1
美国专利US 2003/0120665A1
美国专利US 2003/0101170A1
J.Angele,G.Lausen:″Ontologies in F-Logic″in S.Staab,R.Studer (Eds.):Handbook on Ontologies in Information Systems.International Handbooks on Information Systems,Springer,2003,page 29ff..
A.Van Gelder,K.A.Ross,and J.S.Schlipf:″The well-founded semantics for general logic programs″;Journal of the ACM, 38(3):620-650,July 1991.
J.D.Ullman:″Principles of Database and Knowledge-Base Systems″; vol.I,Computer Sciences Press,Rockville,Maryland,1988.
附录A
Catalog Webservice
ProductCatalog.wsdl
xmlns:wsdl=″http://schemas.xmlsoap.org/wsdl/″
xmlns:cat=″http://www.example.com/ProductCatalog.xs d″
xmlns:tns=″http://www.example.com/ProductCatalog.wsdl″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″
xmlns:soap=″http://schemas.xmlsoap.org/wsdl/soap/″
targetNamespace=″http://www.example.com/ProductCatalog.wsdl″>
      
                                        www.w3.org/2001/XMLSchema″>
                                               www.example.com/ProductCatalog.xsd″
                          schemaLocation=″ProductCatalog.xsd″/>
      


                               element=″cat:ProductNumber″/>


      


      
                          message=″tns:getProductDetailsRequest″/>
                       message=″tns:getProductDetailsResponse″/>
   

                           type=″tns:CatalogPortType″>
                              schemas.xmlsoap.org/soap/http″/>
   
      
      
         
   

   
         
   

   


                                binding=″tns:CatalogSoapBinding″>
              www.example.com/getProductDetails″/>
  


附录B
Catalog schema
ProductCatalog.xsd
  <?xml version=″1.0″encoding=″UTF-8″?>
                            www.example.com/ProductCatalog.xsd″
xmlns:tns=″http://www.example.com/ProductCatalog.xsd″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″
                          elementFormDefault=″qualified″>
       
                                 type=″tns:productDetailsType″/>
       
            
              
                 
                                                       type=″xs:int″/>
                                                       type=″xs:string″/>
                                                       type=″tns:dimensionsType″/>
                                                       type=″xs:string″/>
                                                       type=″tns:colourType″/>
            

     
    



    
        
                                                    type=″xs:int″/>
         
     



    
        
            
                                            type=″xs:int″/>
                                            type=″xs:int″/>
                                            type=″xs:int″/>
                

          
      

   

附录C
SOAP request
输入消息
xmlns:SOAP-ENV=″http://schemas.xmlsoap.org/soap/envelope/″
xmlns:SOAP-ENC=″http://schemas.xmlsoap.org/soap/encoding/″
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
xmlns:xsd=″http://www.w3.org/2001/XMLSchema″>
        
           xmlns:tns=″http://www.example.com/ProductCatalog.xsd″
xsi:schemaLocation=″http://www.example.com/ProductCatalog.xsd
ProductCatalog.xsd″>50600
        

      
输出消息
            schemas.xmlsoap.org/soap/envelope/″
xmlns:SOAP-ENC=″http://schemas.xmlsoap.org/soap/encoding/″
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
xmlns:xsd=″http://www.w3.org/2001/XMLSchema″>
        
           xmlns:tns=″http://www.example.com/ProductCatalog.xsd″
xsi:schemaLocation=″http://
www.example.com/ProductCatalog.xsd ProductCatalog.xsd″>
    25
    kg
    
        27
        24
        21
    

    cm
    red