首页 理论教育 本体推理工具及其应用的分析介绍

本体推理工具及其应用的分析介绍

时间:2023-02-18 理论教育 版权反馈
【摘要】:作为一个存在语义的本体,它的一致性的检测以及进行合理性的推理就成为了其建立和应用的基本条件。目前使用较多的还有RDQL,nRQL,OWL-QL等。它是本体推理机的核心部件,因为它直接决定本体推理机系统的推理能力。它决定了本体推理机能够支持的文件输出格式,一般常用的有XML,RDF,OWL等。

本体推理工具及其应用的分析介绍

4.3.2 本体推理工具及其应用

基于本体的推理以描述逻辑语义为基础,使基于某一种描述逻辑语言的推理成为非常普遍的功能。作为一个存在语义的本体,它的一致性的检测以及进行合理性的推理就成为了其建立和应用的基本条件。本体的研究也相应地促进了基于某种描述逻辑的推理机的发展。已有切实可行的描述逻辑系统FaCT和RACER等推理机,能为OWLLite提供推理服务,然而OWL DL需要相对较高的计算完备性和可判定性,因此OWL DL的推理实现还需进一步的研究。本体推理机的系统结构一般由本体解析器、查询解析器、推理引擎、结果输出模块和API五大模块组成[16],见图4-10。

img46

图4-10 本体推理机的系统结构图

1.本体解析器

负责读取和解析本体文件,它决定了推理机系统能够支持的本体文件格式,如RDF,OWL,SWRL等。解析性能的好坏直接决定了推理机能否支持对大本体文件的解析。

2.查询解析器

负责解析用户的查询命令。虽然SPARQL已经成为了RDF的候选标准查询语言。但目前还没有一种公认的针对OWL的标准查询语言。目前使用较多的还有RDQL,nRQL,OWL-QL等。

3.推理引擎

负责接受解析后的本体文件和查询命令,并执行推理流程。它是本体推理机的核心部件,因为它直接决定本体推理机系统的推理能力。目前大部分推理引擎是基于描述逻辑表算法实现的。

4.结果输出模块

完成对推理引擎所推导出来的结果进行包装,以满足用户的不同需求。它决定了本体推理机能够支持的文件输出格式,一般常用的有XML,RDF,OWL等。

5.API模块

主要面向开发用户,一般包含三大部分:OWL-API,DIG[17]接口以及编程语言开发接口。OWL-API为用户操作OWL本体文件提供了一种标准接口,目前还没有一个公认的推荐标准,只有两种应用比较广泛的OWL-API(Wonder Web OWL-API和Protégé OWL-API)。DIG接口为描述逻辑推理机系统向外提供服务提供了一组标准的接口,作用类似于数据库中的ODBC,它允许前端(如本体编辑器)挂接到后台不同的推理引擎上。另外本体推理机提供的常见编程语言接口主要有Lisp和Java两种,大部分本体推理机系统是采用这两种编程语言实现的。

下面我们简单介绍几种常用的推理机。

Racer[18](Renamed ABox and Concept Expression Reasoner)是德国Franz Inc.公司开发的一个采用描述逻辑作为理论基础的本体推理机,它是一个功能强大的商用本体推理机,不仅可以当作描述逻辑系统使用,还可以用作语义知识库系统。它支持单机和客户端/服务器两种使用模式。

Pellet[19]是美国马里兰大学MINDSWAP项目组专门针对OWL-DL开发的一个本体推理机,基于描述逻辑表算法实现,能够支持OWL-DL的所有特性,包括支持对枚举类和XML数据类型的推理,它是一个开源项目。

FaCT++[20]是FaCT(Fast Classification of Terminologies)的新一代产品。FaCT++是英国曼彻斯特大学开发的一个描述逻辑分类器,提供对模型逻辑(Modal Logic)的可满足性测试,采用了基于CORBA的客户端/服务器模式。FaCT++为了提高效率和获得更好的平台移植性,采用了C++而非FaCT的Lisp语言来实现,并开放源代码

了解了推理机的系统结构以及常用的本体推理机,下面结合一个用OWL描述的本体实例,来具体讨论基于描述逻辑的本体推理的应用,从而使读者获得对推理机如何支持OWLLite推理的直接体会。(www.xing528.com)

img47

img48

以上是用OWL语言定义了一个简单本体(不是全部代码,列出了中心定义)。其中包括6个类:Biology,Animals,Plant,Male-Animals,Female-Animals,Mother-Animals;一个属性:hasChild。其中Animals,Plant是Biology的子类;Male-Animals,Female-Animals是Animals的子类。Animals和Plant是没有交集的两个类,也就是说Animals里的元素都是非Plant类的,Plant里的元素也都是非Animals类的。同样,Male-Animals和Female-Animals同样是没有交集的两个类;Mother-Animals是Female-Animals的子类,并且Mother-Animals有一个属性hasChild;还声明了一个Male-Animals的实例: Tiger1。

(1)本体中的冲突消解

本体建立者要想建立正确、一致的本体就需要借助推理,就需要推理机完成。好的推理机应该能检查出本体中的冲突,一般包括实例体系的冲突和定义体系的冲突[21]。例如Tiger1是上面本体的一个实例,后来又有其他本体建立者在这个本体中加入以下的实例:<Female-Animals rdf:ID=″Tiger1″/>这句代码声明了Tiger1是Female-Animals的实例。因为Tiger1前面已经作为Male-Animals的实例了,而Male-Animals和Female-Animals是无交集的类,所以此时就会产生不一致的情况,形成了一个实例体系的冲突。同样在定义体系中也会存在冲突,而且这种冲突往往会导致更加致命的错误。所以要用Racer这样的推理机检测这样的冲突,它提供了检测一个类是否是另一个类的子类的服务。通过在本体中所有的类中进行这样的检测,可以达到消除冲突的目的。

(2)本体中的描述优化

在建立上面的本体时,有时可能会出现这样的描述:

img49

这段代码定义Mother-Animals类和Male-Animals类是无交集的,还定义Mother-Animals类是Biology类的子类。定义Mother-Animals类是Biology类的子类是多余的,因为Mother-Animals类是Female-Animals类的子类,而Female-Animals类是Biology类的子类,所以Mother-Animals类肯定是Biology类的子类。同样定义Mother-Animals类和Male-Animals类无交集是多余的,因为Mother-Animals类的父类Female-Animals和Male-Animals类是无交集的,所以Mother-Animals类和Male-Animals类肯定无交集。在一个本体中不可能声明类似的关系,这样会使本体过于庞大,难以实现自动处理。

在实际应用中,类、属性和实例之间的关系是非常复杂的,推理机要能够把这些错综复杂的关系整理清楚,需要用符合应用需求的格式组织本体中的信息,例如:用树结构来描述类和属性的层次关系,用图来表达实例之间的联系等。这样在获取本体信息的时候就可以使用成熟的、低复杂度的算法,从而提高效率。

(3)本体的合并

本体合并是指将已经存在两个或两个以的本体合成一个新的本体,在开放的信息环境下,本体的合并显得特别重要,可是手工合成本体显得力不从心。推理机在这方面可以辅助人们完成工作。操作者可以先指定不同本体中的一些同义概念,由推理机针对概念的联系把本体合并。例如现在有另一个表示动物的本体:

img50

定义了4个类:Male-creature,Female-creature,Father-creature,Mother-creature。要将这个本体合并入上面的本体中只要指明Malecreature和Male-Animals是相互等价的类、Female-creature和Female-Animals是相互等价的类就行了。下面推理机会自动得出Fathercreature是Male-Animals的子类,Mother-creature类是Female-Animals类的子类,Male-creature、Female-creature无交集,Father-creature类和Mother-creature类无交集等的信息。当然这些信息中可能会有冗余,需要优化。

(4)实例的归类

实例归类是指把一个已经描述好的实例,要归结到一个最能反应其特征的类中。通常本体的定义也可能不是很复杂、庞大,但是本体的实例会特别众多,所以能通过推理来实现自动归类有着重要的现实意义。例如有如下描述:

img51

加到刚才的本体中。这时若交给推理机分类,因为Tiger2具有hasChild属性,在本体定义中只有Mother-Animal有hasChild属性,所以在本体中描述Tiger2的具体类应该是:Mother-Animal类。这种具体的实现方法是构造包括这个实例的最小类(它可能不在本体中,然后在类定义系统中查找这个类的最小父类,所得到的就是描述该实例的最具体类)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈