Zapytanie Cyphera: znajdowanie wszystkich ścieżek między dwoma węzłami filtrowanymi według właściwości relacji
Mam następujący wykres jako bazę danych wykresu Neo4j:
activates
(80 °F)
(A)------------------------------------->(D)
| \__ _/->^
| \__ activates __/ |
| \__(50 °F) __/ |
| \__ __/ |
| \__ __/ |
activates | \__ __/ |
(50 °F) | \/ | activates
| __/\__ | (50 °F)
| activates __/ \__ |
| (60 °F)__/ \__ |
| __/ \__ |
| __/ \__ |
| __/ \_ |
v / \->|
(B)------------------------------------->(C)
activates
(50 °F)
Każda relacja ma właściwość oznaczającą wymaganą temperaturę dla akcji „aktywowanej”.
Muszę odzyskaćwszystkie dostępne ścieżki między (A) a (D)GDZIE temperatura wzdłuż ścieżki wynosi 50 ° F.
Wynik powinien zawierać:
A -[:activates{temperature:'50'}]-> B -[:activates{temperature:'50'}]-> C -[:activates{temperature:'50'}]-> D
A -[:activates{temperature:'50'}]-> C -[:activates{temperature:'50'}]-> D
ale nie
A -[:activates{temperature:'80'}]-> D
A -[:activates{temperature:'50'}]-> B -[:activates{temperature:'60'}]-> D
Jak napisać wymagane zapytanie Cypher?
Z góry dziękuję.
Edytuj 1: Dodałem kolejną relację ukośną (B - [: aktywuje {temperatura: '80 '}] -> D) dla większej przejrzystości.
Edytuj 2: Muszę odzyskaćwszystkie dostępne ścieżki między (A) a (D)GDZIE temperatura jestto samo wzdłuż ścieżki, tj .: A -> B -> C -> D, A -> C -> D, A -> D.