每一个节点表示一个实体,每个实体都是某一抽象概念的实例。这些抽象概念被称为实体类型,如:人物、城市等。
实体除了具有类型信息,还具有丰富的属性信息(蓝色部分),这些属性信息用于刻画实体的内在特性。
知识图谱中的知识是通过RDF进行表示的,其基本构成单元是事实。每个事实是一个三元组 (S, P, O)
S 是主语(Subject),其取值可以是实体、事件或概念中的任何一个;
P 是谓语(Predicate),其取值可以是关系或属性;
O 是宾语(Object),其取值可以是实体、事件、概念或普通的值(eg:数字、字符串等)
例如下图:
RDF数据
<S, P, O>
<费米, 主要成就, 93号元素>
<玻恩, 类型, 数学家>
... ... ...
优点: 简单直接、易于理解;
缺点:
1. 整个知识图谱都存储在一张表中,导致单表的规模太大。对大表进行查询、插入、删除、修改等操作的开销很大,这将导致KG的实用性大打折扣。
2. 复杂查询在这种存储结构上的开销巨大。由于数据表只包括三个字段,因此复杂的查询只能拆分称若干简单查询的符合操作,大大降低查询的效率。
为每种类型构建一张表,同一类型的实例存放在相同的表中。表中的每一列表示该类实体的一个属性,每一行存储该类实体的一个实例。
示例:
主体对象 | 邮编 |
---|---|
南阳 | 473000 |
关系数据库通过 属性 对现实世界中的事物进行描述。
基于图结构的存储,可直接准确地反映KG的内部结构,有利用对知识的查询,可借鉴图论算法,有利于对知识深度挖掘及推理。
基于图结构的存储,从实体出发,不同实体对应的节点可定义不同的属性
常见图数据库: Neo4j、OrientDB、InfoGrid、HyperGraphDB、InfiniteGraph(分布式)等
KG是通过数据库进行存储的,大部分数据库系统通过形式化的查询语言为用户提供访问数据的接口,关系型数据库的标准查询语言是SQL,图数据库的标准查询语言是SPARQL。
主要功能:对数据的插入、修改、删除、查询四种操作。
可以查看资料链接:sql常用操作
SPARQL是由W3C为RDF数据开发的一种查询语言和数据获取协议,被广泛应用于图数据库。
数据插入——INSERT DATA
向表示的RDF中插入以下三元组:
ns:费米 ns:老师 ns:玻恩.
ns:玻恩 ns:类型 ns:数学家.
ns:玻恩 ns:类型 ns:物理学家.
==》对应的 SPARQL 语句
prefix ns: <http://example.org/ns#>
INSERT DATA {
ns:费米 ns:老师 ns:玻恩 .
ns:玻恩 ns:类型 ns:数学家 ;
ns:类型 ns:物理学家 .
}
数据删除——DELETE DATA
基本语法:DELETE DATA 三元组数据,其中三元组数据可以是多个三元组。对于给定的每个三元组,若其在RDF图中,则删除,否则忽略该三元组。
向表示的RDF中删除三元组 (ns:奥本海默 ns:类型 ns:物理学家),注意删除单个三元组
prefix ns: <http://example.org/ns#>
DELETE DATA {
ns:奥本海默 ns:类型 ns:物理学家 .
}
数据更新
数据更新是指更新RDF图中三元组的值,SPARQL通过组合 INSERT DATA 语句和 DELETE DATA 语句来实现数据更新的功能。
修改三元组(ns:费米 ns:出生日期 “1902/09/29”)修改为(ns:费米 ns:出生日期 “1901/09/29”)
prefix ns: <http://example.org/ns#>
DELETE DATA {ns:费米 ns:出生日期 "1902/09/29" .};
INSERT DATA {ns:费米 ns:出生日期 "1901/09/29" .}
数据查询
四种形式:SELECT、ASK、DESCRIBE 和 CONSTRUCT。
问题的提出: 基于图结构的存储方式能够直观灵活地对知识进行表示和存储,而标准的图查询算法复杂度较高,何如提高图查询的效率成为KG研究的重要问题。
定义(即子图匹配问题):NP完全问题(目前尚不存在多项式时间复杂度内可解决的算法)
图索引技术是实现子图筛选的有效方法。在数据预处理阶段进行。
基本原理:首先根据图上的特征信息建立索引,在进行子图匹配时,根据查询图上的特征能够快速地从图数据库中检索得到满足条件的候选子图,避免在全部子图上进行匹配。
常用算法: