Создайте запрос, который возвращает только подмножество всего графа в Cypher

У меня есть набор данных исторических людей, которые были связаны с событиями (например, крещениями или браками) или источниками (например, завещаниями), которые, в свою очередь, связаны с другими людьми и конкретной Церковью, в которой произошло событие. Я могу создать обзор непосредственной сети данного человека с помощью этого запроса:

MATCH (p:person {ID: 'TRE_person_0281'})-[r*1..**2**]-(n) RETURN p, r, n

Это возвращает следующий результат: Результат запроса

В идеале я хотел бы видеть немного более широкую сеть, а именно другие события / источники, с которыми эти люди также связаны (и люди и церкви, связанные с этими событиями / источниками, тоже). Однако использование следующего запроса создает огромный график, поскольку он показывает все события, связанные с церквями (которых было много):

MATCH (p:person {ID: 'TRE_person_0281'})-[r*1..**3**]-(n) RETURN p, r, n

Поэтому мой вопрос заключается в том, как создать запрос, который показывает узлы, связанные с событиями, с которыми были связаны люди, которые были напрямую связаны с событиями, с которыми был связан человек 'TRE_person_0281'.

Всего 1 ответ


Это показывает одну из преимуществ использования графа DB с Cypher.

Ваша фраза « узлы, связанные с событиями, с которыми были связаны люди, которые были напрямую связаны с событиями, с которыми был связан человек « TRE_person_0281 »), легко преобразуется в эквивалентный запрос Cypher:

MATCH p = ()--(:event)--(:person)--(:event)--(:person {ID: 'TRE_person_0281'})
RETURN p

Есть идеи?

10000