因为研究生需要学习知识图谱,在网上找了一些教程没有很合适的,所以在此记录所学方便以后查看。(会陆续更新,学到哪写到哪,先按照我自己的笔记写了,等有人看再整理顺序吧。)
PS:本人是个小白,写的比较通俗,并不标准,仅供参考。
知识图谱neo4j入门教程
这里是做一个比赛需要的小例子。
这个是例子
首先安装教程就不写了。链接如下:
https://blog.csdn.net/hxg117/article/details/79929579
我就是跟这个做的
neo4j的启动与关闭
1.打开cmd
2.cd切换到目录
cd F:\neo4j\neo4j-community-3.5.5-windows\neo4j-community-3.5.5\bin
3.输入以下指令
neo4j.bat console
4.neo4j 的关闭
neo4j stop
5.如果再启动可以输入
neo4j start
进行启动
切换数据库(非常有用,找了好多都没有这么好用的):
1.关闭当前neo4j进程
2.打开F:\neo4j\neo4j-community-3.5.5-windows\neo4j-community-3.5.5\conf下文件,把dbms.active_database=test.db中的test.db切换成需要的数据库,dbms.allow_upgrade=true打开。
3.重启neo4j即可。
注:数据在F:\neo4j\neo4j-community-3.5.5-windows\neo4j-community-3.5.5\data\databases文件夹下添加文件名.db的形式的文件夹 。(这个是我个人的目录)
//创建节点
CREATE (name:Name{dname:'陈碧莹',jibing1:'糖尿病',jibing4:'低血压',jibing5:'轻度近视'})
CREATE (name:Name{dname:'车安妮',jibing3:'高血压'})
CREATE (name:Name{dname:'陈柳',jibing1:'糖尿病',jibing5:'重度近视'})
CREATE (name:Name{dname:'陈佳佳',jibing1:'糖尿病',jibing4:'低血压'})
CREATE (name:Name{dname:'车野',jibing2:'先天性心脏病',jibing3:'高血压',jibing5:'轻度近视'})
CREATE (name:Name{dname:'陈世超',jibing5:'轻度近视'})
MATCH (name:Name) RETURN name.dname
//
MATCH (name:Name) RETURN name
//显示节点是name的两个节点
MATCH(e:Name) DELETE e //删除节点
CREATE(name:Name7)-[Mother:Motherdaughter]->(name:Name8)
//在未创建结点创建关系
CREATE(name:Name1:Name2)
CREATE (CBY:Name1{dname:'陈碧莹',jibing1:'糖尿病',jibing4:'低血压',jibing5:'轻度近视'})
CREATE (DAN:Name2{dname:'车安妮',jibing3:'高血压'})
CREATE(CBY)-[mother:motherdaughter{r:'母女'}]->(DAN)
MATCH(a:Name1{dname:'陈碧莹'}) MATCH(b:TNB{bname:'糖尿病'}) CREATE(a)-[r:患有]->(b) return r;
//创建两个已有结点之间的关系
CREATE(GXY:GXY{bname:'高血压',laber:'非遗传病'}),(DXY:DXY{bname:'低血压',laber:'非遗传病'}),(TNB:TNB{bname:'糖尿病',laber:'遗传病'})
CREATE(QJS:QJS{bname:'轻度近视',laber:'非遗传病'}),
CREATE(ZJS:ZJS{bname:'重度近视',laber:'遗传病'}),
CREATE(XZB:XZB{bname:'先天性心脏病',laber:'遗传病'});
MATCH(a:DXY) MATCH(Name1) CREATE(a)-[r:患有]->(b) return r;
MATCH(a:DXY) DELETE a //删掉结点
MATCH(:DXY) -[r:患有]->() delete r //删点DXY关系为患有的结点
match (n) detach delete n
//清空数据库所有信息
CREATE(name:Name{dname:'陈碧莹',jibing1:'糖尿病',jibing4:'高血压',jibing5:'轻度近视'})-[:患有]-> (GXY:GXY{bname:'高血压',laber:'非遗传病'})
//创建两个新节点及其关系
match(a:Name{dname:'陈碧莹'}) match(b:QJS{bname:'轻度近视'}) MATCH (c:TNB{bname:'糖尿病'}) create(a)-[:患有]->(b),(a)-[:患有]->(c)
//建立一对多的关系
match(a:Name{dname:'陈碧莹'}) create(name:Name{dname:'车安妮',jibing3:'高血压'}) create(a)-[:母女]->(name)
//建立一个存在和一个新建关系的结点
match(a:Name{dname:'车安妮'}) match(b:GXY{bname:'高血压'}) create(a)-[:患有]->(b)
CREATE (name:Name{dname:'陈柳',jibing1:'糖尿病',jibing5:'重度近视'}) match(b:TNB{bname:'糖尿病'}) match(c:ZJS{bname:'重度近视'}) match (d:Name{dname:'陈碧莹'}) CREATE (name)-[:患有]->(b) CREATE(name)-[:患有]->(c) CREATE(name)-[:父女]->(d)
match(a:Name{dname:'陈佳佳'}) match(b:TNB{bname:'糖尿病'}) CREATE (a)-[:患有]->(b)
python 连接neo4j
首先需要安装这个包
import pandas as pd
from py2neo import Graph, Node, Relationship
这一行是你的数据库。默认的username是neo4j,密码是 第一次设置的
graph = Graph('http://localhost:7474', username='dianzisai', password='0507')
#创建新节点
a=Node('陈碧莹',name='陈碧莹')
graph.create(a)
创建完节点之后你就可以在neo4j查询一下。下面语句或者图中语句都可以。
match(a) return a;
# 创建新节点
a=Node('陈碧莹',name='陈碧莹')
#graph.create(a)
b=Node('车安妮',name='车安妮')
graph.create(b)
#创建关系
e1=Relationship(a, '母女', b)
graph.create(e1)
# 也可以一次性创建
s = a | b
graph.create(s)
# 创建新节点
a=Node('陈碧莹',name='陈碧莹')
# graph.create(a)
# b=Node('车安妮',name='车安妮')
# graph.create(b)
#创建关系
# e1=Relationship(a, '母女', b)
# graph.create(e1)
c=Node('陈柳',name='陈柳')
e2=Relationship(a, '父女', c)
graph.create(e2)
写完这个之后,发现陈碧莹这个节点出现了两个。
这样可以加属性
a=Node('test',name='陈碧莹',jibing1='糖尿病',jibing2='高血压')