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 64f45cd11b Makes recent Clippy happy 12 months ago
..
benches Upgrades oxhttp 1 year ago
oxrdf Makes recent Clippy happy 12 months ago
oxrdfio Adds basic location support to sparesults SyntaxError 12 months ago
oxrdfxml Move back MSRV to 1.67 but keep Cargo.lock to 1.70 1 year ago
oxsdatatypes Upgrades MSRV to 1.70 1 year ago
oxttl Move back MSRV to 1.67 but keep Cargo.lock to 1.70 1 year ago
sparesults sparesults: use Read instead of BufRead as input type 12 months ago
spargebra Enables more Clippy lints 1 year ago
sparopt Enables more Clippy lints 1 year ago
sparql-smith Move back MSRV to 1.67 but keep Cargo.lock to 1.70 1 year ago
src sparesults: use Read instead of BufRead as input type 12 months ago
tests Enables more Clippy lints 1 year ago
Cargo.toml Upgrades json-event-parser 1 year ago
README.md Upgrades oxhttp 1 year 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.

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. Oxigraph internal design is described on the wiki.

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).unwrap();

// 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()));
}

Some parts of this library are available as standalone crates:

  • oxrdf, datastructures encoding RDF basic concepts (the oxigraph::model module).
  • oxrdfio, a unified parser and serializer API for RDF formats. It itself relies on:
    • oxttl, N-Triple, N-Quad, Turtle, TriG and N3 parsing and serialization.
    • oxrdfxml, RDF/XML parsing and serialization.
  • spargebra, a SPARQL parser.
  • sparesults, parsers and serializers for SPARQL result formats.
  • sparopt, a SPARQL optimizer.
  • oxsdatatypes, an implementation of some XML Schema datatypes.

To build the library, 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 submodules to the already cloned repository.

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 Oxigraph by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.