如何在cypher / neo4j

时间:2017-08-06 17:35:57

标签: neo4j cypher

我有一份公司名单和所有权关系,每种关系都有一些所有权变量。基本的密码模式如下所示:

(c:Company)-[:INVESTS_IN {pct:25}]->(oc:Company)

......其中c是拥有公司,拥有自有公司oc的25%。

在公司间投资中,任何低于20%的投资都被视为相对不重要,20%至50%之间的投资被认为对自有公司有一定影响,任何超过50%的投资都意味着拥有公司控制着自有公司(现在称为子公司)。

我想找出其他公司控制或影响的公司。简单的密码就是:

match (c:Company)-[rels:INVESTS_IN*..]->(oc:Company)
where ALL (rel in rels WHERE rel.pct > 20)
return c.name, oc.name, extract(x in rels| x.pct) as pcts

但这很笨拙。现在我想寻找更多隐藏的所有权,例如:A公司拥有公司X的10%,以及公司B,C,D和E的50%或更多,并且每家公司拥有公司X的12%。如果A公司通过其所有子公司控制权,则所有这些都会增加A公司在X公司的控股权(50%以上)。

我需要一种方法来识别公司之间的所有权关系并总结所拥有公司的最终传入pct值(oc),但前提是c和oc之间的链都具有50或更多的pct值,直到最后一个关系。因此,我需要根据pct过滤关系,然后从路径中的最后一个链接创建一个所有权变量。

任何指针或想法都非常感激。

0 个答案:

没有答案