Skip to main content

Cypher Dialect & Restrictions

DortDB's graph language is a set of implementation extensions to Cypher, based on the openCypher grammar. DortDB can parse the entire openCypher 9 grammar, but, in keeping with DortDB's data-selection focus, only the read subset is executed.

Attribution

This language is derived from the openCypher grammar and is not approved by the openCypher Implementers Group, so its formal description is implementation extensions to Cypher, not "Cypher" or "openCypher". These docs and the package name use "Cypher" as shorthand for readability. Cypher® is a registered trademark of Neo4j, Inc.

Supported​

  • The full openCypher 9 grammar parses.
  • Node and relationship pattern matching, in any direction.
  • Variable-length paths, e.g. -[:KNOWS *1..3]->.
  • Post-match processing: WHERE, RETURN, ORDER BY, SKIP, LIMIT, aggregation, and so on.

Not implemented, and not planned​

DortDB is read-only, so the data-writing clauses are rejected at planning time even though they parse:

  • CREATE, MERGE
  • SET, REMOVE
  • DELETE, DETACH DELETE

Running one of these produces an only read operations are supported error.

Static typing and schema validation are likewise omitted by design, across all DortDB languages.

Standard library​

Only a subset of the standard Cypher functions and operators is currently implemented. When a function you need is missing, supply it as an extension; this is the intended way to fill gaps in library coverage.

Cypher functions may additionally set addAdapterCtx: true, which passes them the queried graph and its data adapter. This is the mechanism behind graph-aware built-ins such as startNode.

Selecting the graph​

The graph a query runs against is the source named by the language's defaultGraph configuration. Alternatively, use the FROM graph clause to target a different graph.

FROM social
MATCH (p:Person)
RETURN p.name AS name