知识图谱由于其数据包含实体、属性、关系等,常见的关系型数据库诸如MySQL之类不能很好的体现数据的这些特点,因此知识图谱数据的存储一般是采用图数据库(Graph Databases)。而Neo4j是其中最为常见的图数据库。
安装JDK
https://www.injdk.cn/,根据自己需求下载,注意:社区版4.2.2需要jdk版本为jdk11
安装完成中选择将其添加到PATH
安装完成后在命令行测试java和javac
安装Neo4J
首先在 https://neo4j.com/download-center/ 下载Neo4J。Neo4J分为社区版和企业版,企业版在横向扩展、权限控制、运行性能、HA等方面都比社区版好,适合正式的生产环境,普通的学习和开发采用免费社区版就好。
在Mac或者Linux中,安装好jdk后,直接解压下载好的Neo4J包,运行命令
bin/neo4j start
windows系统下载好neo4j和jdk 1.8.0后,输入以下命令启动
neo4j.bat console
注:上面的命令需要在bin目录下执行,如果想打开命令行就可以使用,请添加环境变量
使用Neo4J
Neo4J默认的图形化地址是bolt://localhost:7474,浏览器打开后填写默认用户neo4j,默认密码neo4j,第一次成功登陆到Neo4j服务器之后,需要重置密码。登录成功后界面
Neo4J实战教程
官方文档
创建节点
CREATE (<node-name>:<label-name>)
CREATE (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<Propertyn-Value>
}
)
CREATE (<node1-details>)-[<relationship-details>]->(<node2-details>)
# 关系必须有方向
CREATE (n:Person { name: 'Andy', title: 'Developer' })
匹配节点
match用来匹配图数据库中的节点,如match (n:Person) return n.name
,返回所有节点为Person标签的名字
创建关系
MERGE can be used to match or create a relationship.
MATCH (a:Person {name:'Shawn'}), (b:Person {name:'Sally'}) MERGE (a)-[:FRIENDS {since:2001}]->(b)
删除和修改
MATCH (a:Person {name:'Liz'}) SET a.age=34//增加/修改节点的属性
MATCH (a:Person {name:'Mike'}) REMOVE a.test//删除节点的属性
MATCH (a:Location {city:'Portland'}) DELETE a //删除节点
通过 Python 操作 Neo4j
# step 1:导包
from py2neo import Graph, Node, Relationship
# step 2:构建图
g = Graph()
# step 3:创建节点
tx = g.begin()
a = Node("Person", name="Alice")
tx.create(a)
b = Node("Person", name="Bob")
# step 4:创建边
ab = Relationship(a, "KNOWS", b)
# step 5:运行
tx.create(ab)
tx.commit()
Neo4j之导入CSV数据
https://zhuanlan.zhihu.com/p/93746655
参考:
https://blog.seoui.com/2019/08/23/neo4j_study/#%E7%AC%AC%E4%B8%89%E7%AB%A0%EF%BC%9ACQL
https://zhuanlan.zhihu.com/p/88745411
https://github.com/datawhalechina/team-learning-nlp/blob/master/KnowledgeGraph_Basic/task01.md#44-neo4j-web-%E7%95%8C%E9%9D%A2-%E4%BB%8B%E7%BB%8D