知识图谱学习笔记-Cypher语句使用
一、Cypher Neo4j的SQL
match 相當于SQL select
match?
? ? ? ? ?(node)-[relationship]->(node)
where
? ? ? ? ?(node | relationship)
return
? ? ? ? ?(node | relationship)
查詢label:? match (n:Person) return n limit 10? ? n:表示別名 相當于SQL里面as
帶有關系的查詢:match (n:Person)-[:HAS_PHONE]->(p:Phone) return n,p limit 10
帶有where條件的查詢:match (n:Person)-[:HAS_PHONE]->(p:Phone) where n.name='name6' return n,p limit 10
二、多維度關系查詢
match (n:Person)-[:HAS_PHONE]->(p:Phone)-[:CALL]->(p1:Phone) where n.name='name6' return n,p,p1 limit 10
利用非關系去查詢:
match p=()-[c:CALL]-() return p limit 10
利用正則表達式查詢:
match (n:USERS) where n.name=~'Jack.*' return n limit 10
包含查詢:
match (n:USERS) where n.name contains 'J' return n limit 10
創建實體關系:
create (n:Person)-[:LOVES]->(m:mm)
創建帶有屬性的實體關系:
create (n:Person{name:"李四"})-[:FEAR{level:1}]->(m:mm{name:"潑婦"})
三、創建實體關系
創建兩個孤立的實體:
create (n:Person{name:"王五"})
create (n:Person{name:"趙六"})
填個孤立的實體添加關系
match (n:Person{name:"王五"}),(m:Person{name:"趙六"}) ?create (n)-[k:KNOW]->(m) return k
merge: 有則返回 ;沒有則創建? create:不管有沒有都會創建
match (n:Person{name:"王五"}),(m:Person{name:"趙六"}) merge (n)-[l:FEAR]->(m) return l
四:刪除兩個實體之間的關系
?
刪法一:先刪關系,后刪實體
刪除一個關系
match (n:Person{name:"李四"})-[f:FEAR]->(m:mm) delete f
刪除實體
match (n:Person{name:"李四"}) delete n
?
刪法2:同時刪除實體和關系
match (n:Person)-[l:LOVES]->(d:Dog) delete n,l,d
更新實體標簽:
match (t:Tiger) where id(t)=111 set t:M return t
修改實體一個屬性
match (a:A) where id(a)=111 set a.age=8 return a
給關系增加一個屬性
match (n:Person)-[l:FEAR{}]-(:Person) set l.date="2000" return n,l
?
五:Neo4j的索引
索引:能夠提高查詢速度
語法: create index on :<標簽名稱>(屬性名稱)
刪除索引
添加和刪除唯一索引
六:Cypher的復雜查詢
姓名12的三度內的朋友有哪些
match (p:Person)-[:Friend_of]-(p1:Person)-[:Friend_of]-(p2:Person) where p.name="姓名12" return p,p1,p2
姓名12的三度內的有關系有哪些
match (p:Person)-[]-(p1:Person)-[]-(p2:Person) where p.name="姓名12" return p,p1,p2
姓名11的通話記錄中的電話有哪些
match (p:Person)-[:HAS_PHONE]->(p2:phone)-[:CALL]-(h:Phone) where p.name="姓名11" return p,p2,h
?
七:Cypher的最短路徑索引
查詢姓名2到姓名10的最短路徑(限制10度關系以內)
match (p1:Person{name:"姓名2"}),(p2:Person{name:"姓名10"}),p=shortestpath((p1)-[*..10]-(p2)) return p
所有最短路徑
match (p1:Person{name:"姓名2"}),(p2:Person{name:"姓名10"}),p=allshortestpaths((p1)-[*..10]-(p2)) return p
?
總結
以上是生活随笔為你收集整理的知识图谱学习笔记-Cypher语句使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 知识图谱学习笔记-知识图谱介绍
- 下一篇: 知识图谱学习笔记-风控算法介绍