Graph Query Language: Difference between revisions

Content deleted Content added
No edit summary
Expand references, completing input (predecessor) languages descriptions
Line 14:
 
==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 and comparative content of some of these inputs were presented.<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|website=|publisher=opencypher.org|accessdate=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 GQLChart isof intendedCypher, toPGQL, drawand inspirationG-Core''|last=Plantikow|first=Stefan|date=May from2018|website=|publisher=opencypher.org|accessdate=November 3, 2019}}</ref> were presented. GQL will be a declarative languageslanguage whichwith its own distinct syntax, playplaying a similar role to SQL in the building of a database application, but. otherOther graph query languages have been defined which offer direct procedural features such as branching and looping['''REF TINKERPOP, GREMLIN'''], ['''REF GQSL'''], and the ability to traverse a graph iteratively['''REF TINKERPOP, GREMLIN'''], but GQL will not incorporate such features. <ref name="Wood Graph Query">{{cite web|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.|date=|website=|publisher=ACM|accessdate=October 25, 2019}}</ref>['''REF MARCELO''']. 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 ===
Prior work by WG3 and SC32 mirror bodies, particularly in INCITS DM32, has helped to define a new planned partPart to16 of the SQL Standard, which allows a read-only graph query to be called inside a SQL SELECT statement, matching a graph pattern using syntax which is very close to Cypher, PGQL and G-CORE, and returning a table of data values as the result. SQL/PGQ also contains DDL to allow SQL tables to be mapped to a graph view schema object with nodes and edges associated to sets of labels and set of data properties.<ref name="SQL Part 16 PGQ">{{cite web|url=https://www.iso.org/standard/79473.html?browse=tc|title=ISO/IEC WD 9075-16 Information technology — Database languages SQL — Part 16: SQL Property Graph Queries (SQL/PGQ)|last=|first=|date=|website=|publisher=ISO|accessdate=October 6, 2019}}</ref><ref name="W3C Berlin SQL and GQL">{{cite web|url=https://www.w3.org/Data/events/data-ws-2019/assets/slides/KeithWHare-2.pdf||title=''SQL and GQL'', W3C Workshop on Web Standardization for Graph Data. Creating Bridges: RDF, Property Graph and SQL.|last=Hare|first=Keith|display-authors=etal|date=March 2019|website=|publisher=W3C|accessdate=October 6, 2019}}</ref><ref name="LDBC SQL/PGQ">{{cite web|url=http://wiki.ldbcouncil.org/download/attachments/106233859/ldbc_tuc_2019_sql-pgq.pdf?version=1&modificationDate=1562342465000&api=v2|title=''Property graph extensions for the SQL standard''. LDBC 12th TUC.|last=Trigonakis|first=Vasileios|date=July 2019|website=|publisher=LBDC|accessdate=October 6, 2019}}</ref>
=== Cypher 9 ===
Cypher<ref name="Cypher">{{cite web|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 (SIGMOD '18). ACM, New York, NY, USA, 1433-1445. DOI: 10.1145/3183713.3190657|last=Francis|first=Nadime|display-authors=etal|date=|website=|publisher=ACM|accessdate=October 25, 2019}}</ref> is a language originally designed and implemented by Neo4j Inc., but since 2015 made available as an open source language description['''REF CYPHER 9'''], with grammar tooling, a JVM front-end that parses Cypher queries, and a Technology Compatibility Kit (TCK) of over 2000 test scenarios, using Cucumber for implementation language portability. 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''|last=|first=|date=|website=|publisher=opencypher.org|accessdate=October 25, 2019}}</ref>.
 
Cypher allows reading, creation and updating of graph elements. The current version plus(including the temporal extension) is referred to as Cypher 9. Prior to the GQL project it was planned to create a new version, Cypher 10 ['''REF HEADING BELOW'''], that would incorporate features like schema and composable graph queries and views. The first designs for Cypher 10, including graph construction and projection, were implemented in the Cypher for Apache Spark project starting in 2016.<ref name="CAPS Morpheus">{{cite web|url=https://github.com/opencypher/morpheus||title=''Morpheus brings the leading graph query language, Cypher, onto the leading distributed processing platform, Spark.''|last=Rydberg|first=Mats|display-authors=etal|date=July 2016|website=|publisher=openCypher|accessdate=November 3, 2019}}</ref>These features are part of the proposed scope of GQL ['''REF TIGERGRAPH/NEO4j DOCUMENT'''].
 
Cypher is implemented in Neo4j's database, by Redis Graph, by Cambridge Semantics Anzograph, by Bitnine's Agens Graph, by Memgraph, and in open source projects Cypher for Gremlin<ref name="CfoG">{{cite web|url=https://github.com/opencypher/cypher-for-gremlin||title=''Cypher for Gremlin adds Cypher support to any Gremlin graph database.''|last=Novikov|first=Dmitry|display-authors=etal|date=January 2018|website=|publisher=openCypher|accessdate=November 3, 2019}}</ref> maintained by Neueda Labs in Riga, and Cypher for Apache Spark (now renamed to Morpheus)<ref> name="CAPS Morpheus"</ref><ref name="Morpheus SQL and Cypher">{{cite web|url=https://databricks.com/session/neo4j-morpheus-interweaving-table-and-graph-data-with-sql-and-cypher-in-apache-spark||title=''Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apache Spark''|last=Green|first=Alastair|last2=Junghanns|first2=Martin|date=April 2019|website=|publisher=Databricks Inc.|accessdate=November 3, 2019}}</ref><ref name="Morpheus SQL and Cypher cont">{{cite web|url=https://databricks.com/session/neo4j-morpheus-interweaving-table-and-graph-data-with-sql-and-cypher-in-apache-spark-continues|title=''Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apache Spark (continues)''}}</ref>, as well as in research projects such as Cypher.PL and Ingraph. Cypher as a language is governed as the openCypher project ['''REF WEBSITE, REF GITHUB ORG''']by an informal community which has held five face-to-face openCypher Implementers' Meetings since February 2017 ['''REF WEBSITE EVENTS''']
 
=== PGQL ===
PGQL <ref name="PGQL">{{cite web|url=http://pgql-lang.org/|title=PGQL|last=|first=|date=|website=|publisher=pgql.org|accessdate=October 6, 2019}}</ref><ref name="PGQL Grades">{{cite web|url=https://dl.acm.org/citation.cfm?id=2960421/|title=2016. ''PGQL: a property graph query language''. In Proceedings of the Fourth International Workshop on Graph Data Management Experiences and Systems (GRADES '16). ACM, New York, NY, USA, Article 7, 6 pages. DOI: 10.1145/2960414.2960421|last=van Rest|first=Oskar|display-authors=etal|date=June 2016|website=|publisher=pgql.org|accessdate=October 625, 2019}}</ref>
is a language designed and implemented by Oracle Inc., but made available as an open source specification, along with JVM parsing software. 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". 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 a research project, PGX.D/Async<ref name="PGQL PGX.D">{{cite web|url=https://dl.acm.org/citation.cfm?doid=3078447.3078454/|title=2017. [''PGX.D/Async: A Scalable Distributed Graph Pattern Matching Engine'get'. theIn name,Proceedings REFof "the name"Fifth International Workshop on Graph Data-management Experiences & Systems (GRADES''']17). ACM, New York, NY, USA, Article 7, 6 pages. DOI: 10.1145/3078447.3078454|last=Roth|first=Nicholas P.|display-authors=etal|date=|website=|publisher=ACM|accessdate=October 29, 2019}}</ref>.
.
 
=== G-CORE===