You're reading the v2.0.0 docs. View the latest (v2.2.0) →

Cypher & SQL-PGQ Graph Queries

RelataDB supports three graph query languages over the same underlying CSR adjacency engine.

Cypher (Neo4j-compatible)

Any SQL query starting with MATCH is auto-detected and translated to SQL before execution. No separate endpoint is needed.

MATCH (n:Person {id: 'p1'}) RETURN n.name, n.email

Multi-hop traversal:

MATCH (a:Person)-[:KNOWS]->(b:Person)
WHERE a.id = 'p1'
RETURN b.name

Supported Cypher clauses

ClauseStatus
MATCH / OPTIONAL MATCH
WHERE
RETURN
UNION / UNION ALL
CALL traverse.* / CALL gds.*
CREATE / MERGE (writes)✅ via governed write door

Connect via the Bolt protocol on port 7687 (default) using the official Neo4j Python/Java/Go drivers or cypher-shell.

SQL/PGQ

SQL/PGQ graph patterns inside standard SQL SELECT:

SELECT p1.name, p2.name
FROM MATCH (p1:Person) -[e:KNOWS]-> (p2:Person) ON graph_schema
WHERE p1.id = 'p1'

Graph SQL operators

RelataDB provides 10+ graph operators as SQL table-valued functions:

-- Shortest path
SELECT * FROM SHORTEST_PATH('Person', 'p1', 'p2', 'KNOWS')
 
-- Traverse with depth limit
SELECT * FROM TRAVERSE('Person', 'p1', 'KNOWS', 3)
 
-- Degree centrality
SELECT id, DEGREE(id, 'out') AS out_degree FROM Person
 
-- Connected components
SELECT * FROM WEAKLY_CONNECTED('Person', 'KNOWS')
 
-- PageRank
SELECT id, pagerank FROM PAGERANK('Person', 'KNOWS')

See also