通过图形化方式探索ICIJ离岸司法管辖区数据
简化数据模型
简化的 ICIJ 数据模型包含三种节点类型:Entity
节点、Location
节点和 Jurisdiction
节点,它们通过七种关系类型链接在一起。

一个 Entity
可以是自然人、组织或法人实体,它与其他实体相关联,作为其他实体的OFFICER、其他实体的CLIENT或作为相关实体(例如,两个子公司)。OFFICER 和 CLIENT 关系都具有子类型,这些子类型由边上的“type”属性表示(例如,“Shareholder”、“Beneficial Owner”等),并且可以具有表示关系持续时间的“start”和“end”属性。
Entity
通过 LOCATED
关系与地理位置 Location
相关联,该关系基于非标准化的地址字符串。此 Location
可以与另一个 Location
具有双向 COLLOCATED
关系,表明虽然地址字符串不同,但地理位置相同。例如,两个实体可能位于同一栋建筑物中,但使用不同的邮政地址。
每个位置都 PARTOF
一个 Jurisdiction
,该 Jurisdiction
可以是国家,也可以是 PARTOF
更大司法管辖区/国家的某种程度上独立的次国家领土单位。鉴于离岸网络的结构,在数据模型中做出这种区分非常重要。最受欢迎的司法管辖区既不是国家等成熟的大型司法管辖区,也不是可能不稳定的独立的小型领土,而是介于两者之间:在某种程度上拥有司法和财政自主权的半独立领土。这类领土的例子包括英属皇家属地,如泽西岛或根西岛.
除了地理位置外,Entity
还通过 INJURD 关系(“在司法管辖区内”)与司法管辖区相关联,表明它们对该司法管辖区负有税务义务。
选定的示例数据包含 13 个 Entity
、4 个 Jurisdiction
和 5 个 Location
,它们通过 36 种关系相关联。
初始数据设置
我们使用一组 Cypher CREATE
语句加载示例数据。所有节点上都包含标识符属性,这使得在 ICIJ 在线数据库中轻松查找成为可能(只需更改链接中的尾随数字)。
下面的图形提供了第一个概述,节点表示 Entity
,绿色表示 Location
,橙色表示 Jurisdiction
。
基本描述性查询
列出节点特征
MATCH (e:Entity)
OPTIONAL MATCH (e)-[:LOCATED]->(location)-[:PARTOF]->(jurisdiction)
OPTIONAL MATCH (jurisdiction)-[:PARTOF]->(main_jurdisdiction)
RETURN e.label AS Entity, e.type AS Type, e.status AS Status, e.incorporated AS Incorporated, jurisdiction.label AS Jurisdiction, main_jurdisdiction.label AS `Main Jurisdiction`
第一个描述性查询提供了所包含实体的概述:法律类型、活动状态、成立日期以及它们所在的司法管辖区。在查询中,我们区分直接司法管辖区和主要司法管辖区:如果司法管辖区与另一个司法管辖区具有 PARTOF
关系,则后者也会显示为“主要司法管辖区”。
这在结果表中立即变得明显:虽然 Sefren Trust 等离岸实体直接在新加坡等国家注册,但 CorpShare Ltd 等实体在纳闽注册,纳闽是马来西亚的一个联邦领土,被积极地推销为离岸金融中心。
列出边特征
MATCH (e1:Entity)-[r:CLIENT|:OFFICER]->(e2:Entity)
RETURN e2.label AS `Entity 1`, r.type AS `is a ... of`, e1.label AS `Entity 2`, r.start AS Since
第二个描述性查询向我们展示了示例数据集中存在的 CLIENT 和 OFFICER 关系类型。请注意,法国最大的零售银行集团 农业信贷银行 的存在,它是总部位于安特卫普的企业家 Luscha Baumwald 管理的总部位于新加坡的 Sefren Trust 的客户。
探索隐藏的关系
当我们对实体之间复杂的关系感兴趣时,图数据库和查询语言的强大功能变得更加明显,这在传统数据库中需要要求苛刻的 JOIN
。
我们应该检查 7½ 层的公司吗?
当寻找可能乍一看并不明显的关系时,我们可以查看正式共享相同 Location
的实体。但是,这可能会忽略关系,因为位置是在非标准化的地址字符串上匹配的,例如,不同的邮箱意味着没有正式关系。
下面介绍了一个更具包容性的查询示例。我们从一个选定的实体开始,即离岸实体 Gurker Sdn Bhd,并使用第一个 MATCH
和 WITH
语句选择其注册位置。在第二个 MATCH
语句中,我们查询所有 (1) 注册在相同位置(相同地址)上的实体,以及注册在与我们的起始实体的地址共址的位置上的实体。
虽然 Sherper Sdn Bhd、CorpDirect Ltd、CorpSec Ltd 和 CorpShare Ltd 共享 Gurker Sdn Bhd 的地址,但我们发现了一个额外的共址实体:Portcullis TrustNet (Labuan) Limited。第一组实体注册在 6 层,而第二组实体注册在同一建筑物的 7 层。
MATCH (gurker:Entity { label : 'Gurker Sdn Bhd' })-[:LOCATED]->(location)
WITH location
MATCH (l_entity:Entity)-[:LOCATED]->(location)<-[:COLLOCATED]-(colocation)<-[:LOCATED]-(colo_entity:Entity)
RETURN l_entity.label AS `Same location`, location.label AS `Gurker Address`, colo_entity.label AS `Collocated`, colocation.label AS `Collocated Address`
两个比利时人走进一个离岸司法管辖区…
此查询将返回位于比利时的所有 Entity
。
MATCH (e:Entity)-[:LOCATED]->(location)-[:PARTOF]->(:Jurisdiction { label : 'Belgium' })
RETURN e.label AS Label, location.label AS Location
返回的两个实体是居住在比利时安特卫普的个人。一个更有趣的后继查询是确定这两个个人在离岸实体图中是否存在关系。
为了回答这个问题,我们使用内置的 `shortestPath` 函数。我们指定了要建立路径的两个节点,并指定了最短路径算法可能遵循的关系类型。我们明确地感兴趣的是客户/管理人员链接、共享/共址地址、相关实体关系等。通过指定这些内容,我们也排除了跨越司法管辖区的路径(`PARTOF`)——否则比利时的共享司法管辖区当然会是最短路径。
MATCH (baumwald:Entity { label:"Luscha Baumwald" }),(bossaerts:Entity { label:"Christiaan W Bossaerts" }), p = shortestPath((baumwald)-[:LOCATED|:CLIENT|:OFFICER|:RELATED|:COLLOCATED*]-(bossaerts))
RETURN p AS `Shortest Path Baumwald-Bossaerts`
查询返回一个结果,表明这两个比利时实体之间存在链接。下图由在 Neo4j 2.0 本地 Web 界面中运行相同查询生成,提供了更易于理解的视图。
路径由 Portcullis TrustNet (Labuan) Limited 和 Portcullis Trust (Singapore) Limited 之间的 `RELATED` 路径完成。这些是 Portcullis TrustNet 的区域分支机构,是几十家 离岸服务提供商 之一,也是大量泄露的 ICIJ 数据的来源。像 Portcullis TrustNet 这样的主要服务公司——该行业中最大的公司之一——提供的服务是确保姓名、财务、商业利益和政治联系保持隐藏。

后记
这类应用程序的真正价值当然不在于巧妙的查询,而在于它在多大程度上可以帮助调查记者和数据记者在如此庞大的数据集里进行搜索。这篇 GraphGist 专注于对公开的 ICIJ 数据集进行建模和查询的技术方面,而不是结果本身。然而,即使是(从比利时子集中随机选取的)示例数据也展示了这类应用程序在数据新闻方面的潜力。两点评论
公开搜索显示,克里斯蒂安·博萨尔茨是 比利时驻印度尼西亚名誉总领事。名誉领事馆通常授予在代表国有良好关系的人,尤其是在商业联系方面。一位名誉领事与臭名昭著的离岸管辖区(如拉布安)中的实体有关联,可能是文章的有趣起点。
这个页面有帮助吗?