rdf_fusion_execution/sparql/
mod.rs

1//! [SPARQL](https://www.w3.org/TR/sparql11-overview/) implementation.
2
3mod algebra;
4pub mod error;
5mod eval;
6mod explanation;
7mod optimizer;
8mod rewriting;
9
10pub use crate::sparql::algebra::{Query, QueryDataset, Update};
11pub use crate::sparql::explanation::QueryExplanation;
12pub use eval::evaluate_query;
13pub use optimizer::{create_optimizer_rules, create_pyhsical_optimizer_rules};
14pub use rdf_fusion_model::{Variable, VariableNameParseError};
15pub use spargebra::SparqlSyntaxError;
16
17/// Defines how many optimizations the query optimizer should apply.
18///
19/// Currently, the default value is [OptimizationLevel::Full], as we are still searching for a
20/// subset that performs well on many queries. Once this subset has been identified, the default
21/// value will be [OptimizationLevel::Default].
22#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
23pub enum OptimizationLevel {
24    /// No optimizations, except rewrites that are necessary for a working query.
25    None,
26    /// A balanced default optimization level. Suitable for simple queries or those handling modest
27    /// data volumes.
28    Default,
29    /// Runs all optimizations. Ideal for complex queries or those processing large datasets.
30    #[default]
31    Full,
32}
33
34/// Options for SPARQL query evaluation.
35#[derive(Clone, Default)]
36pub struct QueryOptions {
37    /// The defined optimization level
38    pub optimization_level: OptimizationLevel,
39}
40
41/// Options for SPARQL update evaluation.
42#[derive(Clone, Default)]
43pub struct UpdateOptions;
44
45impl From<QueryOptions> for UpdateOptions {
46    #[inline]
47    fn from(_query_options: QueryOptions) -> Self {
48        Self {}
49    }
50}