Requisiti dello schema dell'algoritmo di Spanner Graph e compatibilità delle funzionalità

Requisiti dello schema

Gli algoritmi Spanner Graph possono essere eseguiti su grafici con schemi che soddisfano i seguenti requisiti:

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:

  1. Ogni MATCH deve contenere un solo pattern di elemento (nodo o arco) con una variabile denominata.
  2. Quando un pattern edge include pattern espliciti per i nodi finali, non utilizzare un'etichetta nodo o una variabile nei pattern nodo.
  3. Puoi utilizzare una clausola WHERE all'interno del pattern dell'elemento se non fa riferimento a variabili definite altrove.
  4. L'espressione dell'etichetta nella clausola MATCH deve 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