Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die all() Diagrammfunktion wertet eine Bedingung für jeden Rand oder inneren Knoten entlang eines Pfads mit variabler Länge aus.
Hinweis
Diese Funktion wird mit den Operatoren "graph-match " und " graph-shortest"-Pfade verwendet.
Syntax
all(
Rand,Zustand)
all(inner_nodes(
Rand),Zustand)
Die Parameter
| Name | Typ | Erforderlich | BESCHREIBUNG |
|---|---|---|---|
| Rand | string |
✔️ | Ein Rand mit variabler Länge vom Operator für Diagramm-Übereinstimmungen oder vom Operatormuster "Graph-shortest-paths" . Weitere Informationen finden Sie unter Graph-Musternotation. |
| Bedingung | string |
✔️ | Ein boolescher Ausdruck, der aus Eigenschaften des Rands oder inneren Knotens besteht, wenn inner_nodes verwendet wird, im Rand der variablen Länge. Auf eine Eigenschaft wird direkt mithilfe des Eigenschaftennamens verwiesen. Der Ausdruck wird für jeden Rand oder inneren Knoten am Rand der variablen Länge ausgewertet. |
Rückkehr
Gibt zurücktrue, wenn die Bedingung für jeden true oder inneren Knoten ausgewertet wird, wenn inner_nodes verwendet wird, im Rand der variablen Länge. Andernfalls wird falsezurückgegeben.
Bei Pfaden der Länge null wird die Bedingung ausgewertet.true
Beispiele
Das folgende Beispiel zeigt, wie sie den graph-match Betreiber mit der all() Funktion verwenden können, um alle Roundtrippfade zwischen zwei Stationen in einem Verkehrsnetz zu finden. Für jede Richtung wird eine andere Linie verwendet. Die Abfrage erstellt ein Diagramm aus den connections Daten, sucht nach allen Pfaden bis zu fünf Verbindungen, die die "red" Linie für die nach außen gerichtete Route verwenden, und die "blue" Zeile für die Rückgaberoute. Die all() Funktion stellt sicher, dass alle Kanten am Rand der variablen Länge Teil derselben Linie sind, entweder "red" oder "blue".
let connections = datatable(from_station:string, to_station:string, line:string)
[
"Central", "North", "red",
"North", "Central", "red",
"Central", "South", "red",
"South", "Central", "red",
"South", "South-West", "red",
"South-West", "South", "red",
"South-West", "West", "red",
"West", "South-West", "red",
"Central", "East", "blue",
"East", "Central", "blue",
"Central", "West", "blue",
"West", "Central", "blue",
];
connections
| make-graph from_station --> to_station with_node_id=station
| graph-match (start)-[outward*1..5]->(destination)-[return*1..5]->(start)
where start.station != destination.station and
all(outward, line == "red") and
all(return, line == "blue")
project from = start.station,
outward_stations = strcat_array(map(inner_nodes(outward), station), "->"),
to = destination.station,
return_stations = strcat_array(map(inner_nodes(return), station), "->"),
back=start.station
Ausgabe
| Von | outward_stations | zu | return_stations | Zurück |
|---|---|---|---|---|
| Zentral | Nord-Mittel-Süd>>->South-West | Westen | Zentral | |
| Westen | Süd-West-Süd-Mittel-Nord>>> | Zentral | Westen | |
| Zentral | Süd->South-West | Westen | Zentral | |
| Westen | Süd-West-Süd> | Zentral | Westen | |
| Zentral | Nord-Mittel-Süd>>->South-West | Westen | Zentral-Ost> | Zentral |
| Westen | Süd-West-Süd-Mittel-Nord>>> | Zentral | Ost-Zentral> | Westen |
| Zentral | Süd->South-West | Westen | Zentral-Ost> | Zentral |
| Westen | Süd-West-Süd> | Zentral | Ost-Zentral> | Westen |
Das folgende Beispiel zeigt, wie sie den graph-shortest-paths Betreiber mit den all() Funktionen inner_nodes verwenden können, um einen Weg zwischen zwei Stationen in einem Verkehrsnetz zu finden. Die Abfrage erstellt ein Diagramm aus den connections Daten und findet den kürzesten Weg vom "South-West" Bahnhof zur Station und "North" durchläuft Stationen, in denen Wi-Fi verfügbar ist.
let connections = datatable(from_station:string, to_station:string, line:string)
[
"Central", "North", "red",
"North", "Central", "red",
"Central", "South", "red",
"South", "Central", "red",
"South", "South-West", "red",
"South-West", "South", "red",
"South-West", "West", "red",
"West", "South-West", "red",
"Central", "East", "blue",
"East", "Central", "blue",
"Central", "West", "blue",
"West", "Central", "blue",
];
let stations = datatable(station:string, wifi: bool)
[
"Central", true,
"North", false,
"South", false,
"South-West", true,
"West", true,
"East", false
];
connections
| make-graph from_station --> to_station with stations on station
| graph-shortest-paths (start)-[connections*2..5]->(destination)
where start.station == "South-West" and
destination.station == "North" and
all(inner_nodes(connections), wifi)
project from = start.station,
stations = strcat_array(map(inner_nodes(connections), station), "->"),
to = destination.station
Ausgabe
| Von | Bahnhöfe | zu |
|---|---|---|
| Sud-Ouest | West-Zentral> | Nord |