第 2 章

本体里到底装了什么?

三个零件:盒子、标签位、填写规则

1本体里到底装了什么?

先澄清一件事:定义多得打架

人工智能文献里,本体的定义有一大堆,而且很多定义之间互相矛盾。这本书不去趟这浑水,直接给了一个“够用就行”的工作定义:

就本书而言,本体是对某个论述领域(domain of discourse)中概念的形式化显式描述,包括:
  • 类(class,有时也叫 concept,概念)——概念本身;
  • 属性(slot,也叫 property;有时也叫 role 角色)——描述概念各种特征和属性的属性位;
  • 属性的约束(facet,有时也叫 role restriction,角色约束)——对属性的取值限制。
📦 类 class = 盒子 「所有的酒」这个概念 🍷 实例 = 盒子里 具体的某瓶酒 盒子可以套盒子(子类) 🏷️ 属性 slot = 标签位 body:饱满 maker:拉菲酒庄 描述类或实例的属性 📏 属性的约束 = 填写规则(facet) body 只能填三者之一: 饱满 / 中等 / 轻盈 ✋ 不能乱填 对属性取值的限制
类 = 盒子 · 属性 = 标签位 · 约束 = 填写规则。这就是本体的全部零件。

本体 + 一组类的实例 = 知识库。

原文补了一句很实在的话:现实里,“本体在哪里结束、知识库从哪里开始”这条线其实很模糊。

〔说人话〕别纠结这条线。原文自己都说不清,说明它本来就是个工程上的近似。你只要记住:骨架(类+属性+约束)是本体的活,“往里面填具体的值”是知识库的活。
🦴

本体 = 骨架

类 + 属性 + 约束。定义好「有哪些盒子、盒子带哪些标签位」。

🥩

知识库 = 骨架 + 血肉

往盒子里放具体的东西,把标签位都填上值。

2类:本体里的主角

类描述领域中的概念。 大多数本体都是围绕类展开的。举个例子:有一个类叫 Wine(葡萄酒),它代表所有的酒。具体的某瓶酒,是这个类的一个实例(instance)。你读这段文字时,手边杯子里那杯波尔多,就是 Bordeaux(波尔多酒)这个类的一个实例。

类可以有子类(subclass),子类代表比父类更具体的概念。比如把“所有的酒”分成红葡萄酒、白葡萄酒、桃红葡萄酒;换个分法,也可以分成起泡酒和非起泡酒。

〔说人话〕“换个分法”这四个字是重点。同一批对象,可以从颜色分,也可以从有没有气泡分。这说明:分类标准是可以选的,不是天生只有一种。 ——这正是第 3 章开头那条“没有唯一正确的建模方式”的伏笔。

3属性:给类挂上“参数位”

属性描述类和实例的属性。原文的例子很具体:Château Lafite Rothschild Pauillac(拉菲古堡波亚克)这款酒,酒体饱满(full body),由 Château Lafite Rothschild 酒庄生产。这里就出现了两个属性:

属性值
body(酒体)full(饱满)
maker(生产者)Château Lafite Rothschild 酒庄

在类层面,我们可以说:Wine 类的实例会有一些属性,描述它们的 flavor(风味)、body(酒体)、sugar(糖分)、maker(生产者)等等。

〔译注〕原文脚注 1 说明了本书的书写约定:类名首字母大写,属性名首字母小写;所有来自示例本体的术语,用打字机字体(等宽字体)排版。本中文版沿用这个约定。

同一个类里的所有实例,以及它子类里的所有实例,共享同一套属性的定义。Wine 类及其子类 Pauillac 的所有实例,都有一个 maker 属性,这个属性的取值为 Winery(酒庄)类的实例。反过来,Winery 类的所有实例,都有一个 produces(生产)属性,指向这家酒庄生产的所有酒——也就是 Wine 类及其所有子类的实例。

原书图 1:类、实例与关系
原书图 1:黑框 = 类(Wine、Winery……),红框 = 实例(拉菲酒庄、那瓶具体的酒)。黑字线 maker 是“谁生产的”,蓝字线 produces 是“生产了哪些”——同一条事实的两个方向。
〔说人话〕看懂图 1 的三个要点:
1. 黑框是类,红框是实例。
2. 红线标 io 的是 instance-of,即“是一个实例”。
3. 黑字标 maker / 蓝字标 produces 的是属性。 两条线讲的是同一件事,只是方向相反——第 5.1 节专门讲它(叫做“互为逆属性”)。

4建本体,具体在做哪四件事

原文把“开发一个本体”拆成四个动作:

做完这四步,就得到了一个知识库:定义好各个类的具体实例,填上具体的属性值信息,以及附加的属性约束。

1

定义类

有哪些盒子?Wine、Winery、Grape……

2

把类排成树

谁是谁的「一种」?红酒是酒的一种。

3

定义属性 + 规则

盒子带哪些标签位?每个标签位能填什么?

4

为实例填值

放东西进盒子,填满标签位。

做完四件事,一个知识库就诞生了

← 上一章 下一章:七步方法论 →