项目2 利用Neo4j构建图片所示内容,熟悉Cypher查询语言
作业样式:
分析实现步骤:
1.图右上角,将知识内容归为三类,因此后面创建节点时可以以此分类创建。
2.仔细观察图中会发现其中有几个核心的知识。通过这个核心的知识点再延展其他的知识点。
在创建节点关系的时候可以优先创建。例如:“Python基础”很多知识都从它衍生出去的。
3.最后将核心知识点再串联一起,就可以构成知识网络图谱了。
下面是实现知识图谱需要掌握的基本语句,当然网上和官方也有教程,下面只是提供部分参考。
创建节点语法:create (: 知识{name:'Hive'}), (: 知识{name:'Python基础'})
搜索创建的节点:
搜索节点:match (p:知识{name:'Python基础'}),(h:`知识`{name:'Hive'}) return p,h
使用ID搜索节点:match (p) where id(p)=xx return p ‘xx为匹配的ID数字‘
创建节点关系:
创建两个节点关系代码:match (s:`知识`{name:'scrapy'}),(m:`知识`{name:'MySQL'})
create (s)-[db:数据库]->(m)
创建一个节点多关系代码(方法一):match (sd:`知识`{name:'深度学习'}),(sj:`岗位方向`{name:'视觉'}),
(yy:`岗位方向`{name:'语音'}),(nlp:`岗位方向`{name:'NLP'}),(tj:`岗位方向`{name:'推荐'})
create (sd)-[:job]->(sj), (sd)-[:job]->(yy),(sd)-[:job]->(nlp),(sd)-[:job]->(tj)
创建一个节点多关系代码(方法二):match (sd:`知识`{name:'深度学习'}) foreach (name in ['视觉','语音','NLP','推荐'] |
create (sd)-[:job]->(:`岗位方向`{name:name}))
修改节点:
修改节点代码:match (sd:`知识`{name:'xpath'}) set sd.name = 'Xpath'
删除节点、节点关系:
删除节点代码:match (sd:`知识`{name:'深度学习'}) delete sd
删除节点关系代码:match (sd:`知识`{name:'深度学习'})-[j:job]->(sj:`岗位方向`{name:'视觉'}) delete j
使用ID实现删除节点代码:match (r) where id(r) = 501 delete r ‘关键在于detach的使用’
使用ID实现删除节点及节点关系代码:match (r) where id(r) = 501 detach delete r ‘关键在于detach的使用’
作业完成效果:
下面知识图谱是知识与岗位的一些关系:
下面知识图谱是知识、岗位及岗位方向的一些关系:
下面是一些该项目的小节:
1.对于节点的命名特别是英文的一定要有一个规范。不要一会儿是首字母大写,一会儿是全部英文单词大写,一会儿全是小写。这样可以避免在搜索节点时不容易出错,避免由于出错后产生新的节点仅具有id属性,检查、删除很麻烦。
2.创建多关系的时候,可以在创建之前就明确好关系名称,这样会让自己的脉络清晰,流程清楚。
3.在neo4j输入框中使用shift+enter,这样可以换行,使得的代码逻辑清晰,如果出错也方便搜索查找。
4.在上面代码很少使用return(ps:不想看效果),但return是一个很好检验代码实现效果的语句,在做复杂的知识图谱是还是需要的。