Introduction
Bring embedded graph queries to your data lake. Learn to map relational tables, query with three graph languages, and use OrchidDB from Rust, Java, Python, JavaScript/TypeScript, Elixir, or C++.
Start with your data
OrchidDB is a graph query layer built in Rust, with DataFusion planning and Apache Arrow results. Compile SQL and execute through your own engine, or use the standalone CLI with bundled DuckDB and default Iceberg support. Describe nodes, relationships, and properties over your existing tables, then ask graph questions in Cypher, Gremlin, or SPARQL.
A graph mapping connects your application vocabulary to physical columns. A customer can become a Person, an order row can define an ORDERED relationship, and a SQL view can expose a selected group of accounts. Your database remains the source of those rows.
Choose a starting point
Version 0.1.0 is available as a CLI installer and published language packages. On macOS ARM64, install the CLI and run the quickstart without a Rust toolchain or source checkout:
curl -fsSL https://install.orchiddb.com | bash
export PATH="$HOME/.local/bin:$PATH"
orchiddb --version
| Your goal | Start here |
|---|---|
| Run your first graph query | Quickstart |
| Query tables you already own | Map existing tables |
| Query documents and turn JSON arrays into edges | JSON documents |
| Combine vector or full-text search with graph traversal | Search |
| Search remote indexes and join results into the graph | Quickwit and Elasticsearch |
| Create and persist a graph | Managed graphs |
| Query with an RDF vocabulary | SPARQL |
| Use scalar functions across DuckDB and PostgreSQL | Portable scalar functions and function catalog |
| Map application columns or quad tables to RDF | RDF datasets |
| Embed the engine in Rust | Rust API |
| Explore language integrations | Client APIs |
Three languages, one graph
Cypher describes patterns between nodes:
MATCH (p:Person)-[:FOLLOWS]->(friend:Person)
WHERE p.name = 'alice'
RETURN friend.name
ORDER BY friend.name
Gremlin describes a traversal through the same relationships:
g.V().hasLabel('Person').has('name', 'alice')
.out('FOLLOWS').values('name').order()
SPARQL uses RDF rules over application columns or an ontology mapping over graph labels:
PREFIX ex: <https://example.com/>
SELECT ?name WHERE {
?person a ex:Person ; ex:name "alice" ; ex:follows ?friend .
?friend ex:name ?name .
}
ORDER BY ?name
The language frontends produce a shared Graph IR and relational plan. Execution uses SQL regions and native operators as supported by the selected API. Read SQL compilation to inspect or execute generated SQL, and core concepts for the shared execution model.
Follow a learning path
Begin with installation, run the quickstart, then choose a client example. The mapped graph tutorial demonstrates GraphEngine using a customer/order dataset.
For application integration, continue with typed parameters, Arrow results, and transactions. The CLI reference, mapping reference, and Rust API provide the details to keep nearby while coding.