一、背景
众所周知,Neo4j
本身是不支持导入 RDF
文件的。但我们可以借助 neosemantics
来进行导入。
neosemantics
简称 n10s
,4.0之前的把呢不能叫 semantics
。
现在官网也无法访问 4.0 之前版本的相关文档了。推荐大家使用4.0以上的。
虽然我用的是3.5.5
二、安装插件
1、下载 neosemantics
,4.0以上下载的是 neosemantics-4.1.0.1.jar
3.5.5版本的下载Neosemantics Release 3.5.0.1 for Neo4j 3.5.x
https://github.com/neo4j-labs/neosemantics/releases/tag/3.5.0.1
2、复制 neosemantics-4.1.0.1.jar 到 neo4j 的安装目录下的 plugins 文件夹中
(注意:如果你想要支持 JSON-LD 序列化的 RDF,则需要安装 APOC 插件)
3、修改配置文件
在 neo4j/neo4j.conf
文件中添加以下内容:
dbms.unmanaged_extension_classes=n10s.endpoint=/rdf
如果是4.0版本之前的,那么添加下面的内容:
dbms.unmanaged_extension_classes=semantics.extension=/rdf
4、重新启动 neo4j
./bin/neo4j restart
5、用浏览器访问 neo4j ,并登录,查看现在是否支持导入 RDF
call dbms.procedures()
返回如下信息:
三、配置
1、初始化,设置图形的配置
CALL n10s.graphconfig.init();
如果是4.0版本之前的,那么依次执行下面的命令:
CREATE INDEX ON: Resource(uri)
CREATE INDEX ON: URI(uri)
CREATE INDEX ON: BNode(uri)
CREATE INDEX ON: Class(uri)
返回信息如下:
2、创建唯一性约束
将数据持久化到Neo4j中的所有方法都有一个模式级的先决条件:这是在带有标签资源的节点的属性URI上存在唯一性约束。
如果约束还没有出现,需要在neo4j上运行
CREATE CONSTRAINT n10s_unique_uri ON (r:Resource) ASSERT r.uri IS UNIQUE;
否则rdf导入会报错。这个约束的目的是通过URI保证资源的唯一性,并通过将资源添加到索引来加速获取过程。
此时大功已经告成了。我们可以导入 RDF 文件了。
四、导入数据
支持导入的数据:Turtle、N-Triples、JSON-LD、TriG、RDF/XML
call n10s.rdf.import.fetch("/NLP/KG/Wikidata/Onto/ontology-1.0.owl", "RDF/XML");
call n10s.rdf.import.fetch("/NLP/KG/Wikidata/other/nsmntx.ttl", "Turtle");
CALL n10s.rdf.import.fetch('/NLP/KG/Wikidata/other/test.nt', 'N-Triples')
4.0版本之前使用下面的命令:
CALL semantics.importRDF(x, x, x)
注意:如果是在 Windows 上部署 Neo4j ,需要在路径前面加上file://
CALL n10s.rdf.import.fetch('file:///C:/NLP/KG/Wikidata/other/test.nt', 'N-Triples')
五、删除所有数据
MATCH (resource:Resource) DETACH DELETE resource;
标签:rdf,导入,n10s,neo4j,neosemantics,RDF,Neo4j
From: https://www.cnblogs.com/java-six/p/17450493.html