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
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
=== 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
=== GSQL ===
|