#[repr(C)]pub enum Pattern {
Show 13 variants
Triple {
subject: u64,
predicate: u64,
object: u64,
},
Optional {
inner: PatternId,
},
Union {
left: PatternId,
right: PatternId,
},
Graph {
graph_var_or_id: u64,
inner: PatternId,
},
Filter {
pattern: PatternId,
expression: ExpressionId,
},
Bind {
pattern: PatternId,
var: VariableId,
expression: ExpressionId,
},
Minus {
inner: PatternId,
},
Group {
start_idx: u16,
len: u16,
},
PropertyPath {
subject: u64,
path: PathId,
object: u64,
},
Service {
endpoint_did_id: u64,
inner_pattern: PatternId,
},
AsOf {
inner: PatternId,
timestamp_ms: u64,
mode: TemporalMode,
},
StarTriple {
inner_subject: u64,
inner_predicate: u64,
inner_object: u64,
outer_predicate: u64,
outer_object: u64,
},
SubSelect {
query_id: u16,
},
}Expand description
Graph pattern - now uses PatternId indices instead of Box
Variants§
Triple
Basic triple pattern
Optional
OPTIONAL pattern - references inner pattern by ID
Union
UNION pattern - references left and right by IDs
Graph
GRAPH pattern - references graph var/IRI and inner pattern
Filter
FILTER pattern - references pattern to filter and expression
Bind
BIND(expr AS ?var) — extends each solution of pattern with var
bound to the value of expression (SPARQL 1.1 Extend). If the
expression errors, var is left unbound and the row is kept.
Minus
MINUS pattern
Group
Group graph pattern - references range in child array
PropertyPath
Property path pattern (SPARQL 1.1)
Service
SERVICE pattern (Federated Query with DID)
AsOf
AS OF / AT TIME temporal snapshot (Phase 4, §5).
Wraps inner and filters its results to a historical snapshot.
The executor checks T_CONTEXT PROV-O quins for each bound subject.
StarTriple
RDF-Star quoted triple << s p o >> outerP outerO.
Fields
SubSelect
Sub-SELECT { SELECT … WHERE { … } } — an independently-evaluated
nested query (index into SparqlQueryContext::subqueries) whose projected
solutions join with the enclosing group. Only the sub-select’s SELECT
variables are visible outside it.
Trait Implementations§
impl Copy for Pattern
impl Eq for Pattern
impl StructuralPartialEq for Pattern
Auto Trait Implementations§
impl Freeze for Pattern
impl RefUnwindSafe for Pattern
impl Send for Pattern
impl Sync for Pattern
impl Unpin for Pattern
impl UnsafeUnpin for Pattern
impl UnwindSafe for Pattern
Blanket Implementations§
§impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more