Oxigraph Server is a standalone HTTP server providing 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 stores. 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.
Oxigraph provides three different installation methods for Oxigraph server.
* cargo install
(multiplatform)
* A Docker image
* A Homebrew formula
It is also usable as a Rust library and as a Python library.
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 using the Rio library. * SPARQL Query Results XML Format, SPARQL 1.1 Query Results JSON Format and SPARQL 1.1 Query Results CSV and TSV Formats. * SPARQL 1.1 Protocol and SPARQL 1.1 Graph Store HTTP Protocol.
A preliminary benchmark is provided.
You need to have a recent stable version of Rust and Cargo installed. You also need clang to build RocksDB.
To download, build and install the latest released version run cargo install oxigraph_server
.
There is no need to clone the git repository.
To compile the server from source, clone this git repository, and execute cargo build --release
in the server
directory to compile the full server after having downloaded its dependencies.
It will create a fat binary in target/release/oxigraph_server
.
Run oxigraph_server -f my_data_storage_directory
to start the server where my_data_storage_directory
is the directory where you want Oxigraph data to be stored in. It listens by default on localhost:7878
.
The server provides an HTML UI with a form to execute SPARQL requests.
It provides the following REST actions:
* /query
allows to evaluate SPARQL queries against the server repository following the SPARQL 1.1 Protocol.
For example curl -X POST -H 'Content-Type:application/sparql-query' --data 'SELECT * WHERE { ?s ?p ?o } LIMIT 10' http://localhost:7878/query
.
This action supports content negotiation and could return Turtle, N-Triples, RDF XML, SPARQL Query Results XML Format and SPARQL Query Results JSON Format.
* /update
allows to execute SPARQL updates against the server repository following the SPARQL 1.1 Protocol.
For example curl -X POST -H 'Content-Type: application/sparql-update' --data 'DELETE WHERE { <http://example.com/s> ?p ?o }' http://localhost:7878/update
.
* /store
allows to retrieve and change the server content using the SPARQL 1.1 Graph Store HTTP Protocol.
For example curl -f -X POST -H 'Content-Type:application/n-triples' --data-binary "@MY_FILE.nt" http://localhost:7878/store?graph=http://example.com/g
will add the N-Triples file MYFILE.nt to the server dataset inside of the http://example.com/g
named graph.
Turtle, N-Triples and RDF XML are supported.
It is also possible to POST
, PUT
and GET
the complete RDF dataset on the server using RDF dataset formats (TriG and N-Quads) against the /store
endpoint.
For example curl -f -X POST -H 'Content-Type:application/n-quads' --data-binary "@MY_FILE.nq" http://localhost:7878/store
will add the N-Quads file MYFILE.nq to the server dataset.
Use oxigraph_server --help
to see the possible options when starting the server.
sh
docker run --rm oxigraph/oxigraph --help
Expose the server on port 7878
of the host machine, and save data on the local ./data
folder
sh
docker run --init --rm -v $PWD/data:/data -p 7878:7878 oxigraph/oxigraph -b 0.0.0.0:7878 -f /data
You can then access it from your machine on port 7878
:
```sh
firefox http://localhost:7878
curl http://localhost:7878/store?default -H 'Content-Type: text/turtle' -d@./data.ttl
curl -X POST -H 'Accept: application/sparql-results+json' -H 'Content-Type: application/sparql-query' --data 'SELECT * WHERE { ?s ?p ?o } LIMIT 10' http://localhost:7878/query
curl -X POST -H 'Content-Type: application/sparql-update' --data 'DELETE WHERE { http://example.com/s ?p ?o }' http://localhost:7878/update ```
You could easily build your own Docker image by running docker build -t oxigraph server -f server/Dockerfile .
from the root directory.
Oxigraph maintains a Homebrew formula in a custom tap.
To install Oxigraph server using Homebrew do:
sh
brew tap oxigraph/oxigraph
brew install oxigraph
It installs the oxigraph_server
binary. See the usage documentation to know how to use it.
This project is licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Futures by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.