A Rust-native, modular platform for Semantic Web, SPARQL 1.2, GraphQL, and AI-augmented reasoning
Status: Release Candidate (v0.1.0-rc.1) - Industrial Digital Twin Platform - Released December 2025
β‘ Release Candidate: API stability guaranteed. Feature complete for 1.0. Suitable for production use with comprehensive testing.
OxiRS aims to be a Rust-first, JVM-free alternative to Apache Jena + Fuseki and to Juniper, 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 --version 0.1.0-rc.1
# Or build from source
git clone https://github.com/cool-japan/oxirs.git
cd oxirs
cargo build --workspace --releaseIndustrial Digital Twin Platform + AI-First Semantic Search + Decentralized Trust
OxiRS now provides production-ready capabilities for Industry 4.0/5.0, Smart Cities (Society 5.0), and next-generation AI-powered semantic applications:
-
NGSI-LD API v1.6 (ETSI GS CIM 009): Full FIWARE compatibility for smart cities
- 18 RESTful endpoints (entities, subscriptions, temporal, batch operations)
- PLATEAU (Japan Smart City) integration ready
- Hybrid cache + RDF backend for durability
-
MQTT & OPC UA Bridges: Real-time industrial IoT connectivity
- MQTT 3.1.1/5.0 client with QoS 0/1/2
- OPC UA client for PLC integration
- Eclipse Sparkplug B support
- 100K+ events/sec throughput
-
IDS/Gaia-X Connector: European data space compliance
- IDSA Reference Architecture 4.x certified
- ODRL 2.2 policy engine (15 constraint types)
- Contract negotiation automation
- GDPR Articles 44-49 data residency enforcement
-
Physics-Informed AI: SciRS2 simulation integration
- RDF β Simulation parameter extraction
- Physics constraint validation (conservation laws)
- W3C PROV-O provenance tracking
- SAMM Aspect Model integration
-
GraphRAG Hybrid Search (
oxirs-graphrag): Microsoft-style GraphRAG implementation- RRF (Reciprocal Rank Fusion): Vector Γ Graph topology fusion
- N-hop SPARQL graph expansion for context retrieval
- Louvain community detection for hierarchical summarization
- LLM context building from knowledge graph subgraphs
- 23/23 tests passing, 3,500 LoC
-
DID & Verifiable Credentials (
oxirs-did): W3C-compliant trust layer- DID Core 1.0 & VC Data Model 2.0 implementation
- did:key and did:web methods
- Ed25519Signature2020 cryptographic proofs
- RDFC-1.0 RDF graph canonicalization
- Signed graphs for trustworthy AI data
- 43/43 tests passing, 2,100 LoC
-
WASM Browser/Edge (
oxirs-wasm): WebAssembly deployment- In-memory RDF store for browsers
- Turtle & N-Triples parsing
- SPARQL SELECT/ASK/CONSTRUCT
- TypeScript definitions, ES modules
- Zero Tokio dependency (WASM-compatible)
- 8/8 tests passing, 400 LoC
Standards Implemented: ETSI NGSI-LD v1.6, MQTT 5.0 (ISO/IEC 20922), OPC UA (IEC 62541), IDS RAM 4.x, ODRL 2.2, W3C PROV-O, W3C DID Core 1.0, W3C VC Data Model 2.0, RDFC-1.0, Eclipse Sparkplug B 3.0
New Documentation:
DIGITAL_TWIN_QUICKSTART.md- Complete deployment guideIDS_CERTIFICATION_GUIDE.md- IDSA certification roadmapexamples/digital_twin_factory.rs- Production example
Build Status: β 19,300+ LoC, 74+ new tests, 0 errors, 0 warnings, 11+ standards
# 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 3030Features:
- β 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-samm | SAMM metamodel & AAS | ||
| oxirs-geosparql | GeoSPARQL support | ||
| 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 | ||
| oxirs-physics | Physics-informed AI | ||
| oxirs-graphrag | GraphRAG hybrid search |
| Crate | Version | Docs | Description |
|---|---|---|---|
| oxirs-did | DID & Verifiable Credentials |
| Crate | Version | Docs | Description |
|---|---|---|---|
| oxirs-wasm | WASM browser/edge deployment |
| 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-samm # SAMM metamodel + AAS integration (Industry 4.0)
β ββ oxirs-geosparql # GeoSPARQL spatial queries and topological relations
β ββ oxirs-shacl # SHACL Core + SHACL-SPARQL validator
β ββ oxirs-star # RDF-star / SPARQL-star grammar support
β ββ oxirs-ttl # Turtle/TriG parser and serializer
β ββ 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)
β ββ oxirs-physics # Physics-informed digital twins
β ββ oxirs-graphrag # GraphRAG hybrid search (Vector Γ Graph)
ββ security/
β ββ oxirs-did # W3C DID & Verifiable Credentials
ββ platforms/
β ββ oxirs-wasm # WebAssembly browser/edge deployment
ββ tools/
ββ oxirs # CLI (import, export, star-migrate, bench)
ββ benchmarks/ # SP2Bench, WatDiv, LDBC SGS
| Capability | Oxirs crate(s) | Status | Jena / Fuseki parity |
|---|---|---|---|
| Core RDF & SPARQL | |||
| RDF 1.2 & syntaxes (7 formats) | oxirs-core |
β RC (600+ tests) | β |
| SPARQL 1.1 Query & Update | oxirs-fuseki + oxirs-arq |
β RC (550+ tests) | β |
| SPARQL 1.2 / SPARQL-star | oxirs-arq (star flag) |
β RC | πΈ |
| Persistent storage (N-Quads) | oxirs-core |
β RC | β |
| Semantic Web Extensions | |||
| RDF-star parse/serialise | oxirs-star |
β RC (200+ tests) | πΈ (Jena dev build) |
| SHACL Core+API (W3C compliant) | oxirs-shacl |
β RC (400+ tests, 27/27 W3C) | β |
| Rule reasoning (RDFS/OWL) | oxirs-rule |
β RC (200+ tests) | β |
| SAMM 2.0-2.3 & AAS (Industry 4.0) | oxirs-samm |
β RC (16 generators) | β |
| Query & Federation | |||
| GraphQL API | oxirs-gql |
β RC (150+ tests) | β |
| SPARQL Federation (SERVICE) | oxirs-federate |
β RC (350+ tests, 2PC) | β |
| Federated authentication | oxirs-federate |
β RC (OAuth2/SAML/JWT) | πΈ |
| Real-time & Streaming | |||
| Stream processing (Kafka/NATS) | oxirs-stream |
β RC (300+ tests, SIMD) | πΈ (Jena + external) |
| RDF Patch & SPARQL Update delta | oxirs-stream |
β RC | πΈ |
| Search & Geo | |||
Full-text search (text:) |
oxirs-textsearch |
β³ Planned | β |
| GeoSPARQL (OGC 1.1) | oxirs-geosparql (geo) |
β RC (250+ tests) | β |
| Vector search / embeddings | oxirs-vec (400+ tests), oxirs-embed (350+ tests) |
β RC | β |
| Storage & Distribution | |||
| TDB2-compatible storage | oxirs-tdb |
β RC (250+ tests) | β |
| Distributed / HA store (Raft) | oxirs-cluster (cluster) |
β RC | πΈ (Jena + external) |
| AI & Advanced Features | |||
| RAG chat API (LLM integration) | oxirs-chat |
β RC | β |
| AI-powered SHACL validation | oxirs-shacl-ai |
β RC (350+ tests) | β |
| GraphRAG hybrid search (Vector Γ Graph) | oxirs-graphrag |
β RC.1 (23 tests) | β |
| Physics-informed digital twins | oxirs-physics |
β RC.1 | β |
| Security & Trust | |||
| W3C DID & Verifiable Credentials | oxirs-did |
β RC.1 (43 tests) | β |
| Signed RDF graphs (RDFC-1.0) | oxirs-did |
β RC.1 | β |
| Ed25519 cryptographic proofs | oxirs-did |
β RC.1 | β |
| Security & Authorization | |||
| ReBAC (Relationship-Based Access Control) | oxirs-fuseki |
β RC (83 tests) | β |
| Graph-level authorization | oxirs-fuseki |
β RC | β |
| SPARQL-based authorization storage | oxirs-fuseki |
β RC | β |
| OAuth2/OIDC/SAML authentication | oxirs-fuseki |
β RC | πΈ |
| Browser & Edge Deployment | |||
| WebAssembly (WASM) bindings | oxirs-wasm |
β RC.1 (8 tests) | β |
| Browser RDF/SPARQL execution | oxirs-wasm |
β RC.1 | β |
| TypeScript type definitions | oxirs-wasm |
β RC.1 | β |
| Cloudflare Workers / Deno support | oxirs-wasm |
β RC.1 | β |
Legend:
- β RC: Production-ready with comprehensive tests, API stability guaranteed
- π Experimental: Under active development, APIs unstable
- β³ Planned: Not yet implemented
- πΈ Partial/plug-in support in Jena
Quality Metrics (v0.1.0-rc.1):
- 12,248 tests passing (100% pass rate, 100 skipped)
- Zero compilation warnings (enforced with
-D warnings) - 95%+ test coverage across all modules
- 95%+ documentation coverage
- All integration tests passing
- Production-grade security audit completed
- CUDA GPU support for AI acceleration
[dataset.mykg]
type = "tdb2"
location = "/data"
text = { enabled = true, analyzer = "english" }
shacl = ["./shapes/person.ttl"]
# ReBAC Authorization (optional)
[security.policy_engine]
mode = "Combined" # RbacOnly | RebacOnly | Combined | Both
[security.rebac]
backend = "InMemory" # InMemory | RdfNative
namespace = "http://oxirs.org/auth#"
inference_enabled = true
[[security.rebac.initial_relationships]]
subject = "user:alice"
relation = "owner"
object = "dataset:mykg"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 .
}
}# Create an air quality sensor entity
curl -X POST http://localhost:3030/ngsi-ld/v1/entities \
-H "Content-Type: application/ld+json" \
-d '{
"id": "urn:ngsi-ld:AirQualitySensor:Tokyo-001",
"type": "AirQualitySensor",
"location": {
"type": "GeoProperty",
"value": {"type": "Point", "coordinates": [139.6917, 35.6895]}
},
"temperature": {"type": "Property", "value": 22.5, "unitCode": "CEL"}
}'
# Query sensors within 5km
curl "http://localhost:3030/ngsi-ld/v1/entities?type=AirQualitySensor&georel=near;maxDistance==5000"use oxirs_stream::backend::mqtt::{MqttConfig, MqttClient, TopicSubscription};
let mqtt_config = MqttConfig {
broker_url: "mqtt://factory.example.com:1883".to_string(),
subscriptions: vec![
TopicSubscription {
topic_pattern: "factory/+/sensor/#".to_string(),
rdf_mapping: TopicRdfMapping {
graph_iri: "urn:factory:sensors".to_string(),
subject_template: "urn:sensor:{topic.1}:{topic.3}".to_string(),
},
}
],
};
let client = MqttClient::new(mqtt_config).await?;
client.connect().await?;
client.start_streaming().await?; // Real-time RDF updatesuse oxirs_fuseki::ids::policy::{OdrlPolicy, Permission, Constraint};
let policy = OdrlPolicy {
uid: "urn:policy:catena-x:battery-data:001".into(),
permissions: vec![
Permission {
action: OdrlAction::Use,
constraints: vec![
Constraint::Purpose {
allowed_purposes: vec![Purpose::Research],
},
Constraint::Spatial {
allowed_regions: vec![Region::eu(), Region::japan()],
},
Constraint::Temporal {
operator: ComparisonOperator::LessThanOrEqual,
right_operand: Utc::now() + Duration::days(90),
},
],
}
],
};use oxirs_physics::simulation::SimulationOrchestrator;
let mut orchestrator = SimulationOrchestrator::new();
orchestrator.register("thermal", Arc::new(SciRS2ThermalSimulation::default()));
// Extract parameters from RDF, run simulation, inject results back
let result = orchestrator.execute_workflow(
"urn:battery:cell:001",
"thermal"
).await?;
println!("Converged: {}, Final temp: {:.2}Β°C",
result.convergence_info.converged,
result.state_trajectory.last().unwrap().state["temperature"]
);Complete Examples: See DIGITAL_TWIN_QUICKSTART.md and examples/digital_twin_factory.rs
- 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-featuresOptional 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 | Status |
|---|---|---|---|---|
| v0.1.0-rc.1 | β Dec 26, 2025 | Release Candidate | Industrial IoT (TSDB, Modbus, CANbus), 12,248 tests, 22 crates | β Released |
| v0.2.0 | Q1 2026 | Performance | Query optimization (10x), AI production-ready, multi-region clustering | π― Next |
| v0.3.0 | Q2 2026 | Search & Geo | Full-text search (Tantivy), GeoSPARQL, bulk loader, performance SLAs | π Planned |
| v1.0.0 | Q4 2026 | Production Ready | Full Jena parity verified, enterprise support, LTS guarantees | π Planned |
Phase D: Industrial Connectivity Infrastructure:
- β oxirs-tsdb: Time-series database with 40:1 Gorilla compression
- β oxirs-modbus: Modbus TCP/RTU protocol support for PLCs
- β oxirs-canbus: CANbus/J1939 with DBC parsing for automotive
- β 301 tests passing: 100% success rate across all Phase D crates
- β SPARQL temporal extensions: ts:window, ts:resample, ts:interpolate
- β 20 new CLI commands: Comprehensive industrial connectivity tools
- β Hybrid storage: Automatic RDF + time-series routing
- β Production features: WAL, compaction, retention policies
- β Complete documentation: 95%+ API coverage, 21 examples
Performance Benchmarks:
- Write throughput: 500K pts/sec (single), 2M pts/sec (batch)
- Query latency: 180ms p50 for 1M data points
- Compression: 38:1 average ratio
- CLI binary: 38MB optimized
Use Cases Enabled:
- Manufacturing: Real-time PLC monitoring and analytics
- Automotive: Fleet diagnostics, OBD-II, J1939 telemetry
- Smart Cities: Traffic flow, air quality, energy management
Focus Areas:
- π― 10x query performance improvements
- π― AI features production hardening
- π― Multi-region clustering
- π― Advanced caching strategies
- π― Performance SLAs and guarantees
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 CHANGELOG.md.
- π CUDA Support: GPU acceleration for knowledge graph embeddings and AI operations
- π§ AI Enhancements: Improved vision-language processing and Tucker decomposition models
- β‘ Performance: Memory-mapped storage optimizations and enhanced SIMD operations
- π§ SAMM Improvements: Performance regression testing and improved code generation
- π Documentation: Updated API docs and examples across all crates
- π Bug Fixes: Various stability improvements and edge case handling
- Large dataset (>100M triples) performance optimization ongoing
- Full-text search (
oxirs-textsearch) planned for v0.3.0 - Advanced AI features continue to mature towards v0.2.0
- β
Zero warnings - Strict
-D warningsenforced across all 22 crates - β 12,248 tests passing - 100% pass rate (100 skipped)
- β 95%+ test coverage - Comprehensive test suites
- β 95%+ documentation coverage - Complete API documentation
- β CUDA GPU support - Hardware acceleration for AI
- β Memory-mapped storage - Enhanced I/O performance
- Install the CLI with
cargo install oxirs --version 0.1.0-rc.1 - CUDA support is opt-in via feature flags
- See CHANGELOG.md for detailed release notes
"Rust makes memory safety table stakes; Oxirs makes knowledge-graph engineering table stakes."
RC.1 release - December 25, 2025