oxigraph is a free, open source databases project written in Rust and released under Apache-2.0. It has 1,912 GitHub stars, 173 forks and 149 open issues, and was last pushed 3 days ago. On this registry it ranks #71 of 81 tracked projects in Databases, with 5 head-to-head comparisons available. It gained 29 stars over the last 3 tracked days.

What is oxigraph?

What it is

Oxigraph is an open-source graph database and an RDF and SPARQL toolkit. It is written in Rust, released under the Apache-2.0 license, and lives in the RDF and SPARQL ecosystem. Its stated goal is to provide a compliant, safe, and fast graph database based on the RocksDB key-value store, while also offering utilities for basic RDF manipulation and for building SPARQL implementations.

The concrete problem it addresses is the need to store, query, update, and exchange RDF datasets through standard interfaces. Oxigraph implements SPARQL Query, SPARQL Update, and SPARQL Federated Query, and it supports common RDF serialization formats for data ingestion and retrieval. The project is split into a Rust library, Python and JavaScript bindings, and a command-line tool that can also spawn a web server.

Key capabilities

  • It stores RDF datasets with a RocksDB key-value store as the database foundation.
  • It evaluates SPARQL Query, SPARQL Update, and SPARQL Federated Query.
  • It parses and serializes Turtle, TriG, N-Triples, N-Quads, RDF/XML, and JSON-LD.
  • It produces SPARQL query results in XML, JSON, CSV, and TSV formats.
  • It supports RDF Dataset Canonicalization.
  • It provides a Rust library, a pyoxigraph Python package, and JavaScript bindings packaged through npm.
  • It includes a CLI binary that manipulates RDF data and spawns a web server for the SPARQL 1.1 Protocol and Graph Store Protocol.

Who uses it and how

  • Rust developers embed the Oxigraph library in applications that need RDF storage and SPARQL processing.
  • Python users install pyoxigraph to work with RDF data and SPARQL results from Python programs.
  • JavaScript users install the oxigraph npm package, which uses WebAssembly to run in Node.js-compatible environments.
  • Operators use the CLI binary to manipulate RDF files locally or to run a standalone SPARQL web server.
  • Applications use the web server to submit SPARQL queries and updates over HTTP.

Getting started

Install the Rust crate from crates.io, the Python package from PyPI, or the JavaScript package from npm. Use the CLI binary for command-line RDF tasks and for running the web server, with Docker instructions provided in the cli directory.

When to use it — and when not to

Use Oxigraph when you need an Apache-2.0 RDF and SPARQL store with Rust, Python, JavaScript, and command-line interfaces. Avoid it when you need highly optimized SPARQL query evaluation, because the README states that the project is in heavy development and that query evaluation has not been optimized yet. A self-hoster must operate the RocksDB-based store and the web server, and the README does not describe a hosted option.

project readme (upstream, from github) — read inline

Oxigraph

Latest Version Released API docs PyPI npm tests status artifacts status dependency status Gitter Twitter URL

Oxigraph is both a graph database and a RDF and SPARQL toolkit.

Its goal is to provide a compliant, safe, and fast graph database based on the RocksDB key-value store. It also provides a set of utilities for RDF basic manipulation (parsing, serialization, canonicalization) and building SPARQL implementations (SPARQL results parsers/serializers, SPARQL parser...).

Oxigraph is in heavy development and SPARQL query evaluation has not been optimized yet. Oxigraph internal design is described on the wiki.

Oxigraph implements the following specifications:

Most implementations are nearly fully conformant with the latest recommendations (1.1 for RDF, SPARQL and JSON-LD) with preliminary support for 1.2 RDF and SPARQL drafts.

It is split into multiple parts:

Also, some parts of Oxigraph are available as standalone Rust crates to be reused in other Rust projects:

  • oxrdf, datastructures encoding RDF basic concepts (the oxigraph::model module).
  • oxrdfio, a unified parser and serializer API for RDF formats (the oxigraph::io module). It itself relies on:
    • oxttl, N-Triple, N-Quad, Turtle, TriG and N3 parsing and serialization.
    • oxrdfxml, RDF/XML parsing and serialization.
    • oxjsonld, JSON-LD RDF serialization/deserialization algorithms.
  • spareval, a SPARQL evaluator.
  • spargebra, a SPARQL parser.
  • sparesults, parsers and serializers for SPARQL result formats.
  • sparopt, a SPARQL optimizer.
  • oxsdatatypes, an implementation of some XML Schema datatypes.
  • spargeo, a partial implementation of GeoSPARQL.

The library layers in Oxigraph. The elements above depend on the elements below: Oxigraph libraries architecture diagram

A preliminary benchmark is provided. There is also a document describing Oxigraph technical architecture.

Help

Feel free to use GitHub discussions or the Gitter chat to ask questions or talk about Oxigraph. Bug reports are also very welcome.

If you need advanced support or are willing to pay to get some extra features, feel free to reach out to Tpt.

License

This project is licensed under either of

at your option.

Contribution

When cloning this codebase, clone the submodules using git clone --recursive https://github.com/oxigraph/oxigraph.git to clone the repository including submodules or git submodule update --init to add the submodules to the already cloned repository.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Oxigraph by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Sponsors

And others. Many thanks to them!

Frequently asked questions

Is oxigraph free to use?

oxigraph is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does oxigraph do?

SPARQL graph database

What is oxigraph written in?

oxigraph is primarily written in Rust. Its source is publicly available at https://github.com/oxigraph/oxigraph, and it has 1,912 GitHub stars.