Cypher: An Evolving Query Language for Property Graphs

The Cypher property graph query language is an evolving language, originally designed and implemented as part of the Neo4j graph database, and it is currently used by several commercial database products and researchers. We describe Cypher 9, which is the first version of the language governed by the openCypher Implementers Group. We first introduce the language by example, and describe its uses in industry. We then provide a formal semantic definition of the core read-query features of Cypher, including its variant of the property graph data model, and its ASCII Art graph pattern matching mechanism for expressing subgraphs of interest to an application. We compare the features of Cypher to other property graph query languages, and describe extensions, at an advanced stage of development, which will form part of Cypher 10, turning the language into a compositional language which supports graph projections and multiple named graphs.

[1]  Alvin Cheung,et al.  Cosette: An Automated Prover for SQL , 2017, CIDR.

[2]  Domagoj Vrgoc,et al.  Querying Graphs with Data , 2016, J. ACM.

[3]  R. Kent Dybvig,et al.  Revised6 Report on the Algorithmic Language Scheme , 2009 .

[4]  Thomas Neumann,et al.  Efficiently Compiling Efficient Query Plans for Modern Hardware , 2011, Proc. VLDB Endow..

[5]  Jennifer Widom,et al.  Object exchange across heterogeneous information sources , 1995, Proceedings of the Eleventh International Conference on Data Engineering.

[6]  Sergio Greco,et al.  Querying Graph Databases , 2000, EDBT.

[7]  Pablo Barceló,et al.  Querying Regular Graph Patterns , 2014, JACM.

[8]  John C. Mitchell,et al.  Concepts in programming languages , 2002 .

[9]  Patricia G. Selinger,et al.  Access path selection in a relational database management system , 1979, SIGMOD '79.

[10]  Yuri Gurevich,et al.  The Semantics of the C Programming Language , 1992, CSL.

[11]  Cristina Cifuentes,et al.  Frappé: Querying the Linux Kernel Dependency Graph , 2015, GRADES@SIGMOD/PODS.

[12]  Stefan Plantikow,et al.  Formal Semantics of the Language Cypher , 2018, ArXiv.

[13]  Andrey Gubichev Query Processing and Optimization in Graph Databases , 2015 .

[14]  Erhard Rahm,et al.  2 J un 2 01 5 GRADOOP : Scalable Graph Data Management and Analytics with Hadoop-Technical Report - , 2015 .

[15]  Marko A. Rodriguez,et al.  The Gremlin graph traversal machine and language (invited talk) , 2015, DBPL.

[16]  Christopher J. Rawlings,et al.  Representing and querying disease networks using graph databases , 2016, BioData Mining.

[17]  Nils Klarlund,et al.  MONA Implementation Secrets , 2000, Int. J. Found. Comput. Sci..

[18]  Peter Woollard,et al.  An Integrated Data Driven Approach to Drug Repositioning Using Gene-Disease Associations , 2016, PloS one.

[19]  Félix Cuadrado,et al.  Cytosm: Declarative Property Graph Queries Without Data Migration , 2017, GRADES@SIGMOD/PODS.

[20]  Juan Sequeda,et al.  G-CORE: A Core for Future Graph Query Languages , 2017, SIGMOD Conference.

[21]  Peter T. Wood,et al.  Query languages for graph databases , 2012, SGMD.

[22]  Jan Hidders,et al.  Typing Graph-Manipulation Operations , 2003, ICDT.

[23]  Mark Levene,et al.  An object-oriented data model formalised through hypergraphs , 1991, Data Knowl. Eng..

[24]  Josep-Lluís Larriba-Pey,et al.  Introduction to Graph Databases , 2014, Reasoning Web.

[25]  Guido Moerkotte,et al.  Dynamic programming strikes back , 2008, SIGMOD Conference.

[26]  C. M. Sperberg-McQueen,et al.  Extensible markup language , 1997 .

[27]  Marc Gyssens,et al.  A graph-oriented object database model , 1990, IEEE Trans. Knowl. Data Eng..

[28]  Sharad Malik,et al.  Boolean satisfiability from theoretical hardness to practical success , 2009, Commun. ACM.

[29]  Doina Caragea,et al.  Graph Databases , 2019, Encyclopedia of Big Data Technologies.

[30]  Andreas Podelski,et al.  Proving program termination , 2011, Commun. ACM.

[31]  Alberto O. Mendelzon,et al.  A graphical query language supporting recursion , 1987, SIGMOD '87.

[32]  Marko A. Rodriguez,et al.  The Gremlin Graph Traversal Machine and Language , 2015, ArXiv.

[33]  H. Howie Huang,et al.  Big data machine learning and graph analytics: Current state and future challenges , 2014, 2014 IEEE International Conference on Big Data (Big Data).

[34]  Athanasios K. Tsakalidis,et al.  Evaluating Twitter Influence Ranking with System Theory , 2016, WEBIST.

[35]  Marcelo Arenas,et al.  Foundations of Modern Query Languages for Graph Databases , 2016, ACM Comput. Surv..

[36]  Nikolaos Papaspyrou,et al.  A Formal Semantics for the C Programming Language , 2000 .

[37]  Claudio Gutierrez,et al.  Survey of graph database models , 2008, CSUR.

[38]  Mark Levene,et al.  A nested-graph model for the representation and manipulation of complex objects , 1994, TOIS.

[39]  Robin Milner,et al.  Definition of standard ML , 1990 .

[40]  Egor V. Kostylev,et al.  SPARQL with Property Paths , 2015, SEMWEB.

[41]  Alberto O. Mendelzon,et al.  GraphLog: a visual formalism for real life recursion , 1990, PODS '90.

[42]  Alvin Cheung,et al.  HoTTSQL: proving query rewrites with univalent SQL semantics , 2016, PLDI.

[43]  Sungpack Hong,et al.  PGQL: a property graph query language , 2016, GRADES '16.

[44]  Borislav Iordanov,et al.  HyperGraphDB: A Generalized Graph Database , 2010, WAIM Workshops.

[45]  Mark Levene,et al.  The hypernode model and its associated query language , 1990, Proceedings of the 5th Jerusalem Conference on Information Technology, 1990. 'Next Decade in Information Technology'.

[46]  Pablo Barceló Baeza Querying graph databases , 2013, PODS 2013.

[47]  Jerzy Tiuryn,et al.  An analysis of ML typability , 1994, JACM.

[48]  Márton Búr,et al.  Model-Driven Engineering of an OpenCypher Engine: Using Graph Queries to Compile Graph Queries , 2017, SDL Forum.

[49]  Serge Abiteboul,et al.  Foundations of Databases , 1994 .

[50]  Michel Scholl,et al.  Gram: a graph data model and query languages , 1992, ECHT '92.

[51]  C. M. Sperberg-McQueen,et al.  Extensible Markup Language (XML) , 1997, World Wide Web J..

[52]  Seon-Young Kim,et al.  Use of Graph Database for the Integration of Heterogeneous Biological Data , 2017, Genomics & informatics.

[53]  Margus Veanes,et al.  Qex: Symbolic SQL Query Explorer , 2010, LPAR.

[54]  RalfHiutmut Gtiting,et al.  GraphDB : Modeling and Querying Graphs in Databases , 1998 .

[55]  Leonid Libkin,et al.  A Formal Semantics of SQL Queries, Its Validation, and Applications , 2017, Proc. VLDB Endow..

[56]  Mark Levene,et al.  A Graph-Based Data Model and its Ramifications , 1995, IEEE Trans. Knowl. Data Eng..

[57]  Goetz Graefe,et al.  The Volcano optimizer generator: extensibility and efficient search , 1993, Proceedings of IEEE 9th International Conference on Data Engineering.

[58]  Oliver Horlacher,et al.  Property Graph vs RDF Triple Store: A Comparison on Glycan Substructure Search , 2015, PloS one.