Связывание узлов определенного типа последовательно друг с другом на основе узла другого типа - PullRequest
0 голосов
/ 21 июня 2019

Я хочу связать все узлы (типа), связанные с узлом (отличным от предыдущих узлов), друг с другом. Я объясню это с помощью диаграммы. Ниже приведено фиктивное представление графика, который я создал: КОМАНДА:

// Movies are unique values in the dataset. 
LOAD CSV WITH HEADERS FROM "actors_movies.csv" AS dataset
CREATE (m:Movie{movie:dataset.name})
MERGE (a:Actor{name:dataset.actor})
MERGE (a)-[:ACTED{year:dataset.year}]->(m)

enter image description here

Я хочу, чтобы мой график выглядел следующим образом, где, если я сделаю запрос об актере, я смогу проследить все фильмы, в которых они снялись в серии:

enter image description here

Я запрашиваю запрос для создания графика, упомянутого выше.

1 Ответ

1 голос
/ 24 июня 2019

Хорошо, если вам нужно это только для графических результатов, для каждого отдельного запроса, то вы можете использовать виртуальные отношения через Процедуры APOC . Это позволит вам создать поддельные виртуальные отношения, которые на самом деле не существуют на графике, но могут быть визуализированы в представлении результатов графика. Имейте в виду, что они действуют только в течение срока действия запроса, они не будут сохранены на графике, вам нужно будет создавать виртуальные отношения с каждым запросом, где вы хотите их просматривать.

Вот пример, который работает для графика фильмов (из :play movies в браузере neo4j):

MATCH (k:Person{name:'Keanu Reeves'})-[:ACTED_IN]->(m:Movie)
WITH k, m
ORDER BY m.released ASC
WITH k, apoc.coll.pairsMin(collect(m)) as pairs // list of pairs of adjacent nodes
UNWIND pairs as pair
CALL apoc.create.vRelationship(pair[0], 'NEXT_MOVIE', {year:pair[1].released}, pair[1]) YIELD rel
RETURN k, pair[0] as m1, pair[1] as m2, rel

Имейте в виду, что если вы действительно хотите сохранить их на графике, вам понадобится путь через эти фильмы для каждого актера, поэтому создаваемые вами отношения должны иметь что-то вроде actorId свойства, таким образом, когда вам нужно соответствовать пути фильмов для актера, вам нужно убедиться, что все: отношения NEXT_MOVIE должны иметь идентификатор этого актера.

Это единственный способ, которым вы могли бы сделать это разумным способом, иначе вы не знали бы, какие отношения следует пересекать, поскольку вам нужно иметь контекст того, какие отношения принадлежат какому-либо действующему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...