知识存储

知识存储

知识存储解决如何管理大量的结构化数据,存储的途径主要有RDF存储以及数据库存储两类。

数据库选择

我们可以用不同的数据库工具。现代的关系数据库可能可以解决大多数需要知识图谱的场合。某些特殊场合,我们需要图数据库。目前大规模的知识图谱的存储一般采用图数据库做为最基本的存储引擎。图数据库的优点在于其天然的能表示知识图谱结构,图中的节点表示知识图谱的对象,图中的边表示知识图谱的对象关系;但是其缺点是图数据库的更新比较复杂,对于复杂查询的支持不够。所以我们使用以图数据库为主,结合其他系统的方式来存储知识图谱。

图数据库选择

Cayley 的github地址:https://github.com/cayleygraph/cayley/blob/master/docs/Container.md

在简书上也有对Cayley的使用教程:Cayley数据库

在 Google的开发者大会上,有展示如何使用Cayley进行一个小型的知识图谱的构建,可是其实讲的比较少,数据格式也有点局限,亮点是搜索时居然可以像js一样写函数。

可是相应的教程文档比较少,不像Neo4j,随手一查都会有一些中文文档

据说还有另外一个比较常用的图数据库:dgraph,而且大家对他的期望也挺高的,可以了解一下,github主页非常可爱。网上也有很多对dgraph和neo4j的比较分析,中文文档偏少,由于时间考虑暂不深入了解。

两者比较

Neo4j Cayley
查询语言 Cypher Grizo(原来名字叫是Gremlin,但是为了区分开TinkerPop的Gremlin而改名字)
数据库引擎 有自己的搜索引擎,不需要额外配置 没有自己的搜索引擎,需要额外配置,它可以配置多种存储引擎。如leveldb,mysql,mongo等。
文档 比较完善,操作实战资料比较多 还很年轻,文档不是很完善,而且在线运行的例子说好了已经加载了测试数据,但其实还是没有查询得到。

综上所述,我觉得还是优先使用Neo4j进行数据库搜索,降低学习成果。

PS.

Gremlin的中文教程可以点击Gremlin:图遍历语言