shacl_validation/helpers/
sparql.rs1use 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}