首页 理论教育 本体的知识表示

本体的知识表示

时间:2022-03-04 理论教育 版权反馈
【摘要】:知识的表示必须向概念的深度延伸。本节以框架方法为主,介绍领域本体知识的表示。本体知识的表示包括概念类、关系、函数、公理和实例等5种元素的描述。这两种关系“生产者”和“制造”,被称为互逆关系。同时保存这两个方向上的关系信息将产生系统冗余,因此在知道了酒和酿酒厂之间的“生产者”关系后,可以在需要时由知识系统自行推导出其互逆关系的值。

2.6.3 本体的知识表示

知识的表示必须向概念的深度延伸。这是因为概念是人类认识、表达客观事物的基本单元,判断和推理是在概念的基础上进行的。本体的描述语言要能将领域模型表达成清晰的、形式化的概念描述,其形式化的程度越高越有利于机器的自动处理。

本体的表示方式主要有4类:

(1)完全非形式化方式。用自然语言进行表示,结构非常松散,典型的如术语列表。

(2)半非形式化方式。用受限的或结构化的自然语言进行表示,能有效提高本体的清晰度,减少模糊性。如:Enterprise Ontology的文本版本。

(3)半形式化方式。用人工定义的形式化语言进行表示,目前已有许多研究机构开发制定了这类形式化本体表示语言。

(4)完全形式化方式。具有详细的概念项定义、语义关系的形式化定义以及稳固和完整的公理和证明。在实际应用中,这几种表示方式各有所长。如果本体的应用目的是为了加强人与人之间的交流,则非形式化的本体将更为适用;如果对本体的处理需要由机器自动完成,则其形式化程度越高越好,在有些情况下,需要将非形式化和形式化两种方式组合起来使用。

目前本体知识表示方法很多,从它们的支撑理论基础来看,可分为:

(1)自然语言,以自然语言处理为基础,从语法层次深入到语义和语用层次,揭示概念及其关联的语义知识;

(2)一阶谓词逻辑,以形式逻辑为基础,应用知识概念的逻辑理论来描述知识模型;

(3)框架和语义网络,以人类的认知模型和认知理论为基础,使本体的表示符合人类的认知规律。

在实际应用中,这些方法相互结合、相互促进、共同发展。

本节以框架方法为主,介绍领域本体知识的表示。本体知识的表示包括概念类、关系、函数、公理和实例等5种元素的描述。概念类的描述包括:定义类和类之间的等级关系、类的属性(槽)、槽的侧面、类的公理集合以及类的实例。

1.定义类和类的等级关系

定义类和类的等级关系的基本方法是:从概念集合中选取具有独立存在性的对象概念(而不是描述这些对象性质的概念),作为概念类的候选对象。通过判断某个类的实例是否也是另一类的实例来确定两个类之间的等级关系。等级关系是组织概念模型的主要关联元素。

2.定义类的属性——槽

本体中的类层次结构虽然提供了领域知识的整体框架结构,但还不足以提供所需要的全部知识信息。因此,一旦在定义了类之后,就必须进一步描述这些概念类的内部结构,即定义类的属性——槽。

在领域知识的概念集合中,除去作为类的概念,剩下的大部分是用于描述实体性质的概念,例如在酒和食物的概念集合中,描述实体性质的概念包括描述酒的颜色、品质、味道、糖分、酿酒厂的地址等内容的概念。

对于概念集合中每一个描述性的概念,必须首先确定它属于哪一个概念类,然后将其定义为该类的槽。一般来说,有下列几种类型的属性可以作为槽:

(1)固有属性(内部属性)。如:酒的味道。

(2)外部属性。如:酒的名称、出产地。

(3)组成部分。这种组成部分可能是实际意义的也可能是抽象意义的,例如:晚餐的进程。

(4)该类与其他类间的关系属性。如:“酒的制造者”作为“酒”类的槽,实质上反映了“酒”和“酿酒厂”之间的关系。

所有的子类都将继承其父类的槽,但也可以同时定义自己的新槽。为了使本体的结构更加简练,应该尽量在其泛化程度最高的类中定义属性的槽,这样它的所有继承者都可以具有同样的属性而不需要额外的定义。

另外,在定义本体中的槽时还需要注意两类特殊的情况:

(1)互逆槽

一个槽的值也许需要依赖于其他的槽值来决定。例如,如果一种酒是某酿酒厂生产的,则酿酒厂生产了这种酒。这两种关系“生产者”和“制造”,被称为互逆关系。同时保存这两个方向上的关系信息将产生系统冗余,因此在知道了酒和酿酒厂之间的“生产者”关系后,可以在需要时由知识系统自行推导出其互逆关系的值。

(2)默认槽

许多基于框架的系统允许为槽定义默认值。如果对于大部分实例来说,某个槽的值是若干不确定的值,可选用一个大多数情况下存在的值,则将这个值定义为该槽的默认值。这样,当为该槽所属类创建新的实例时,系统将自动在实例中填入默认槽值。

举例来说,如果大部分酒都是满瓶装的酒,则可以将“满瓶”作为酒的“瓶装量”属性的默认值。这样,在不做任何改变的情况下所有加入的酒都将是满瓶装的。

在这里需要注意默认值和槽值的区别,默认值是预定值,可以改变,而槽值是不能改变的。例如,一旦为“甜酒”类的“糖分”属性定义槽值“甜”,则其所有继承者的该属性值都是“甜”,任何子类和实例都不能改变它。

3.定义槽的侧面

本体中每个描述属性的槽都可以具有一个或多个侧面,各个侧面从各个不同的方面来描述槽的特性,比如描述槽值的类型、槽可以允许的值、槽值的个数等。每个侧面又有一个或多个侧面值。

在本体中常用的槽侧面包括以下几种:

(1)槽的基数

槽的基数定义一个槽可以拥有的值的个数,在某些知识系统中槽的基数的值只有“单值”和“多值”两种,例如“酒”的“名称”槽就是一个单值槽,而“酿酒厂”的“产品”槽是一个多值槽。还有一些系统允许指明槽的基数的最大值和最小值,最小基数N表示槽至少要具有N个值,而最大基数M表示槽最多不能超过M个值。有时可以将槽的基数的最大值设置为零,表明任何子类或实例的槽都不具有值。

(2)槽值类型

值类型侧面描述槽值集合和定义在这个值集上的一组操作。一些常用的类型包括字符串、数值、布尔值、枚举值、实例(这种类型的槽值一般用来定义类和类之间的关系)。例如描述“酒”的“名称”属性的槽值是字符串类型的,而“酿酒厂”的“产品”槽的值类型则为“酒”类的实例。

(3)槽的领域和范围

如果槽值的类型为实例,则需要同时指明这些实例所属类的列表,这个类列表也被称为槽的范围。有些系统要求在定义槽时就指明其限制和范围。

拥有某个属性的类,被称为该属性槽的领域,例如:“酿酒厂”类是“产品”槽的领域。在建立本体时,拥有某个属性槽的类的集合组成该槽的领域集合。

决定一个槽的领域和范围时要注意的原则是:领域和范围中的类不能太过细化,也不能太过泛化。也就是说,槽的领域内的所有类都应该拥有该槽所反映的属性,槽的范围内的所有类的实例都应该可以作为槽的填充值。更具体地说:

●如果在一个槽的范围或领域中同时包含了某个类A和它的子类,则删除子类,因为子类隐式地继承了A的所有槽,同时包含两者不会提供更多的有用信息。

●如果在一个槽的范围或领域中包含了某个类A的所有子类,但却没有包含A,则应该将A加入,而删除其所有的子类。

●如果在一个槽的范围或领域中包含了某个类A的大部分子类,则需要考虑是否需要将A作为该槽的更合适的范围定义。

由于将一个槽赋予一个类的操作与将该类加入该槽的领域的操作是等价的,因此,上述规则在为类添加属性槽时同样适用。即一方面要尽量泛化,另一方面要确保加入的每一个类都确实具有该槽所描述的性质。

4.定义类的实例

定义本体的最后一个步骤是为类的层次结构创建个体实例,这一过程包括三个步骤:

(1)选择一个类;

(2)创建类的一个实例;

(3)填充实例中各个槽的值。

例如定义“长城葡萄酒”类的一个实例,其各个槽的值为:

名称:长城葡萄酒A

瓶装量:满瓶

丹宁酸程度:低

糖分:干

葡萄类型:烟台蓬莱葡萄

生产者:时代长城葡萄酒有限公司(“酿酒厂”类的一个实例)

地域:山东烟台蓬莱(“出产地”类的一个实例)

5.类的公理集合

类的公理集合包含概念类之间、属性之间的各种逻辑关系以及运动规律,如操作函数、控制函数等,为便于执行语义推理和规则推理,可以使用一阶谓词逻辑方法描述。

本体知识表示的详细实例参见第9章。

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

我要反馈