Neo4j系列-解读《权力的游戏》上

1.导入数据

在githut下载数据CSV文件:https://github.com/mathbeveridge/asoiaf/blob/master/data/asoiaf-all-edges.csv

将其保存在当前库的import文件夹

LOAD CSV WITH HEADERS FROM "file:///asoiaf-all-edges.csv" AS row MERGE (src:Character {name: row.Source}) MERGE (tgt:Character {name: row.Target}) MERGE (src)-[r:INTERACTS]->(tgt)SET r.weight = toInt(row.weight)

2. 查看《权利的游戏》图

MATCH p=(:Character)-[:INTERACTS]-(:Character)
RETURN p
LIMIT 50

3.人物数量

MATCH (c:Character) RETURN count(c)

4.概要统计

MATCH (c:Character)-[:INTERACTS]->()
WITH c, count(*) AS num
RETURN min(num) AS min, max(num) AS max, avg(num) AS avg_characters, stdev(num) AS stdev

5.图(网络)的直径

MATCH (a:Character), (b:Character) WHERE id(a) > id(b)
MATCH p=shortestPath((a)-[:INTERACTS*]-(b))
WITH length(p) AS len, p
ORDER BY len DESC LIMIT 4
RETURN len, extract(x IN nodes(p) | x) AS path

6.最短路径

MATCH (catelyn:Character {name:"Catelyn-Stark"}), (drogo:Character {name:"Drogo"})
MATCH p=shortestPath((catelyn)-[:INTERACTS*]-(drogo))
RETURN p

7.所有最短路径

MATCH (catelyn:Character {name:"Catelyn-Stark"}), (drogo:Character {name:"Drogo"})
MATCH p=allShortestPaths((catelyn)-[:INTERACTS*]-(drogo))
RETURN p

8.关键节点

如果一个节点位于其它两个节点所有的最短路径上,即称为关键节点。下面我们找出网络中所有的关键节点:

MATCH (a:Character), (b:Character) WHERE id(a) > id(b)
MATCH p=allShortestPaths((a)-[:INTERACTS*]-(b)) WITH collect(p) AS paths, a, b
UNWIND nodes(head(paths)) as c // first path
WITH * WHERE NOT c IN [a,b] AND all(path IN tail(paths) WHERE c IN nodes(path))
RETURN a.name, b.name, c.name AS PivotalNode, length(head(paths)) as pathLength, length(paths) as pathCount SKIP 490 LIMIT 10

拿"Eustace-Brune"和"Cressen"校验,查看两个节点的最短路径,看到结果刚好就是"Dick-Crabb"和"Renly-Baratheon":

MATCH (a:Character {name: "Eustace-Brune"}), (b:Character {name: "Cressen"})
MATCH p=allShortestPaths((a)-[:INTERACTS*]-(b))
RETURN p

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值