On 02/07/13 22:41, Rob Vesse wrote:
I was wondering if anyone could enlighten me as to what the following algebra
operators are supposed to represent, where I have at least a rough idea I have
included my guess of the purpose but knowing for sure would be useful for
something we're working on here atm
OpList - something list related?
OpDatasetNames - named graphs in the dataset?
OpLabel - ??
OpDiff – some variant on OpMinus?
Thanks,
Rob
(sorry - forgot to reply)
** OpList - converts multiset of solution mappings (i.e. the result of
the WHERE clause) to sequence of solution mappings. The modifiers work
on sequences, joins etc work on multisets.
http://www.w3.org/TR/sparql11-query/#defn_algToList
Not really needed in ARQ as it represents multisets and sequnces via
iterators.
** OpDatasetNames - needed in quad form for the case of
GRAPH ?g {}
(and GRAPH <V> {} -- which is just a check)
** OpLabel -- no-op : adds a label into the algebra expression for
labelling purposes. No computational effect. Seemed like it might be
useful when rewriting either to add explanations for humans or markers
to stop re-transforming recursively.
** OpDiff -- not to do with Minus, it's in SPARQL 1.0 -- to do with
Optional in the strict SPARQL case. ARQ directly implements LeftJoin,
not as the expansion:
LeftJoin(Ω1, Ω2, expr) =
Filter(expr, Join(Ω1, Ω2)) ∪ Diff(Ω1, Ω2, expr)
http://www.w3.org/TR/sparql11-query/#defn_algLeftJoin
http://www.w3.org/TR/sparql11-query/#defn_algDiff
Andy