Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La any() funzione graph valuta una condizione per ogni bordo o nodo interno lungo un percorso di lunghezza variabile .
Nota
Questa funzione viene usata con gli operatori graph-match e graph-shortest-paths .
Sintassi
any(
bordo,condizione)
any(inner_nodes(
bordo),condizione)
Parametri
| Nome | TIPO | Obbligatorio | Descrizione |
|---|---|---|---|
| bordo | string |
✔️ | Bordo di lunghezza variabile dall'operatore graph-match o dal modello di operatore graph-shortest-paths . Per altre informazioni, vedere Notazione del modello a grafo. |
| condizione | string |
✔️ | Espressione booleana composta da proprietà del nodo interno o del bordo, quando viene usata inner_nodes, nel bordo di lunghezza variabile. Viene fatto riferimento a una proprietà usando direttamente il nome della proprietà. L'espressione viene valutata per ogni bordo o nodo interno nel bordo della lunghezza variabile. |
Restituzioni
Restituisce true se la condizione restituisce true almeno un bordo o un nodo interno, quando viene utilizzata inner_nodes , nel bordo della lunghezza variabile. In caso contrario, restituisce false.
Per i percorsi di lunghezza zero, la condizione restituisce false.
Esempi
Nell'esempio seguente vengono usate le Locations tabelle di dati e Routes per costruire un grafo che trova i percorsi da una posizione di origine a una posizione di destinazione tramite un oggetto route.
any() Usa la funzione per trovare percorsi che utilizzano "Train" il metodo di trasporto almeno una volta. Restituisce il nome della posizione di origine, il nome della posizione di destinazione e i metodi di trasporto lungo il percorso.
// Locations table (nodes)
let Locations = datatable(LocationName: string, LocationType: string) [
"New York", "City",
"San Francisco", "City",
"Chicago", "City",
"Los Angeles", "City",
"Seattle", "Warehouse"
];
// Routes table (edges)
let Routes = datatable(OriginLocationID: string, DestinationLocationID: string, TransportMode: string) [
"New York", "San Francisco", "Truck",
"New York", "Chicago", "Train",
"San Francisco", "Los Angeles", "Truck",
"Chicago", "Seattle", "Train",
"Los Angeles", "New York", "Truck",
"Seattle", "San Francisco", "Train"
];
Routes
| make-graph OriginLocationID --> DestinationLocationID with Locations on LocationName
| graph-match (src)-[route*1..2]->(dest)
where any(route, TransportMode == "Train")
project src.LocationName,
dest.LocationName,
route_TransportModes = map(route, TransportMode)
Risultato
| src_LocationName | dest_LocationName | route_TransportModes |
|---|---|---|
| Seattle | San Francisco | ["Train"] |
| Chicago | Seattle | ["Train"] |
| New York | Chicago | ["Train"] |
| Seattle | Los Angeles | [ "Train", "Camion" ] |
| Chicago | San Francisco | [ "Train", "Train" ] |
| New York | Seattle | [ "Train", "Train" ] |
| Los Angeles | Chicago | [ "Truck", "Train" ] |
Nell'esempio seguente viene illustrato come usare l'operatore graph-shortest-paths con le any() funzioni e inner_nodes per trovare un percorso tra due stazioni in una rete di trasporto. La query costruisce un grafico dai connections dati e trova il percorso più breve dalla "South-West" stazione alla "North" stazione, passando attraverso almeno una stazione in cui è disponibile Wi-Fi.
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-match cycles=none (start)-[connections*2..5]->(destination)
where start.station == "South-West" and
destination.station == "North" and
any(inner_nodes(connections), wifi)
project from = start.station,
stations = strcat_array(map(inner_nodes(connections), station), "->"),
to = destination.station
Risultato
| Da | Stazioni | a |
|---|---|---|
| South-West | Centro-sud> | A nord |
| South-West | Centro-ovest> | A nord |