Implement Cypher Query Language


Neo4j is about to open source their cypher query language:

Is there some documentation where I can learn how to implement cypher for Cayley?



AFAIK there is no documentation available yet. I did a bit of research on openCypher myself (in the context of implementing it with TinkerPop) and I think a Cypher/Cayley implementation would require these steps:

  1. Based on the README of the openCypher grammar, it is possible to generate an ANTLR 4 grammar.
  2. According to this ANTLR 4 issue, there is ongoing work that allows to generate Go code from an ANTLR grammar (see this fork).
  3. The Cypher expression should be mapped to a relational algebra-like representation. This 2016 paper shows some extensions to relational algebra, which allow more efficient evaluation of Cypher queries: An Algebra and Equivalences to Transform Graph Patterns in Neo4j.
  4. I think the full language specification of openCypher is not yet completed, so the Neo4j Cypher specification is the best approximation.


We (the openCypher language group at Neo Technology) are hosting the first Cypher implementers meeting in February 2017. Please see!topic/opencypher/vCNM4UOXcTY

for details. We would be delighted if someone from cayley graph could attend.