链接"等效"使用Neo4j的节点

时间:2018-06-05 17:46:50

标签: neo4j cypher

我承认自己是Cypher的新人。 我试图用他们的PoliticalOrientation(其他节点)在法国和美国(媒体作为节点)绘制媒体报纸。关系[:POLITICAL_ORIENTATION_IS]存在,一切都很好。     MATCH p =(m:Media) - [r:POLITICAL_ORIENTATION_IS] - >(o:PoliticalOrientation) 现在,由于这些政治方向有不同的名称,但有些在法国和美国之间是等价的,例如" Left"在法国和民主党美国"在美国,我想创建这种关系[:EQUIVALENT]并在图表上显示关系。 我被困在这里,没有显示那些[:EQUIVALENT]链接:

// custom relations in politics
CREATE (t:PoliticalOrientation { name:'Democrat US' })-[z:EQUIVALENT]->(u:PoliticalOrientation { name: 'Left' })
with t,z,u
MATCH (m:Media)-[:IS_LISTED_IN_CUSTOM_LISTS]->(p:CustomLists)
Match (m)-[:POLITICAL_ORIENTATION_IS]->(r:PoliticalOrientation)
MATCH zz=()-[rr:EQUIVALENT]->()
WHERE p.name CONTAINS "NEWS" AND NOT r.name = "None"
RETURN m,p,r,zz,rr

非常感谢任何帮助。提前致谢

1 个答案:

答案 0 :(得分:0)

此查询应返回等效的PoliticalOrientation个节点及其Media个节点:

MATCH (r:PoliticalOrientation)<-[:POLITICAL_ORIENTATION_IS]-(m:Media)-[:IS_LISTED_IN_CUSTOM_LISTS]->(p:CustomLists)
WHERE p.name CONTAINS "NEWS" AND r.name <> 'None'
WITH COLLECT(r) AS rs, COLLECT(m) AS ms
UNWIND RANGE(0, SIZE(rs)-1) AS i
WITH ms, rs, rs[i] AS r1, ms[i] AS m1
MATCH (r1)-[:EQUIVALENT]-(r2)
WHERE r2 IN rs
RETURN r1, m1, r2, [j IN RANGE(0, SIZE(rs)-1) WHERE rs[j] = r2 | ms[j]][0] AS m2