5.2 KiB
Oxigraph
Oxigraph is a work in progress graph database implementing the SPARQL standard.
There is no released version yet.
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 is split into multiple parts:
- The
lib
directory contains the database written as a Rust library - The
server
directory contains a stand-alone binary of a web server implementing the SPARQL 1.1 Protocol. - The
wikibase
directory contains a stand-alone binary of a web server able to synchronize with a Wikibase instance.
Are currently implemented:
- SPARQL 1.1 Query except
FROM
andFROM NAMED
. - 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 and SPARQL Query Results JSON Format.
A preliminary benchmark is provided.
Run the web server
Build
You need to have a recent stable version of Rust and Cargo installed. You also need llvm (and clang) to build the rocksDB and other bindings.
If it's done, executing cargo build --release
in the root directory of this repository should compile the full server after having downloaded its dependencies.
It will create a fat binary in target/release/oxigraph_server
.
Usage
Run ./oxigraph_server
to start the server. It listen by default on localhost:7878
.
The server provides an HTML UI with a form to execute SPARQL requests.
It provides the following routes:
/
allows toPOST
data to the server. For examplecurl -f -X POST -H 'Content-Type:application/n-triples' --data-binary "@MY_FILE.nt" http://localhost:7878/
will add the N-Triples file MY_FILE.nt to the server repository. Turtle, TriG, N-Triples, N-Quads and RDF XML are supported./query
allows to evaluate SPARQL queries against the server repository following the SPARQL 1.1 Protocol. For examplecurl -f -X POST -H 'Content-Type:application/sparql-query' --data 'SELECT * WHERE { ?s ?p ?o } LIMIT 10' http://localhost:7878/query
. This route supports content negotiation and could return Turtle, N-Triples, RDF XML, SPARQL Query Results XML Format and SPARQL Query Results JSON Format.
Use oxigraph_server --help
to see the possible options when starting the server.
Run the web server for Wikibase
Build
You need to have a recent stable version of Rust and Cargo installed.
If it's done, executing cargo build --release
in the root directory of this repository should compile the full server after having downloaded its dependencies.
It will create a fat binary in target/release/oxigraph_wikibase
.
Usage
To start a server that is synchronized with test.wikidata.org you should run:
./oxigraph_wikibase --mediawiki_api=https://test.wikidata.org/w/api.php --mediawiki_base_url=https://test.wikidata.org/wiki/ --namespaces=0,120 --file=test.wikidata
It creates a SPARQL endpoint listening to localhost:7878/query
that could be queried just like Blazegraph.
The configuration parameters are:
mediawiki_api
URL of the MediaWiki API to usemediawiki_base_url
Base URL of MediaWiki pages likehttps://test.wikidata.org/wiki/
for test.wikidata.org orhttp://localhost/w/index.php?title=
for "vanilla" installations.namespaces
The ids of the Wikibase namespaces to synchronize with, separated by,
.file
Path of where Oxigraph should store its data.
License
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.
Contribution
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.