前文《思考总结:领域知识图谱平台构建与业务应用》中提到:“本体设计是图应用中的重中之重,一切的图展示、图计算、图分析、图挖掘、图模式匹配…的基础在图构建,而图构建的核心是本体设计。”,接着上文,本文就重点聊一下本体设计。
在聊本体之前,有必要先将对于本体的叫法对齐。在知识图谱层面(偏学术),一般将本体称为本体;在图数据库层面,一般将本体称为Schema;在业务领域层面,一般将本体称为场景图模型;本文将称之为本体。
领域本体是什么
领域本体是指领域概念体系(包括领域概念定义和概念间关系)的形式化规范定义。 近几年,随着领域知识图谱项目和产品的发展,领域本体开发的工作逐步从AI专家转移到领域业务专家手中。
依据本体的层次和领域依赖度,Guarino等人将其分为四类:顶层本体、领域本体、任务本体和应用本体。
- 顶层本体:研究通用的概念以及概念之间的关系,如空间、时间、事件、行为等,与具体的应用无关,完全独立于限定的领域,因此可以在较大范围内进行共享。
- 领域本体:研究的是特定领域内概念及概念之间的关系。
- 任务本体:定义一些通用任务或者相关的推理活动,用来表达具体任务内的概念及概念之间关系。
- 应用本体:用来描述一些特定的应用,既可以引用领域本体中特定的概念,又可以引用任务本体中出现的概念。
本体是一个描述性的形式化概念体系,是知识图谱的模型层,本体中包括点类型(也叫实体分类或概念,本文统称为点类型),点类型属性(也可叫点类型特征,本文统称点类型属性)以及边类型,边类型连接点类型与点类型,边类型也包含边类型属性。
以本体作为模型层,将数据与本体建立一一映射关系,然后将映射结果导入到图数据库中,便可形成知识图谱。因此,可以看出,本体其实是知识图谱的构建范式,是数据的组织模板。
设计本体的意义
通过以上内容可知,本体是构建图谱项目的核心,是图谱组织数据的范式和模板,除此之外,本体的意义可总结为如下5种:
-
达成业务场景共识,当几个不同的数据源都存在某个业务场景所需的信息或数据时,如果定义好底层本体,脚本就可以从这些数据源中提取并以规范的形式融合数据,进而使用融合后的数据为业务分析决策提供支持,将散落的数据形成知识以提供应用价值,所谓:“无规矩不成方圆”。
-
复用业务结构知识:许多不同领域的模型需要用到时间概念,包括时间区间、时间点、时间的相关度量等。如果有业务人员详细研究并定义了一个业务本体,那么就可以被其他人直接复用。如果需要构建一个大规模本体,则既可以综合若干相关业务的现有本体,也可以从通用本体出发有针对性地扩展领域本体。
-
业务知识的显性表示:为便于专家有效应对领域知识的变化。领域知识不但包括事实,也包括规则,例如,“鹦鹉是鸟”为事实,“鸟会飞“为规则(知识),那么业务知识的应用就可以推导出”鹦鹉会飞“。如果只是简单地把业务知识用编程的方式表示出来,不但全程依赖开发者支持维护,而且这样的表示也不利于业务专家理解与更新。而业务知识的显性化表示也便于新用户透彻理解业务知识的完整意义。
-
区别业务知识与操作知识:数据本身和数据处理流程可以分离,领域应用中不但需要领域知识,同时可以描述如何配置与处理这些领域知识。
-
分析业务场景知识:可以利用描述性形式语言。通过对领域知识的形式化表示,可以有效支持本体的复用和扩展。
如何设计领域本体
设计本体的过程一般包括如下步骤:
- 定义点类型(实体分类)
- 定义点类型的分类关系(即子类 - 父类的分类树),本体中的点类型,可以有最高抽象点类型(如:人类、自然人),也可以有子点类型(如:男人、女人、欧洲人、亚洲人),甚至可以更细分(如:中国人、美国人、北京人)。
- 定义边类型、边类型的有向型(是否有向,有向为出向还是入向)
- 定义点、边类型属性以及属性值取值范围
- 设定点、边类型属性取值的缺省值
领域本体设计原则
本体的应用期望直接影响本体的结构和本体的详细程度,本体的直观程度、可扩展性、可维护性都是本体设计时需要考虑的因素。同时,也要考虑本体模型与实际世界的逻辑联系。
笔者在过往的本体设计中总结了几点基本原则,这些原则可以帮助在许多情况下进行设计决策:
- 领域场景本体设计没有唯一的标准和正确的答案,只有更好没有最好,最好的设计方案取决于后续的应用期望和拓展期望。
- 本体设计方案是一个不断迭代的过程,在应用和拓展的过程中,总会发现更优的方案和优化点。
- 本体中的点类型、边类型以及点、边类型的属性设计,应该接近目标应用场景中的对象和关系。
- 业务满足度与性能兼容度皆需考虑,在业务与性能之间取得平衡,并且考虑可视化分析与图计算、图挖掘。Neo4j希望用户能够尊重业务领域实体的关系进行设计,Nebula Graph的共识是面向性能设计。
设计好本体的初始版本后,可以通过实际应用、解决问题、与领域业务专家讨论对本体进行评估和优化。一般情况下,初始版本设计的本体,都需要不断调优修改。迭代本体的动作需要在业务应用的整个生命周期中持续进行。
本体版本管理
本体初次设计好后,根据实际业务场景应用发展的需要,总是不断地发展和变化,因此需要对本体进行有效管理。本体管理环节包括:
- 本体演化:本体的发展过程中的变化规律及本体的维护管理。
- 本体融合:从多个本体中集成一个新的本体,从子业务场景融合成为新业务场景。
- 本体验证:验证本体的正确性与合理性,是否满足业务需求。
- 本体版本化:维护管理本体的演化过程中所生成的不同版本。
Palantir 动态本体
由于本体总是需要不断的演进和变化,业界领先的领域知识图谱公司Palantir提出了动态本体论。
Palantir的设计哲学与核心是动态本体。Palantir动态本体的灵活定义是基于对象的数据模型,动态本体是将众多来源的数据从原始存储格式转换、集成到数据对象和相关属性中的方式,这些属性代表了世界上的人物、地点、事件以及它们之间的联系。
不同的组织以不同的方式构思世界,并且这些数据模型随着时间的推移而变化,动态本体在每个案例(场景)的基础上进行定义,可以随着新的数据源被添加、更改、删除而更新。灵活、统一的数据模型大大简化了Palantir数据集成的过程,能够在几天或几天内完成,而不是大多数据集成项目需要几月甚至几年。
在Palantir中,一个本体主要包括三个部分:
- 对象:对象指的是任何被建模的事物,对象包含文档、实体和事件。文档是基于文本的,实体是概念和分类的实例,比如人、地点;事件是以时间出现的事物。
- 属性:属性指是对象的特征,如:人的性别、人的年龄、户籍地等。
- 关系:关系指的是概念之间的关联,如:人物之间的雇佣关系,人与人之间的朋友关系、夫妻关系。
在Palantir中,可以基于对象、属性和关系设计各种灵活的本体和数据模型。而这里的对象又被分为文档、实体和事件。
对于情报分析来说,及其重要的就是对文档的检索以及分析,对人物、组织等实体的画像和关联,对事件的建模和分析。
动态本体允许对不再使用的对象、属性和关系进行移除,同时也可以添加新的对象、属性和关系,本体时刻处于动态更新。还支持对已有对象、属性和关系的功能的修改,比如可以添加和修改标签、图标、解析器等。
动态本体对于异构数据的集成很有帮助。现有关系数据库的数据管理系统一般采用表和关系的固定模式来组织数据,当模式变化时,需要对表进行修改,导致很多重复劳动。
另外,基于一个固定的模式不利于对数据做集成,特别是对于数据模式经常要更新的场景。
《动态本体 palantir》文章中介绍了Palanti动态本体的方案流程图,可作为参考:
目前大多数图数据库也是支持入图后的本体的二次修改,不过都有较大的限制,一般只支持新增和删除点类型、边类型、点边类型属性,但是不支持点、边类型的修改和属性修改。
动态本体的提出就是为了提供一个灵活可变的数据模型,方便数据管理和多源数据的集成。在一个应用中,可以构建一个数据库的动态本体,而该动态本体可以用来集成各种数据。具体思路如下:
- 对象类型编辑器用来设计数据类型和数据类型的属性特征。
- 属性类型编辑器用来设计属性类型并且定义该属性类型的特征。
- 每个属性类型都有一个解析器,该解析器将一些输入的数据跟动态本体做一个映射,并且把输入数据添加到数据库中。
Palantir动态本体通过解析器可以把各种格式的数据都集成到一个数据库中,从而很好地实现了异构数据的集成。
同时,为了达到这个目的,需要将动态本体的对象类型和属性类型定义完备,同时需要将解析器的正则表达式写好,否则很难使用。这也是Palantir的动态本体的缺陷所在。
总结
本体的设计原则和概念在此做了一些介绍,可以说本体是千变万化的,相同的业务领域基于不同的应用方式以及设计目的,形态和结果多种多样,总得来说以业务需求为导向去设计,并且结合应用场景和应用性能。
当前,本体开发技术存在很多大的局限性,即使Palantir设计出了动态本体以弥补数据和需求的动态演变过程中的本体变化问题,但是解析器的正则表达式仍要穷举,无法定义完备,希望在技术的发展过程中,后续会有更好的本体开发技术出现。
当前依然处于学习和应用尝试中,认知有局限性,不当之处,欢迎私信指出和交流。后台可添加微信
推荐阅读
参考文献
- 神秘Palantir-平台介绍: https://mp.weixin.qq.com/s/JgLkd4_J5s93FDuS31F-Cg
- 动态本体 palantir: https://blog.csdn.net/weixin_44319196/article/details/111598680
- 动态本体简介: https://zhuanlan.zhihu.com/p/30799669
- 本体(Ontology)概述: https://blog.csdn.net/baijinswpu/article/details/81113314