Requisitos del esquema
Los algoritmos de Spanner Graph pueden ejecutarse en grafos con esquemas que cumplan con los siguientes requisitos:
- Una tabla de entrada de borde debe intercalarse en su tabla de entrada de nodo fuente y tener una clave externa o una clave externa informativa para su tabla de entrada de nodo de destino. Consulta las prácticas recomendadas para diseñar un esquema de Spanner Graph.
- Cada tabla de entrada del algoritmo de grafo debe tener una etiqueta de identificación única.
El siguiente es un ejemplo de un esquema no admitido:
-- 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 (...)
);
A continuación, se muestra un ejemplo de un esquema 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 (...)
);
Compatibilidad de funciones
En esta sección, se describe la compatibilidad de las consultas de algoritmos con las funciones generales de grafos.
Cláusula MATCH admitida
Cuando usas la cláusula MATCH en la estructura de la consulta del algoritmo para definir el gráfico de entrada de los algoritmos, debes tener en cuenta lo siguiente:
- Cada
MATCHdebe contener solo un patrón de elemento (nodo o arista) con una variable con nombre. - Cuando un patrón de borde incluye patrones explícitos para los nodos finales, no uses una etiqueta de nodo ni una variable en los patrones de nodo.
- Puedes usar una cláusula
WHEREdentro del patrón de elementos si no hace referencia a variables definidas en otro lugar. - La expresión de etiqueta en la cláusula
MATCHdebe identificar de forma única una tabla de elementos.
En los siguientes ejemplos, se muestran las cláusulas MATCH admitidas:
-- 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]->
En los siguientes ejemplos, se muestran cláusulas MATCH no admitidas:
-- 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)
Usa la cláusula RETURN
La cláusula RETURN en la estructura de la consulta del algoritmo define los datos que devuelve la consulta del algoritmo. Puedes hacer referencia a las columnas del resultado de la firma del algoritmo en la cláusula RETURN, con algunas restricciones:
- Si un algoritmo genera un Node, puedes devolver cualquier propiedad del nodo. También puedes devolver ELEMENT_DEFINITION_NAME del nodo.
- Si un algoritmo genera una ruta, puedes devolver
PATH_LENGTH(path).. - Puedes devolver cualquier salida escalar del algoritmo.
- Puedes devolver cualquier constante literal.
En los siguientes ejemplos, se muestran las cláusulas RETURN admitidas:
-- 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
En los siguientes ejemplos, se muestran cláusulas RETURN no admitidas:
-- 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
No se admiten parámetros
Las consultas del algoritmo no admiten parámetros de consulta.
Compatibilidad con gráficos creados a partir de una vista
Cuando creas tu gráfico en una vista, las consultas de algoritmos solo se admiten si los nodos y las aristas (incluidos los nodos finales de una arista) que se usan para definir la entrada del algoritmo no se basan en una vista.
¿Qué sigue?
- Ejecuta algoritmos de Spanner Graph.
- Catálogo de algoritmos de Spanner Graph.
- Prácticas recomendadas para el algoritmo de Spanner Graph.