oxirs-arq 0.4.1

Jena-style SPARQL algebra with extension points and query optimization
Documentation
//! Auto-generated module
//!
//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)

use crate::algebra::Variable;
use std::collections::{HashMap, HashSet};

use super::types::Token;

/// Query parser implementation
pub struct QueryParser {
    pub(super) tokens: Vec<Token>,
    pub(super) position: usize,
    pub(super) prefixes: HashMap<String, String>,
    pub(super) base_iri: Option<String>,
    pub(super) variables: HashSet<Variable>,
    /// Monotonic counter minting unique labels for the anonymous blank nodes of
    /// `[ … ]` blank-node property lists and `( … )` RDF collections.
    pub(super) blank_node_counter: usize,
    /// Whether the parser is currently reading a CONSTRUCT template (as opposed
    /// to a WHERE graph pattern). It flips how anonymous blank nodes are lowered:
    /// a template mints real `Term::BlankNode`s (`instantiate_construct` then
    /// mints a fresh one per solution row), while a WHERE pattern mints fresh
    /// non-distinguished `Term::Variable`s (the store matches a query blank node
    /// as an existential variable, never as a specific stored blank node).
    pub(super) in_construct_template: bool,
}