Oxigraph is a graph database implementing the SPARQL standard.
Its goal is to provide a compliant, safe and fast graph database.
It currently provides three store implementations providing SPARQL 1.1 query capability:
MemoryStore
: a simple in memory implementation.RocksDbStore
: a file system implementation based on the RocksDB key-value store. It requires the"rocksdb"
feature to be activated. The"rocksdb"
requires the clang compiler to be installed.SledStore
: another file system implementation based on the Sled key-value store. It requires the"sled"
feature to be activated. Sled is much faster to build than RockDB and does not require a C++ compiler. However, Sled is still in developpment, less tested and data load seems much slower than RocksDB.
It also provides a set of utility functions for reading, writing and processing RDF files.
Usage example with the MemoryStore
:
use oxigraph::MemoryStore;
use oxigraph::model::*;
use oxigraph::sparql::{QueryOptions, QueryResults};
let store = MemoryStore::new();
// insertion
let ex = NamedNode::new("http://example.com")?;
let quad = Quad::new(ex.clone(), ex.clone(), ex.clone(), None);
store.insert(quad.clone());
// quad filter
let results: Vec<Quad> = store.quads_for_pattern(Some(ex.as_ref().into()), None, None, None).collect();
assert_eq!(vec![quad], results);
// SPARQL query
if let QueryResults::Solutions(mut solutions) = store.query("SELECT ?s WHERE { ?s ?p ?o }", QueryOptions::default())? {
assert_eq!(solutions.next().unwrap()?.get("s"), Some(&ex.into()));
}
# Result::<_,Box<dyn std::error::Error>>::Ok(())