知识图谱04:知识图谱的存储与检索

公众号:数据挖掘与机器学习笔记

Web本体语言OWL是当前存储本体的主要形式.OWL也适用于知识图谱的存储, 但OWL文档不适用于大数据量的情况, 影响查询、修改和推理速度. 作为知识库的知识图谱, 其基本元素是海量的各种关系联系在一起的实体, 需要创新性的存储方式. 知识图谱可采用关系型数据库或图数据库存储, 也可采用混合的方式存储。

1.关系型数据库

将知识图谱存入关系型数据库, 是一个将知识图谱转换为RDF三元组进行存储的问题, 即, 将知识图谱的关系分解为一个个的三元组形式, 并映射至关系表, 存储于关系型数据库中.根据映射方法不同, 基于关系型数据库的知识图谱存储可以采用四种方法:

  • 三元组表

    构建一张只有三列的表(Subject,Predicate, Object), 以元组为单位进行存储, 将知识图谱所有的RDF三元组都存放在这个表中. 这一方法简单直观, 有很好的通用性, 且语义表达较为明确. 但在涉及关系的查询过程中可能会面临大量的自连接操作,导致查询性能低下.

  • 水平存储

    将知识图谱中的每个实体表示为数据库表中的一行, 表中的列包括有RDF数据集合中所有的属性. 水平存储的优势在于设计简单, 能够高效查询面向某单个实体的属性值. 而其缺点在于:

    ①数据稀疏性, 一个实体并不可能在所有的属性上都有属性值, 从而导致表中的大量空值, 增加存储负载也影响查询效率.

    ②水平存储中表的列数量是固定的, 这样的固定模式使得实体在一个属性上只能存储一个值. 但在实际应用中, 属性往往都会存在多个值而与水平存储的模式不符.

    ③固定的模式也会令数据的变化带来较大的更新成本. 数据属性的更新可能涉及到整个表结构的变化, 这也使水平存储无法很好应对这类问题.

  • 属性表

    属性表针对水平存储模式中表的数据稀疏问题作出优化. 根据实体的属性对实体进行分类,将属性重合度高的实体分作一类, 每一类仍采用水平存储方式, 避免了表中列数过多等问题. 属性表对于某些查询能够提高查询性能, 但将导致大部分的查询都会涉及多个表的连接或合并操作. 另外, 实体与属性之间关联性不强的知识图谱不适合采用此种存储方法,易导致空值问题.

  • 垂直分割

    垂直分割指的是以关系进行划分,将三元组表重写为N张包含两列的表, N指的是关系的个数. 每一张表都以关系(属性)为表名, 其第一列是所有在这个属性上有属性值的实体, 第二列是该实体在这个属性上的值. 垂直分割适应于多值数据, 当一个实体在一个属性上有多个属性值时, 只要将其存储为多行即可. 结构化较差的知识图谱也同样适用此存储方法, 如果一个实体未定义某个属性, 那么这个记录就不会在这种存储方式中出现, 避免了空值的产生. 但垂直分割的缺点在于:

    ①增加了表连接的运算数.

    ②表的增多也增加了数据更新的难度, 对一个实体的更新
    需要涉及多个表.

2.图数据库

知识图谱04:知识图谱的存储与检索_第1张图片

目前, 基于图数据库的知识图谱存储方法是学界研究的主流. 图数据库增强了关系表达, 能提供完善的图查询语言, 支持各种图挖掘算法. 采用图数据库存储知识图谱, 能有效利用图数据库中以关联数据为中心的数据表达、存储和查询. 适用于存储知识图谱的图数据库如表所示。

将知识图谱存入图数据库, 是将知识图谱的实体或属性值存为图数据库中的节点, 而实体间的关系或属性对应存为连接各个节点的边. 图数据库的存储方式更适用于涉及多重关系的查询, 还可通过经典的图算法而实现更为复杂的图匹配查询与推理等.

除了图数据库, 一些非关系型数据库也可用于知识图谱的存储. 例如, MongoDB
作为一个基于分布式文件存储的数据库, 支持无模式的数据建模方式, 即,可以按需进行模式的添加或修改. 这样的特性也适合于自底向上地构建知识图谱.

3.总结

知识图谱的存储方式应考虑到其后续的使用效率.实际应用中, 往往采用多种方法结合的方式来存储复杂的知识图谱. 例如, 采用关系数据库存储相对固定的数据, 如概念和实体的基本信息、介绍等; 采用图数据库存储属性关系类的数据; 采用内存数据库存储查询频繁的数据, 如概念的名称等.

[1]黄恒琪,于娟,廖晓,席运江.知识图谱研究综述.计算机系统应用,2019,28(6):1–12. http://www.c-s-a.org.cn/1003-3254/6915.html

在这里插入图片描述

你可能感兴趣的:(知识图谱,自然语言处理)