巴拿马文件 - 阿塞拜疆总统示例数据集
让我们看看阿塞拜疆总统伊尔哈姆·阿利耶夫的家人,他们过去曾是 Linkurious 的 GraphGist 的主题。我们看到他的妻子、两个女儿和儿子被描绘出来。
来源
总结 ICIJ “权力玩家” 出版物
阿塞拜疆总统伊尔哈姆·阿利耶夫的家人过着富裕而迷人的生活,这在一定程度上归功于他们在经济几乎所有部门的经济利益。他的妻子梅赫里班来自特权而强大的帕沙耶夫家族,该家族拥有银行、保险和建筑公司、电视台和化妆品生产线。她领导了阿塞拜疆最主要的慈善机构海达尔·阿利耶夫基金会,该基金会负责建造学校、医院和该国的主要体育中心。他们的大女儿莱拉 *,巴库杂志的编辑,以及她的妹妹阿祖,在一家公司拥有财务股权,该公司获得了在西部乔夫达尔村开采黄金的权利,以及阿塞拜疆最大的移动电话业务阿塞拜疆电信。阿祖也是 SW 控股的重要股东,该公司控制着与阿塞拜疆航空公司 ("Azal") 相关的几乎所有业务,从餐饮到机场出租车。两位姐妹和兄弟海达尔在迪拜拥有价值约 7500 万美元的房产(2010 年);海达尔是迪拜九栋豪华别墅的合法所有者,这些别墅的购买价格约为 4400 万美元。
设置
我们从 ICIJ 可视化中获取了数据,并将二维图可视化转换为我们 Cypher 查询语言中的图模式。如果你眯着眼睛看,你仍然可以看到与可视化中相同的结构。我们只将“是...的官员 - 受益人、股东、董事”缩短为IOO_BSD
,并将其他“是...的官员”关系加上前缀IOO
。
我们没有添加实体或关系的属性,例如股份、国籍、注册号、地址,你可以在点击嵌入的原始可视化元素时看到它们。
设置可视化实体和关系的 Cypher 语句
CREATE
(leyla: Officer {name:"Leyla Aliyeva"})-[:IOO_BSD]->(ufu:Company {name:"UF Universe Foundation"}),
(mehriban: Officer {name:"Mehriban Aliyeva"})-[:IOO_PROTECTOR]->(ufu),
(arzu: Officer {name:"Arzu Aliyeva"})-[:IOO_BSD]->(ufu),
(mossack_uk: Client {name:"Mossack Fonseca & Co (UK)"})-[:REGISTERED]->(ufu),
(mossack_uk)-[:REGISTERED]->(fm_mgmt: Company {name:"FM Management Holding Group S.A."}),
(leyla)-[:IOO_BSD]->(kingsview:Company {name:"Kingsview Developents Limited"}),
(leyla2: Officer {name:"Leyla Ilham Qizi Aliyeva"}),
(leyla3: Officer {name:"LEYLA ILHAM QIZI ALIYEVA"})-[:HAS_SIMILIAR_NAME]->(leyla),
(leyla2)-[:HAS_SIMILIAR_NAME]->(leyla3),
(leyla2)-[:IOO_BENEFICIARY]->(exaltation:Company {name:"Exaltation Limited"}),
(leyla3)-[:IOO_SHAREHOLDER]->(exaltation),
(arzu2:Officer {name:"Arzu Ilham Qizi Aliyeva"})-[:IOO_BENEFICIARY]->(exaltation),
(arzu2)-[:HAS_SIMILIAR_NAME]->(arzu),
(arzu2)-[:HAS_SIMILIAR_NAME]->(arzu3:Officer {name:"ARZU ILHAM QIZI ALIYEVA"}),
(arzu3)-[:IOO_SHAREHOLDER]->(exaltation),
(arzu)-[:IOO_BSD]->(exaltation),
(leyla)-[:IOO_BSD]->(exaltation),
(arzu)-[:IOO_BSD]->(kingsview),
(redgold:Company {name:"Redgold Estates Ltd"}),
(:Officer {name:"WILLY & MEYRS S.A."})-[:IOO_SHAREHOLDER]->(redgold),
(:Officer {name:"LONDEX RESOURCES S.A."})-[:IOO_SHAREHOLDER]->(redgold),
(:Officer {name:"FAGATE MINING CORPORATION"})-[:IOO_SHAREHOLDER]->(redgold),
(:Officer {name:"GLOBEX INTERNATIONAL LLP"})-[:IOO_SHAREHOLDER]->(redgold),
(:Client {name:"Associated Trustees"})-[:REGISTERED]->(redgold)
现在让我们使用 Cypher(Neo4j 的开放自然图查询语言)对这个数据集运行一些有趣的查询。
家庭参与
MATCH (o:Officer) WHERE toLower(o.name) CONTAINS "aliyev"
MATCH (o)-[r]-(c:Company)
RETURN o,r,c
显示家庭成员的共同公司参与
MATCH (o1:Officer)-[r1]->(c:Company)<-[r2]-(o2:Officer)
WITH o1.name AS first, o2.name AS second, count(*) AS c, collect({ name: c.name, kind1: type(r1), kind2:type(r2)}) AS involvements
WHERE c > 1 AND first < second
RETURN first, second, involvements, c
解决重复实体
MATCH (o:Officer)
RETURN toLower(split(o.name," ")[0]) as first_name, collect(o.name) as names, count(*) as count
通过姓名首字母和尾字母解决重复实体
MATCH (o:Officer)
WITH split(toLower(o.name), " ") AS name_parts, o
WITH name_parts[0] + " " + name_parts[-1] as name, collect(o.name) AS names, count(*) AS count
WHERE count > 1
RETURN name, names, count
ORDER BY count DESC
从莫萨克到该示例中官员的传递路径
MATCH path=(:Client {name: "Mossack Fonseca & Co (UK)"})-[rels*]-(o:Officer)
WHERE NONE(r in rels WHERE type(r)="HAS_SIMILIAR_NAME")
RETURN [n in nodes(path) | n.name] as hops, length(path)
两个人之间的最短路径
MATCH (a:Officer {name: "Mehriban Aliyeva"})
MATCH (b:Officer {name: "Arzu Aliyeva"})
MATCH p=allShortestPaths((a)-[*]-(b))
RETURN p
让我们看看如何进一步扩展这个模型。
合并重复项
创建一个人员节点,并将所有官员连接到该单个人员。重用我们从重复检测中得到的语句。
MATCH (o:Officer)
WITH split(toLower(o.name), " ") AS name_parts, o
WITH name_parts[0]+ " " + name_parts[-1] AS name, collect(o) AS officers
// originally natural people have a “citizenship” property
WHERE name CONTAINS "aliyev"
CREATE (p:Person { name:name })
FOREACH (o IN officers | CREATE (o)-[:IDENTIY]->(p))
在这些人之间引入家庭关系
CREATE (ilham:Person {name:"ilham aliyev"})
CREATE (heydar:Person {name:"heydar aliyev"})
WITH ilham, heydar
MATCH (mehriban:Person {name:"mehriban aliyeva"})
MATCH (leyla:Person {name:"leyla aliyeva"})
MATCH (arzu:Person {name:"arzu aliyeva"})
FOREACH (child in [leyla,arzu,heydar] | CREATE (ilham)-[:CHILD_OF]->(child) CREATE (mehriban)-[:CHILD_OF]->(child))
CREATE (leyla)-[:SIBLING_OF]->(arzu)
CREATE (leyla)-[:SIBLING_OF]->(heydar)
CREATE (arzu)-[:SIBLING_OF]->(heydar)
CREATE (ilham)-[:MARRIED_TO]->(mehriban)
家庭与公司的关系
MATCH (p:Person) WHERE p.name CONTAINS "aliyev"
OPTIONAL MATCH (c:Company)<--(o:Officer)-[:IDENTITY]-(p)
RETURN c,o,p
结论
这个 GraphGist 是由 Will Lyon 和 Michael Hunger 开发的,作为一篇关于使用图数据库进行新闻分析的技术文章的一部分。
此页面是否有帮助?