У меня есть следующий график: График
Я хотел бы получить путь от Label_1 до Label_5, который не следует предварительно определенному шаблону. В частности, я хотел бы получить путь, который не следует шаблону: Label_1 -> Label_2 -> Label_3 -> Label_4 -> Label_5
Как видно на графике, нижняя ветвь (после Label_1) следует этому шаблону, а верхняя ветвь - не следует этому шаблону, так как у нас есть Label_1 -> Label_2 -> Label_4 -> Label_5
Это означает, что я ищу запрос, который вернул бы: Label_1 -> Label_2 -> Label_4 -> Label_5
Я пробовал следующий запрос, но этот не возвращает любой результат.
MATCH p=(e1n:Label_1)-[*]->(e2:Label_5)
WHERE NOT (:Label_1)-->(:Label_2)-->(:Label_3)-->(:Label_4)-->(:Label_5)
RETURN p
Поскольку я новичок в Neo4j и Cypher, я хотел бы спросить, как я могу написать такой запрос и почему мой подход с WHERE NOT не работает.
Для создания я использовал следующие команды создания:
CREATE (a:Label_1 {name: "Label_1"})
CREATE (b:Label_2 {name: "Label_2"})
CREATE (c:Label_2 {name: "Label_2"})
CREATE (d:Label_3 {name: "Label_3"})
CREATE (e:Label_4 {name: "Label_4"})
CREATE (f:Label_5 {name: "Label_5"})
CREATE (a)-[:FOLLOWS]->(b)
CREATE (a)-[:FOLLOWS]->(c)
CREATE (b)-[:FOLLOWS]->(d)
CREATE (c)-[:FOLLOWS]->(e)
CREATE (d)-[:FOLLOWS]->(e)
CREATE (e)-[:FOLLOWS]->(f)