返回与路径相关的子图

fafcakar  于 2022-10-01  发布在  其他
关注(0)|答案(2)|浏览(147)
(y1:Y) 
                     ^
                     |
(a1:A) -> (b1:B) -> (c1:C) 
                       ^
                       |
                    (s1:S)
                       ^
                       |
                    (z1:Z)    

                    (e1:E)
                     ^
                     |
                    (d1:D)
                     ^
                     |
(a2:A) -> (b2:B) -> (c2:C) -> (y2:Y) 
                       ^
                       |
                    (s2:S)
                       ^
                       |
                    (z2:Z)    

(a3:A) -> (b3:B) -> (c3:C) 
                       ^
                       |
                    (s3:S)
                       ^
                       |   
                    (z3:Z)  (z4:Z)

我想找到节点标签A和C之间的路径,并得到节点标签Y和节点标签D,E,如果这些装饰节点存在的话。我还总是需要提取装饰S节点的Z节点,该节点装饰C节点。有多个Z类型节点可以修饰S节点,所以我提取了Z节点作为列表。

所以我可以使用这个查询

MATCH p=((:A)-[*]->(c:C)), (c)<--(:S)<--(z:Z)
WITH p, z, 
     HEAD([(c)--(y:Y) | y ])  AS yDecoration,
     [(c)-[*]->(d:D)-[*]->(e:E) | [d,e]] AS deDecoration
RETURN p, yDecoration, deDecoration, collect(z) as zDecoration

但是,如果我只想返回子图,而不是在返回中分别拆分节点y,d,e怎么办?例如,在上面的例子中,我的返回将只是三个子图。每个子图包含路径A->C和路径节点之间的节点、边关系、Y和D/E,因此如果以后需要的话,不需要重建该图。

// need a cypher query statement 
RETURN subgraph, zDecoration
e5nszbig

e5nszbig1#

您可以使用变量路径[*0..]为了将节点连接到C,零意味着C可以没有连接的节点(如C3)。

MATCH subgraph=((:A)-[*]->(c:C)-[*0..]->()), (c)<--(:S)<--(z:Z)
RETURN subgraph, collect(z) as zDecoration

结果:

vmdwslir

vmdwslir2#

这可能不是最好的方法,但这会有帮助吗:

MATCH subgraph=((:A)-[*]->(c:C)-[*]->(:Y)) 
OPTIONAL MATCH (c)<-[*]-(:S)<-[:R]-(z:Z)
WITH subgraph, collect(z) AS zdecoration
RETURN subgraph, zdecoration
UNION ALL
MATCH subgraph=((:A)-[*]->(c:C)-[*]->(:D)-[*]->(:E))
OPTIONAL MATCH (c)<-[*]-(:S)<-[:*]-(z:Z)
WITH subgraph, collect(z) AS zdecoration
RETURN subgraph, zdecoration
UNION ALL
MATCH subgraph=((:A)-[*]->(c:C))
OPTIONAL MATCH (c)<-[*]-(:S)<-[:R]-(z:Z)
WITH subgraph, collect(z) AS zdecoration
RETURN subgraph, zdecoration

相关问题