Neo4j导入RDF文件之neosemantics安装

发布时间 2023-06-01 22:58:18作者: 又一岁荣枯

一、背景

众所周知,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()

返回如下信息:
image

三、配置

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)

返回信息如下:
image

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;