Exigences concernant le schéma de l'algorithme Spanner Graph et compatibilité des fonctionnalités

Exigences concernant le schéma

Les algorithmes Spanner Graph peuvent s'exécuter sur des graphiques dont les schémas répondent aux exigences suivantes :

Voici un exemple de schéma non compatible :

-- 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 (...)
  );

Voici un exemple de schéma compatible :

-- 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é des fonctionnalités

Cette section décrit la compatibilité des requêtes d'algorithme avec les fonctionnalités générales des graphiques.

Clause MATCH compatible

Lorsque vous utilisez la clause MATCH dans structure de requête d'algorithme pour définir le graphique d'entrée des algorithmes, vous devez tenir compte des points suivants :

  1. Chaque MATCH ne doit contenir qu'un seul modèle d'élément (nœud ou bord) avec une seule variable nommée.
  2. Lorsqu'un modèle de bord inclut des modèles explicites pour les nœuds de fin, n'utilisez pas de libellé ni de variable de nœud dans les modèles de nœud.
  3. Vous pouvez utiliser une clause WHERE dans le modèle d'élément si elle ne fait pas référence à des variables définies ailleurs.
  4. L'expression de libellé de la clause MATCH doit identifier de manière unique une table d'éléments.

Les exemples suivants illustrent les clauses MATCH compatibles :

-- 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]->

Les exemples suivants illustrent les clauses MATCH non compatibles :

-- 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)

Utiliser la clause RETURN

La clause RETURN de la structure de requête d'algorithme définit les données renvoyées par la requête d'algorithme. Vous pouvez faire référence à des colonnes de la signature de sortie de l'algorithme dans la clause RETURN, avec certaines contraintes :

  • Si un algorithme génère un nœud, vous pouvez renvoyer n'importe quelle propriété du nœud. Vous pouvez également renvoyer ELEMENT_DEFINITION_NAME du nœud.
  • Si un algorithme génère un chemin, vous pouvez renvoyer PATH_LENGTH(path).
  • Vous pouvez renvoyer n'importe quelle sortie scalaire de l'algorithme.
  • Vous pouvez renvoyer n'importe quelle constante littérale.

Les exemples suivants illustrent les clauses RETURN compatibles :

-- 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

Les exemples suivants illustrent les clauses RETURN non compatibles :

-- 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

Les paramètres ne sont pas compatibles

Les requêtes d'algorithme ne sont pas compatibles avec les paramètres de requête.

Compatibilité avec les graphiques créés à partir d'une vue

Lorsque vous créez votre graphique dans une vue, les requêtes d'algorithme ne sont compatibles que si les nœuds et les bords (y compris les nœuds de fin d'un bord) utilisés pour définir l'entrée de l'algorithme ne sont pas basés sur une vue.

Étape suivante