Cypher Coverage
Patterns
Patterns are fully supported.
Types
Structural types
- Nodes
- Relationships
- Path variables (alternating sequence of nodes and relationships).
Composite types
Lists
Maps
Unsupported:
- Temporal types (Date, DateTime, LocalDateTime, Time, LocalTime, Duration)
Literal types
Numeric types (64-bit doubles and 64-bit signed integer representations)
String literals
Booleans
Unsupported:
- Hexadecimal and octal numerics
Other
NULL is supported as a representation of a missing or undefined value.
Comparability, equality, orderability, and equivalence
This is a somewhat nebulous area in Cypher itself, with a lot of edge cases. Broadly speaking, RedisGraph behaves as expected with string and numeric values. There are likely some behaviors involving the numerics NaN, -inf, inf, and possibly -0.0 that deviate from the Cypher standard. We do not support any of these properties at the type level, meaning nodes and relationships are not internally comparable.
Clauses
Reading Clauses
- MATCH
- OPTIONAL MATCH
Projecting Clauses
- RETURN
- AS
- WITH
- UNWIND
Reading sub-clauses
- WHERE
- ORDER BY
- SKIP
- LIMIT
Writing Clauses
CREATE
DELETE
- We actually implement DETACH DELETE, the distinction being that relationships invalidated by node deletions are automatically deleted.
SET
Unsupported:
- REMOVE (to modify properties)
- Properties can be deleted with SET [prop] = NULL.
Reading/Writing Clauses
- MERGE
- CALL (procedures)
- The currently-supported procedures can be found in the Procedures documentation.
Set Operations
- UNION
- UNION ALL
Functions
Scalar functions
id
labels
timestamp
type
coalesce
startNode
endNode
Unsupported:
- Some casting functions (toBoolean, toFloat)
- Temporal arithmetic functions
- Functions returning maps (properties)
Aggregating functions
- avg
- collect
- count
- max
- min
- percentileCont
- percentileDist
- stDev
- stDevP
- sum
List functions
- head
- range
- reverse
- size
- tail
Math functions - numeric
- abs
- ceil
- floor
- sign
- round
- rand
- toInteger
String functions
left
right
trim
lTrim
rTrim
reverse
substring
toLower
toUpper
toString
Unsupported:
- replace
- split
Predicate functions
- exists
- any
- all
- single
- none
Expression functions
- case...when
Geospatial functions
- distance
- point
Unsupported function classes
- Logarithmic math functions
- Trigonometric math functions
- User-defined functions
Operators
Mathematical operators
Multiplication, addition, subtraction, division, modulo
Unsupported:
- Exponentiation
String operators
String operators (STARTS WITH, ENDS WITH, CONTAINS) are supported.
Unsupported:
- Regex operator
Boolean operators
- AND
- OR
- NOT
- XOR
Parameters
Parameters may be specified to allow for more flexible query construction:
CYPHER name_param = "Niccolò Machiavelli" birth_year_param = 1469 MATCH (p:Person {name: $name_param, birth_year: $birth_year_param}) RETURN p
The example above shows the syntax used by redis-cli
to set parameters, but
each RedisGraph client introduces a language-appropriate method for setting parameters,
and is described in their documentation.
Non-Cypher queries
- RedisGraph provides the
GRAPH.EXPLAIN
command to print the execution plan of a provided query. GRAPH.DELETE
will remove a graph and all Redis keys associated with it.
- We do not currently provide support for queries that retrieve schemas, though the LABELS and TYPE scalar functions may be used to get a graph overview.