一、Ontology 的定义:Ontology 是一种能在语义和知识层次上描述信息系统的概念模型建模工具。
Ontology 是对概念模型的明确的、形式化的、可共享的规范。
这包含4层含义:概念模型( conceptualization)、明确(explicit)、形式化( formal)和共享(share)。
概念模型:指通过抽象出客观世界中一些现象( Phenomenon)的相关概念而得到的模型。
概念模型所表现的含义独立于具体的环境状态。
明确:指所使用的概念及使用这些概念的约束都有明确的定义。
形式化:指Ontology 是计算机可读的(即能被计算机处理)。
共享:指Ontology 中体现的是共同认可的知识, 反映的是相关领域中公认的概念集,即Ontology 针对的是团体而非个体的共识。
Ontology 的目标是捕获相关领域的知识,提供对该领域知识的共同理解,确定该领域内共同认可的词汇,并从不同层次的形式化模式上给出这些词汇(术语)和词汇间相互关系的明确定义。
补充1:在与领域的本体概念计算机科学信息科学在与领域,理论上,本体是指一种“形式化的,对于共享概念体系的明确而又详细的说明”。
本体提供的是一种共享词表,也就是特定领域之中那些存在着的或概念及其属性和;或者说,本体就是一种特殊类型的,具有结构化的特点,且更加适合于在之中使用;或者说,本体实际上就是对特定之中某套及其相互之间的形式化表达(formal representation)。
计算机科学信息科学对象类型相互关系术语集计算机系统领域概念关系二、Ontology 的建模元语Perez 等人认为Ontology 可以按分类法来组织,他归纳出Ontology 包含5个基本的建模元语(Modeling Primitive)。
这些元语分别为:类(classes),关系(relations),函数(functions),公理(axioms)和实例(instances)。
通常也把classes 写成concepts 。
概念的含义很广泛,可以指任何事物,如工作描述、功能、行为、策略和推理过程等等。
类:集合(sets )、概念、对象类型或者说事物的种类。
关系代表了在领域中概念之间的交互作用。
形式上定义为n 维笛卡儿乘积的子集: R : C1 ×C2×…×Cn。
如: 子类关系( sub class of)。
函数是一类特殊的关系。
在这种关系中前n-1个元素可以惟一决定第n个元素。
形式化的定义如下: F :C1 ×C2×…×Cn - 1 →Cn。
例如 Mother-of 关系就是一个函数, 其中 Mother-of (x,y) 表示y是x的母亲,显然x可以惟一确定他的母亲y。
公理代表永真断言,比如概念乙属于概念甲的范围。
实例代表元素。
补充2:附加的元素属性:对象(和类)所可能具有的属性、特征、特性、特点和参数。
约束(限制):采取形式化方式所声明的,关于接受某项断言作为输入而必须成立的情况的描述。
规则:用于描述可以依据特定形式的某项断言所能够得出的逻辑推论的,if-then(前因-后果)式语句形式的声明。
事件:属性或关系的变化。
从语义上分析,实例表示的就是对象,而概念表示的则是对象的集合,关系对应于对象元组的集合。
概念的定义一般采用框架( frame)结构, 包括概念的名称,与其他概念之间关系的集合, 以及用自然语言对该概念的描述。
基本的关系有4种:part of,kind of, instance of 和attribute of。
Part of表达概念之间部分与整体的关系;kind of表达概念之间的继承关系,类似于面向对象中的父类和子类之间的关C′D′={x|x是D的实例},如果对任意系,给出两个概念C和D,记= {x|x是C的实例},的x属于,x都属于,则称C为D的父概念, D为C的子概念;D′C′instance of表达概念的实例和概念之间的关系,类似于面向对象中的对象和类之间的关系;attribute of表达某个概念是另外一个概念的属性。
例如概念“价格”可作为概念“桌子”的一个属性。
在实际的应用中,不一定要严格地按照上述5类元语来构造Ontology。
同时概念之间的关系也不仅限于上面列出的4种基本关系, 可以根据特定领域的具体情况定义相应的关系,以满足应用的需要。
简单的本体示例:关于动物的概念及其相互关系所构成的语义网络三、Ontology 的描述语言在具体的应用中, Ontology的表示方式可以多种多样, 主要可分为4大类:非形式化、半非形式化、半形式化、形式化语言。
(1) 完全非形式化的: 用自然语言自由、随意地表达;(2) 半非形式化的: 用受限定的、结构式自然语言表达;(3) 半形式化的: 用人工定义的形式语言表达;(4) 严格形式化的: 用这些属性的形式语义、定理和证明严格、仔细地定义术语, 并使之具有确定性和完整性。
虽然具体描述Ontology的方法很多, 但是目前使用最普遍的方法是Ontolingua、CycL和Loom等。
Ontolingua 是一种基于KIF( knowledge interchange format ) 的, 提供统一的规范格式来构建Ontology的语言。
Ontolingua 为构造和维护Ontology 提供了统一的、计算机可读( 可处理) 的方式。
由Ontolingua 构造的Ontology 可以很方便地转换到各种知识表示和推理系统, 使得对Ontology 的维护与具体使用它的目标表示系统分离开来。
可以把Ontolingua 转换成Prolog、CORBA的IDL、CLIPS、LOOM、Epikit、Algernon 和标准的KIF。
目前, Ontolingua 主要是作为Ontology 服务器上提供的, 用于创建Ontology 的语言。
另外有不少项目使用Ontolingua 作为实现Ontology 的语言。
CycL 是Cyc 系统的描述语言, 它是一种体系庞大而非常灵活的知识描述语言。
该语言在一阶谓词演算的基础上, 扩充了等价推理、缺省推理等功能, 而且具备一些二阶谓词演算的能力。
在该语言的环境中配有功能很强的可进行逻辑推理的推理机。
Loom 是Ontosaurus 的描述语言, 是一种基于一阶谓词逻辑的高级编程语言, 属于描述逻辑(Description Logic) 体系。
它具有以下的特点: ( 1) 提供表达能力强、声明性的规范说明语言;(2) 提供强大的演绎推理能力; ( 3) 提供多种编程风格和知识库服务。
该语言后来发展成为PowerLoom 语言。
PowerLoom 是KIF 的变体, 它是基于逻辑的, 具备很强表达能力的描述语言,采用前后链规则( backward and forward chainer) 作为其推理机制。
四、已有的Ontology及其分类为了对Ontology进行有效的分类, Guarino提出以详细程度和领域依赖度两个维度作为对Ontology划分的基础。
详细程度是相对的、较模糊的一个概念, 指描述或刻画建模对象的程度。
详细程度高的称作参考( reference) Ontologies, 详细程度低的称为共享(share)Ontologies。
依照领域依赖程度, 可以细分为顶级(top level)、领域(domain)、任务(task)和应用(application) Ontologies等4类。
其中:顶层Ontologies描述的是最普通的概念及概念之间的关系, 如空间、时间、事件、行为等等,与具体的应用无关,其他种类的Ontologies都是该类Ontologies 的特例。
领域Ontologies描述的是特定领域(医药、汽车等)中的概念及概念之间的关系。
任务Ontologies描述的是特定任务或行为中的概念及概念之间的关系。
应用Ontologies描述的是依赖于特定领域和任务的概念及概念之间的关系。
图1、面向应用的多层次Ontology补充3:领域本体与上层本体的举例:领域本体举例:例1:就拿具有许多种含义的“”来说。
关于领域的本体可能会赋予该词以“打扑克”的意思,而关于领域的本体则可能会赋予其“穿孔卡片”和“视频卡”的意思。
英文单词card 扑克计算机硬件例2:本体的局部:“Car”(汽车)这个类拥有两个子类“2-Wheel Drive Car”(两轮驱动型汽车)和“4-Wheel Drive Car”(四轮驱动型汽车)。
关系:“Ford Explorer”(探索者)是一种“4-Wheel Drive Car”(四轮驱动型汽车),而后者则是一种“Car”(汽车)。
交通工具福特上层本体的举例:通用形式化本体(General Formal Ontology ,GFO )的基本分类树:五、构造Ontology 的规则目前已有的Ontologies 很多, 出于对各自问题域和具体工程的考虑, 构造Ontologies的过程也是各不相同的。
由于没有一个标准的Ontology 构造方法, 不少研究人员出于指导人们构造Ontologies的目的,从实践出发,提出了不少有益于构造Ontology的标准, 其中最有影响的是Gruber于1995年提出的5条规则:明确性和客观性:即Ontology 应该用自然语言对所定义术语给出明确的、客观的语义定义。
完全性: 即所给出的定义是完整的, 完全能表达所描述术语的含义。
一致性: 即由术语得出的推论与术语本身的含义是相容的, 不会产生矛盾。
最大单调可扩展性: 即向Ontology中添加通用或专用的术语时, 不需要修改其已有的内容。
最小承诺: 即对待建模对象给出尽可能少的约束。
补充4:关于领域本体的构建一)领域本体的构建过程1、确定本体的领域与范围首先要明确构建的本体将覆盖的专业领域、应将本体的目的、作用以及它的系统开发,维护和应用对象,这些对于领域本体的建立过程中有着很大的关系,所以应当在开发本体前注意。
对于特定的专业领域的一些特殊的表达法和特定的详细内容等的注释,应当明确。
另外能力问(competency questions)是由一系列基于该本体的知识库系统应该能回答出的问题组成(Gruninger和Fox,1995),能力问题被用来检验该本体是否合适:本体是否包含了足够的信息来回答这些问题?问题的答案是否需要特定的细化程度或需要一个特定领域的表示。
2、列举领域中重要的术语、概念。
在领域本体创建的初始阶段,尽可能列举出系统想要陈述的或要向用户解释的所有概念。
这上面的概念和术语是需要声明或解释的。
而不必在意所要表达的概念之间的意思是否重叠,也不要考虑这些概念到底用何种方式(类、属性还是实例)来表达。