超详细:通过neo4j构建数电知识图谱

将neo4j -> 连接mysql

CALL apoc.load.jdbc()

创建节点
ranker代表课程id,name代表该学科名称

create (n:course { name: '数字电路与逻辑设计',ranker:'4' }) return n;

建立课程下面的一级目录—既每章的标题

在这里插入图片描述
首先是创建node:

CALL apoc.load.jdbc( 'jdbc:mysql://10.112.48.129/knowledgePoint_PPT?
user=*填写你的账号*&password=*填写你的密码*&useUnicode=true&characterEncoding=utf8', 'select * from DCDku' ) 
YIELD row
CREATE(n:KnowledgeUnit { id:row.id, name:row.name, ranker:row.ranker, level:row.level, url:row.url})

接着是创建relation:

CALL apoc.load.jdbc( 'jdbc:mysql://10.112.48.129/knowledgePoint_PPT?
user=*填写你的账号*&password=*填写你的密码*&useUnicode=true&characterEncoding=utf8', 'select * from DCDku' ) 
YIELD row
merge  (p1:course{name:'数字电路与逻辑设计'})
merge  (p2:KnowledgeUnit{ranker:row.ranker})
WITH * create (p1)-[r:hasPartOf]->(p2)

效果如下:
在这里插入图片描述

接着连接二级目录:
在这里插入图片描述
首先是创建node:

CALL apoc.load.jdbc( 'jdbc:mysql://10.112.48.129/knowledgePoint_PPT?
user=*填写你的账号*&password=*填写你的密码*&useUnicode=true&characterEncoding=utf8', 'select * from DCDkc' ) YIELD row
CREATE(n:KnowledgeChapter { start:row.start, name:row.name, ranker:row.ranker, level:row.level, url:row.url})

接着是创建relation:

CALL apoc.load.jdbc(
  'jdbc:mysql://10.112.48.129/knowledgePoint_PPT?user=*填写你的账号*&password=*填写你的密码*&useUnicode=true&characterEncoding=utf8',
  'select * from DCDkc'
) YIELD row
merge  (p1:KnowledgeUnit{ranker:row.start})
merge  (p2:KnowledgeChapter{ranker:row.ranker})
WITH * create (p1)-[r:hasPartOf]->(p2)

额,显然每个二级目录多了一倍,多的几个空白的没有name,我怀疑多建了,所以删除
在这里插入图片描述
删除语法:
delete 节点:

Match (n) where n.ranker Contains 'XXX' delete n

delete 节点和关系:

MATCH ()-[r]-(n) where n.ranker Contains 'xxx' DELETE n,r

在这里插入图片描述
只要节点连其他的节点,则必须用第二个,否则报错

发现雀食多了差不多一倍的节点
在这里插入图片描述
经过重新改正,效果如下:
在这里插入图片描述
emmm,舒服了…

接着连接三级目录:
在这里插入图片描述
首先是创建node:

CALL apoc.load.jdbc( 'jdbc:mysql://10.112.48.129/knowledgePoint_PPT?user=*填写你的账号*&password=*填写你的密码*&useUnicode=true&characterEncoding=utf8', 'select * from DCDkb' ) YIELD row
CREATE(n:KnowledgeBlock { start:row.start, name:row.name, ranker:row.ranker, level:row.level, url:row.url})

接着是创建relation:

CALL apoc.load.jdbc(
 'jdbc:mysql://10.112.48.129/knowledgePoint_PPT?user=*填写你的账号*&password=*填写你的密码*&useUnicode=true&characterEncoding=utf8',,
  'select * from DCDkb'
) YIELD row
merge  (p1:KnowledgeChapter{ranker:row.start})
merge  (p2:KnowledgeBlock{ranker:row.ranker})
WITH * create (p1)-[r:hasPartOf]->(p2)

效果:
在这里插入图片描述

最后导入四级细分知识点

CALL apoc.load.jdbc( 'jdbc:mysql://10.112.48.129/knowledgePoint_PPT?user=。。。&password=。。。&useUnicode=true&characterEncoding=utf8', 'select * from 数字电路与逻辑设计_kp' ) 
YIELD row
CREATE(n:AlignmentObject 
{ name:row.name, ranker1:row.ranker1, ranker2:row.ranker2, level:row.level, url:row.url, 英文知识点:row.英文知识点,
description_wikiE:row.description_wikiE, description_wikiC:row.description_wikiC, description_baidu:row.description_baidu})
CALL apoc.load.jdbc(
  'jdbc:mysql://10.112.48.129/knowledgePoint_PPT?user=。。。&password=。。。&useUnicode=true&characterEncoding=utf8',
  'select * from 数字电路与逻辑设计_kp'
) YIELD row
match  (p1:KnowledgeBlock) where p1.ranker = row.ranker1
match  (p2:AlignmentObject) where p2.ranker2 = row.ranker2
WITH * create (p1)-[r:hasPartOf]->(p2)

最终效果:
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值