Связать "эквивалентные" узлы, используя Neo4j - PullRequest
0 голосов
/ 05 июня 2018

Признаюсь, что был новичком в Сайфер.Я пытаюсь построить графические медиа-газеты во Франции и США («Медиа как узел») с их политической ориентацией (другой узел).Отношение [: POLITICAL_ORIENTATION_IS] существует, и все в порядке.MATCH p = (m: Media) - [r: POLITICAL_ORIENTATION_IS] -> (o: PolitOrientation) Теперь, поскольку у этих Politorrientation разные названия, но некоторые из них эквивалентны между Францией и США, например, «левые» во Франции и «демократы США»в США я хотел бы создать эти отношения [: 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 голосов
/ 05 июня 2018

Этот запрос должен возвращать эквивалентные 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...