共享理解
让人和软件代理对信息结构形成共同理解。
原文把本体的价值压缩成五个动机:共享、复用、显式化、解耦和分析。
让人和软件代理对信息结构形成共同理解。
已有领域模型可以导入、扩展,而不是每次从零开始。
把世界假设从代码里拿出来,便于查找、解释和修改。
同一配置算法可适配个人电脑,也可适配电梯。
形式化术语后,才能检查一致性和可扩展性。
本体通常不是终点,而是应用和代理的输入数据。
本体描述领域概念、概念属性,以及属性值的限制。加上个体实例以后,就构成一个知识库。
类定义概念,槽定义属性和关系,限制定义边界;实例把抽象模型落到具体对象。
葡萄酒、酒庄、食物这样的领域对象集合。
酒体、酿造者、出品酒款等属性或对象关系。
值类型、允许值、基数、范围和默认值。
这不是瀑布流程,而是可反复修正的知识工程循环。
它们贯穿原文所有设计建议,决定后续每一次取舍。
最佳方案取决于应用目标和预期扩展。
先粗略建模,再评估、调试、细化。
概念应贴近领域里的对象和关系,通常是名词与动词。
一开始要回答:覆盖什么领域、用于什么任务、回答什么问题、由谁维护。
它们不必穷尽,但必须能检验本体是否有足够信息回答真实问题。
问题直接反推必须建模的概念和属性。
问题直接反推必须建模的概念和属性。
问题直接反推必须建模的概念和属性。
问题直接反推必须建模的概念和属性。
问题直接反推必须建模的概念和属性。
这类问题会迫使模型纳入年份。
如果系统要与既有应用或受控词汇交互,复用几乎是要求。形式差异通常可以转换。
当没有相关模型,或教学目标要求完整演示设计过程,才从空白结构开始。
这一页故意把术语摊开:不要先判断类、槽或实例。
术语表越完整,后续层级和属性设计越少遗漏。
没有一种路径天然更好,关键是让层级服务应用目标。
先定义葡萄酒、食物,再向下分红葡萄酒、白葡萄酒、西拉。
从波亚克、玛歌这类叶子开始,归并到梅多克、波尔多;或先抓最显著概念。
如果 B 是 A 的子类,那么 B 的每个实例也必须是 A 的实例。
类本身不足以回答能力问题;属性和关系必须附着在最一般且正确的类上。
味道、酒体等对象内在属性。
名称、产地等外在描述。
餐食的菜品等整体-部分结构。
酿造者、葡萄品种等个体之间的关系。
葡萄酒的槽会被红葡萄酒、白葡萄酒继承。
把酒体和颜色放在葡萄酒,而不是每个子类。
它决定一个槽能填什么、填几个、从哪个类中取值。
单值、多值、最小值、最大值。
文本、数字、布尔、枚举、实例。
定义域是槽描述的类;值域是可作为槽值的类。
方便录入,不是不可变约束。
用父类覆盖合理子类,但不要把任何对象都放进来。
把“出品”的范围设成最泛的“任意事物”,会让任何对象都可能成为填充值。
用“葡萄酒”覆盖红葡萄酒、白葡萄酒、桃红葡萄酒的所有子类,不重复列举。
创建实例需要选择类、创建个体、填入槽值。
A 是 B 的子类,同时 B 又是 A 的子类。
“葡萄酒”不应成为“葡萄酒们”的子类。
“白葡萄酒”与“霞多丽”不该作为同级类。
只有一个直接子类,通常意味着模型不完整或无增量。
许多结构良好的本体,每个类有两个到十几个直接子类。
如果只有一个子类,先问它是否真的增加信息。
如果直接子类超过十几个,通常需要引入自然中间类。
如果领域现实中没有自然分类,就不要为了整齐硬造类。
子类拥有父类没有的槽。
继承槽的限制或固定值不同。
它参与父类不参与的关系。
如果颜色对应用规则没有特殊影响,只是标签打印或展示字段,就用属性值。
如果不同颜色对应不同配餐规则、属性和关系,就建成不同类。
能力问题的最具体答案,通常是实例。
如果术语形成自然层级,它们应成为类。
如果需要记录每个年份,酒款可能变成类,年份成为实例。
如果做库存管理,单瓶酒也可能是实例。
只比应用多建模一点点:最多向上或向下额外一层。无关属性会污染实例,增加维护负担。
声明互斥类,可帮助系统发现错误多重归属。
“酿造者”与“出品”可互相推导,减少不一致。
默认值只是录入便利,不是不可变槽值。
命名规范是最低成本的建模质量控制。
只录入“这款酒由星岭酒庄酿造”。
系统根据反向槽,自动维护另一侧事实。
“出品酒款”列表自动加入梅洛酒款,保持知识库一致。
原文最后单独讲命名,因为命名会影响可读性、工具互操作和建模误差。
如“葡萄酒 / 酿造者”
不要同时建“葡萄酒”和“葡萄酒们”
多词术语只选一种写法并坚持使用
完整名称优于内部简称
上下文已经说明它是类或槽
红葡萄酒 / 白葡萄酒,而不是红葡萄酒 / 白色
回答能力问题,不吞并无关世界。
类层级满足“是一种”,同层类粒度一致。
槽的定义域、值域、基数不松不紧。
质量只能通过目标应用中的使用效果来评估;也就是“能否在实际使用中证明自己”。
两个设计者会做出不同模型。应用目标、领域理解、扩展预期,都会影响最终结构。
把原文建议变成可执行检查项。
每一项都对应原文中的一个常见错误或设计取舍。
今天的智能代理、搜索、推荐、企业知识库,仍然会遇到同一个问题:术语不统一,关系不显式,假设藏在实现里。
本体开发的本质不是画树,而是让某个领域的对象、关系和限制足够明确,能够被共享、复用、分析和执行。
能力问题决定范围。
每个子类实例都必须也是父类实例。
最终质量由目标应用中的使用效果决定。