shacl_validation/helpers/
sparql.rs

1use std::collections::HashSet;
2
3use srdf::Sparql;
4
5use super::helper_error::SPARQLError;
6
7pub fn select<S: Sparql>(
8    store: &S,
9    query_str: String,
10    index: &str,
11) -> Result<HashSet<S::Term>, SPARQLError> {
12    let mut ans = HashSet::new();
13    let query = match store.query_select(&query_str) {
14        Ok(ans) => ans,
15        Err(e) => {
16            return Err(SPARQLError::Query {
17                query: query_str.to_string(),
18                error: format!("{e}"),
19            })
20        }
21    };
22    for solution in query.iter() {
23        if let Some(solution) = solution.find_solution(index) {
24            ans.insert(solution.to_owned());
25        }
26    }
27    Ok(ans)
28}