Graph Query Language: Difference between revisions

Content deleted Content added
GQL2024 (talk | contribs)
ISO stages: wikitable
 
(43 intermediate revisions by 17 users not shown)
Line 1:
{{Short description|GraphQuery querylanguage programming languagefor underproperty developmentgraphs}}
{{distinguish|GraphQL|gsql.org}}
{{Multiple issues|
{{Overly detailed|date=March 2020}}
{{Self-published|date=March 2020}}}}
{{missing information|the language itself: syntax, examples ([https://cloud.google.com/spanner/docs/reference/standard-sql/graph-query-statements google cloud documentation] might help)|date=July 2025}}
'''GQL''' ('''Graph Query Language''') is a proposed standard graph [[query language]]. In September 2019 a proposal for a project to create a new standard graph query language (ISO/IEC 39075 Information Technology — Database Languages — GQL)<ref name="39075 GQL">{{cite web|title=ISO/IEC 39075 Information Technology — Database Languages — GQL|url=https://www.iso.org/standard/76120.html|access-date=January 7, 2022|publisher=ISO}}</ref> was approved by a vote of national standards bodies which are members of ISO/IEC Joint Technical Committee 1([https://jtc1info.org/page-3/ ISO/IEC JTC 1]). JTC 1 is responsible for international Information Technology standards. GQL is intended to be a declarative database query language, like [[SQL]].
}}
{{distinguish|text=[[GraphQL|gsql.org]] for querying APIs}}
{{infobox programming language
| name = GQL (Graph Query Language)
| paradigm = [[Declarative programming|Declarative]]
| family = [[Query language]]
| released = {{Start date and age|April 12, 2024|df=yes}}
| developer = [[ISO/IEC JTC 1/SC 32|ISO/IEC JTC&nbsp;1 (Joint Technical Committee&nbsp;1) / SC&nbsp;32 (Subcommittee&nbsp;32)]] / WG&nbsp;3 (Working Group&nbsp;3)
ISO| stageswebsite by date<ref> = {{URL|https://www.iso.org/standard/76120.html</ref>}}
| latest_release_version = {{URL|https://www.iso.org/standard/76120.html|ISO/IEC 39075:2024}}
| latest_release_date = {{Start date and age|April 12, 2024|df=yes}}
| influenced_by = [[SQL]], [[Cypher (query language)|Cypher]], [[TigerGraph|GSQL]]
}}
'''GQL''' ('''Graph Query Language''') is a [[Technical_standard|standardized]] [[query language]] for [[property graphs]] first described in ISO/IEC 39075, released in April 2024 by [[ISO/IEC]].
 
== History ==
The GQL project is the culmination of converging initiatives dating back to 2016, particularly a private proposal from [[Neo4j]] to other [[database]] vendors in July 2016,<ref name="Creating standard">{{cite web|url=https://s3.amazonaws.com/artifacts.opencypher.org/website/materials/DM32.2/DM32.2-2018-00144.Creating+an+Open+Industry+Standard+for+a+Declarative+Property+Graph+Query+Language.pdf|title=''Creating an Open Industry Standard for a Declarative Property Graph Query Language''|last1=Green|first1=Alastair|date=July 2016|publisher=opencypher.org|access-date=November 12, 2019}}</ref> and a proposal from [[Oracle_Corporation|Oracle]] technical staff within the ISO/IEC JTC 1 standards process later that year.<ref name="Towards NWIP">{{cite web|url=https://s3.amazonaws.com/artifacts.opencypher.org/website/materials/DM32.2/DM32.2-2018-00128r1.Working+towards+a+GQL+NWIP.pdf|title=''Working towards a New Work Item for GQL, to complement SQL PGQ'', ANSI INCITS DM32.2 submission ''DM32.2-2018-00128r1''|last1=Green|first1=Alastair|date=July 2018|publisher=opencypher.org|access-date=November 12, 2019}}</ref>
 
=== 2019 GQL project proposal ===
'''GQL''' ('''Graph Query Language''') is a proposed standard graph [[query language]]. In September 2019 a proposal for a project to create a new standard [[Graph_(discrete_mathematics)|graph]] query language (ISO/IEC 39075 Information Technology — Database Languages — GQL)<ref name="39075 GQL">{{cite web|title=ISO/IEC 39075 Information Technology — Database Languages — GQL|url=https://www.iso.org/standard/76120.html|access-date=January 7, 2022|publisher=ISO}}</ref> was approved by a vote of national standards bodies which are members of ISO/IEC Joint Technical Committee 1([https://jtc1info.org/page-3/ ISO/IEC JTC 1]). JTC 1 is responsible for international Information Technology standards. GQL is intended to be a declarative database query language, like [[SQL]].
 
The 2019 GQL project proposal states:
{{blockquote|text="Using graph as a fundamental representation for [[data modeling]] is an emerging approach in [[data management]]. In this approach, the [[data set]] is modeled as a graph, representing each data entity as a [[Vertex_(graph_theory)|vertex]] (also called a node) of the graph and each relationship between two entities as an [[Glossary_of_graph_theory#edge|edge]] between corresponding vertices. The graph data model has been drawing attention for its unique advantages.
 
Firstly, the graph model can be a natural fit for data sets that have hierarchical, complex, or even arbitrary structures. Such structures can be easily encoded into the graph model as edges. This can be more convenient than the relational model, which requires the [[Database normalization|normalization]] of the data set into a set of [[Table_(database)|tables]] with fixed [[Row_(database)|row]] types.
 
Secondly, the graph model enables efficient execution of expensive queries or data analytic functions that need to observe multi-hop relationships among data entities, such as [[Reachability analysis|reachability queries]], [[Shortest path problem|shortest or cheapest path queries]], or [[centrality]] analysis. There are two graph models in current use: the [[Resource Description Framework]] (RDF) model and the Property Graph model. The RDF model has been standardized by W3C in a number of specifications. The Property Graph model, on the other hand, has a multitude of implementations in [[graph databasesdatabase]]s, [[graph algorithms]], and graph processing facilities. However, a common, standardized query language for property graphs (like SQL for relational database systems) is missing. GQL is proposed to fill this void."<ref name="39075 GQL NWIP">{{cite web|url=https://isotc.iso.org/livelink/livelink?func=ll&objId=20911483&objAction=Open&viewType=1|title=SC32 WG3 N282 "SC32 N3002 Draft NWIP Form4 Information Technology – Database Languages - GQL"|publisher=ISO|access-date=December 9, 2019}}</ref>}}
 
==== Official ISO standard ====
 
The GQL standard, ISO/IEC 39075:2024 Information technology – Database languages – GQL, was officially published by ISO on
12 April 2024.<ref>{{cite web |title=ISO/IEC 39075:2024 Information technology — Database languages — GQL |url=https://www.iso.org/standard/76120.html |website=ISO |access-date=25 May 2024}}</ref>
 
=== GQL project organisation ===
The GQL project is led by [https://de.linkedin.com/in/stefan-plantikow-49896637 Stefan Plantikow] (who was the first lead engineer of [[Neo4j]]'s [[Cypher (query language)|Cypher]] for [[Apache Spark]] project) and [https://www.linkedin.com/in/stephencannan Stephen Cannan] (Technical Corrigenda editor of SQL). They are also the editors of the initial early working drafts of the GQL specification.<ref name="GQL EWD v2.2">{{cite web|url=https://isotc.iso.org/livelink/livelink?func=ll&objId=20836584&objAction=Open|title=''GQL Early Working Draft v2.2''.|last1=Eds. Plantikow|first1=Stefan|last2=Cannan|first2=Stephen|date=October 2019|publisher=ISO|access-date=November 9, 2019}}</ref> of the GQL specification.
 
As originally motivated,<ref name="Towards NWIP"/> the GQL project aims to complement the work of creating an implementable normative natural-language specification with supportive community efforts that enable contributions from those who are unable or uninterested in taking part in the formal process of defining a JTC 1 International Standard.<ref name="community">{{cite web|url=https://www.gqlstandards.org/|title=''GQL Standard''|access-date=November 12, 2019}}</ref><ref name="GCU 3">{{cite web|url=https://www.gqlstandards.org/community-updates|title=''GQL Community Updates''|access-date=November 12, 2019}}</ref> In July 2019 the [[Linked Data Benchmark Council]] (LDBC) agreed to become the umbrella organization for the efforts of community technical working groups. The Existing Languages and the Property Graph Schema working groups formed in late 2018 and early 2019 respectively. A working group to define formal [[denotational semantics]] for GQL was proposed at the third GQL Community Update in October 2019.<ref name="FSWG">{{cite web|url=https://drive.google.com/open?id=15DAUAORu477FF-DooTH2ol0SZhx2ARtr|title=''Formal Semantics Working Group''|last=Libkin|first=Leonid|access-date=November 12, 2019}}</ref>
 
=== ISO/IEC JTC 1/SC 32 WG3 ===
Line 27 ⟶ 46:
 
=== ISO stages ===
{{srn}}
ISO stages by date<ref>https://www.iso.org/standard/76120.html</ref>
{| class="wikitable static-row-numbers"
# 2019-09-10 : 10.99 New project approved
! date !! ISO stages<ref>{{cite web | url=https://www.iso.org/standard/76120.html | title=Iso/Iec 39075:2024 }}</ref>
# 2019-09-10 : 20.00 New project registered in TC/SC work programme
|-
# 2021-11-22 : 30.00 Committee draft (CD) registered
#| 20212019-1109-2310 :|| 3010.2099 CDNew studyproject initiatedapproved
|-
# 2022-02-25 : 30.60 Close of comment period
#| 2019-09-10 :|| 20.00 New project registered in TC/SC work programme
# 2022-08-29 : 30.92 CD referred back to Working Group
|-
# 2022-08-29 : 30.92 Committee draft (CD) registered
#| 20222021-0811-3022 :|| 30.2000 CDCommittee studydraft (CD) initiatedregistered
|-
# 2022-10-26 : 30.60 Close of comment period
#| 20232021-0311-2223 :|| 30.9920 CD approvedstudy for registration as DISinitiated
|-
# 2023-03-24 : 40.00 DIS registered
#| 2022-02-25 :|| 30.60 Close of comment period
# 2023-05-24 : 40.20 DIS ballot initiated: 12 weeks
|-
# 2023-08-17 : 40.60 Close of voting
#| 2022-08-29 :|| 30.92 CD referred back to Working Group
# 2023-11-28 : 40.99 Full report circulated: DIS approved for registration as FDIS
|-
# 2023-12-11 : 50.00 Final text received or FDIS registered for formal approval
#| 20212022-1108-2229 :|| 30.00 Committee draft (CD) registered
# 2024-01-26 : 50.20 Proof sent to secretariat or FDIS ballot initiated: 8 weeks
|-
# 2024-03-23 : 50.60 Close of voting. Proof returned by secretariat
| 2022-08-30 || 30.20 CD study initiated
# 2024-03-23 : 60.00 International Standard under publication
|-
#| 2022-10-26 :|| 30.60 Close of comment period
|-
| 2023-03-22 || 30.99 CD approved for registration as [[Draft International Standard|DIS]]
|-
#| 2023-03-24 :|| 40.00 DIS registered
|-
#| 2023-05-24 :|| 40.20 DIS ballot initiated: 12 weeks
|-
#| 2023-08-17 :|| 40.60 Close of voting
|-
#| 2023-11-28 :|| 40.99 Full report circulated: DIS approved for registration as FDIS
|-
#| 2023-12-11 :|| 50.00 Final text received or FDIS registered for formal approval
|-
#| 2024-01-26 :|| 50.20 Proof sent to secretariat or FDIS ballot initiated: 8 weeks
|-
#| 2024-03-23 :|| 50.60 Close of voting. Proof returned by secretariat
|-
#| 2024-03-23 :|| 60.00 International Standard under publication
|-
| 2024-04-12 || 60.60 International Standard published
|}
 
== GQL property graph data model ==
 
GQL is a query language specifically for property graphs. A property graph closely resembles a [[conceptual data model]], as expressed in an [[entity–relationship model]] or in a [[Unified Modeling Language|UML]] [[class diagram]] (although it does not include n-ary relationships linking more than two entities). Entities or concepts are modelled as nodes, and relationships as edges, in a graph. Property graphs are ''multigraphs'': there can be many edges between the same pair of nodes. GQL graphs can be ''mixed'': they can contain directed edges, where one of the endpoint nodes of an edge is the tail (or source) and the other node is the head (or target or destination), but they can also contain undirected (bidirectional or reflexive) edges.
 
Nodes and edges, collectively known as elements, have attributes. Those attributes may be data values, or labels (tags). Values of properties cannot be elements of graphs, nor can they be whole graphs: these restrictions intentionally force a clean separation between the topology of a graph, and the attributes carrying data values in the context of a graph topology. The property graph data model therefore deliberately prevents nesting of graphs, or treating nodes in one graph as edges in another. Each property graph may have a set of labels and a set of properties that are associated with the graph as a whole.
Line 60 ⟶ 102:
 
== Implementations ==
Although the GQL Standard is not yet publicly available, theThe first in-memory graph database that can interpret GQL is available.<ref name="GQL Parser">{{cite web|url=https://github.com/OlofMorra/GQL-parser|title=GQL Parser|last=|first=|date=|website=[[GitHub]]|publisher=|accessdate=January 18, 2021}}</ref><ref name="First GQL research implementation from Olof Morra at TU Eindhoven!">{{cite web|url=https://www.linkedin.com/pulse/first-gql-research-implementation-from-olof-morra-tu-eindhoven-green/?trackingId=B4cNxk7uqZEPZgsZh2%2FWHw%3D%3D|title=First GQL research implementation from Olof Morra at TU Eindhoven!|publisher=Alastair Green|accessdate=January 18, 2021}}</ref> Aside from the implementation, one can also find a formalization and read the syntax of the specific subset of GQL.<ref name="A Semantics of GQL; a New Query Language for Property Graphs Formalized">{{cite web|url=https://github.com/OlofMorra/GQL-parser/blob/main/src/main/resources/report/A%20Semantics%20of%20GQL;%20a%20New%20Query%20Language%20forProperty%20Graphs%20Formalized.pdf|title=A Semantics of GQL; a New Query Language for Property Graphs Formalized|last=|first=|date=|website=|publisher=Olof Morra|accessdate=January 18, 2021}}</ref>
 
==Extending existing graph query languages==
The GQL project draws on multiple sources or inputs, notably existing industrial languages and a new section of the SQL standard. In preparatory discussions within WG3 surveys of the history<ref name="GQLs history">{{cite web|url=https://s3.amazonaws.com/artifacts.opencypher.org/website/materials/DM32.2/DM32.2-2018-00085R1-recent_history_of_property_graph_query_languages.pdf|title=''An overview of the recent history of Graph Query Languages''|last=Lindaaker|first=Tobias|date=May 2018|publisher=opencypher.org|access-date=October 6, 2019}}</ref> and comparative content of some of these inputs<ref name="Summary Chart">{{cite web|url=https://s3.amazonaws.com/artifacts.opencypher.org/website/materials/DM32.2/DM32.2-2018-00086r1-summary-chart-of-cypher-pgql-gcore.pdf|title=''Summary Chart of Cypher, PGQL, and G-Core''|last=Plantikow|first=Stefan|date=May 2018|publisher=opencypher.org|access-date=November 3, 2019}}</ref> were presented. GQL will beis a declarative language with its own distinct syntax, playing a similar role to SQL in the building of a database application. Other graph query languages have been defined which offer direct procedural features such as branching and looping (Apache Tinkerpop's [[Gremlin, (query language)|Gremlin]]<ref name="Gremlin 2015">{{cite book|url=https://dl.acm.org/citation.cfm?id=2815073|title=''The Gremlin graph traversal machine and language'' (invited talk). In Proceedings of the 15th Symposium on Database Programming Languages|last=Rodriguez|first=Marko (DBPL 2015)A.|chapter= ACM,The NewGremlin York,graph NY,traversal USA,machine 1-10.and DOI:language 10.1145/2815072.2815073''(Invited talk)|lastdate=Rodriguez2015|firstpages=Marko A.|date=20151–10|publisher=ACM|doi=10.1145/2815072.2815073|arxiv= 1508.03843|isbn=9781450339025|s2cid=32623848|access-date=November 10, 2019}}</ref>), and GSQL,<ref name="GSQL white paper"/> making it possible to traverse a graph iteratively to perform a class of graph algorithms, but GQL will not directly incorporate such features.<ref name="Wood Graph Query">{{cite journal|url=https://dl.acm.org/ft_gateway.cfm?id=2206879&ftid=1212198&dwn=1&CFID=106456621&CFTOKEN=92daacebb1744396-220C1ECA-F98C-4552-03541423FDE04D18|title='' Query languages for graph databases. '', SIGMOD Rec. 41, 1 (April 2012), 50-60. DOI: 10.1145/2206869.2206879.|last=Wood|first=Peter T.|journal=ACM SIGMOD Record|date=25 April 2012|volume=41|issue=1|pages=50–60|publisher=ACM|doi=10.1145/2206869.2206879|s2cid=13537601|access-date=October 25, 2019|url-access=subscription}}</ref><ref name="GQL foundations">{{cite journal|url=https://dl.acm.org/citation.cfm?id=3104031|title='' Foundations of Modern Query Languages for Graph Databases'', ACM Comput. Surv. 50, 5, DOI: 10.1145/3104031
|last=Angles|first=Renzo|journal=ACM Computing Surveys
|display-authors=etal|date=September 2017|volume=50
|issue=5
|pages=68:1–68:401–40
|publisher=ACM|doi=10.1145/3104031
|arxiv=1610.06264
|s2cid=13526884
|access-date=November 12, 2019}}</ref> However, GQL is envisaged as a specific case of a more general class of graph languages, which will share a graph type system and a calling interface for procedures that process graphs.
 
=== SQL/PGQ Property Graph Query ===
Line 80 ⟶ 122:
 
=== Cypher ===
Cypher<ref name="Cypher">{{cite book|url=https://dl.acm.org/citation.cfm?id=3190657|title=''Cypher: An Evolving Query Language for Property Graphs.'' In Proceedings of the 2018 International Conference on Management of Data|last=Francis|first=Nadime|chapter= (SIGMODCypher: '18).An ACM,Evolving NewQuery York,Language NY,for USA,Property 1433-1445. DOI: 10.1145/3183713.3190657|last=Francis|first=NadimeGraphs|date=27 May 2018|pages=1433–1445|display-authors=etal|publisher=ACM|doi=10.1145/3183713.3190657|isbn=9781450347037|s2cid=13919896|access-date=October 25, 2019}}</ref> is a language originally designed by Andrés Taylor and colleagues at Neo4j Inc., and first implemented by that company in 2011. Since 2015 it has been made available as an open source language description<ref name="Cypher 9">{{cite web|url=https://s3.amazonaws.com/artifacts.opencypher.org/openCypher9.pdf|title=''Cypher Query Language Reference (Version 9)'' |display-authors=etal|publisher=opencypher.org|access-date=November 10, 2019}}</ref> with grammar tooling, a [[Java virtual machine|JVM]] front-end that parses Cypher queries, and a Technology Compatibility Kit (TCK) of over 2000 test scenarios, using [[Cucumber (software)|Cucumber]] for implementation language portability.<ref name="Cypher Resources">{{cite web|url=http://www.opencypher.org/resources|title=''openCypher Resources''|display-authors=etal|publisher=ACM|access-date=November 10, 2019}}</ref> The TCK reflects the language description and an enhancement for temporal datatypes and functions documented in a Cypher Improvement Proposal.<ref name="Date-Time CIP">{{cite web|url=https://github.com/thobe/openCypher/blob/date-time/cip/1.accepted/CIP2015-08-06-date-time.adoc|title=''CIP2015-08-06 - Date and Time''|date=15 May 2019|publisher=opencypher.org|access-date=October 25, 2019}}</ref>
 
Cypher allows creation, reading, updating and deleting of graph elements, and is a language that can therefore be used for analytics engines and transactional databases.
Line 116 ⟶ 158:
 
=== PGQL ===
PGQL<ref name="PGQL Grades">{{cite journalbook|chapter-url=https://dl.acm.org/citation.cfm?id=2960421/ |last=van Rest|first=Oskar|title=''PGQL: a property graph query language''. In Proceedings of the Fourth International Workshop on Graph Data Management Experiences and Systems (GRADES|chapter=PGQL: '16).A ACM,property Newgraph York,query NY,language USA. DOI: 10.1145/2960414.2960421|last=van Rest|first=Oskar|display-authors=etal|date=June 2016|pages=1–6 |publisher=ACM|doi=10.1145/2960414.2960421|isbn=978-1-4503-4780-8 |s2cid=6806901|access-date=October 25, 2019}}</ref>
is a language designed and implemented by Oracle Inc., but made available as an open source specification,<ref name="PGQL spec">{{cite web|url=http://pgql-lang.org/|title=PGQL|publisher=pgql.org|access-date=October 6, 2019}}</ref> along with JVM parsing software.<ref name="PGQL parser">{{cite web|url=https://github.com/oracle/pgql-lang|title=''PGQL is an SQL-based query language for the Property Graph data model''. |last=van Rest|first=Oskar|display-authors=etal|date=September 2015|publisher=pgql.org|access-date=November 3, 2019}}</ref> PGQL combines familiar SQL SELECT syntax including SQL expressions and result ordering and aggregation with a pattern matching language very similar to that of Cypher. It allows the specification of the graph to be queried, and includes a facility for macros to capture "pattern views", or named sub-patterns. It does not support insertion or updating operations, having been designed primarily for an analytics environment, such as Oracle's PGX product. PGQL has also been implemented in Oracle Big Data Spatial and Graph, and in a research project, PGX.D/Async.<ref name="PGQL PGX.D">{{cite journalbook|chapter-url=https://dl.acm.org/citation.cfm?doid=3078447.3078454/ |titlelast=Roth|first=''PGX.D/Async:Nicholas A Scalable Distributed Graph Pattern Matching Engine''P. In |title=Proceedings of the Fifth International Workshop on Graph Data-management Experiences & Systems (GRADES'17)|chapter=PGX.D/Async: ACM,A NewScalable York,Distributed NY,Graph USA,Pattern ArticleMatching 7,Engine 6 pages. DOI: 10.1145/3078447.3078454|last=Roth|first=Nicholas P.|display-authors=etal|date=2017|pages=1–6 |publisher=ACM|doi=10.1145/3078447.3078454|isbn=978-1-4503-5038-9 |s2cid=26283328|access-date=October 29, 2019}}</ref>
 
=== G-CORE===
G-CORE is a research language designed by a group of academic and industrial researchers and language designers which draws on features of Cypher, PGQL and [[SPARQL]].<ref name="G-CORE">{{cite journalbook|chapter-url=https://dl.acm.org/citation.cfm?id=3190654/ |last=Angles|first=Renzo|title=''G-CORE: A Core for Future Graph Query Languages.'' In Proceedings of the 2018 International Conference on Management of Data (SIGMOD|chapter=G-CORE: '18).A ACM,Core Newfor York,Future NY,Graph USA,Query 1421-1432.Languages DOI: 10.1145/3183713.3190654|last=Angles|first=Renzo|display-authors=etal|date=2018|pages=1421–1432 |publisher=ACM|doi=10.1145/3183713.3190654|isbn=978-1-4503-4703-7 |s2cid=4623760|url=https://ir.cwi.nl/pub/27560 |access-date=November 9, 2019}}</ref><ref name="G-CORE summary">{{cite web|url=https://dl.acm.org/citation.cfm?id=3190654/|title=''G-CORE: The LDBC Graph Query Language Proposal''. In archives of FOSDEM 2018.|last=Voigt|first=Hannes|date=February 2018|access-date=November 12, 2019}}</ref> The project was conducted under the auspices of the Linked Data Benchmark Council (LDBC), starting with the formation of a Graph Query Language task force in late 2015, with the bulk of the work of paper writing occurring in 2017. G-CORE is a composable language which is closed over graphs: graph inputs are processed to create a graph output, using graph projections and graph set operations to construct the new graph. G-CORE queries are pure functions over graphs, having no side effects, which mean that the language does not define operations which mutate (update or delete) stored data. G-CORE introduces views (named queries). It also incorporates paths as elements in a graph ("paths as first class citizens"), which can be queried independently of projected paths (which are computed at query time over node and edge elements). G-CORE has been partially implemented in open-source research projects in the LDBC GitHub organization.<ref name="G-CORE parser">{{cite web|url=https://github.com/ldbc/ldbc_gcore_parser|title=''G-CORE Grammar and Parser''|last=van Rest|first=Oskar|date=2017|publisher=LDBC|access-date=November 12, 2019}}</ref><ref name="G-CORE project">{{cite web|url=https://homepages.cwi.nl/~boncz/msc/2018-GeorgianaCiocirdel.pdf|title=''A G-CORE (Graph Query Language) Interpreter'', Master's Thesis in Parallel and Distributed Computer Systems, CWI and Vrije Universiteit Amsterdam|last=Ciocîrdel|first=Georgiana Diana|date=2018|publisher=CWI|access-date=November 12, 2019}}</ref><ref name="G-CORE interpreter">{{cite web|url=https://github.com/ldbc/gcore-spark|title=''G-CORE interpreter on Spark''|last1=Ciocîrdel|first1=Georgiana Diana|last2=Boncz|first2=Peter|date=2017|publisher=LDBC|access-date=November 12, 2019}}</ref>
 
=== GSQL ===
GSQL<ref name="GSQL white paper">{{cite web|url=https://info.tigergraph.com/gsql|title=''GSQL: An SQL-Inspired Graph Query Language''|last1=Wu|first1=Mingxi|last2=Deutsch|first2=Alin|access-date=November 9, 2019}}</ref> is a language designed for [[TigerGraph]] Inc.'s proprietary graph database. Since October 2018 TigerGraph language designers have been promoting and working on the GQL project. GSQL is a [[Turing-complete language]] that incorporates procedural flow control and iteration, and a facility for gathering and modifying computed values associated with a program execution for the whole graph or for elements of a graph called accumulators. These features are designed to enable iterative graph computations to be combined with data exploration and retrieval. GSQL graphs must be described by a schema of vertexes and edges, which constrains all insertions and updates. This schema therefore has the closed world property of an SQL schema, and this aspect of GSQL (also reflected in design proposals deriving from the Morpheus project<ref name="PGS">{{cite web|url=https://s3.amazonaws.com/artifacts.opencypher.org/website/materials/sql-pg-2018-0056r1-Property-Graph-Schema.pdf|title=''Property Graph Schema'', ANSI INCITS DM32.2 SQL Property Graph Extensions Ad Hoc submission ''sql-pg-2018-0056r1'', Neo4j Query Languages Standards and Research Team|last1=Voigt|first1=Hannes|last2=Selmer|first2=Petra|last3=Lindaaker|first3=Tobias|last4=Plantikow|first4=Stefan|last5=Green|first5=Alastair|last6=Furniss|first6=Peter|date=December 2018|publisher=openCypher.org|access-date=November 12, 2019}}</ref>) is proposed as an important optional feature of GQLGSQL.
 
Vertexes and edges are named schema objects which contain data but also define an imputed type, much as [[SQL tablestable]]s are data containers, with an associated implicit row type. GSQL graphs are then composed from these vertex and edge sets, and multiple named graphs can include the same vertex or edge set. GSQL has developed new features since its release in September 2017,<ref name="GSQL 1.0">{{cite web|url=https://doc-archive.tigergraph.com/1.0/GSQL-Language-Reference-Part-1---Defining-Graphs-and-Loading-Data.html|title=''GSQL documentation Tigergraph 1.0''.|date=2017|access-date=November 9, 2019}}</ref> most notably introducing variable-length edge pattern matching<ref name="GSQL patterns">{{cite web|url=https://docs.tigergraph.com/v/2.4/release-notes-change-log/release-notes-tigergraph-2.4|title=''Pattern Matching'', TigerGraph 2.4 Release Notes.|date=June 2019|access-date=November 9, 2019}}</ref> using a syntax related to that seen in Cypher, PGQL and SQL/PGQ, but also close in style to the fixed-length patterns offered by [[Microsoft SQL/Server Graph]]<ref name="SQLServer Graph">{{cite web|url=https://docs.microsoft.com/en-us/sql/relational-databases/graphs/sql-graph-overview?view=sql-server-ver15#query-language-extensions|title=''Query language extensions'', Graph processing with SQL Server and Azure SQL Database|display-authors=etal|date=2017|publisher=Microsoft Inc.|access-date=November 10, 2019}}</ref>
 
GSQL also supports the concept of Multigraphs
Line 167 ⟶ 209:
* [https://www.gqlstandards.org GQL Standard] (Official website)
 
{{ISO standards}}
{{List of IEC standards}}
[[Category:Computer languages]]
[[Category:Query languages]]
[[Category:ISO/IEC standards]]