Requisiti dello schema
Gli algoritmi Spanner Graph possono essere eseguiti su grafici con schemi che soddisfano i seguenti requisiti:
- Una tabella di input edge deve essere intercalata nella tabella di input del nodo di origine e deve avere una chiave esterna o una chiave esterna informativa nella tabella di input del nodo di destinazione. Consulta le best practice per la progettazione di uno schema Spanner Graph.
- Ogni tabella di input dell'algoritmo del grafico deve avere un'etichetta identificativa univoca.
Di seguito è riportato un esempio di schema non supportato:
-- Unsupported: Both `Person` and `Account` can only be referred to via label `Entity`.
CREATE PROPERTY GRAPH FinGraph
NODE TABLES (
Person KEY (id)
LABEL Entity PROPERTIES (...),
Account KEY (id)
LABEL Entity PROPERTIES (...)
);
Di seguito è riportato un esempio di schema supportato:
-- Supported: Even though label `Entity` refers to both `Person` and `Account`,
-- label `Customer` uniquely identifies `Person`, label `Account` uniquely identifies `Account`.
CREATE PROPERTY GRAPH FinGraph
NODE TABLES (
Person KEY (id)
LABEL Customer PROPERTIES (...)
LABEL Entity PROPERTIES (...),
Account KEY (id)
LABEL Account PROPERTIES (...)
LABEL Entity PROPERTIES (...)
);
Compatibilità delle funzionalità
Questa sezione descrive la compatibilità delle query dell'algoritmo con le funzionalità generali del grafico.
Clausola MATCH supportata
Quando utilizzi la clausola MATCH nella struttura della query dell'algoritmo per definire il grafico di input per gli algoritmi, devi considerare quanto segue:
- Ogni
MATCHdeve contenere un solo pattern di elemento (nodo o arco) con una variabile denominata. - Quando un pattern edge include pattern espliciti per i nodi finali, non utilizzare un'etichetta nodo o una variabile nei pattern nodo.
- Puoi utilizzare una clausola
WHEREall'interno del pattern dell'elemento se non fa riferimento a variabili definite altrove. - L'espressione dell'etichetta nella clausola
MATCHdeve identificare in modo univoco una tabella degli elementi.
Gli esempi seguenti mostrano le clausole MATCH supportate:
-- Supported: Assuming only 1 element table has `Account` label:
MATCH (a:Account)
MATCH (a:Account WHERE a.id > 400)
MATCH (a:Account WHERE a.id IN [101, 102, 105])
MATCH -[e:Transfers WHERE e.amount < 500]->
I seguenti esempi mostrano clausole MATCH non supportate:
-- Unsupported: End nodes for edge patterns cannot have labels or named variables.
MATCH (a:Account)-[]->
-- Unsupported: Each MATCH can only name one variable.
MATCH (a:Account)-[e:Transfers]->
-- Unsupported: If there are multiple node element tables in the graph, each MATCH
-- must uniquely identify one element table.
MATCH (a)
-- Unsupported: The `Entity` label maps to both `Account` and `Person` node element tables.
MATCH (a:Account | Entity)
Utilizza la clausola RETURN
La clausola RETURN nella struttura della query dell'algoritmo definisce i dati restituiti dalla query dell'algoritmo. Puoi fare riferimento alle colonne della firma dell'output dell'algoritmo nella clausola RETURN, con alcuni vincoli:
- Se un algoritmo restituisce un nodo, puoi restituire qualsiasi proprietà del nodo. Puoi anche restituire ELEMENT_DEFINITION_NAME del nodo.
- Se un algoritmo restituisce un
percorso,
puoi restituire
PATH_LENGTH(path). - Puoi restituire qualsiasi output scalare dall'algoritmo.
- Puoi restituire qualsiasi costante letterale.
Gli esempi seguenti mostrano le clausole RETURN supportate:
-- Supported.
CALL PageRank(...) YIELD node, score
RETURN ELEMENT_DEFINITION_NAME(node) AS node_type, node.id, score
-- Supported: You can return constants.
CALL PageRank(...) YIELD node, score
RETURN node.id, score, "pagerank-run1" AS algo_run_id
-- Supported.
CALL ShortestPath(...) YIELD source_node, target_node, path, cost
RETURN source_node.id AS source_id, target_node.id AS target_id,
PATH_LENGTH(path) AS length, cost
I seguenti esempi mostrano clausole RETURN non supportate:
-- Unsupported: You cannot return the graph element `node` directly.
RETURN node, score
-- Unsupported: You can only return properties of `node`. Applying a function to a node property
-- is not supported.
RETURN node.id + 1, score
-- Unsupported: You can only return the scalar `score` directly from the algorithm output. Applying
-- a function to scalar output is not supported.
RETURN node.id, score + 1
-- Unsupported: General function calls are not allowed.
RETURN JSON_OBJECT(node.id, score) as json_obj
I parametri non sono supportati
Le query con algoritmo non supportano i parametri di query.
Supporto dei grafici creati da una visualizzazione
Quando crei il grafico in una vista, le query dell'algoritmo sono supportate solo se i nodi e gli archi (inclusi i nodi finali di un arco) utilizzati per definire l'input dell'algoritmo non si basano su una vista.
Passaggi successivi
- Esegui algoritmi Spanner Graph.
- Catalogo degli algoritmi di Spanner Graph.
- Best practice per l'algoritmo Spanner Graph.