Graph Query Language: Difference between revisions

Content deleted Content added
prebot
Citation bot (talk | contribs)
Alter: title, template type, url. URLs might have been anonymized. Add: isbn, title, chapter-url, arxiv, pages, chapter. Removed or converted URL. | Use this bot. Report bugs. | Suggested by Headbomb | #UCB_toolbar
Line 70:
 
==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 be 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,<ref name="Gremlin 2015">{{cite book|url=https://dl.acm.org/citation.cfm?id=2815073|title= Proceedings of the 15th Symposium on Database Programming Languages|last=Rodriguez|first=Marko A.|chapter= The Gremlin graph traversal machine and language (Invited talk)|date=2015|pages= 1–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|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}}</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
|last=Angles|first=Renzo|journal=ACM Computing Surveys
|display-authors=etal|date=September 2017|volume=50
Line 87:
 
=== Cypher ===
Cypher<ref name="Cypher">{{cite book|url=https://dl.acm.org/citation.cfm?id=3190657|title= Proceedings of the 2018 International Conference on Management of Data|last=Francis|first=Nadime|chapter= Cypher: An Evolving Query Language for Property Graphs|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 123:
 
=== PGQL ===
PGQL<ref name="PGQL Grades">{{cite journalbook|chapter-url=https://dl.acm.org/citation.cfm?id=2960421/ |last=van Rest|first=Oskar|title=Proceedings of the Fourth International Workshop on Graph Data Management Experiences and Systems |chapter=PGQL: A property graph query language |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/ |last=Roth|first=Nicholas P.|title=Proceedings of the Fifth International Workshop on Graph Data-management Experiences & Systems |chapter=PGX.D/Async: A Scalable Distributed Graph Pattern Matching Engine |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=Proceedings of the 2018 International Conference on Management of Data |chapter=G-CORE: A Core for Future Graph Query Languages |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 ===