中文标题:知识图与属性图的比较
英文标题:Knowledge Graph Versus Property Graphs
发表平台:网络公开
发布日期:2020-08-19
作者:Dataversity公司
文章类型:blogPost
品读时间:2022-02-22 18:53
1 文章萃取
1.1 核心观点
异构数据、集成新数据源和分析都对数据的灵活性提出了更高的要求,而图结构数据正好满足了这一点。目前主流(占有率超过90%)的图数据结构模型有两种:属性图与RDF图。本文主要围绕这两种模型进行对比与分析,展现了属性图的局限性,呼吁更多人转向RDF图。
1.2 综合评价
- Dataversit企业出品的白皮书,稍微带点自家数据库的软广
- 内容还是非常客观充实的,对于属性图和RDF图进行了充分的比较与分析
1.3 主观评分:⭐⭐⭐⭐
2 精读笔记
知识点补充:
图数据就是以图的形式存储的数据
图模型(严格来说是图数据结构模型)是图数据的一种抽象表达,是包含顶点和连接顶点的边构成的基础图拓扑。这里的图模型是知识图谱/图数据库中的概念,需要与算法中的图模型(比如贝叶斯网络或者马尔可夫模型)做概念上的区分。
图数据库是一个基于图模型的数据库系统,具有图数据的创建、读取、更新和删除功能。如果图数据库底层存储使用了图模型,则为原生图数据库(更适合图数据),否则为非原生图数据库(易于开发)
知识图谱是一种数字结构,将知识表示为概念和概念之间的关系(事实)。这种数字结构往往与图模型相符,而图数据库则是知识图谱常见的载体。
2.1 属性图
属性图不存在统一的标准,但有一些核心共性。最著名的Neo4j就是基于属性图实现的。
一般来说,属性图都会有包含以下三种元素:
- 节点(Nodes):图中的实体,可以包含0个或多个文本标签
- 边(Edges):节点之间的有向连接,从源节点指向目标节点,每条边都属于一个类型
- 属性(Properties):一个键值对,顶点和边都可以有属性;属性值可以有数据类型
属性图数据库片段可视化示例(包含演员、导演和电影或电视节目):
其中蓝色椭圆表示节点;深蓝色框表示节点的标签;黄色框表示属性(键值对);绿色方框表示边;红色方框表示边的类型。需要注意的是节点和边都会有唯一的ID。
由于属性图缺乏统一的标准,所以不同数据库间普遍存在语法差异:
- Neo4J提供类SQL的Cypher语法,简称CQL
- Apache TinkerPop使用Gremlin图遍历语言
- TigerGraph和GSQL也都有各自的类SQL语法
由于数据缺乏统一标准,属性图数据库导入一般采用txt格式或者csv格式
2.2 RDF图
RDF,即资源描述框架(Resource Description Framework),形式上主要由主谓宾(SPO, 即subject, predicate, object)三元组组成。RDF图存在统一的标准,其技术栈的标准是由万维网联盟(W3C)负责管理。
RDF图主要由以下两种元素组成:
- 节点(Nodes):可以是具备唯一性的资源或字面值(如数值、字符串)
- 边(Edges):节点之间的有向连接,也被称为谓语(predicate),一般由主语指向宾语
RDF也有标准的查询语言SPARQL,SPARQL既是一种功能齐全的查询语言,也是一种HTTP协议,可以接收通过HTTP发送的查询请求。
RDF图的标准化有一个关键点就是序列化。通过序列化可以在不同RDF图数据库之间无缝切换,常用的序列化格式包括Turtle(最常用)、JSON-LD、XML。
RDF图数据库片段可视化示例(内容与属性图数据库片段示例是基本一致的):
相比于属性图数据库,RDF数据库的可视化结果会更干净(构成数据的元素类型少),但也更宽广(节点和边的数量更多)。
在RDF中存在一个重要的概念:统一资源标识符(URI ,即Uniform Resource Identifier)
- RDF中的资源可以通过URI来指定一个命名空间,从而使用命名空间内置的定义
- 上图中每个资源的URI使用Qname表示法(命名空间缩写:资源名,比如
rdf:type
)rdf:
对应的命名空间为最基本的命名描述;rdfs(schema)
则是在rdf
上的拓展;owl
则是在rdfs
上的进一步拓展;wikidata
是维基百科相关数据的命名描述;ex
则指示例数据的描述- 借助URI可以实现资源在WEB上的唯一命名,而且如果不同节点具有同样的URI时,可以自动合并节点,使得最终的RDF图更简约(比如上图中
wikidata:Q2263
和wikidata:Q257442
都指向了ex:Actor
)
2.3 二者的比较
- 结构上的差异:
在属性图中,节点与边会存在属性、标签或类型的额外补充信息。这些信息都是依附于节点或边的,也是独立于图之外的,属性图既无法表现标签或类型间可能存在的依赖关系,也不方便对属性进行动态更改(键值对结构的局限性)。
而相比于来说,RDF图则会更灵活,原本重复的标签或类型会被(目标)节点所代替,这些信息融入到图中,既可以通过图表达依赖关系,也可以应用图的查询方法实现灵活查询。而对于属性的动态修改,也可以通过时间关系将更改前后的节点进行关联。
- 调整上的差异:
当遇到扩展或更改时,属性图可能需要改变图的结构,比如属性改为边,值改为节点。而RDF图可以在不改动原有数据的情况下通过增量的方式解决问题。
- 图算法上的差异:
图分析算法主要包括节点中心性、节点相似度、最短路径、聚类等。属性图对以上算法都有较好的支持,但是RDF图也是有这些算法的实现(只不过还没属性图那么成熟?)
- 分区上的差异:
属性图和RDF图都可以通过筛选功能(比如排除老人和小孩)实现比较简单的分区功能;但是RDF图可以借助URI中的命名空间轻松的实现分区,这种隔离甚至可以是物理层面上的。
- 属性图的局限性:
综合来说,属性图可能在以下几个方面存在局限性:在图中捕获模式(Schema)、数据完整性验证、容纳更为丰富的规则、支持继承和推理、支持全局唯一标识符、支持标识符的替代、图与图之间进行关联、图进化的更好解决方案。
2.4 从属性图转向RDF图
属性图所存储的数据有超出图之外的部分,但是这些固定的语义信息可以很方便地转化到RDF图中(导出格式符合RDF图支持的几种序列化就行~),比如Neo4J本身就自带这种数据的导出工具。
但是语义本身却无法简单的转化到RDF图,这时需要设计RDF模型(本体),以更好的兼容导出数据,当然部分RDF图数据库(比如TopBraid EDG)支持对本地的逆向工程以便更快的完成迁移工作。值得一提的是,一些原本数据库可能设计存在的特性(比如Neo4J为了提高密集节点的删除效率,可能存在节点与特定日期的关系)可能也需要进行修正。
由于Neo4J是一个非常成熟且流行的属性图数据库方案,导致很多人没有对属性图和RDF图的区别有很好的认知,在这里希望大家能认识到属性图的局限性,并根据实际需求选择更合理的方案!
相关资源
- 英文原文
- 中文概述
- 本地文件地址:2020_Knowledge Graphs vs_.pdf
- 本地Zotero地址:2020_Knowledge Graphs vs_.pdf