从neo4j中的图形生成表格视图

时间:2018-01-18 22:08:16

标签: neo4j

我从this问题略微修改了以下图表。

我生成的图表是:

Generated graph

但我希望得到原始表格,该表格已经在html中插入或重新生成原始的Excel:

Original table

那么返回上面结果的neo4j查询是哪个?

1 个答案:

答案 0 :(得分:1)

您将无法出于两个原因。

一个方向是无法确定的。你有(使用速记)

(1,2)->(6,7)<-(3,2)
(6,7)->(9,2)->(5,1)
(7,7)->(4,1)->(1,2)
(6,7)->(7,7)->(3,2)

除非你的图表有错误,你可以看到(6,7)和(3,2)之间的关系与其余的不一致,所以我的猜测是你与关系方向不一致创建图形,如果是这样,这会在尝试生成表时抛出任何可能的排序。

但是如果我们假设这是合并到图表中的错误,并且它应该是(6,7) - &gt;(3,2),则修复了排序问题。

但现在还有其他订购问题。您的图表中没有数据来确定要从哪个节点开始。

仅此一行的图形结果:(7,7), (4,1), (1,2)也可以与(4,1), (1,2), (7,7)(1,2), (7,7), (4,1)一起表达。

您可能能够生成逻辑上等效的行,但您将无法获得相同的输入。

但同样,假设图表应该是(6,7) - &gt;(3,2),并假设逻辑上等效的表格没问题,那么这样的事情可能有效:

MATCH p=(a)-->(b)-->(c)-->(a)
UNWIND nodes(p) as node
WITH p, node
ORDER BY id(node)
WITH p, collect(node) as nodes
WITH head(collect(p)) as path, nodes
WITH path[0] as a, path[1] as b, path[2] as c
RETURN a.x as Xa, a.y as Ya, b.x as Xb, b.y as Yb, c.x as Xc, c.y as Yc

为什么这么复杂?因为对于三个节点的每个三角形,有3种方式来对这些节点进行排序(如上所述),因此每组相同节点将有3条路径。为了避免在不同的顺序中具有相同点的冗余行,我们在路径中对节点进行排序,收集3个路径,仅获取其中一个,并在返回x和y值时使用这些路径。