知识图谱构建过程中图数据库Neo4j是比较常用的知识存储工具(上一篇文章介绍了图数据库Neo4j的安装与配置),RDF也是知识表示常见形式,由于Neo4j官方只介绍了CSV与关系数据库中数据如何导入Neo4j,但对于如何导入RDF三元组数据未作说明,故本文主要介绍将RDF数据导入Neo4j的过程。
1.下载扩展jar包
第一种方法获得jar包源码,编译得到jar
wget https://github.com/jbarrasa/neosemantics/archive/3.3.0.2.tar.gz
第二种方法直接获得jar包
wget https://github.com/jbarrasa/neosemantics/releases/download/3.3.0.2/neosemantics-3.3.0.2.jar
注:第二种方法在linux上基本无法下载,可能服务器在国外的原因,可以尝试先把jar下载到本地计算机,然后上传到云端的linux上
将jar复制到/var/lib/neo4j/plugins目录下
2.修改配置文件
vim /etc/neo4j/neo4j.conf
添加下面内容
dbms.unmanaged_extension_classes=semantics.extension=/rdf
3.重新启动 neo4j
sudo neo4j stop
sudo neo4j start
4.访问web端neo4j并登录
在查询语句输入栏输入以下语句:
call dbms.procedures()
发现列表中已经包含可扩展的rdf
也可以输入以下语句:
:GET /rdf/ping
得到以下结果
{"ping":"here!"}
通过以上操作表明neo4j已经扩展支持的RDF数据
5.创建命名空间前缀
根据自己的rdf数据内容创建命名空间,以下举个例子:
CREATE (:NamespacePrefixDefinition {
`http://www.example.com/ontology/1.0.0#`: 'ex',
`http://www.w3.org/1999/02/22-rdf-syntax-ns#`: 'rdfs'})
6.导入rdf数据
首先要创建常规标签,这是导入数据必要步骤
CREATE INDEX ON :Resource(uri)
CREATE INDEX ON :URI(uri)
CREATE INDEX ON :BNode(uri)
CREATE INDEX ON :Class(uri)
其次导入数据
CALL semantics.importRDF("file:///path/to/some-file.ttl", "Turtle", )
在导入数据过程中,如果你的数据不符合RDF的标准规范,会提示一定的错误信息,经过查找定位,直到符合要求即可。
参考:https://github.com/jbarrasa/neosemantics
https://jesusbarrasa.wordpress.com/2016/06/07/importing-rdf-data-into-neo4j/
领取专属 10元无门槛券
私享最新 技术干货