来源商业新知网,原标题:Python来袭,教你用Neo4j构建“复联4”人物关系图谱!没有剧透!
复仇者联盟 之绝对不剧透
漫威英雄们为了不让自己剧透也是使出了浑身解数。在洛杉矶全球首映礼上记者费尽心机想要从各位演员身上套点信息:“如果你活下来就眨一下眼睛,死了就眨两下”。
“绿巨人” : 我就是不眨,看你怎么样!
“雷神”: 我眨了23下,你猜我活没活着~
“蚁人”: 我不睁眼就不用眨眼了~
希望大家可以像奇异博士学习
做个合格的影迷哦
都谁看了复联4?
据说,看复联4的, 分三种人:
(1)骨灰粉
看完晒票根发感慨的
(2)路人粉
还没看,但是怕被剧透的
(3)纯属小白跟风
被漫威错综复杂的人物线, 搞得一头雾水
敲黑板,讲技术重点了~!
来,先放一张成品图,
帮你理清核心人物
一张图带你读懂“妇联4”人物关系!
人物节点和关系数据
人物节点数据:姓名和角色
name,role
霍华德·斯塔克,斯塔克工业创始人
佩姬·卡特,神盾局创始人
美国队长,复仇者联盟成员
钢铁侠,复仇者联盟成员
巴基,复仇者联盟成员
雷神,复仇者联盟成员
蚁人,复仇者联盟成员
绿巨人,复仇者联盟成员
黑寡妇,复仇者联盟成员
洛基,火神
鹰眼,复仇者联盟成员
战争机器,复仇者联盟成员
蜘蛛侠,复仇者联盟成员
幻视,复仇者联盟成员
红骷髅,九头蛇组织创始人
黑豹,瓦坎达国王
泽莫男爵,美国队长宿敌
人物关系:姓名1,姓名2,关系类型
start,end,relation
钢铁侠,美国队长,内战
美国队长,钢铁侠,内战
蜘蛛侠,钢铁侠,师傅
钢铁侠,战争机器,好友
幻视,钢铁侠,AI管家
钢铁侠,霍华德·斯塔克,儿子
钢铁侠,绿巨人,搭档
美国队长,红骷颅,宿敌
红骷颅,美国队长,宿敌
黑豹,美国队长,庇护
泽莫男爵,美国队长,敌对
美国队长,泽莫男爵,敌对
美国队长,佩姬·卡特,二战恋人
美国队长,巴基,好友
巴基,美国队长,好友
洛基,雷神,弟弟
绿巨人,雷神,结识
黑寡妇,鹰眼,暧昧
@导入数据
启动 neo4j 服务,打开 http://127.0.0.1:7474
文件存放位置: neo4j 安装目录的 import 文件夹下
导入节点数据,先不添加标签
LOAD CSV WITH HEADERS FROM "file:///data_node.csv" AS line MERGE ({name:line.name,role:line.role})
给不同的角色添加不同的标签
以 “ 复仇者联盟成员 ” 为例:
MATCH (n { role: ' 复仇者联盟成员 ' }) SET n : 复仇者联盟成员 RETURN n
MATCH (n { role: ' 神盾局创始人 ' })SET n : 神盾局创始人 RETURN n
MATCH (n { role: ' 斯塔克工业创始人 ' })SET n : 斯塔克工业创始人 RETURN n
MATCH (n { role: ' 火神 ' }) SET n: 火神 RETURN n
MATCH (n { role: ' 九头蛇组织创始人 ' })SET n : 九头蛇组织创始人 RETURN n
MATCH (n { role: ' 瓦坎达国王 ' }) SET n : 瓦坎达国王 RETURN n
MATCH (n { role: ' 美国队长宿敌 ' })SET n : 美国队长宿敌 RETURN n
查看所有节点
match (n) return n
点击节点,可以设置节点颜色和大小。
导入关系数据,由于导入节点的时候,并没有设置标签,所以导入关系数据的时候,也不需要设置节点标签。
正确语法:
LOAD CSV WITH HEADERS FROM 'file:///data_relation.csv'as line
MATCH (start {name: line.start})
MATCH (end {name: line.end})
MERGE (start) -[:r{relation:line.relation}]-> (end)
用以下语法,添加节点标签 Person ,虽然语法不报错,但是并没有把关系添加进去:
LOAD CSV WITH HEADERS FROM 'file:///data_relation.csv'as line
MATCH (start:Person {name: line.start})
MATCH (end:Person {name: line.end})
MERGE (start) -[:r{relation:line.relation}]-> (end)
再查看所有节点和关系
match (n) return n
查看所有复仇者联盟成员的名字
match (n: 复仇者联盟成员 ) return n
点击标签,也可以设置颜色和大小。
查看钢铁侠的全部关系
match p=({name:' 钢铁侠 '})-[:r]->()return p
点击关系,也可以设置颜色和大小。
查看钢铁侠的 2 层内的关系
match p=({name:' 钢铁侠 '})-[*..2]->()return p
查看钢铁侠的好友关系
match p=({name:' 钢铁侠 '})-[:r{relation:' 好友 '}]->()return p