A Rust-native, modular platform for Semantic Web, SPARQL 1.2, GraphQL, and AI-augmented reasoning
Status: Alpha Release (v0.1.0-alpha.2) - Released October 4, 2025
OxiRS aims to be a Rust-first, JVM-free alternative to Apache Jena + Fuseki and to Jupiper, providing:
- Protocol choice, not lock-in: Expose both SPARQL 1.2 and GraphQL endpoints from the same dataset
- Incremental adoption: Each crate works stand-alone; opt into advanced features via Cargo features
- AI readiness: Native integration with vector search, graph embeddings, and LLM-augmented querying
- Single static binary: Match or exceed Jena/Fuseki feature-for-feature while keeping a <50MB footprint
# Install the CLI tool
cargo install oxirs
# Or build from source
git clone https://github.com/cool-japan/oxirs.git
cd oxirs
cargo build --workspace --release
# Initialize a new knowledge graph (alphanumeric, _, - only)
oxirs init mykg
# Import RDF data (automatically persisted to mykg/data.nq)
oxirs import mykg data.ttl --format turtle
# Query the data (loaded automatically from disk)
oxirs query mykg "SELECT * WHERE { ?s ?p ?o } LIMIT 10"
# Query with specific patterns
oxirs query mykg "SELECT ?name WHERE { ?person <http://xmlns.com/foaf/0.1/name> ?name }"
# Start the server
oxirs serve mykg/oxirs.toml --port 3030
Features:
- β Persistent storage: Data automatically saved to disk in N-Quads format
- β SPARQL queries: SELECT, ASK, CONSTRUCT, DESCRIBE supported
- β Auto-load: No manual save/load needed
- π§ PREFIX support: Coming in next release
Open:
- http://localhost:3030 for the Fuseki-style admin UI
- http://localhost:3030/graphql for GraphiQL (if enabled)
All crates are published to crates.io and documented on docs.rs.
Crate | Version | Docs | Description |
---|---|---|---|
oxirs-core | Core RDF and SPARQL functionality |
Crate | Version | Docs | Description |
---|---|---|---|
oxirs-fuseki | SPARQL 1.1/1.2 HTTP server | ||
oxirs-gql | GraphQL endpoint for RDF |
Crate | Version | Docs | Description |
---|---|---|---|
oxirs-arq | SPARQL query engine | ||
oxirs-rule | Rule-based reasoning | ||
oxirs-shacl | SHACL validation | ||
oxirs-star | RDF-star support | ||
oxirs-ttl | Turtle parser | ||
oxirs-vec | Vector search |
Crate | Version | Docs | Description |
---|---|---|---|
oxirs-tdb | TDB2-compatible storage | ||
oxirs-cluster | Distributed clustering |
Crate | Version | Docs | Description |
---|---|---|---|
oxirs-stream | Real-time streaming | ||
oxirs-federate | Federated queries |
Crate | Version | Docs | Description |
---|---|---|---|
oxirs-embed | Knowledge graph embeddings | ||
oxirs-shacl-ai | AI-powered SHACL | ||
oxirs-chat | RAG chat API |
Crate | Version | Docs | Description |
---|---|---|---|
oxirs (CLI) | CLI tool |
oxirs/ # Cargo workspace root
ββ core/ # Thin, safe re-export of oxigraph
β ββ oxirs-core
ββ server/ # Network front ends
β ββ oxirs-fuseki # SPARQL 1.1/1.2 HTTP protocol, Fuseki-compatible config
β ββ oxirs-gql # GraphQL faΓ§ade (Juniper + mapping layer)
ββ engine/ # Query, update, reasoning
β ββ oxirs-arq # Jena-style algebra + extension points
β ββ oxirs-rule # Forward/backward rule engine (RDFS/OWL/SWRL)
β ββ oxirs-shacl # SHACL Core + SHACL-SPARQL validator
β ββ oxirs-star # RDF-star / SPARQL-star grammar support
β ββ oxirs-vec # Vector index abstractions (SciRS2, hnsw_rs)
ββ storage/
β ββ oxirs-tdb # MVCC layer & assembler grammar (TDB2 parity)
β ββ oxirs-cluster # Raft-backed distributed dataset
ββ stream/ # Real-time and federation
β ββ oxirs-stream # Kafka/NATS I/O, RDF Patch, SPARQL Update delta
β ββ oxirs-federate # SERVICE planner, GraphQL stitching
ββ ai/
β ββ oxirs-embed # KG embeddings (TransE, ComplExβ¦)
β ββ oxirs-shacl-ai # Shape induction & data repair suggestions
β ββ oxirs-chat # RAG chat API (LLM + SPARQL)
ββ tools/
ββ oxirs # CLI (import, export, star-migrate, bench)
ββ benchmarks/ # SP2Bench, WatDiv, LDBC SGS
Capability | Oxirs crate(s) | Status | Jena / Fuseki parity |
---|---|---|---|
RDF 1.2 & syntaxes | oxirs-core |
β Alpha | β |
RDF-star parse/serialise | oxirs-star |
π Experimental | πΈ (Jena dev build) |
SPARQL 1.1 Query & Update | oxirs-fuseki + oxirs-arq |
β Alpha | β |
SPARQL 1.2 / SPARQL-star | oxirs-arq (star flag) |
π Experimental | πΈ |
Rule reasoning (RDFS/OWL) | oxirs-rule |
π Experimental | β |
SHACL Core+API | oxirs-shacl |
π Experimental | β |
Full-text search (text: ) |
oxirs-textsearch |
β³ Planned | β |
GeoSPARQL | oxirs-geosparql (geo ) |
β³ Planned | β |
GraphQL API | oxirs-gql |
β Alpha | β |
Vector search / embeddings | oxirs-vec , oxirs-embed (ai ) |
π Experimental | β |
Distributed / HA store | oxirs-cluster (cluster ) |
π Experimental | πΈ (Jena + external) |
Legend: β Alpha - Usable but may have bugs, π Experimental - Under development, β³ Planned - Not yet implemented, πΈ partial/plug-in
[dataset.mykg]
type = "tdb2"
location = "/data"
text = { enabled = true, analyzer = "english" }
shacl = ["./shapes/person.ttl"]
query {
Person(where: {familyName: "Yamada"}) {
givenName
homepage
knows(limit: 5) { givenName }
}
}
SELECT ?s ?score WHERE {
SERVICE <vec:similar ( "LLM embeddings of 'semantic web'" 0.8 )> {
?s ?score .
}
}
- Rust 1.70+ (MSRV)
- Optional: Docker for containerized deployment
# Clone the repository
git clone https://github.com/cool-japan/oxirs.git
cd oxirs
# Build all crates
cargo build --workspace
# Run tests
cargo nextest run --no-fail-fast
# Run with all features
cargo build --workspace --all-features
Optional features to keep dependencies minimal:
geo
: GeoSPARQL supporttext
: Full-text search with Tantivyai
: Vector search and embeddingscluster
: Distributed storage with Raftstar
: RDF-star and SPARQL-star supportvec
: Vector index abstractions
We welcome contributions! Please see our Contributing Guide for details.
- Design documents go in
./rfcs/
with lazy-consensus and 14-day comment window - All code must pass
rustfmt + nightly 2025-06
, Clippy--all-targets --workspace -D warnings
- Commit sign-off required (DCO 1.1)
Version | Target Date | Milestone | Deliverables |
---|---|---|---|
v0.1.0-alpha.2 | β Oct 2025 | Alpha Enhancements | Persistent storage, CLI parity, federation, observability |
v0.1.0-beta.1 | Dec 2025 | Beta Release | API stability, production hardening, full docs |
v0.2.0 | Q1 2026 | Enhanced Features | Advanced optimization, AI capabilities, clustering |
v0.3.0 | Q2 2026 | Text & Geo | Full-text search, GeoSPARQL, bulk loader |
v0.4.0 | Q3 2026 | AI & Streaming | Vector search, embeddings, RAG, streaming |
v1.0.0 | Q4 2026 | Production Ready | Full Jena parity, enterprise support, LTS |
OxiRS is dual-licensed under either:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
at your option.
See LICENSE for details.
- Issues & RFCs: https://github.com/cool-japan/oxirs
- Maintainer: @cool-japan (KitaSan)
π Full notes live in docs/releases/0.1.0-alpha.2.md
.
- βοΈ Persistent RDF pipeline: Automatic on-disk save/load in N-Quads, streaming import/export/migrate flows, and configurable parallel batch ingestion
- π§ Interactive SPARQL tooling: Full-featured CLI REPL with history search, templates, syntax hints, SELECT */wildcard fixes, and multi-line editing
- π Federated querying: SPARQL 1.1
SERVICE
support with retries,SERVICE SILENT
, JSON results merging, and verified interoperability with DBpedia/Wikidata - π Production safeguards: OAuth2/OIDC + JWT, seven security headers, HSTS, structured logging, and Prometheus metrics with slow-query tracing
- π Performance improvements: SIMD-accelerated SciRS2 operators, streaming pipelines, and 3,750+ tests (including 7 integration suites) covering the new workflow
- Large dataset (>100M triples) performance work continues; benchmark feedback is appreciated
- AI-centric crates (
oxirs-chat
,oxirs-embed
,oxirs-shacl-ai
) remain experimental and may change without notice - Documentation for advanced serialization scenarios is still being expanded
- Install the new CLI with
cargo install oxirs --version 0.1.0-alpha.2
or update individual crates viaCargo.toml
- Existing dataset directories from alpha.1 remain compatible; the new persistence layer will automatically detect and upgrade saved N-Quads data
- Outbound HTTP access is required for federation; configure firewall rules and timeouts before enabling cross-endpoint queries
Focused on delivering the initial SPARQL/GraphQL server, native RDF parsing, experimental AI modules, and eliminating the upstream OxiGraph dependency. See the changelog for the full breakdown.
"Rust makes memory safety table stakes; Oxirs makes knowledge-graph engineering table stakes."
Second alpha release - October 4, 2025