Генерация списка ребер в neo4j из пути переменной длины - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь создать список ребер для чтения в R-фрейм данных для использования в пакете vizNetwork.В самом простом формате это должна быть таблица с двумя столбцами «from» и «to».

В консоль neo4j , запрос по умолчанию, который появляется довольноМногое иллюстрирует тип запроса, в котором я пытаюсь выполнить, указывается начальная точка, тогда результирующая цепочка - это интересующий меня график.

Запущенный запрос - match (n:Crew)-[r:KNOWS*]-(m) where n.name='Neo' return n as Neo,r,m, и это возвращаетграфик, показывающий цепочку отношений, а также таблицу, которую я включил ниже.

Neo                   r                                                            m
(0:Crew {name:"Neo"}) [(0)-[0:KNOWS]->(1)]                                         (1:Crew {name:"Morpheus"})
(0:Crew {name:"Neo"}) [(0)-[0:KNOWS]->(1), (1)-[2:KNOWS]->(2)]                     (2:Crew {name:"Trinity"})
(0:Crew {name:"Neo"}) [(0)-[0:KNOWS]->(1), (1)-[3:KNOWS]->(3)]                     (3:Crew:Matrix {name:"Cypher"})
(0:Crew {name:"Neo"}) [(0)-[0:KNOWS]->(1), (1)-[3:KNOWS]->(3), (3)-[4:KNOWS]->(4)] (4:Matrix {name:"Agent Smith"})

Таблица не содержит ребер в очень "резком" формате.Как я могу заставить этот график отношений возвращать результаты в следующем формате ...

from         to
Neo          Morpheus
Morpheus     Trinity
Morpheus     Cypher
Cypher       Agent Smith

Николь Уайт написала руководство по интеграции rneo4j и vizNetwork , но это основывалось на создании списка узловсначала, ссылаясь на идентификаторы результирующего списка в качестве параметра в запросе списка ребер.Я надеялся получить метод «чистого шифра», если это возможно.

1 Ответ

0 голосов
/ 30 мая 2018

Каждая строка, которую вы хотите вернуть, имеет 1 ребро.Таким образом, чтобы получить желаемый результат, просто сопоставьте по краю, и Neo4j создаст строку для каждого допустимого вхождения этого шаблона.

MATCH (from)-[:KNOWS]->(to)
RETURN from.name as from, to.name as to

Вы можете отфильтровать это, используя сопоставление с шаблоном WHERE, например

MATCH (from)-[:KNOWS]->(to)
WHERE (:Person {name:"Neo"})-[:KNOWS*..25]->(from)
RETURN from.name as from, to.name as to
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...