1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
use crate::{
Result,
api::query::implementations::{
load_query, reset_query, reset_query_results, run_query, serialize_query, serialize_query_results,
},
formats::{InputSpec, QueryType, ResultQueryFormat},
};
use std::io;
/// Operations for executing SPARQL queries.
pub trait QueryOperations {
/// Loads a SPARQL query from an input specification.
///
/// # Arguments
///
/// * `query` - Input specification defining the query source
/// * `query_type` - Optional type of query (SELECT, CONSTRUCT, etc.).
/// If None, Rudof will attempt to auto-detect the query type.
///
/// # Errors
///
/// Returns an error if the query cannot be parsed or loaded.
fn load_query(&mut self, query: &InputSpec, query_type: Option<&QueryType>) -> Result<()>;
/// Serializes the currently loaded query to a writer.
///
/// # Arguments
///
/// * `writer` - The destination to write the serialized query to
///
/// # Errors
///
/// Returns an error if no query is loaded or serialization fails.
fn serialize_query<W: io::Write>(&self, writer: &mut W) -> Result<()>;
/// Resets the current query.
fn reset_query(&mut self);
/// Executes the currently loaded query.
///
/// # Arguments
///
/// * `result_query_format` - Optional format for the query results.
///
/// # Errors
///
/// Returns an error if no query is loaded, or if query execution fails.
fn run_query(&mut self, result_query_format: Option<&ResultQueryFormat>) -> Result<()>;
/// Serializes the query results to a writer.
///
/// # Arguments
///
/// * `result_format` - Optional output format for the results (uses default if None)
/// * `writer` - The destination to write the serialized results to
///
/// # Errors
///
/// Returns an error if no query results are available or serialization fails.
fn serialize_query_results<W: io::Write>(
&self,
result_query_format: Option<&ResultQueryFormat>,
writer: &mut W,
) -> Result<()>;
/// Resets the current query and results.
fn reset_query_results(&mut self);
}
impl QueryOperations for crate::Rudof {
fn load_query(&mut self, query: &InputSpec, query_type: Option<&QueryType>) -> Result<()> {
load_query(self, query, query_type)
}
fn serialize_query<W: io::Write>(&self, writer: &mut W) -> Result<()> {
serialize_query(self, writer)
}
fn reset_query(&mut self) {
reset_query(self)
}
fn run_query(&mut self, result_query_format: Option<&ResultQueryFormat>) -> Result<()> {
run_query(self, result_query_format)
}
fn serialize_query_results<W: io::Write>(
&self,
result_query_format: Option<&ResultQueryFormat>,
writer: &mut W,
) -> Result<()> {
serialize_query_results(self, result_query_format, writer)
}
fn reset_query_results(&mut self) {
reset_query_results(self)
}
}