Articulo de referencia

Lenguaje de consulta de grafos

GQL ( Graph Query Language ) es un lenguaje de consulta estandarizado para grafos de propiedades , descrito por primera vez en la norma ISO/IEC 39075, publicada en abril de 2024...

GQL ( Graph Query Language ) es un lenguaje de consulta estandarizado para grafos de propiedades , descrito por primera vez en la norma ISO/IEC 39075, publicada en abril de 2024 por ISO/IEC .

Historia

El proyecto GQL es la culminación de iniciativas convergentes que se remontan a 2016, en particular una propuesta privada de Neo4j a otros proveedores de bases de datos en julio de 2016, [ 1 ] y una propuesta del personal técnico de Oracle dentro del proceso de estándares ISO/IEC JTC 1 más adelante ese mismo año. [ 2 ]

Propuesta de proyecto GQL 2019

En septiembre de 2019, una propuesta para un proyecto de creación de un nuevo lenguaje estándar de consulta de grafos (ISO/IEC 39075 Tecnología de la Información — Lenguajes de Bases de Datos — GQL) [ 3 ] fue aprobada por votación de los organismos nacionales de normalización que son miembros del Comité Técnico Conjunto 1 de ISO/IEC ( ISO/IEC JTC 1 ). El JTC 1 es responsable de los estándares internacionales de Tecnología de la Información. GQL está concebido como un lenguaje de consulta de bases de datos declarativo, como SQL .

La propuesta del proyecto GQL de 2019 establece lo siguiente:

El uso de grafos como representación fundamental para el modelado de datos es un enfoque emergente en la gestión de datos . En este enfoque, el conjunto de datos se modela como un grafo, donde cada entidad de datos se representa como un vértice (también llamado nodo) del grafo y cada relación entre dos entidades como una arista (también llamada enlace) entre vértices correspondientes. El modelo de datos basado en grafos ha captado la atención por sus ventajas únicas.

En primer lugar, el modelo de grafos puede ser ideal para conjuntos de datos con estructuras jerárquicas, complejas o incluso arbitrarias. Dichas estructuras se pueden codificar fácilmente en el modelo de grafos como aristas. Esto puede resultar más conveniente que el modelo relacional, que requiere la normalización del conjunto de datos en tablas con tipos de fila fijos.

En segundo lugar, el modelo de grafos permite la ejecución eficiente de consultas costosas o funciones de análisis de datos que necesitan observar relaciones de múltiples saltos entre entidades de datos, como consultas de accesibilidad , consultas de ruta más corta o más barata , o análisis de centralidad . Actualmente se utilizan dos modelos de grafos: el modelo Resource Description Framework (RDF) y el modelo Property Graph. El modelo RDF ha sido estandarizado por el W3C en varias especificaciones. El modelo Property Graph, por otro lado, tiene multitud de implementaciones en bases de datos de grafos , algoritmos de grafos y herramientas de procesamiento de grafos. Sin embargo, falta un lenguaje de consulta común y estandarizado para grafos de propiedades (como SQL para sistemas de bases de datos relacionales). Se propone GQL para llenar este vacío. [ 4 ]

Norma ISO oficial

El estándar GQL, ISO/IEC 39075:2024 Tecnología de la información – Lenguajes de bases de datos – GQL, fue publicado oficialmente por ISO el 12 de abril de 2024. [ 5 ]

Organización del proyecto GQL

El proyecto GQL está liderado por Stefan Plantikow (quien fue el primer ingeniero jefe del proyecto Cypher de Neo4j para Apache Spark ) y Stephen Cannan (editor de correcciones técnicas de SQL). También son los editores de los primeros borradores de trabajo de la especificación GQL. [ 6 ]

Como se motivó originalmente, [ 2 ] el proyecto GQL tiene como objetivo complementar el trabajo de crear una especificación normativa implementable en lenguaje natural con esfuerzos comunitarios de apoyo que permitan contribuciones de aquellos que no pueden o no están interesados ​​en participar en el proceso formal de definición de un estándar internacional JTC 1. [ 7 ] [ 8 ] En julio de 2019, el Linked Data Benchmark Council (LDBC) acordó convertirse en la organización coordinadora de los esfuerzos de los grupos de trabajo técnicos de la comunidad. Los grupos de trabajo de Lenguajes Existentes y Esquema de Grafo de Propiedades se formaron a finales de 2018 y principios de 2019, respectivamente. En la tercera Actualización de la Comunidad GQL en octubre de 2019 se propuso un grupo de trabajo para definir la semántica denotacional formal para GQL. [ 9 ]

ISO/IEC JTC 1/SC 32 WG3

Siete organismos nacionales de normalización (los de Estados Unidos, China, Corea, Países Bajos, Reino Unido, Dinamarca y Suecia) han designado expertos nacionales en la materia para trabajar en el proyecto, que está a cargo del Grupo de Trabajo 3 (Lenguajes de Bases de Datos) del Subcomité 32 (Gestión e Intercambio de Datos) del JTC 1 de ISO/IEC, generalmente abreviado como ISO/IEC JTC 1/SC 32 WG3 , o simplemente WG3 . El WG3 (y sus comités predecesores directos dentro del JTC 1) ha sido responsable del estándar SQL desde 1987. [ 10 ] [ 11 ]

Etapas ISO

Modelo de datos de grafo de propiedades GQL

GQL es un lenguaje de consulta específico para grafos de propiedades. Un grafo de propiedades se asemeja mucho a un modelo de datos conceptual , como se expresa en un modelo entidad-relación o en un diagrama de clases UML (aunque no incluye relaciones n-arias que vinculen más de dos entidades). En un grafo, las entidades se modelan como nodos y las relaciones como aristas. Los grafos de propiedades son multigrafos : puede haber muchas aristas entre el mismo par de nodos. Los grafos GQL pueden ser mixtos : pueden contener aristas dirigidas, donde uno de los nodos extremos de una arista es la cola (o origen) y el otro nodo es la cabeza (o destino), pero también pueden contener aristas no dirigidas (bidireccionales o reflexivas).

Los nodos y las aristas, denominados colectivamente elementos, poseen atributos. Estos atributos pueden ser valores de datos o etiquetas. Los valores de las propiedades no pueden ser elementos de grafos ni grafos completos: estas restricciones imponen intencionadamente una clara separación entre la topología de un grafo y los atributos que contienen valores de datos en el contexto de dicha topología. Por lo tanto, el modelo de datos de grafos de propiedades impide deliberadamente el anidamiento de grafos o el tratamiento de nodos de un grafo como aristas de otro. Cada grafo de propiedades puede tener un conjunto de etiquetas y un conjunto de propiedades asociadas al grafo en su conjunto.

Las consultas GQL operan mediante la coincidencia de patrones sobre esta estructura. Los nodos se escriben entre paréntesis, opcionalmente con etiquetas y propiedades, y las relaciones se escriben entre corchetes entre nodos, con dirección y tipo opcionales. Los resultados de la consulta se generan mediante la coincidencia de patrones del grafo y la devolución de variables vinculadas a nodos, aristas o rutas. [ 13 ]

Los productos y proyectos actuales de bases de datos de grafos suelen admitir una versión limitada del modelo aquí descrito. Por ejemplo, Apache Tinkerpop [ 14 ] obliga a que cada nodo y cada arista tengan una sola etiqueta; Cypher permite que los nodos tengan de cero a muchas etiquetas, pero las relaciones solo tienen una etiqueta (llamada reltype). La base de datos de Neo4j admite propiedades no documentadas a nivel de grafo, Tinkerpop tiene valores de grafo que desempeñan el mismo papel, y también admite "metapropiedades" o propiedades en propiedades. PGQL de Oracle admite de cero a muchas etiquetas en nodos y en aristas, mientras que SQL/PGQ admite de una a muchas etiquetas para cada tipo de elemento. El modelo de información NGSI-LD especificado por ETSI es un intento de especificar formalmente los grafos de propiedades, con tipos de nodos y relaciones (aristas) que pueden desempeñar el papel de etiquetas en los modelos mencionados anteriormente y admiten referencias semánticas al heredar clases definidas en ontologías compartidas .

El proyecto GQL definirá un modelo de datos estándar, que probablemente será el superconjunto de estas variantes, y al menos la primera versión de GQL probablemente permitirá a los proveedores decidir sobre las cardinalidades de las etiquetas en cada implementación, como lo hace SQL/PGQ, y elegir si admiten relaciones no dirigidas.

Otros aspectos de los modelos ERM o UML (como la generalización o la subtipificación, o las cardinalidades de entidades o relaciones) pueden ser capturados por esquemas o tipos GQL que describen posibles instancias del modelo de datos general.

Implementaciones

Ya está disponible la primera base de datos de grafos en memoria que puede interpretar GQL. [ 15 ] [ 16 ] Además de la implementación, también se puede encontrar una formalización y leer la sintaxis del subconjunto específico de GQL. [ 17 ]

Ampliación de los lenguajes de consulta de grafos existentes

El proyecto GQL se basa en múltiples fuentes o entradas, en particular lenguajes industriales existentes y una nueva sección del estándar SQL. En las discusiones preparatorias dentro del WG3 se presentaron estudios de la historia [ 18 ] y el contenido comparativo de algunas de estas entradas [ 19 ] . GQL es un lenguaje declarativo con su propia sintaxis distintiva, que desempeña un papel similar al de SQL en la construcción de una aplicación de base de datos. Se han definido otros lenguajes de consulta de grafos que ofrecen características procedimentales directas como ramificación y bucles ( Gremlin de Apache Tinkerpop [ 20 ] ), y GSQL, [ 21 ] lo que permite recorrer un grafo iterativamente para realizar una clase de algoritmos de grafos, pero GQL no incorporará directamente tales características. [ 22 ] [ 23 ] Sin embargo, GQL se concibe como un caso específico de una clase más general de lenguajes de grafos, que comparten un sistema de tipos de grafos y una interfaz de llamada para procedimientos que procesan grafos.

Consulta de grafo de propiedades SQL/PGQ

El trabajo previo de los organismos espejo WG3 y SC32, particularmente en INCITS Data Management (anteriormente INCITS DM32), ha ayudado a definir una nueva Parte 16 planificada del Estándar SQL, que permite llamar a una consulta de grafo de solo lectura dentro de una instrucción SQL SELECT, haciendo coincidir un patrón de grafo usando una sintaxis muy similar a Cypher, PGQL y G-CORE, y devolviendo una tabla de valores de datos como resultado. SQL/PGQ también contiene DDL para permitir que las tablas SQL se asignen a un objeto de esquema de vista de grafo con nodos y aristas asociados a conjuntos de etiquetas y conjuntos de propiedades de datos. [ 24 ] [ 25 ] [ 26 ] El proyecto GQL se coordina estrechamente con la "división de proyecto" SQL/PGQ de (extensión a) ISO 9075 SQL, y los grupos de trabajo técnicos en los EE. UU. (INCITS DM32) y a nivel internacional (SC32/WG3) tienen varios colaboradores expertos que trabajan en ambos proyectos. [ 25 ] La propuesta del proyecto GQL exige una estrecha alineación de SQL/PGQ y GQL, lo que indica que GQL será en general un superconjunto de SQL/PGQ.

Se pueden encontrar más detalles sobre el lenguaje de coincidencia de patrones en el artículo "Graph Pattern Matching in GQL and SQL/PGQ" [ 27 ] [ 28 ].

Cifrar

Cypher [ 29 ] es un lenguaje diseñado originalmente por Andrés Taylor y sus colegas en Neo4j Inc., e implementado por primera vez por esa compañía en 2011. Desde 2015, está disponible como una descripción de lenguaje de código abierto [ 30 ] con herramientas gramaticales, una interfaz JVM que analiza consultas Cypher y un Kit de Compatibilidad Tecnológica (TCK) con más de 2000 escenarios de prueba, utilizando Cucumber para la portabilidad del lenguaje de implementación. [ 31 ] El TCK refleja la descripción del lenguaje y una mejora para tipos de datos y funciones temporales documentada en una Propuesta de Mejora de Cypher. [ 32 ]

Cypher permite la creación, lectura, actualización y eliminación de elementos de grafos, y es un lenguaje que, por lo tanto, puede utilizarse para motores de análisis y bases de datos transaccionales.

Consultas con patrones de ruta visual

Cypher utiliza patrones compactos de longitud fija y variable que combinan representaciones visuales de topologías de nodos y relaciones (aristas), con predicados de existencia de etiquetas y valores de propiedades. (Estos patrones suelen denominarse patrones de " arte ASCII " y surgieron originalmente como una forma de comentar programas que utilizaban una API de grafos de bajo nivel. [ 18 ] ) Al comparar dicho patrón con elementos de datos del grafo, una consulta puede extraer referencias a nodos, relaciones y rutas de interés. Estas referencias se emiten como una "tabla de enlace" donde los nombres de las columnas están vinculados a un multiconjunto de elementos del grafo. El nombre de una columna se convierte en el nombre de una "variable de enlace", cuyo valor es una referencia específica a un elemento del grafo para cada fila de la tabla.

Por ejemplo, un patrón generará una tabla de salida de dos columnas. La primera columna, denominada, contendrá referencias a nodos con una etiqueta . La segunda columna, denominada, contendrá referencias a nodos con una etiqueta que indica la ciudad donde vive la persona. MATCH (p:Person)-[:LIVES_IN]->(c:City)  p  Person  c  City 

Las variables de enlace se pueden desreferenciar para obtener acceso a los valores de las propiedades asociadas con los elementos a los que hace referencia una variable. La consulta de ejemplo podría terminar con un , lo que daría como resultado una consulta completa como esta: p  c  RETURN

COINCIDENCIA ( p : Persona ) -[ : VIVE_EN ]-> ( c : Ciudad ) DEVOLVER p . nombre_nombre , p . apellido_nombre , c . nombre , c . estado

Esto daría como resultado una tabla final de cuatro columnas que enumeraría los nombres de los residentes de las ciudades almacenadas en el gráfico.

Las consultas basadas en patrones pueden expresar uniones, combinando múltiples patrones que utilizan la misma variable de enlace para expresar una unión natural utilizando la cláusula: MATCH 

COINCIDENCIA ( p : Persona ) -[ : VIVE_EN ]-> ( c : Ciudad ), ( p : Persona ) -[ : NACIONAL_DE ]-> ( País_UE ) DEVOLVER p . nombre_ , p . apellido , c . nombre , c . estado

Esta consulta devolvería únicamente la ubicación de residencia de los ciudadanos de la UE.

Una unión externa se puede expresar mediante : MATCH ... OPTIONAL MATCH 

COINCIDENCIA ( p : Persona ) -[ : VIVE_EN ]-> ( c : Ciudad ) OPCIONAL COINCIDENCIA ( p : Persona ) -[ : NACIONAL_DE ]-> ( ec : País_UE ) DEVOLVER p . nombre_ , p . apellido , c . nombre , c . estado , ec . nombre

Esta consulta devolvería la ciudad de residencia de cada persona en el gráfico con información residencial y, si es ciudadano de la UE, de qué país procede.

Por lo tanto, las consultas pueden proyectar primero un subgrafo del grafo de entrada y luego extraer los valores de datos asociados a dicho subgrafo. Los valores de datos también pueden procesarse mediante funciones, incluidas las de agregación, lo que da lugar a la proyección de valores calculados que representan la información contenida en el grafo proyectado de diversas maneras. Siguiendo el ejemplo de G-CORE y Morpheus, GQL tiene como objetivo proyectar los subgrafos definidos por patrones coincidentes (y los grafos calculados sobre esos subgrafos) como nuevos grafos que serán devueltos por una consulta.

Desde una perspectiva amplia, GQL supervisa tres elementos clave durante la evaluación y ejecución de consultas:

  1. el gráfico activo: el gráfico de propiedades que se está utilizando actualmente para la coincidencia de patrones;
  2. la tabla activa, donde se almacena la información calculada hasta este punto; y
  3. el registro activo, que contiene la tupla de resultados que se está utilizando actualmente.

Este tipo de patrones se han generalizado en los lenguajes de consulta de grafos de propiedades y constituyen la base del sublenguaje de patrones avanzados que se está definiendo en SQL/PGQ, el cual probablemente se convierta en un subconjunto del lenguaje GQL. Cypher también utiliza patrones para las cláusulas de inserción y modificación ( y ), y en el proyecto GQL se han presentado propuestas para recopilar patrones de nodos y aristas que describan tipos de grafos. CREATE  MERGE 

Cifrado 9 y Cifrado 10

La versión actual de Cypher (incluida la extensión temporal) se denomina Cypher 9. Antes del proyecto GQL, se planeó crear una nueva versión, Cypher 10 [ REF ENCABEZADO A CONTINUACIÓN ], que incorporaría características como esquemas y consultas y vistas de grafos componibles. Los primeros diseños para Cypher 10, incluyendo la construcción y proyección de grafos, se implementaron en el proyecto Cypher para Apache Spark a partir de 2016. [ 33 ]

PGQL

PGQL [ 34 ] es un lenguaje diseñado e implementado por Oracle Inc., pero disponible como una especificación de código abierto [ 35 ] junto con software de análisis para JVM [ 36 ] . PGQL combina la sintaxis familiar de SQL SELECT, incluyendo expresiones SQL, ordenación y agregación de resultados, con un lenguaje de coincidencia de patrones muy similar al de Cypher. Permite especificar el grafo que se va a consultar e incluye una función para macros que capturan "vistas de patrones" o subpatrones con nombre. No admite operaciones de inserción o actualización, ya que fue diseñado principalmente para un entorno analítico, como el producto PGX de Oracle. PGQL también se ha implementado en Oracle Big Data Spatial and Graph y en un proyecto de investigación, PGX.D/Async [ 37 ] .

G-CORE

G-CORE es un lenguaje de investigación diseñado por un grupo de investigadores académicos e industriales y diseñadores de lenguajes que se basa en características de Cypher, PGQL y SPARQL . [ 38 ] [ 39 ] El proyecto se llevó a cabo bajo los auspicios del Linked Data Benchmark Council (LDBC), comenzando con la formación de un grupo de trabajo de Graph Query Language a finales de 2015, y la mayor parte del trabajo de redacción de artículos tuvo lugar en 2017. G-CORE es un lenguaje componible que es cerrado sobre grafos: las entradas de grafos se procesan para crear una salida de grafo, utilizando proyecciones de grafos y operaciones de conjuntos de grafos para construir el nuevo grafo. Las consultas de G-CORE son funciones puras sobre grafos, sin efectos secundarios, lo que significa que el lenguaje no define operaciones que muten (actualicen o eliminen) datos almacenados. G-CORE introduce vistas (consultas con nombre). También incorpora rutas como elementos en un grafo ("rutas como ciudadanos de primera clase"), que pueden consultarse independientemente de las rutas proyectadas (que se calculan en el momento de la consulta sobre los elementos de nodos y aristas). G-CORE se ha implementado parcialmente en proyectos de investigación de código abierto en la organización LDBC GitHub. [ 40 ] [ 41 ] [ 42 ]

GSQL

GSQL [ 21 ] es un lenguaje diseñado para la base de datos de grafos propietaria de TigerGraph Inc. Desde octubre de 2018, los diseñadores de lenguajes de TigerGraph han estado promoviendo y trabajando en el proyecto GQL. GSQL es un lenguaje Turing-completo que incorpora control de flujo procedimental e iteración, y una función para recopilar y modificar valores calculados asociados con la ejecución de un programa para todo el grafo o para elementos de un grafo llamados acumuladores. Estas características están diseñadas para permitir que los cálculos iterativos de grafos se combinen con la exploración y recuperación de datos. Los grafos GSQL deben describirse mediante un esquema de vértices y aristas, que restringe todas las inserciones y actualizaciones. Este esquema, por lo tanto, tiene la propiedad de mundo cerrado de un esquema SQL, y este aspecto de GSQL (también reflejado en propuestas de diseño derivadas del proyecto Morpheus [ 43 ] ) se propone como una característica opcional importante de GSQL.

Los vértices y las aristas son objetos de esquema con nombre que contienen datos, pero también definen un tipo imputado, de forma similar a como las tablas SQL son contenedores de datos, con un tipo de fila implícito asociado. Los grafos de GSQL se componen a partir de estos conjuntos de vértices y aristas, y varios grafos con nombre pueden incluir el mismo conjunto de vértices o aristas. GSQL ha desarrollado nuevas características desde su lanzamiento en septiembre de 2017, [ 44 ] en particular introduciendo la coincidencia de patrones de aristas de longitud variable [ 45 ] utilizando una sintaxis relacionada con la vista en Cypher, PGQL y SQL/PGQ, pero también cercana en estilo a los patrones de longitud fija que ofrece Microsoft SQL/Server Graph [ 46 ].

GSQL también admite el concepto de multigrafos [ 47 ] , que permiten que subconjuntos de un grafo tengan control de acceso basado en roles. Los multigrafos son importantes para grafos a escala empresarial que requieren un control de acceso granular para diferentes usuarios.

Morpheus: múltiples grafos y consultas de grafos componibles en Apache Spark

El proyecto opencypher Morpheus [ 33 ] implementa Cypher para usuarios de Apache Spark. Iniciado en 2016, este proyecto se desarrolló originalmente junto con tres iniciativas relacionadas, en las que también participaron diseñadores de Morpheus: SQL/PGQ, G-CORE y el diseño de extensiones de Cypher para consultar y construir múltiples grafos. [ 48 ] El proyecto Morpheus sirvió como banco de pruebas para extensiones de Cypher (conocidas como "Cypher 10") en las áreas de DDL de grafos y extensiones de lenguaje de consulta.

Las características de DDL de grafos incluyen [ 49 ]

  1. definición de vistas de grafos de propiedades sobre tablas SQL conectadas mediante JDBC y DataFrames de Spark [ 50 ]
  2. definición de esquemas de grafos o tipos definidos mediante el ensamblaje de patrones de tipo de nodo y tipo de arista, con subtipado [ 50 ]
  3. restringir el contenido de un gráfico mediante un esquema cerrado o fijo
  4. creación de entradas de catálogo para múltiples gráficos con nombre en un catálogo organizado jerárquicamente
  5. fuentes de datos de grafos para formar un catálogo federado y heterogéneo
  6. Creación de entradas de catálogo para consultas (vistas) con nombre.

Las extensiones del lenguaje de consulta de grafos incluyen [ 49 ]

  1. unión de grafos
  2. proyección de gráficos calculados a partir de los resultados de coincidencias de patrones en múltiples gráficos de entrada
  3. Compatibilidad con tablas (DataFrames de Spark) como entradas para consultas ("tablas de control")
  4. vistas que aceptan gráficos con nombre o proyectados como parámetros.

Estas características se han propuesto como insumos para la estandarización de los lenguajes de consulta de grafos de propiedades en el proyecto GQL.

Limitaciones

Las consultas GQL permiten que las consultas de ruta devuelvan diferentes tipos de rutas entre dos nodos (la más corta, simple, a pie, acíclica, etc.). Sin embargo, esto solo verifica la existencia de una ruta. No se admite el razonamiento sobre propiedades complejas de la ruta, como pesos o costos. Por ejemplo, no se admite la comparación de pesos en aristas adyacentes en las rutas.

Véase también

Referencias

  1. Green, Alastair (julio de 2016). " Creación de un estándar industrial abierto para un lenguaje de consulta de grafos de propiedades declarativo " (PDF) . opencypher.org . Consultado el 12 de noviembre de 2019 .
  2. 1 2 Green, Alastair (julio de 2018). " Trabajando para un nuevo elemento de trabajo para GQL, para complementar SQL PGQ , envío ANSI INCITS DM32.2 DM32.2-2018-00128r1 " (PDF) . opencypher.org . Recuperado el 12 de noviembre de 2019 .
  3. "ISO/IEC 39075 Tecnología de la información — Lenguajes de bases de datos — GQL" . ISO . Consultado el 7 de enero de 2022 .
  4. "SC32 WG3 N282 "SC32 N3002 Borrador NWIP Formulario 4 Tecnología de la información – Lenguajes de bases de datos - GQL"" . ISO . Consultado el 9 de diciembre de 2019 .
  5. "ISO/IEC 39075:2024 Tecnología de la información — Lenguajes de bases de datos — GQL" . ISO . Consultado el 25 de mayo de 2024 .
  6. Eds. Plantikow, Stefan; Cannan, Stephen (octubre de 2019). " GQL Early Working Draft v2.2 " . ISO . Consultado el 9 de noviembre de 2019 .
  7. " Estándar GQL " . Consultado el 12 de noviembre de 2019 .
  8. " Actualizaciones de la comunidad GQL " . Consultado el 12 de noviembre de 2019 .
  9. Libkin, Leonid. " Grupo de Trabajo de Semántica Formal " . Consultado el 12 de noviembre de 2019 .
  10. "JTC 1/SC 32 Gestión e intercambio de datos" . ISO/IEC JTC1 . Consultado el 6 de octubre de 2019 .
  11. " Alcance del estándar original, ISO 9075-1987, Lenguaje de base de datos SQL " . ISO/IEC JTC1 . Consultado el 9 de noviembre de 2019 .
  12. "ISO/IEC 39075:2024" .
  13. "Declaraciones de consulta GQL | Spanner" . Documentación de Google Cloud . Consultado el 27 de mayo de 2026 .
  14. "Apache Tinkerpop" . Apache Software Foundation . Consultado el 11 de noviembre de 2019 .
  15. "GQL Parser" . GitHub . Consultado el 18 de enero de 2021 .
  16. "¡Primera implementación de investigación GQL de Olof Morra en TU Eindhoven!" . Alastair Green . Consultado el 18 de enero de 2021 .
  17. "Una semántica de GQL; un nuevo lenguaje de consulta para grafos de propiedades formalizado" (PDF) . Olof Morra . Consultado el 18 de enero de 2021 .
  18. 1 2 Lindaaker, Tobias (mayo de 2018). " Una visión general de la historia reciente de los lenguajes de consulta de grafos " (PDF) . opencypher.org . Recuperado el 6 de octubre de 2019 .
  19. Plantikow, Stefan (mayo de 2018). " Tabla resumen de Cypher, PGQL y G-Core " (PDF) . opencypher.org . Consultado el 3 de noviembre de 2019 .
  20. Rodríguez, Marko A. (2015). «La máquina y el lenguaje de recorrido de grafos Gremlin (Charla invitada)». Actas del 15.º Simposio sobre Lenguajes de Programación de Bases de Datos . ACM. págs. 1–10 . arXiv : 1508.03843 . doi : 10.1145/2815072.2815073 . ISBN  9781450339025. S2CID 32623848 . Consultado el 10 de noviembre de 2019 . 
  21. 1 2 Wu, Mingxi; Deutsch, Alin. " GSQL: Un lenguaje de consulta de grafos inspirado en SQL " . Recuperado el 9 de noviembre de 2019 .
  22. Wood, Peter T. (25 de abril de 2012). "Lenguajes de consulta para bases de datos de grafos" . ACM SIGMOD Record . 41 (1). ACM: 50– 60. doi : 10.1145/2206869.2206879 . S2CID 13537601. Recuperado el 25 de octubre de 2019 . 
  23. Angles, Renzo; et al. (septiembre de 2017). "Fundamentos de los lenguajes de consulta modernos para bases de datos de grafos" . ACM Computing Surveys . 50 (5). ACM: 68:1–40. arXiv : 1610.06264 . doi : 10.1145/3104031 . S2CID 13526884. Recuperado el 12 de noviembre de 2019 .  
  24. "ISO/IEC 9075-16 Tecnología de la información — Lenguajes de bases de datos SQL — Parte 16: Consultas de grafos de propiedades SQL (SQL/PGQ)" . ISO . Consultado el 7 de enero de 2022 .
  25. 1 2 Hare, Keith; et al. (marzo de 2019). " SQL y GQL , Taller del W3C sobre estandarización web para datos de grafos. Creando puentes: RDF, grafo de propiedades y SQL" (PDF) . W3C . Recuperado el 6 de octubre de 2019 . 
  26. Trigonakis, Vasileios (julio de 2019). " Extensiones de grafos de propiedades para el estándar SQL . LDBC 12.ª TUC" (PDF) . LBDC . Consultado el 7 de enero de 2022 .
  27. Deutsch, Alin; Francis, Nadime; Green, Alastair; Hare, Keith; Li, Bei; Libkin, Leonid; Lindaaker, Tobias; Marsault, Victor; Martens, Wim; Michels, Jan; et al. (2021-12-12). "Graph Pattern Matching in GQL and SQL/PGQ". arXiv : 2112.06217 [ cs.DB ]. 
  28. Deutsch, Alin; Francis, Nadime; Green, Alastair; Hare, Keith; Li, Bei; Libkin, Leonid; Lindaaker, Tobias; Marsault, Victor; Martens, Wim; Michels, Jan; Murlak, Filip; Plantikow, Stefan; Selmer, Petra; van Rest, Oskar; Voigt, Hannes (11 de junio de 2022). «Graph Pattern Matching in GQL and SQL/PGQ» . Actas de la Conferencia Internacional de 2022 sobre Gestión de Datos . SIGMOD '22. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 2246–2258 . doi : 10.1145/3514221.3526057 . ISBN  978-1-4503-9249-5. S2CID 245124268 . 
  29. Francis, Nadime; et al. (27 de mayo de 2018). «Cypher: Un lenguaje de consulta en evolución para grafos de propiedades». Actas de la Conferencia Internacional de 2018 sobre Gestión de Datos . ACM. págs. 1433–1445 . doi : 10.1145/3183713.3190657 . ISBN   9781450347037. S2CID 13919896 . Consultado el 25 de octubre de 2019 . 
  30. " Referencia del lenguaje de consulta Cypher (versión 9) " (PDF) . opencypher.org . Consultado el 10 de noviembre de 2019 .
  31. " Recursos de openCypher " . ACM . Consultado el 10 de noviembre de 2019 .
  32. " CIP2015-08-06 - Fecha y hora " . opencypher.org. 15 de mayo de 2019 . Consultado el 25 de octubre de 2019 .
  33. 1 2 Rydberg, Mats; et al. (julio de 2016). " Morpheus lleva el lenguaje de consulta de grafos líder, Cypher, a la plataforma de procesamiento distribuido líder, Spark. " . openCypher . Recuperado el 3 de noviembre de 2019 . 
  34. van Rest, Oskar; et al. (junio de 2016). "PGQL: Un lenguaje de consulta de grafos de propiedades" . Actas del Cuarto Taller Internacional sobre Experiencias y Sistemas de Gestión de Datos de Grafos . ACM. págs. 1–6 . doi : 10.1145/2960414.2960421 . ISBN   978-1-4503-4780-8. S2CID 6806901 . Consultado el 25 de octubre de 2019 . 
  35. "PGQL" . pgql.org . Consultado el 6 de octubre de 2019 .
  36. van Rest, Oskar; et al. (septiembre de 2015). " PGQL es un lenguaje de consulta basado en SQL para el modelo de datos Property Graph " . pgql.org . Consultado el 3 de noviembre de 2019 . 
  37. Roth, Nicholas P.; et al. (2017). "PGX.D/Async: Un motor de coincidencia de patrones de grafos distribuido y escalable" . Actas del Quinto Taller Internacional sobre Experiencias y Sistemas de Gestión de Datos de Grafos . ACM. págs. 1–6 . doi : 10.1145/3078447.3078454 . ISBN   978-1-4503-5038-9. S2CID 26283328 . Consultado el 29 de octubre de 2019 . 
  38. Angles, Renzo; et al. (2018). "G-CORE: Un núcleo para futuros lenguajes de consulta de grafos" . Actas de la Conferencia Internacional de 2018 sobre Gestión de Datos . ACM. págs. 1421–1432 . doi : 10.1145/3183713.3190654 . ISBN   978-1-4503-4703-7. S2CID 4623760 . Consultado el 9 de noviembre de 2019 . 
  39. Voigt, Hannes (febrero de 2018). " G-CORE: La propuesta del lenguaje de consulta de grafos LDBC . En los archivos de FOSDEM 2018" . Recuperado el 12 de noviembre de 2019 .
  40. van Rest, Oskar (2017). " Gramática y analizador sintáctico G-CORE " . LDBC . Consultado el 12 de noviembre de 2019 .
  41. Ciocîrdel, Georgiana Diana (2018). " Un intérprete de G-CORE (Graph Query Language) , tesis de maestría en sistemas informáticos paralelos y distribuidos, CWI y Vrije Universiteit Amsterdam" (PDF) . CWI . Consultado el 12 de noviembre de 2019 .
  42. Ciocîrdel, Georgiana Diana; Boncz, Peter (2017). " Intérprete G-CORE en Spark " . LDBC . Consultado el 12 de noviembre de 2019 .
  43. Voigt, Hannes; Selmer, Petra; Lindaaker, Tobias; Plantikow, Stefan; Green, Alastair; Furniss, Peter (diciembre de 2018). " Esquema de grafo de propiedades , ANSI INCITS DM32.2 SQL Property Graph Extensions Ad Hoc submission sql-pg-2018-0056r1 , Neo4j Query Languages ​​Standards and Research Team" (PDF) . openCypher.org . Consultado el 12 de noviembre de 2019 .
  44. " Documentación de GSQL Tigergraph 1.0 " . 2017 . Consultado el 9 de noviembre de 2019 .
  45. " Coincidencia de patrones , Notas de la versión 2.4 de TigerGraph" . Junio ​​de 2019. Consultado el 9 de noviembre de 2019 .
  46. " Extensiones del lenguaje de consulta , procesamiento de gráficos con SQL Server y Azure SQL Database" . Microsoft Inc. 2017. Consultado el 10 de noviembre de 2019 .
  47. « Multigraphs , documentación en línea de TigerGraph» . Junio ​​de 2019 . Consultado el 7 de enero de 2022 .
  48. Taylor, Andrés; Plantikow, Stefan; Selmer, Petra (2017–2018). " CIP2017-06-18 Consulta y construcción de múltiples grafos " . opencypher.org . Recuperado el 12 de noviembre de 2019 .
  49. 1 2 Kiessling, Max (2019). " Multiple graphs and composable queries in Cypher for Apache Spark . openCypher Implementers Meeting V, Berlin" (PDF) . opencypher.org . Recuperado el 9 de noviembre de 2019 .
  50. 1 2 Johanssen, Tobias; et al. (2019). " graphddl-example-ldbc: Un ejemplo de Cypher para Apache Spark que muestra el uso de SqlPropertyGraphSource y GraphDDL para proporcionar una vista de gráfico de propiedades de un conjunto de datos SQL " . GitHub . Recuperado el 9 de noviembre de 2019 . 
  • Estándar GQL (Sitio web oficial)
  • Documentos GQL
  • Parque infantil GQL