/openCypher

Specification of the Cypher query language

The Cypher Query Language

This repository holds the specification of the Cypher graph database query language. Its purpose is to be central to the process of evolving the specification of the language that is Cypher.

Overview of the process

It is our aim to make the process of specifying and evolving the Cypher query language as open as possible. "We" are the Cypher Language Group, put together by Neo Technology to govern the Cypher query language.

While we aim for the process to be open, this does not mean a public democracy, as all decisions are made by the Cypher Language Group. That said, we are of course extremely grateful for comments and suggestions on how to improve the Cypher query language.

The Cypher Language Group

The Cypher Language Group consists of:

Andrés, in capacity of being the "father of Cypher", has ultimate say, should that ever be necessary. Petra acts as PM for the group, calling meetings and ensuring that notes get taken at said meetings.

Improvement Proposals

Ultimately, proposals for improving the Cypher query language should take the form of a Cypher Improvement Proposal (CIP). These should typically be proposed as pull requests against this repository, proposing the addition of a document following a naming scheme of CIP{year}-{month}-{day}-{name}.asciidoc. The “{name}” part of the filename is a very short name of the proposed changed; for instance the keyword the proposal intends to add or modify. If the “{name}” part contains multiple words, each word should be written using lower case characters, separated by a dash. The date portion of the name is the the initial date of proposing the CIP (typically the same date as the submission of the pull request).

CIPs that additionally come with a reference implementation are very much appreciated, as is helps clarify the workings of the proposed improvement. This would help make the handling of the proposal quicker, or perhaps even make it more likely to be accepted.

Suggestions and ideas are also welcome and much appreciated; these would best be submitted as "issues" in this repository on GitHub. The expectation is that these would eventually result in a CIP being created.

What is a CIP?

A Cypher Improvement Proposal, or CIP for short, is a document that details a change to Cypher.

The life cycle of a CIP

Proposing a change to Cypher starts by either submitting a CIP as a pull request to this repository, or by submitting a feature request. A direct submission of a CIP is appropriate if the proposed changed is in the form of a concrete proposal. A feature request is typically the preferred method of starting a proposal. By starting from a feature request, you will be able to judge how large the general interest for the feature is before you embark on writing the CIP. Starting from a feature request also facilitates building an "experts group" that can work with you on the details of the proposal.

The comment thread on the GitHub issue for the feature proposal is an excellent place for discussing ideas

Meeting notes

The Cypher Language Group published meeting notes from all the group meetings at https://opencypher.github.io/meeting-minutes/

The structure of this repository

  • Cypher Improvement Proposals

  • Reference Implementation

  • Compatibility Test Suite

All material in this repository is the exclusive property of Neo Technology.