梁越

NLP和知识图谱-neo4j安装和使用

0 人看过

安装和使用neo4j community server>

参考链接:https://www.cnblogs.com/ljhdo/p/5521577.html

安装

Java SE 14下载

下载安装
下载地址https://www.oracle.com/java/technologies/javase-downloads.html

双击安装文件安装

配置Java SE

Windows环境下需要配置环境变量

路径为java se安装目录下的bin目录

检测是否配置成功,在CMD窗口输入java -version

Neo4j下载

下载安装
使用版本3.5.17
下载地址https://neo4j.com/download-center/#community
点击community server下载对应系统的版本,下载后双击击安装

配置Neo4j

Windows环境下需要配置环境变量

路径为neo4j安装目录下的bin目录

Neosemantics插件下载(非必须)

下载
使用版本3.5.0.4
下载地址https://github.com/neo4j-labs/neosemantics/releases

配置Neosemantics

下载完成,将下载的jar文件复制到neo4j安装文件夹下的plugins文件夹下

启动neo4j

打开CMD窗口,输入
neo4j.bat console

然后在浏览器中输入
http://localhost:7474/

导入rdf文件

在顶栏命令行输入
CREATE INDEX ON :Resource(uri)
点击运行

再输入
CALL semantics.importRDF(“file:///C:/Users/cornor/Desktop/PTD.owl”,”Turtle”, { shortenUrls: true, typesToLabels: true, commitSize: 9000 ,handleVocabUris: “IGNORE”})
点击运行,这里的owl文件是你的知识图谱文件,其他的格式的rdf图也支持,常用csv

如果运行失败,检查一下插件版本,是neo4j是3.x的还是4.x的,然后更改相应的插件版本

此时已经导入成功

导出csv

CALL apoc.export.csv.all(“res.csv”, {})

简单查询

##查询所有节点
MATCH (n) return n

查询具有某个属性值的节点

例如:查询操作系统版本为“2.6.29.1”的DTU设备
MATCH (s:dtu)-[p:操作系统版本]-(o) where o.label =’2.6.29.1’ return s

多关系查询

例如:查询操作系统版本为“2.6.29.1”的DTU设备具有的漏洞
MATCH (s:dtu)-[p:操作系统版本]->(o)<-[:操作系统版本]-(l:loophole) where o.label =’2.6.29.1’ return l

多关系查询

例如:查询操作系统版本为“2.6.29.1”的DTU设备具有的漏洞的漏洞编号
MATCH (s:dtu)-[p:操作系统版本]->(o)<-[:操作系统版本]-(l:loophole)-[:漏洞编号]-(res) where o.label =’2.6.29.1’ return res

多关系查询

例如:查询操作系统版本为“2.6.29.1”的DTU设备具有的漏洞的漏洞编号,同时查看才做系统和生产厂家
MATCH (s:dtu)-[p:操作系统版本]->(o)<-[:操作系统版本]-(l:loophole)-[:漏洞编号]-(res) where o.label =’2.6.29.1’ return res

联合查询:

MATCH (m)-[r:操作系统版本]-(s)-[]-(o)-[]-(l:loophole)-[p:漏洞编号]-(res) where o.label=’PDZ810’
WITH m,r,s,o,l,p,res
MATCH (n)-[r2:生产厂家]-(s)
return res,m,r,l,p,n

MATCH (m)-[r:操作系统版本|设备的生产厂家|设备类型]-(s)-[]-(o)-[]-(l)-[p:漏洞编号]-(res) where o.label=’PDZ810’ return res,m,r,l,p

MATCH (m)-[r:操作系统版本|设备的生产厂家|设备类型]-(s)-[]-(o)-[]-(l)-[p:漏洞编号|漏洞类别|漏洞名称]-(res) where o.label=’PDZ810’ return res,m,r,l,p,o

深度查询

多个关系的查询,深度1-13,例如:查询攻击
MATCH path=(n:dtu)-[*1..9]-(m:攻击维度)
RETURN m

模糊查询

例如:查询任意和“2.6.29.1”有关的节点
MATCH (s)–(o) where o.label =’2.6.29.1’ return s

下一度查询

MATCH (p)–(s)–(o) where o.label =’2.6.29.1’ return p