本体开发101

Noy 和 McGuinness写的本体开发101

1为什开发本体

本体的定义:

对于领域内术语及术语之间关系的明确且正式的规定
explicit formal specifications of the terms in the domain and relations among them (Gruber 1993)
本体为研究人员定义了一个通用的词汇,用于在一个领域内分享信息。
本体以机器可理解的形式对领域内基本概念的概念之间的关系作出了定义。

开发本体的目的:

  1. 在人和软件代理之中分享对于结构化信息的共同理解。
    Sharing common understanding of the structure of information among people or software agents.(Musen 1992; Gruber 1993)
  2. 使得领域知识能够重用
    Enabling reuse of domain knowledge
  3. 作出明确的领域假设
    Making explicit domain assumptions
  4. 区分操作知识和领域知识
    Separating the domain knowledge from the operational knowledge
  5. 分析领域知识
    Analyzing domain knowledge
开发一个领域本体的本身并不是最终目的,开发本体是为了定义一系列的数据以及数据的结构,使得这些数据能够被其他程序所使用。
本体设计和面向对象程序设计的区别:
  • 面向对象程序设计以类的方法上,程序猿根据一个类的操作属性来作出设计决定
  • 本体设计者则是基于类的结构属性作出设计决定的

2 一个本体中有什么?

  1. 概念(Concepts/classes)
  2. 属性(Properties/slots/roles)
  3. 限定(role restrictions/facets)
本体加上一系列个体实例(instances)便构成了一个知识库。

实际来说,开发一个本体包括:

  1. 定义本体中的类
  2. 依据一个分类层次(上位类——下位类)来安排类
  3. 定义属性以及描述属性所允许的值
  4. 为实例的属性添加值

3 一个简单的知识工程方法论

本体设计的一些基本规则:

  1. 没有唯一正确的领域建模方法
  2. 本体开发必须是一个重复的过程
  3. 本体中的概念应该尽可能契合目标领域内的对象和关系
开发步骤

步骤1:确定本体的领域和范围

通过问一些本体能力问题(Competency Questions),如:
  1. 本体将涵盖什么领域
  2. 我们要用本体来做什么
  3. 本体能够帮助回答什么样的问题
  4. 谁将维护和使用本体

步骤2:考虑重用已有的本体

步骤3:列举本体内的重要术语

步骤4:定义类和类的层次

  1. 从上而下
  2. 从下而上
  3. 1、2组合

步骤5:定义类的属性——槽

  • 为每个属性确定其描述的类
  • 属性应该附加到能采用该属性的最高层次的类上

步骤6:定义槽的侧面

槽可以有不同的侧面,主要包括:
  1. 槽基数 Slot cardinality
    定义了一个槽能够有多少个值
  2. 槽—值类型 Slot-value type
    常见有字符串、数量、布尔、列表、实例
  3. 槽的定义域和值域 Domain and Range of a slot

步骤7:创造实例

4定义类和类的层次

  1. 确保类的层次是正确的
  2. 分析类层次中的同级类
  3. 注意多继承情况
  4. 仔细考虑是否要增加新类
  5. 辨别是类和属性值
  6. 辨别实例和类
  7. 限制好范围
  8. 注意不相交的子类

5 定义属性

6 命名

  1. 大写和定界符
  2. 单数或复数
  3. 前缀或后缀

7 其他资源

8 结论

Leave a Reply

Your email address will not be published. Required fields are marked *