NLP和知识图谱-neo4j安装和使用
安装和使用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