В Cypher вы получите ряды результатов в зависимости от всех возможных путей, которые соответствуют шаблону.В вашем случае были найдены два пути, которые соответствуют шаблону, но оба они имеют одинаковый узел sti, поэтому вы видите, что он появляется дважды.Это по замыслу.Результаты не группируются неявно, вам нужно сделать это самостоятельно, используя функции агрегирования.
Если вы хотите собирать узлы cti для каждого отдельного узла sti, вам нужно будет выполнить метод collect () следующим образом:
MATCH (sti:SingleTaskInstance) <- [:CONTAINS] - (cti:CollaborativeTaskInstance {cti_id: "RD1CT"}) - [:CONTAINS] -> (cti2:CollaborativeTaskInstance)
RETURN sti, collect(DISTINCT cti2)
Мы собираем отдельные узлы cti2 на тот случай, если узел cti2 доступен несколькими узлами cti (в противном случае он может появиться несколько раз).Когда вы агрегируете, переменные не агрегации становятся разными, поэтому вы получаете разные узлы sti благодаря агрегации.