Oxigraph is a graph database implementing the SPARQL standard.
Its goal is to provide a compliant, safe, and fast graph database based on the RocksDB key-value store. It is written in Rust. It also provides a set of utility functions for reading, writing, and processing RDF files.
Oxigraph is in heavy development and SPARQL query evaluation has not been optimized yet. The development roadmap is using GitHub milestones. Oxigraph internal design is described on the wiki.
Oxigraph implements the following specifications:
- SPARQL 1.1 Query, SPARQL 1.1 Update, and SPARQL 1.1 Federated Query.
- Turtle, TriG, N-Triples, N-Quads, and RDF/XML RDF serialization formats for both data ingestion and retrieval.
- SPARQL Query Results XML Format, SPARQL 1.1 Query Results JSON Format and SPARQL 1.1 Query Results CSV and TSV Formats.
It is split into multiple parts:
- The database written as a Rust library. Its source code is in the
lib
directory. pyoxigraph
that exposes Oxigraph to the Python world. Its source code is in thepython
directory.- JavaScript bindings for Oxigraph. WebAssembly is used to package Oxigraph into a NodeJS compatible NPM package. Its source code is in the
js
directory. - Oxigraph binary that provides a standalone command-line tool allowing to manipulate RDF data and spawn a a web server implementing the SPARQL 1.1 Protocol and the SPARQL 1.1 Graph Store Protocol. Its source code is in the
cli
directory. Note that it was previously named Oxigraph server.
Also, some parts of Oxigraph are available as standalone Rust crates:
oxrdf
, datastructures encoding RDF basic concepts (theoxigraph::model
module).oxrdfio
, a unified parser and serializer API for RDF formats (theoxigraph::io
module). It itself relies on:spargebra
, a SPARQL parser.sparesults
, parsers and serializers for SPARQL result formats.sparopt
, a SPARQL optimizer.oxsdatatypes
, an implementation of some XML Schema datatypes.
The library layers in Oxigraph. The elements above depend on the elements below:
A preliminary benchmark is provided. There is also a document describing Oxigraph technical architecture.
When cloning this codebase, don't forget to 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.
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.
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
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.
- RelationLabs that is building Relation-Graph, a SPARQL database module for the Substrate blockchain platform based on Oxigraph.
- Field 33 that was building an ontology management platform.
- Magnus Bakken who is building Data Treehouse, a time-series + RDF datalake platform, and chrontext, a SPARQL query endpoint on top of joint RDF and time series databases.
- DeciSym.AI a cyber security consulting company providing RDF-based software.
- ACE IoT Solutions, a building IOT platform.
- Albin Larsson who is building GovDirectory, a directory of public agencies based on Wikidata.
And others. Many thanks to them!