A Rust-native, modular platform for Semantic Web, SPARQL 1.2, GraphQL, and AI-augmented reasoning
Status: v0.3.2 - Released - 2026-07-12
Production Ready: Complete SPARQL 1.1/1.2 implementation with 3.8x faster optimizer, industrial IoT support, and AI-powered features. 45,034 tests passing (--all-features; 44,344 with default features) with zero warnings across all 27 crates.
v0.3.2 Highlights (2026-07-12): "Pure-Rust Policy v2" — six C-FFI integrations (NVML GPU monitoring, CUDA, GEOS, DuckDB, Kafka, Pulsar) extracted out of the in-tree feature flags into opt-in publish = false quarantine adapter crates, so every published crate's --all-features build is 100% Pure Rust; GeoSPARQL's GeoPackage backend migrated off rusqlite onto the new Pure-Rust oxisql-core/oxisql-sqlite-compat engine; a Pure-Rust zstd shim (backed by oxiarc-zstd) removes the last transitive zstd-sys C dependency (tantivy/parquet/pulsar/wasmtime). Also: SHACL targets gain subclass-aware sh:class matching and real SPARQL/property-path target execution, oxirs-wasm gains PREFIX/BASE query prologues, a per-store solution budget, and SPO/POS/OSP-index-driven pattern matching, plus GeoSPARQL shapefile/compressed-geometry hole and multi-ring round-tripping fixes. SciRS2 0.6.0; oxiarc 0.3.5.
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
# Build the CLI from source
git clone https://github.com/cool-japan/oxirs.git
cd oxirs
cargo install --path tools/oxirs
# Or just build the whole workspace without installing
cargo build --workspace --releaseNote: the
oxirsCLI binary is intentionally kept off crates.io (publish = false, since v0.3.2) so it can optionally depend onpublish = falsequarantine adapter crates (e.g. the DuckDB-backedtsdb-duckdbfeature) without pulling their C FFI onto a published Pure-Rust surface. All 25 OxiRS library crates remain normally published to crates.io — see Published Crates below.
Maintenance & Purity Release: Pure-Rust Policy v2, OxiSQL, and Quarantined C-FFI Adapters
OxiRS v0.3.2 completes a second, deeper pass of the COOLJAPAN Pure-Rust migration and hardens SHACL, GeoSPARQL, and the oxirs-wasm query engine:
- Pure-Rust Policy v2 (breaking) - Six in-tree, feature-gated C-FFI integrations (NVML GPU monitoring, CUDA, GEOS, DuckDB, Kafka, Pulsar) extracted into new
publish = falsequarantine adapter crates (oxirs-gpu-monitor,oxirs-vec-adapter-cuda,oxirs-geosparql-adapter-geos,oxirs-tsdb-adapter-duckdb,oxirs-stream-adapter-rdkafka,oxirs-stream-adapter-pulsar), each API-compatible with the in-tree feature it replaces; the old feature flags themselves (oxirs-core'sgpu, oxirs-vec'scuda/gpu-full, oxirs-geosparql'sgeos-backend, oxirs-tsdb'sduckdb, oxirs-stream'skafka/pulsar) were removed - OxiSQL GeoPackage backend - GeoSPARQL's
GeoPackageSQLite backend migrated fromrusqlite(bundled C libsqlite3) to the new Pure-Rustoxisql-core/oxisql-sqlite-compatengine, plus an explicitGeoPackage::checkpoint()for WAL flush - Pure-Rust
zstdshim - New internalcrates/zstd-shim(backed byoxiarc-zstd), applied workspace-wide via[patch.crates-io], removes the last transitivezstd-sysC dependency (tantivy, parquet, pulsar, wasmtime) - SHACL subclass-aware targets - Reflexive+transitive
rdfs:subClassOfclosure (advanced_features::subclass_closure);sh:classand implicit-class targets now honor subclassing; SPARQL-based and single-hop property-path SHACL targets execute for real against the store instead of returning stub results - oxirs-wasm query engine - SPARQL
PREFIX/BASEprologues, a per-store solution budget (setSolutionBudget/clearSolutionBudget) that fails unselective joins fast instead of running to completion, and triple-pattern/property-path evaluation now driven by subject/predicate/object indexes instead of full scans - GeoSPARQL geometry fixes - Shapefile writer now emits interior rings (holes) for
Polygon/MultiPolygon; compressed-geometry round-tripping preserves polygon holes and multi-partMultiLineString/MultiPolygonstructure (newring_countsfield); WKT parser accepts optional Z/M coordinates - oxirs-tdb distributed transactions - Saga steps, 2PC, and 3PC participants now run real registered callbacks against a WAL-backed
Transactioninstead of simulating success; the distributed coordinator'sabort_transactionnotifies all participants - oxirs-gql / oxirs-chat / oxirs-federate / oxirs-stream - Adaptive query-batching dependency analysis, an activated ML-driven
DynamicQueryPlanner, a real z-score anomaly detector and alert-handler dispatch (Welford's online algorithm), NATS federation message dispatch by type, and an MQTT 5.0 property codec all replace previous no-op/stub code paths - Dependency refresh - SciRS2 0.5.0 → 0.6.0;
oxiarc-*0.3.3 → 0.3.5;oxicrypto/oxitls0.1.1 → 0.2.0;kube3.1 → 4.0 (optionalk8sfeature);bytes→ 1.12.0 (CVE-2026-25541 fix);lazy_static→once_cell,num_cpus→std::thread::available_parallelism()
Quality Metrics (v0.3.2):
- ✅ 45,034 tests passing (
--all-features; 44,344 with default features), 100% pass rate - ✅ Zero compilation warnings across all 27 crates
- ✅ Pure Rust by default and under
--all-features- zeroring/aws-lc-sys/rusqlite/zstd-sysreach any published crate; the six remaining C-FFI integrations live in separately-versioned, opt-inpublish = falseadapter crates - ✅ All
.rsfiles under 2,000 lines (proactive refactors applied)
Maintenance & Hardening Release: SHACL-AF, Pure-Rust Migration, and Inductive Embeddings
OxiRS v0.3.1 completes SHACL Advanced Features, finishes the COOLJAPAN Pure-Rust migration, and adds new AI and security capabilities:
- SHACL Advanced Features (SHACL-AF) - Recursive shapes, qualified value shapes, and a rule-based reasoning engine (RDFS / OWL 2 RL entailment)
- SHACL constraint-order optimization - Genetic algorithm (configurable population/generations/tournament/mutation) for shape constraint ordering (oxirs-shacl-ai)
- RDF-star in query execution - Quoted triples now flow through pattern matching, query algebra, executor, JIT, planner, and SIMD triple matching
- GraphSAGE inductive embeddings - k-hop mean aggregation (ReLU + L2-norm), Xavier init, margin ranking loss, and unseen-entity support (oxirs-embed)
- Graph summarizer & relevance feedback - Leiden community detection → centrality → predicate-frequency natural-language summaries, plus multiplicative relevance-feedback re-ranking (oxirs-graphrag)
- FIPS 140-2 feature gates -
fipsfeature for FIPS-validated cryptography in oxirs-fuseki and oxirs-did (RFC-003 FIPS boundary policy) - RBAC policy templates - Built-in DBA / ReadOnly / Auditor role templates via PolicyTemplateRegistry (oxirs-fuseki)
- Pure-Rust migration complete - Compression (brotli/snap/flate2 → oxiarc), crypto (ring → oxicrypto), and TLS (pure-Rust oxitls provider); the default
cargo buildlinks zeroring/aws-lc-sysC/asm crypto - Dependency refresh - SciRS2 0.5.0; oxiarc 0.3.3 now consumed directly from crates.io; large-file refactors keep every source file under 2,000 lines
Quality Metrics (v0.3.1):
- ✅ ~43,500 tests passing (100% pass rate)
- ✅ Zero compilation warnings across all 26 crates
- ✅ Pure Rust by default - zero
ring/aws-lc-sysin the default-feature build - ✅ All
.rsfiles under 2,000 lines (proactive refactors applied)
# 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 / BASE support: Full prologue declarations, resolved through the same SPARQL engine used by the server
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 & vector store | ||
| oxirs-shacl-ai | AI-powered SHACL constraint inference | ||
| oxirs-chat | RAG chat API with conversation history | ||
| oxirs-physics | Physics-informed digital twin reasoning | ||
| oxirs-graphrag | GraphRAG hybrid search (Vector x Graph) |
| 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) | not published — build from source | source | Command-line interface: import, export, query, migration, benchmarking |
As of v0.3.2 the
oxirsCLI binary ispublish = false(see Installation); it is not on crates.io. The other 25 library crates above are published normally.
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, native HNSW)
├─ storage/
│ ├─ oxirs-tdb # MVCC layer & assembler grammar (TDB2 parity)
│ ├─ oxirs-cluster # Raft-backed distributed dataset
│ └─ oxirs-tsdb # Time-series database (chunked, compressed)
├─ stream/ # Real-time and federation
│ ├─ oxirs-stream # Kafka/NATS I/O, RDF Patch, SPARQL Update delta
│ ├─ oxirs-federate # SERVICE planner, GraphQL stitching
│ ├─ oxirs-modbus # Modbus TCP/RTU industrial protocol
│ └─ oxirs-canbus # CANbus / J1939 industrial protocol
├─ 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, query, migration, benchmarking) — publish = false
│ └─ benchmarks/ # SP2Bench, WatDiv, LDBC SGS
└─ desktop/
└─ oxirs-tauri # Desktop app: chat UI, visual SPARQL builder, CAN bus monitor — publish = false
Six C-FFI integrations live outside the default and --all-features dependency
closure of every published crate, each in its own adapter crate that depends
on the corresponding library crate and re-exports API-compatible types:
| Adapter crate | Wraps | Adapts |
|---|---|---|
core/oxirs-gpu-monitor |
NVML | oxirs-core GPU telemetry |
engine/oxirs-vec-adapter-cuda |
cuda-runtime-sys |
oxirs-vec CUDA buffers/streams/kernels |
engine/oxirs-geosparql-adapter-geos |
GEOS | oxirs-geosparql Egenhofer/RCC8 relations |
storage/oxirs-tsdb-adapter-duckdb |
DuckDB | oxirs-tsdb Arrow RecordBatch bridge |
stream/oxirs-stream-adapter-rdkafka |
rdkafka |
oxirs-stream Kafka backend |
stream/oxirs-stream-adapter-pulsar |
Apache Pulsar client | oxirs-stream Pulsar backend |
Depend on the adapter crate directly (path or git) to opt back in; none of them are published to crates.io.
| Capability | Oxirs crate(s) | Status | Jena / Fuseki parity |
|---|---|---|---|
| Core RDF & SPARQL | |||
| RDF 1.2 & syntaxes (7 formats) | oxirs-core |
✅ Stable (2589 tests) | ✅ |
| SPARQL 1.1 Query & Update | oxirs-fuseki + oxirs-arq |
✅ Stable (2350 + 3115 tests) | ✅ |
| SPARQL 1.2 / SPARQL-star | oxirs-arq (star flag) |
✅ Stable | 🔸 |
| Advanced SPARQL Algebra (EXISTS/MINUS/subquery) | oxirs-arq |
✅ Stable | ✅ |
| Persistent storage (N-Quads) | oxirs-core |
✅ Stable | ✅ |
| Semantic Web Extensions | |||
| RDF-star parse/serialise | oxirs-star |
✅ Stable (1680 tests) | 🔸 (Jena dev build) |
| SHACL Core+API (W3C compliant) | oxirs-shacl |
✅ Stable (2140 tests, 27/27 W3C) | ✅ |
| Rule reasoning (RDFS/OWL 2 DL) | oxirs-rule |
✅ Stable (2240 tests) | ✅ |
| SAMM 2.0-2.3 & AAS (Industry 4.0) | oxirs-samm |
✅ Stable (1549 tests, 16 generators) | ❌ |
| Query & Federation | |||
| GraphQL API | oxirs-gql |
✅ Stable (2148 tests) | ❌ |
| SPARQL Federation (SERVICE) | oxirs-federate |
✅ Stable (1555 tests, 2PC) | ✅ |
| Federated authentication | oxirs-federate |
✅ Stable (OAuth2/SAML/JWT) | 🔸 |
| Real-time & Streaming | |||
| Stream processing (Kafka/NATS) | oxirs-stream |
✅ Stable (1735 tests, SIMD) | 🔸 (Jena + external) |
| RDF Patch & SPARQL Update delta | oxirs-stream |
✅ Stable | 🔸 |
| Search & Geo | |||
| Full-text search (Tantivy) | oxirs-tdb / oxirs-fuseki (full-text-search, opt-in) |
🔸 Partial (feature-gated, non-default) | ✅ |
| GeoSPARQL (OGC 1.1) | oxirs-geosparql (geo) |
✅ Stable (1967 tests) | ✅ |
| Vector search / embeddings | oxirs-vec (1754 tests), oxirs-embed (1503 tests) |
✅ Stable | ❌ |
| Storage & Distribution | |||
| TDB2-compatible storage (six-index) | oxirs-tdb |
✅ Stable (2106 tests) | ✅ |
| Distributed / HA store (Raft) | oxirs-cluster (cluster) |
✅ Stable (1831 tests) | 🔸 (Jena + external) |
| Time-series database | oxirs-tsdb |
✅ Stable (1285 tests) | ❌ |
| AI & Advanced Features | |||
| RAG chat API (LLM integration) | oxirs-chat |
✅ Stable (1247 tests) | ❌ |
| AI-powered SHACL constraint inference | oxirs-shacl-ai |
✅ Stable (1718 tests) | ❌ |
| GraphRAG hybrid search (Vector x Graph) | oxirs-graphrag |
✅ Stable (1125 tests) | ❌ |
| Physics-informed digital twins | oxirs-physics |
✅ Stable (1292 tests) | ❌ |
| Knowledge graph embeddings (TransE, etc.) | oxirs-embed |
✅ Stable (1503 tests) | ❌ |
| Security & Trust | |||
| W3C DID & Verifiable Credentials | oxirs-did |
✅ Stable (1123 tests) | ❌ |
| Trust chain validation | oxirs-did |
✅ Stable | ❌ |
| Signed RDF graphs (RDFC-1.0) | oxirs-did |
✅ Stable | ❌ |
| Ed25519 cryptographic proofs | oxirs-did |
✅ Stable | ❌ |
| Security & Authorization | |||
| ReBAC (Relationship-Based Access Control) | oxirs-fuseki |
✅ Stable | ❌ |
| Graph-level authorization | oxirs-fuseki |
✅ Stable | ❌ |
| SPARQL-based authorization storage | oxirs-fuseki |
✅ Stable | ❌ |
| OAuth2/OIDC/SAML authentication | oxirs-fuseki |
✅ Stable | 🔸 |
| Browser & Edge Deployment | |||
| WebAssembly (WASM) bindings | oxirs-wasm |
✅ Stable (915 tests) | ❌ |
| Browser RDF/SPARQL execution | oxirs-wasm |
✅ Stable | ❌ |
| TypeScript type definitions | oxirs-wasm |
✅ Stable | ❌ |
| Cloudflare Workers / Deno support | oxirs-wasm |
✅ Stable | ❌ |
| Industrial IoT | |||
| Modbus TCP/RTU protocol | oxirs-modbus |
✅ Stable (1237 tests) | ❌ |
| CANbus / J1939 protocol | oxirs-canbus |
✅ Stable (1183 tests) | ❌ |
Legend:
- ✅ Stable: Production-ready with comprehensive tests, API stability guaranteed
- ⏳ Planned: Not yet implemented
- 🔸 Partial/plug-in support in Jena
Quality Metrics (v0.3.2):
- 45,034 tests passing (
--all-features; 44,344 with default features), 100% pass rate - Zero compilation warnings (enforced with
-D warnings) - 95%+ test coverage across all 27 modules
- 95%+ documentation coverage
- All integration tests passing
- Production-grade security audit completed
- CUDA GPU acceleration available via the opt-in,
publish = falseoxirs-vec-adapter-cudaquarantine crate (Pure Rust by default without it) - 3.8x faster query optimization via adaptive complexity detection
- Pure Rust by default and under
--all-features— zeroring/aws-lc-sys/rusqlite/zstd-sysreach any published crate
[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 .
}
}OxiRS powers a public, production SPARQL endpoint at
https://sparql.cooljapan.tech/, edge-cached by CloudFlare and serving the
OxiEphemeris astrology
vocabulary (a custom oxa: ontology plus oxc:/oxs: SKOS concept
schemes) as dereferenceable Linked Open Data. Query it live over the
SPARQL 1.1 Protocol:
curl -G 'https://sparql.cooljapan.tech/sparql' \
--data-urlencode 'query=ASK { <https://cooljapan.tech/ns/oxiephemeris/concept/sign/Scorpio> a <http://www.w3.org/2004/02/skos/core#Concept> }' \
-H 'Accept: application/sparql-results+json'
# {"head":{},"boolean":true}The oxa:/oxc:/oxs: IRIs under
https://cooljapan.tech/ns/oxiephemeris/ dereference with content
negotiation (Turtle, N-Triples, or HTML).
# 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::{
MqttClient, MqttConfig, PayloadFormat, QoS, TopicRdfMapping, TopicSubscription,
};
use std::collections::HashMap;
let mqtt_config = MqttConfig {
broker_url: "tcp://factory.example.com:1883".to_string(),
..Default::default()
};
let mut client = MqttClient::new(mqtt_config);
client.connect().await?;
client.subscribe(vec![
TopicSubscription {
topic_pattern: "factory/+/sensor/#".to_string(),
qos: QoS::AtLeastOnce,
payload_format: PayloadFormat::Json { schema: None, root_path: None },
rdf_mapping: TopicRdfMapping {
subject_pattern: "urn:sensor:{topic.1}:{topic.3}".to_string(),
predicate_map: HashMap::new(),
graph_pattern: Some("urn:factory:sensors".to_string()),
type_uri: None,
timestamp_field: None,
},
options: None,
},
]).await?; // Real-time RDF updates from subscribed topicsuse 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
📖 Localized README versions:
- 🇯🇵 日本語 (Japanese) - Society 5.0 / PLATEAU support
- 🇩🇪 Deutsch (German) - Gaia-X / Industry 4.0 focus
- 🇫🇷 Français (French) - European data sovereignty
- 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 2026-01, Clippy--all-targets --workspace -D warnings - Commit sign-off required (DCO 1.1)
| Version | Target Date | Milestone | Deliverables | Status |
|---|---|---|---|---|
| v0.1.0 | ✅ Jan 7, 2026 | Initial Production Release | Complete SPARQL 1.1/1.2, Industrial IoT, AI features, 13,123 tests | ✅ Released |
| v0.2.4 | ✅ Mar 16, 2026 | Deep Feature Expansion | 40,786 tests, 26 new modules, 3.8x faster optimizer, advanced SPARQL algebra, AI production-grade | ✅ Released |
| v0.3.0 | ✅ May 3, 2026 | Full-text Search & Scale | Full-text search (Tantivy), 10x performance, multi-region clustering, audit/certification/SSO/marketplace | ✅ Released |
| v0.3.1 | ✅ 2026-06-06 | SHACL-AF & Pure-Rust | SHACL Advanced Features (recursive/qualified/reasoning), genetic constraint optimization, RDF-star in query execution, GraphSAGE embeddings, FIPS gates, full Pure-Rust migration, ~43,500 tests | ✅ Released |
| v0.3.2 | ✅ 2026-07-12 | Pure-Rust Policy v2 | Six C-FFI integrations quarantined into opt-in adapter crates, OxiSQL GeoPackage backend, Pure-Rust zstd shim, SHACL subclass-aware targets, oxirs-wasm PREFIX/solution-budget/indexed matching, 45,034 tests |
✅ Released (current) |
v0.3.2 Focus Areas:
- Pure-Rust Policy v2: NVML/CUDA/GEOS/DuckDB/Kafka/Pulsar C-FFI extracted into six opt-in,
publish = falsequarantine adapter crates - GeoSPARQL's GeoPackage backend migrated from
rusqliteto Pure-Rustoxisql-core/oxisql-sqlite-compat - Pure-Rust
zstdshim (crates/zstd-shim, backed byoxiarc-zstd) removes the last transitivezstd-sysdependency - SHACL: subclass-aware
sh:class/implicit-class targets, real SPARQL/property-path target execution - oxirs-wasm query engine: PREFIX/BASE prologues, per-store solution budgets, SPO/POS/OSP-indexed pattern matching
- GeoSPARQL: shapefile interior-ring writing and compressed-geometry multi-ring round-tripping fixed
- Dependency refresh: SciRS2 0.6.0, oxiarc 0.3.5, oxicrypto/oxitls 0.2.0, kube 4.0
v0.3.1 Focus Areas:
- SHACL Advanced Features (SHACL-AF): recursive shapes, qualified value shapes, rule-based reasoning engine
- SHACL constraint-order optimization via genetic algorithm (oxirs-shacl-ai)
- RDF-star quoted triples in pattern matching and query execution (algebra/executor/JIT/planner/SIMD)
- AI: GraphSAGE inductive embeddings, graph summarizer, relevance feedback
- Security: FIPS 140-2 feature gates (oxirs-fuseki, oxirs-did), RBAC policy templates
- COOLJAPAN Pure-Rust migration complete: brotli/snap/flate2 → oxiarc, ring → oxicrypto, pure-Rust TLS via oxitls
- Dependency refresh: SciRS2 0.5.0, oxiarc 0.3.3 from crates.io; large-file refactors (all source < 2,000 lines)
OxiRS is developed and maintained by COOLJAPAN OU (Team Kitasan).
If you find OxiRS useful, please consider sponsoring the project to support continued development of the Pure Rust ecosystem.
https://github.com/sponsors/cool-japan
Your sponsorship helps us:
- Maintain and improve the COOLJAPAN ecosystem
- Keep the entire ecosystem (OxiBLAS, OxiFFT, SciRS2, etc.) 100% Pure Rust
- Provide long-term support and security updates
OxiRS is licensed under:
See LICENSE for details.
- Issues & RFCs: https://github.com/cool-japan/oxirs
- Maintainer: @cool-japan (KitaSan)
Full notes live in CHANGELOG.md.
- 45,034 tests passing (
--all-features; 44,344 with default features) across all 27 crates - Pure-Rust Policy v2: NVML/CUDA/GEOS/DuckDB/Kafka/Pulsar C-FFI extracted into six opt-in,
publish = falsequarantine adapter crates - OxiSQL GeoPackage backend: GeoSPARQL's SQLite storage migrated from
rusqliteto Pure-Rustoxisql-core/oxisql-sqlite-compat - Pure-Rust
zstdshim (crates/zstd-shim, backed byoxiarc-zstd) removes the last transitivezstd-sysdependency - SHACL subclass-aware targets and real SPARQL/property-path target execution, replacing prior stub results
- oxirs-wasm query engine: PREFIX/BASE prologues, per-store solution budgets, and SPO/POS/OSP-indexed pattern matching
- GeoSPARQL fixes: shapefile interior-ring (hole) writing and compressed-geometry multi-ring round-tripping
- SciRS2 0.6.0;
oxiarc-*0.3.5;oxicrypto/oxitls0.2.0; large-file refactors (all source < 2,000 lines)
- ~43,500 tests passing across all 26 crates
- SHACL Advanced Features completed: recursive shapes, qualified value shapes, and a rule-based reasoning engine
- Genetic constraint-order optimization for SHACL shapes (oxirs-shacl-ai)
- RDF-star quoted triples in pattern matching and query execution (algebra, executor, JIT, planner, SIMD)
- GraphSAGE inductive embeddings, graph summarizer, and relevance feedback (oxirs-embed, oxirs-graphrag)
- FIPS 140-2 feature gates (oxirs-fuseki, oxirs-did) and RBAC policy templates
- Pure-Rust migration complete: brotli/snap/flate2 → oxiarc, ring → oxicrypto, pure-Rust TLS via oxitls; default build links zero
ring/aws-lc-sys - SciRS2 0.5.0; oxiarc 0.3.3 consumed directly from crates.io; large-file refactors (all source < 2,000 lines)
Workspace total for v0.3.2 (
--all-features): 45,034 tests passing (44,344 with default features, 0 failed either way). Growth over v0.3.1's 40,786-crate baseline reflects the Pure-Rust Policy v2 migration (quarantine adapter crates, OxiSQL GeoPackage backend, zstd shim), SHACL subclass-closure and real target execution, oxirs-wasm's PREFIX/solution-budget/indexed-matching additions, theoxirs-tauridesktop app now being tracked, and expanded coverage across every crate. The 6publish = falsequarantine adapter crates (NVML/CUDA/GEOS/DuckDB/Kafka/Pulsar) require toolchains unavailable in routine CI and are excluded from this count. | Crate | Tests | |-------|-------| | oxirs-arq | 3115 | | oxirs-core | 2589 | | oxirs-fuseki | 2350 | | oxirs-rule | 2240 | | oxirs-gql | 2148 | | oxirs-shacl | 2140 | | oxirs-tdb | 2106 | | oxirs-geosparql | 1967 | | oxirs-cluster | 1831 | | oxirs (CLI) | 1799 | | oxirs-ttl | 1779 | | oxirs-vec | 1754 | | oxirs-stream | 1735 | | oxirs-shacl-ai | 1718 | | oxirs-star | 1680 | | oxirs-federate | 1555 | | oxirs-samm | 1549 | | oxirs-embed | 1503 | | oxirs-physics | 1292 | | oxirs-tsdb | 1285 | | oxirs-chat | 1247 | | oxirs-modbus | 1237 | | oxirs-canbus | 1183 | | oxirs-graphrag | 1125 | | oxirs-did | 1123 | | oxirs-wasm | 915 | | oxirs-tauri (desktop) | 69 | | Total (--all-features) | 45,034 |
Query Optimization (5 triple patterns):
HighThroughput: 3.24 µs (3.3x faster than baseline)
Analytical: 3.01 µs (3.9x faster than baseline)
Mixed: 2.95 µs (3.6x faster than baseline)
LowMemory: 2.94 µs (5.3x faster than baseline)
Time-Series Database:
Write throughput: 500K pts/sec (single), 2M pts/sec (batch)
Query latency: 180ms p50 (1M points)
Compression: 40:1 average ratio
Production Impact (100K QPS):
CPU time saved: 45 minutes per hour (75% reduction)
Annual savings: $10,000 - $50,000 (cloud deployments)
- Build the CLI with
cargo install --path tools/oxirs(not published to crates.io — see Installation) - Adaptive optimization is enabled by default (no configuration needed)
- CUDA support is opt-in via the
oxirs-vec-adapter-cudaquarantine crate - See CHANGELOG.md for detailed release notes
"Rust makes memory safety table stakes; OxiRS makes knowledge-graph engineering table stakes."
v0.3.2 - Released - 2026-07-12