{"id":31443098,"url":"https://github.com/cool-japan/oxirs","last_synced_at":"2025-09-30T19:33:03.187Z","repository":{"id":317350830,"uuid":"1007860649","full_name":"cool-japan/oxirs","owner":"cool-japan","description":"Rust-native, modular platform for Semantic Web, SPARQL 1.2, GraphQL, and AI-augmented reasoning","archived":false,"fork":false,"pushed_at":"2025-09-30T11:06:45.000Z","size":26089,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-30T11:39:08.685Z","etag":null,"topics":["ai","artificial-intelligence","fuseki","graphql","rdf","rdf-star","rust","rustlang","semantic-search","semantic-web","shacl","sparql","sparql-client","sparql-endpoints","sparql-query"],"latest_commit_sha":null,"homepage":"https://github.com/cool-japan/oxirs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cool-japan.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-24T16:36:19.000Z","updated_at":"2025-09-30T11:05:34.000Z","dependencies_parsed_at":"2025-09-30T11:39:49.254Z","dependency_job_id":null,"html_url":"https://github.com/cool-japan/oxirs","commit_stats":null,"previous_names":["cool-japan/oxirs"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/cool-japan/oxirs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cool-japan%2Foxirs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cool-japan%2Foxirs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cool-japan%2Foxirs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cool-japan%2Foxirs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cool-japan","download_url":"https://codeload.github.com/cool-japan/oxirs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cool-japan%2Foxirs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277684856,"owners_count":25859442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-30T02:00:09.208Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","artificial-intelligence","fuseki","graphql","rdf","rdf-star","rust","rustlang","semantic-search","semantic-web","shacl","sparql","sparql-client","sparql-endpoints","sparql-query"],"created_at":"2025-09-30T19:33:02.252Z","updated_at":"2025-09-30T19:33:03.174Z","avatar_url":"https://github.com/cool-japan.png","language":"Rust","funding_links":[],"categories":["Semantic Web"],"sub_categories":["Knowledge Graph Stores \u0026 Application"],"readme":"# OxiRS\n\n\u003e A Rust-native, modular platform for Semantic Web, SPARQL 1.2, GraphQL, and AI-augmented reasoning\n\n[![Rust](https://github.com/cool-japan/oxirs/workflows/Rust/badge.svg)](https://github.com/cool-japan/oxirs/actions)\n[![License: MIT/Apache-2.0](https://img.shields.io/badge/License-MIT%2FApache--2.0-blue.svg)](LICENSE)\n[![Version](https://img.shields.io/badge/version-0.1.0--alpha.1-orange)](https://github.com/cool-japan/oxirs/releases)\n\n**Status**: Alpha Release (v0.1.0-alpha.1) - Released September 30, 2025\n\n⚠️ **Alpha Software**: This is an early alpha release. APIs may change without notice. Not recommended for production use.\n\n## Vision\n\nOxiRS aims to be a **Rust-first, JVM-free** alternative to Apache Jena + Fuseki and to Jupiper, providing:\n\n- **Protocol choice, not lock-in**: Expose both SPARQL 1.2 and GraphQL endpoints from the same dataset\n- **Incremental adoption**: Each crate works stand-alone; opt into advanced features via Cargo features\n- **AI readiness**: Native integration with vector search, graph embeddings, and LLM-augmented querying\n- **Single static binary**: Match or exceed Jena/Fuseki feature-for-feature while keeping a \u003c50MB footprint\n\n## Quick Start\n\n### Installation\n\n```bash\n# Install the CLI tool\ncargo install oxirs\n\n# Or build from source\ngit clone https://github.com/cool-japan/oxirs.git\ncd oxirs\ncargo build --workspace --release\n```\n\n### Usage\n\n```bash\n# Initialize a new knowledge graph\noxirs init mykg\n\n# Start the server\noxirs serve mykg.toml --port 3030\n```\n\nOpen:\n- http://localhost:3030 for the Fuseki-style admin UI\n- http://localhost:3030/graphql for GraphiQL\n\n## Published Crates\n\nAll crates are published to [crates.io](https://crates.io) and documented on [docs.rs](https://docs.rs).\n\n### Core\n\n| Crate | Version | Docs | Description |\n|-------|---------|------|-------------|\n| **[oxirs-core]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-core.svg)](https://crates.io/crates/oxirs-core) | [![docs.rs](https://docs.rs/oxirs-core/badge.svg)](https://docs.rs/oxirs-core) | Core RDF and SPARQL functionality |\n\n[oxirs-core]: https://crates.io/crates/oxirs-core\n\n### Server\n\n| Crate | Version | Docs | Description |\n|-------|---------|------|-------------|\n| **[oxirs-fuseki]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-fuseki.svg)](https://crates.io/crates/oxirs-fuseki) | [![docs.rs](https://docs.rs/oxirs-fuseki/badge.svg)](https://docs.rs/oxirs-fuseki) | SPARQL 1.1/1.2 HTTP server |\n| **[oxirs-gql]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-gql.svg)](https://crates.io/crates/oxirs-gql) | [![docs.rs](https://docs.rs/oxirs-gql/badge.svg)](https://docs.rs/oxirs-gql) | GraphQL endpoint for RDF |\n\n[oxirs-fuseki]: https://crates.io/crates/oxirs-fuseki\n[oxirs-gql]: https://crates.io/crates/oxirs-gql\n\n### Engine\n\n| Crate | Version | Docs | Description |\n|-------|---------|------|-------------|\n| **[oxirs-arq]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-arq.svg)](https://crates.io/crates/oxirs-arq) | [![docs.rs](https://docs.rs/oxirs-arq/badge.svg)](https://docs.rs/oxirs-arq) | SPARQL query engine |\n| **[oxirs-rule]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-rule.svg)](https://crates.io/crates/oxirs-rule) | [![docs.rs](https://docs.rs/oxirs-rule/badge.svg)](https://docs.rs/oxirs-rule) | Rule-based reasoning |\n| **[oxirs-shacl]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-shacl.svg)](https://crates.io/crates/oxirs-shacl) | [![docs.rs](https://docs.rs/oxirs-shacl/badge.svg)](https://docs.rs/oxirs-shacl) | SHACL validation |\n| **[oxirs-star]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-star.svg)](https://crates.io/crates/oxirs-star) | [![docs.rs](https://docs.rs/oxirs-star/badge.svg)](https://docs.rs/oxirs-star) | RDF-star support |\n| **[oxirs-ttl]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-ttl.svg)](https://crates.io/crates/oxirs-ttl) | [![docs.rs](https://docs.rs/oxirs-ttl/badge.svg)](https://docs.rs/oxirs-ttl) | Turtle parser |\n| **[oxirs-vec]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-vec.svg)](https://crates.io/crates/oxirs-vec) | [![docs.rs](https://docs.rs/oxirs-vec/badge.svg)](https://docs.rs/oxirs-vec) | Vector search |\n\n[oxirs-arq]: https://crates.io/crates/oxirs-arq\n[oxirs-rule]: https://crates.io/crates/oxirs-rule\n[oxirs-shacl]: https://crates.io/crates/oxirs-shacl\n[oxirs-star]: https://crates.io/crates/oxirs-star\n[oxirs-ttl]: https://crates.io/crates/oxirs-ttl\n[oxirs-vec]: https://crates.io/crates/oxirs-vec\n\n### Storage\n\n| Crate | Version | Docs | Description |\n|-------|---------|------|-------------|\n| **[oxirs-tdb]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-tdb.svg)](https://crates.io/crates/oxirs-tdb) | [![docs.rs](https://docs.rs/oxirs-tdb/badge.svg)](https://docs.rs/oxirs-tdb) | TDB2-compatible storage |\n| **[oxirs-cluster]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-cluster.svg)](https://crates.io/crates/oxirs-cluster) | [![docs.rs](https://docs.rs/oxirs-cluster/badge.svg)](https://docs.rs/oxirs-cluster) | Distributed clustering |\n\n[oxirs-tdb]: https://crates.io/crates/oxirs-tdb\n[oxirs-cluster]: https://crates.io/crates/oxirs-cluster\n\n### Stream\n\n| Crate | Version | Docs | Description |\n|-------|---------|------|-------------|\n| **[oxirs-stream]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-stream.svg)](https://crates.io/crates/oxirs-stream) | [![docs.rs](https://docs.rs/oxirs-stream/badge.svg)](https://docs.rs/oxirs-stream) | Real-time streaming |\n| **[oxirs-federate]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-federate.svg)](https://crates.io/crates/oxirs-federate) | [![docs.rs](https://docs.rs/oxirs-federate/badge.svg)](https://docs.rs/oxirs-federate) | Federated queries |\n\n[oxirs-stream]: https://crates.io/crates/oxirs-stream\n[oxirs-federate]: https://crates.io/crates/oxirs-federate\n\n### AI\n\n| Crate | Version | Docs | Description |\n|-------|---------|------|-------------|\n| **[oxirs-embed]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-embed.svg)](https://crates.io/crates/oxirs-embed) | [![docs.rs](https://docs.rs/oxirs-embed/badge.svg)](https://docs.rs/oxirs-embed) | Knowledge graph embeddings |\n| **[oxirs-shacl-ai]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-shacl-ai.svg)](https://crates.io/crates/oxirs-shacl-ai) | [![docs.rs](https://docs.rs/oxirs-shacl-ai/badge.svg)](https://docs.rs/oxirs-shacl-ai) | AI-powered SHACL |\n| **[oxirs-chat]** | [![Crates.io](https://img.shields.io/crates/v/oxirs-chat.svg)](https://crates.io/crates/oxirs-chat) | [![docs.rs](https://docs.rs/oxirs-chat/badge.svg)](https://docs.rs/oxirs-chat) | RAG chat API |\n\n[oxirs-embed]: https://crates.io/crates/oxirs-embed\n[oxirs-shacl-ai]: https://crates.io/crates/oxirs-shacl-ai\n[oxirs-chat]: https://crates.io/crates/oxirs-chat\n\n### Tools\n\n| Crate | Version | Docs | Description |\n|-------|---------|------|-------------|\n| **[oxirs (CLI)]** | [![Crates.io](https://img.shields.io/crates/v/oxirs.svg)](https://crates.io/crates/oxirs) | [![docs.rs](https://docs.rs/oxirs/badge.svg)](https://docs.rs/oxirs) | CLI tool |\n\n[oxirs (CLI)]: https://crates.io/crates/oxirs\n\n## Architecture\n\n```\noxirs/                  # Cargo workspace root\n├─ core/                # Thin, safe re-export of oxigraph\n│  └─ oxirs-core\n├─ server/              # Network front ends\n│  ├─ oxirs-fuseki      # SPARQL 1.1/1.2 HTTP protocol, Fuseki-compatible config\n│  └─ oxirs-gql         # GraphQL façade (Juniper + mapping layer)\n├─ engine/              # Query, update, reasoning\n│  ├─ oxirs-arq         # Jena-style algebra + extension points\n│  ├─ oxirs-rule        # Forward/backward rule engine (RDFS/OWL/SWRL)\n│  ├─ oxirs-shacl       # SHACL Core + SHACL-SPARQL validator\n│  ├─ oxirs-star        # RDF-star / SPARQL-star grammar support\n│  └─ oxirs-vec         # Vector index abstractions (SciRS2, hnsw_rs)\n├─ storage/\n│  ├─ oxirs-tdb         # MVCC layer \u0026 assembler grammar (TDB2 parity)\n│  └─ oxirs-cluster     # Raft-backed distributed dataset\n├─ stream/              # Real-time and federation\n│  ├─ oxirs-stream      # Kafka/NATS I/O, RDF Patch, SPARQL Update delta\n│  └─ oxirs-federate    # SERVICE planner, GraphQL stitching\n├─ ai/\n│  ├─ oxirs-embed       # KG embeddings (TransE, ComplEx…)\n│  ├─ oxirs-shacl-ai    # Shape induction \u0026 data repair suggestions\n│  └─ oxirs-chat        # RAG chat API (LLM + SPARQL)\n└─ tools/\n    ├─ oxirs             # CLI (import, export, star-migrate, bench)\n    └─ benchmarks/       # SP2Bench, WatDiv, LDBC SGS\n```\n\n## Feature Matrix (v0.1.0-alpha.1)\n\n| Capability | Oxirs crate(s) | Status | Jena / Fuseki parity |\n|------------|----------------|--------|----------------------|\n| RDF 1.2 \u0026 syntaxes | `oxirs-core` | ✅ Alpha | ✅ |\n| RDF-star parse/serialise | `oxirs-star` | 🔄 Experimental | 🔸 (Jena dev build) |\n| SPARQL 1.1 Query \u0026 Update | `oxirs-fuseki` + `oxirs-arq` | ✅ Alpha | ✅ |\n| SPARQL 1.2 / SPARQL-star | `oxirs-arq` (`star` flag) | 🔄 Experimental | 🔸 |\n| Rule reasoning (RDFS/OWL) | `oxirs-rule` | 🔄 Experimental | ✅ |\n| SHACL Core+API | `oxirs-shacl` | 🔄 Experimental | ✅ |\n| Full-text search (`text:`) | `oxirs-textsearch` | ⏳ Planned | ✅ |\n| GeoSPARQL | `oxirs-geosparql` (`geo`) | ⏳ Planned | ✅ |\n| GraphQL API | `oxirs-gql` | ✅ Alpha | ❌ |\n| Vector search / embeddings | `oxirs-vec`, `oxirs-embed` (`ai`) | 🔄 Experimental | ❌ |\n| Distributed / HA store | `oxirs-cluster` (`cluster`) | 🔄 Experimental | 🔸 (Jena + external) |\n\nLegend: ✅ Alpha - Usable but may have bugs, 🔄 Experimental - Under development, ⏳ Planned - Not yet implemented, 🔸 partial/plug-in\n\n## Usage Examples\n\n### Dataset Configuration (TOML)\n\n```toml\n[dataset.mykg]\ntype      = \"tdb2\"\nlocation  = \"/data\"\ntext      = { enabled = true, analyzer = \"english\" }\nshacl     = [\"./shapes/person.ttl\"]\n```\n\n### GraphQL Query (auto-generated)\n\n```graphql\nquery {\n  Person(where: {familyName: \"Yamada\"}) {\n    givenName\n    homepage\n    knows(limit: 5) { givenName }\n  }\n}\n```\n\n### Vector Similarity SPARQL Service (opt-in AI)\n\n```sparql\nSELECT ?s ?score WHERE {\n  SERVICE \u003cvec:similar ( \"LLM embeddings of 'semantic web'\" 0.8 )\u003e {\n    ?s ?score .\n  }\n}\n```\n\n## Development\n\n### Prerequisites\n\n- Rust 1.70+ (MSRV)\n- Optional: Docker for containerized deployment\n\n### Building\n\n```bash\n# Clone the repository\ngit clone https://github.com/cool-japan/oxirs.git\ncd oxirs\n\n# Build all crates\ncargo build --workspace\n\n# Run tests\ncargo nextest run --no-fail-fast\n\n# Run with all features\ncargo build --workspace --all-features\n```\n\n### Feature Flags\n\nOptional features to keep dependencies minimal:\n\n- `geo`: GeoSPARQL support\n- `text`: Full-text search with Tantivy\n- `ai`: Vector search and embeddings\n- `cluster`: Distributed storage with Raft\n- `star`: RDF-star and SPARQL-star support\n- `vec`: Vector index abstractions\n\n## Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### RFC Process\n\n- Design documents go in `./rfcs/` with lazy-consensus and 14-day comment window\n- All code must pass `rustfmt + nightly 2025-06`, Clippy `--all-targets --workspace -D warnings`\n- Commit sign-off required (DCO 1.1)\n\n## Roadmap\n\n| Version | Target Date | Milestone | Deliverables |\n|---------|-------------|-----------|--------------|\n| **v0.1.0-alpha.1** | **✅ Sep 2025** | **Alpha Release** | Core SPARQL/GraphQL server, basic features |\n| **v0.1.0-beta.1** | **Dec 2025** | **Beta Release** | API stability, production hardening, full docs |\n| **v0.2.0** | **Q1 2026** | **Enhanced Features** | Advanced optimization, AI capabilities, clustering |\n| **v0.3.0** | **Q2 2026** | **Text \u0026 Geo** | Full-text search, GeoSPARQL, bulk loader |\n| **v0.4.0** | **Q3 2026** | **AI \u0026 Streaming** | Vector search, embeddings, RAG, streaming |\n| **v1.0.0** | **Q4 2026** | **Production Ready** | Full Jena parity, enterprise support, LTS |\n\n## License\n\nOxiRS is dual-licensed under either:\n\n- **MIT License** ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n- **Apache License, Version 2.0** ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n\nat your option.\n\nSee [LICENSE](LICENSE) for details.\n\n## Contact\n\n- **Issues \u0026 RFCs**: https://github.com/cool-japan/oxirs\n- **Maintainer**: @cool-japan (KitaSan)\n\n## Release Notes (v0.1.0-alpha.1)\n\n### What's Included\n- ✅ Basic SPARQL 1.1/1.2 query engine\n- ✅ GraphQL endpoint generation\n- ✅ RDF parsing (Turtle, N-Triples, JSON-LD, RDF/XML)\n- ✅ In-memory and disk-based storage\n- ✅ Basic federated queries\n- ✅ Experimental AI features (embeddings, chat)\n- ✅ Experimental distributed clustering\n\n### Known Issues\n- Performance not yet optimized\n- Some advanced SPARQL features incomplete\n- Limited error handling in some areas\n- Documentation incomplete\n- API subject to change\n\n### Feedback Welcome\nPlease report bugs and feature requests at: https://github.com/cool-japan/oxirs/issues\n\n---\n\n*\"Rust makes memory safety table stakes; Oxirs makes knowledge-graph engineering table stakes.\"*\n\n**First alpha release - September 30, 2025**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcool-japan%2Foxirs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcool-japan%2Foxirs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcool-japan%2Foxirs/lists"}