Skip to content

Latest commit

 

History

History

spareval

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

spareval

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

spareval is a SPARQL Query evaluator.

It relies on the spargebra and sparopt crates.

This crate is intended to be a building piece for SPARQL implementations like oxigraph.

use oxrdf::{Dataset, GraphName, NamedNode, Quad};
use spareval::{QueryEvaluator, QueryResults};
use spargebra::Query;

let ex = NamedNode::new("http://example.com").unwrap();
let dataset = Dataset::from_iter([Quad::new(
    ex.clone(),
    ex.clone(),
    ex.clone(),
    GraphName::DefaultGraph,
)]);
let query = Query::parse("SELECT * WHERE { ?s ?p ?o }", None).unwrap();
let results = QueryEvaluator::new().execute(dataset, &query);
if let QueryResults::Solutions(solutions) = results.unwrap() {
    let solutions = solutions.collect::<Result<Vec<_>, _>>().unwrap();
    assert_eq!(solutions.len(), 1);
    assert_eq!(solutions[0]["s"], ex.into());
}

Cargo features

  • rdf-star: enables SPARQL-star.
  • sep-0002: enables the SEP-0002 (ADJUST function and a lot of arithmetic on xsd:date, xsd:time, xsd:yearMonthDuration and xsd:dayTimeDuration).
  • sep-0006: enables the SEP-0006 (LATERAL keyword).
  • calendar-ext: arithmetic on xsd:gYear, xsd:gYearMonth, xsd:gMonth, xsd:gMonthDay and xsd:gDay.

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.