第八章 知识存储和检索 阅读笔记
知识图谱是一种有向图结构,描述现实世界中存在的实体、事件以及概念及其之间的关系。一般在图中使用节点表示实体、事件以及概念,图中的边表示相邻节点之间的关系。
在知识图谱是一种有向图结构,描述现实世界中存在的实体、事件以及概念及其之间的关系。一般在图中使用节点表示实体、事件以及概念,图中的边表示相邻节点之间的关系。
8.1 知识图谱的存储
知识图谱中的结构是使用的RDF结构进行表示的,其基本构成单元是一个事实。每一个事实中是一个三元组(S,P,O),其中S(Subject)代表主语,其取值可以是实体、事件、或者概念中的任意一个。P(Predicate)代表谓语,取值可以是关系或者属性; O(Object)代表宾语,取值可以是实体、事件、概念或者普通的值(例如数字、字符串等)。
在实际系统中,按照存储方式的不同,知识图谱的存储可以分为基于表结构的存储和基于图结构的存储。
8.1.1 基于表结构的存储
这种存储方式利用二维数据对知识图谱中的数据进行存储。
8.1.1.1 三元组表
知识图谱中的事实是一个个的三元组,一种简单直接的存储方式是设计一张三元组表用于存储知识图谱中所有的事实。实际上目前已经有不少比较成熟的产品利用该形式存储知识图谐包括Jena、Oracle、Sosame、3store、SOR、 Rstar等。这种在储方式的优点是简单直接,易于理解: 然而缺点也非常明显,主要有以下两点:
- 整个知识图谱都存储在一张表中,导致单表的规模太大。对大表进行查询、插人、删除、修改等操作的开销很大,这将导致知识图谱的实用性大打折扣。
- 复杂查询在这种存储结构上的开销巨大由于数据表只包括三个字段,因此复杂的查询只能拆分成若干简单查询的复合操作,大大降低了查询的效率。
8.1.1.2 类型表
为每种类型构建一张表, 同类型的实例存放在相同的表中。表的每一列表示该类实体的一个属性,每一行存储该类实体的一个实例。这种存储方式虽克服了三元组表的不足,但是带来了新的问题:①大量数据字段的冗余存储。假设知识图谱中既有“数学家”也有“物理学家”,那么同属于这两个类别的实例将会同时被存储在这两个表中,其中它们共有的属性会被重复存储