Fork of https://github.com/oxigraph/oxigraph.git for the purpose of NextGraph project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
oxigraph/lib
Tpt ec5c7c86be Improves RDF I/O ParseError 3 years ago
..
benches Makes bulk load partial insertions atomic 3 years ago
oxrdf Uses README for crates documentation 3 years ago
sparesults Moves out of Oxigraph SPARQL results parser and serializers 3 years ago
spargebra Uses README for crates documentation 3 years ago
src Improves RDF I/O ParseError 3 years ago
tests Avoids abusing std::io::Error 3 years ago
Cargo.toml Moves out of Oxigraph SPARQL results parser and serializers 3 years ago
README.md Uses README for crates documentation 3 years ago

README.md

Oxigraph

Latest Version Released API docs Crates.io downloads actions status Gitter

Oxigraph is a graph database library implementing the SPARQL standard.

Its goal is to provide a compliant, safe and fast on-disk graph database. 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 disabled by default "sophia" feature provides sophia_api traits implementation on Oxigraph terms and stores.

Oxigraph also provides a standalone HTTP server and a Python library based on this library.

Oxigraph implements the following specifications:

A preliminary benchmark is provided.

The main entry point of Oxigraph is the Store struct:

use oxigraph::store::Store;
use oxigraph::model::*;
use oxigraph::sparql::QueryResults;

let store = Store::new().unwrap();

// insertion
let ex = NamedNode::new("http://example.com").unwrap();
let quad = Quad::new(ex.clone(), ex.clone(), ex.clone(), GraphName::DefaultGraph);
store.insert(&quad)?;

// quad filter
let results = store.quads_for_pattern(Some(ex.as_ref().into()), None, None, None).collect::<Result<Vec<Quad>,_>>().unwrap();
assert_eq!(vec![quad], results);

// SPARQL query
if let QueryResults::Solutions(mut solutions) =  store.query("SELECT ?s WHERE { ?s ?p ?o }").unwrap() {
    assert_eq!(solutions.next().unwrap().unwrap().get("s"), Some(&ex.into()));
}

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.