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 map() funzione grafico calcola un'espressione per ogni bordo o nodo interno lungo un percorso di lunghezza variabile e restituisce una matrice dinamica di tutti i risultati.
Annotazioni
Questa funzione viene usata con gli operatori graph-match e graph-shortest-paths .
Sintassi
map(*edge*, *expression*)'
map(inner_nodes(
bordo),espressione)
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. |
| di espressione | string |
✔️ | Calcolo da eseguire sulle proprietà del bordo o del nodo interno, quando viene usato inner_nodes , nel bordo della 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
Matrice dinamica in cui:
- La lunghezza della matrice corrisponde al numero di bordi o nodi interni, quando viene usata inner_nodes , nel bordo di lunghezza variabile.
- La matrice è vuota per i percorsi di lunghezza zero.
- Ogni elemento della matrice corrisponde ai risultati dell'applicazione dell'espressione a ogni bordo o nodo interno nel bordo della lunghezza variabile.
Esempi
Negli esempi di questa sezione viene illustrato come usare la sintassi per iniziare.
Trovare la stazione e la linea per il percorso più breve tra due stazioni
Nell'esempio seguente viene illustrato come usare l'operatore graph-shortest-paths per trovare il percorso più breve tra le "South-West" stazioni e "North" in una rete di trasporto. Aggiunge informazioni sulla riga al percorso usando la map() funzione . La query costruisce un grafico dai connections dati, considerando i percorsi fino a cinque connessioni lunghe.
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-shortest-paths (start)-[connections*1..5]->(destination)
where start.station == "South-West" and destination.station == "North"
project from = start.station, path = map(connections, strcat(to_station, " (", line, ")")), to = destination.station
Risultato
| da | sentiero | a |
|---|---|---|
| South-West | [ "Sud (rosso)", "Centrale (rosso)", "Nord (rosso)" ] |
A nord |
Ottenere l'elenco delle fermate con Wi-Fi in tutte le rotte tra due stazioni
Nell'esempio seguente viene illustrato come usare l'operatore graph-match con le all() funzioni e inner_nodes per trovare tutte le fermate con Wi-Fi lungo tutte le rotte tra due stazioni in una rete di trasporto.
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*1..5]->(destination)
where start.station == "South-West" and destination.station == "East"
project stopovers = strcat_array(map(inner_nodes(connections), station), "->"),
stopovers_with_wifi = set_intersect(map(inner_nodes(connections), station), map(inner_nodes(connections), iff(wifi, station, "")))
Risultato
| Scali | stopovers_with_wifi |
|---|---|
| Centro-ovest> | [ "West", "Central"] |
| Centro-sud> | [ "Central"] |