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 :
- Une table d'entrée de bord doit être entrelacée dans sa table d'entrée de nœud source et comporter une clé étrangère ou une clé étrangère informative dans sa table d'entrée de nœud de destination. Consultez les bonnes pratiques pour concevoir un schéma Spanner Graph.
- Chaque table d'entrée de l'algorithme de graphique doit comporter un libellé d'identification unique.
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 :
- Chaque
MATCHne doit contenir qu'un seul modèle d'élément (nœud ou bord) avec une seule variable nommée. - 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.
- Vous pouvez utiliser une clause
WHEREdans le modèle d'élément si elle ne fait pas référence à des variables définies ailleurs. - L'expression de libellé de la clause
MATCHdoit 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
- Exécuter des algorithmes Spanner Graph.
- Catalogue d'algorithmes Spanner Graph.
- Bonnes pratiques concernant les algorithmes Spanner Graph practices.