Total Pageviews

2018/06/14

[Neo4j] Importing data using spreadsheets

假設我想要在 neo4j 建立起下圖的關係


分析與執行步驟如下:



由關係圖可以看出會有七個節點,包含
  • 哆啦A夢
  • 大雄
  • 靜香
  • 小夫
  • 胖虎
  • 小叮鈴
  • 玉子 (大雄的媽媽)
  • 伸助 (大雄的爸爸)

這七個人,就分別是 graph database 中的七個節點,分別給予 id 與 label ,Excel 內容如下:


這七個人 (nodes) 之間的有九個關係:
  • 大雄的寵物是哆啦A夢
  • 大雄的配偶是靜香
  • 大雄的朋友是小夫
  • 大雄的朋友是胖虎
  • 小夫的朋友是胖虎
  • 哆啦A夢的妹妹是小叮鈴
  • 大雄的爸爸是伸助
  • 大雄的媽媽是玉子
  • 伸助的配偶是玉子

在 Excel 中,關係表示如下:


透過 Excel 內建的 CONCATENATE 語法,產生 create nodes / relationship 的 Cypher 語法
建立 nodes 的 Excel formula:
=CONCATENATE("create(n",A2, ":", ,C2, " {id:", A2, ", name:'",B2, "'}", ")")

建立 relationships 的 Excel formula:
=CONCATENATE("create(n",E2,")-[:",G2,"]->(n",H2,")")
依據上述 nodes 與 relationship ,產生的 Cypher 語法如下:

create(n1:男生 {id:1, name:'哆啦A夢'})
create(n2:男生 {id:2, name:'大雄'})
create(n3:女生 {id:3, name:'靜香'})
create(n4:男生 {id:4, name:'小夫'})
create(n5:男生 {id:5, name:'胖虎'})
create(n6:女生 {id:6, name:'小叮鈴'})
create(n7:女生 {id:7, name:'玉子'})
create(n8:男生 {id:8, name:'伸助'})

create(n2)-[:PET_OF]->(n1)
create(n2)-[:SPOUSE_OF]->(n3)
create(n2)-[:FRIEND_OF]->(n4)
create(n2)-[:FRIEND_OF]->(n5)
create(n4)-[:FRIEND_OF]->(n5)
create(n1)-[:SISTER_OF]->(n6)
create(n2)-[:MOTHER_OF]->(n7)
create(n2)-[:FATHER_OF]->(n8)
create(n8)-[:SPOUSE_OF]->(n7)

將上述語法貼到 Neo4j Browser 並執行


產生的 graph 如下:



No comments: