Cypher запрос, чтобы найти узлы с общими свойствами, и сформулировать как ввод и вывод - PullRequest
0 голосов
/ 26 февраля 2019

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

(node1:Type1)<-[:Reference]-(node2:Type1)-[:Property]->(node3:Type1)<-[:Property]-(node4:Type1)-[:Reference]->(node5:Type1)

Узлы 2 и 4 представляют процессы с обменом данными между ними.Обмен данными представлен узлом 3 .Узлы 1 и 5 представляют инструменты, в которых выполняются эти процессы.Моя идеальная ситуация - иметь таблицу со столбцами

 node1.name | node2.name | node3.name | node4.name | node5.name

, позволяющую мне просматривать входы / выходы моих процессов и какие инструменты выполняют эти процессы, эффективно оценивая интерфейсы.Тем не менее, запросы, которые я использую, вызывают дубликаты в строках таблиц, поскольку они читают «спереди назад», а также «спереди назад».Есть ли способ отделить каждый «шаг» пути и создать столбец для каждого шага (возможно, по направлению отношений)?Существуют также случаи, когда существует более одного «инструмента» (node 1 or 5), в котором эти процессы выполняются, поэтому для каждого (многие к одному, один к одному, один ко многим, многие ко многим) будет идеально.Наконец, есть случаи, когда процесс (nodes 2 and 4) может иметь больше, чем просто одно отношение.Я хотел бы иметь возможность показать все интерфейсы процесса.

Любая помощь очень ценится.Заранее спасибо за ваше время.

1 Ответ

0 голосов
/ 26 февраля 2019

Чтобы исправить проблему зеркальных результатов, полезно использовать предикат неравенства для идентификаторов узлов, чтобы обеспечить единый результат: WHERE id(node1) < id(node5)

Что касается отображения всех возможных путей, то именно это и делает Cypher,поэтому вы должны увидеть все возможные пути, которые соответствуют шаблону.

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