知识存储
含义:知识存储是将有价值的知识经过选择、过滤、加工和提炼后,按照一定的规则保存在适当媒介内,以利于需求者更为便利、快速地使用,并随时更新和重组其内容和结构的活动。
知识图谱主要有两种存储方式:一种是基于 RDF 的存储;另一种是基于图数据库的存储。
RDF 一个重要的设计原则是数据的易发布以及共享,图数据库则把重点放在了高效的图查询和搜索上。其次,RDF 以三元组的方式来存储数据而且不包含属性信息,但图数据库一般以属性图为基本的表示形式,所以实体和关系可以包含属性,这就意味着更容易表达现实的业务场景。根据相关统计,图数据库仍然是增长最快的存储系统。相反,关系型数据库的增长基本保持在一个稳定的水平。
基于关系数据库存储
三元组表,水平表,属性表,垂直划分,六重索引,DB2RDF
关系型数据库
Mysql,Oracle,Sql Server
面向RDF的三元组数据库
开源:RDF4J,RDF-3X,gStore
商业:Virtuoso,AllegroGraph,GraphDB,Blazegraph,Stardog
原生图数据库
Neo4j(最流行),JanusGraph(分布式),OrientDB,Cayley
主要知识图谱数据库比较
类型 | 名称 | 许可证 | 存储方案 | 开发语言 | 特点描述 |
---|---|---|---|---|---|
基于关系 | 3store | 开源 | 三元组表 | C | 早期系统,三元组存储代表 |
DLDB | 研究原型 | 水平表 | Java | 早期系统,水平表存储代表 | |
Jena | 开源 | 属性表 | Java | 主流语义Web框架与数据库 | |
SW-Store | 研究原型 | 垂直划分 | C | 科研原型系统,垂直划分代表 | |
IBM DB2 | 商业 | DB2RDF | Java | 支持RDF的主流商业数据库 | |
Oracle 12c | 商业 | 关系存储 | Java | 支持RDF的主流商业数据库 | |
RDF三元组库 | RDF4J | 开源 | SAIL API | Java | 主流语义Web框架与数据库 |
RDF-3X | 开源 | 六重索引 | C++ | 科研原型系统,六重索引代表 | |
gStore | 开源 | VS树 | C++ | 科研原型系统,原生图存储 | |
Virtuoso | 商业 | 多模型混合 | C/C++ | 语义Web项目常用RDF数据库 | |
AllegroGraph | 商业 | 三元组索引 | Common Lisp | 擅长语义推理功能 | |
GraphDB | 商业 | 三元组索引 | Java | 支持SAIL层推理功能 | |
Blazegraph | 商业 | 三元组索引 | Java | 基于RDF三元组库的图数据库 | |
StarDog | 商业 | 三元组索引 | Java | 支持OWL2推理机制 | |
图数据库 | Neo4j | 开源/商业 | 原生图存储 | Java | 最流行的图数据库 |
JanusGraph | 商业 | 分布式存储 | Java | 分布式图数据库 | |
OrientDB | 商业 | 原生图存储 | Java | 支持多模型数据管理 | |
Cayley | 开源 | 外部存储 | Go | 轻量级开源图数据库 |