Re: Questions about REDUCED, LeftJoin, Join

Jiri Dokulil wrote on 04/24/2007 03:22:35 AM:

> Hello all,

Hello Jiri,

Due to the Last Call comment period having expired and the fact that this 
message does not request specific modifications to the specification, we 
hope you don't mind if we treat this as questions to the working group, 
and not as trackable comments on the SPARQL query language.

> 1.
> I'm confused by REDUCED in the current version of the draft. Is
> REDUCED going to be removed or not? Because it is only described in
> the 9.4 REDUCED section and is mostly missing in other parts of the
> draft, eg. list of keywords in A.8 Grammar, or list of modifiers in
> 12.2 SPARQL Query.
> So it seems "half-removed" to me.

REDUCED is an at-risk feature of SPARQL. Please see 
http://www.w3.org/2005/10/Process-20051014/tr.html#cfi for more details on 
features at risk. We have added REDUCED to the table of keywords and to 
section 12 in the editors' draft. ( 
http://www.w3.org/2001/sw/DataAccess/rq23/rq25.html )

> 2.
> In section 12.4 SPARQL Algebra after definition of LeftJoin list is a
> "Written in full that is:" part, but it seems to me, that it is not
> equivalent to the definition.
> 
> Shouldn't
> { μ1 | μ1 in Ω1and μ2 in Ω2, and μ1 and μ2 are not compatible }
> { μ1 | μ1 in Ω1and μ2 in Ω2, and μ1 and μ2 are compatible and
> expr(merge(μ1, μ2)) is false }
> correspond to
> { μ | μ in Ω1 such that for all μ′ in Ω2, μ and μ′ are not 
compatible }
> { μ | μ in Ω1 such that for all μ′ in Ω2, μ and μ' are 
compatible and
> expr(merge(μ, μ')) is false }
> from the definition of Diff?

This is fixed in the editors' draft.

> 3.
> My last question has probably already been discussed and answered, so
> could someone point me to some good explanation?
> What is the reason for Join(Ω1,Ω2) being defined in a way that is
> different from relational algebra when it comes to 'NULL values'?
> I do understand that unlike relational algebra, SPARQL algebra does
> not define schema for results of algebra operations, so at this time
> it is impossible to define Join to disallow joining of two mappings
> that 'contain NULLs in common columns'.
> But is this desired?
> 
> In my opinion this feature makes evaluation of SPARQL queries more
> complicated and I can't see the benefits it brings. What is the
> use-case behind this decision?

First, note that RDF does not have any NULL values, however SPARQL does 
have unbound values within a solution. The design of SPARQL allows a 
solution in which a variable is unbound to be joined with any other 
solution in which the variable is bound or unbound. The working group has 
not been motivated by any use cases to design this differently; if you 
have any, please share them with us and we will consider them in light of 
our Use Cases and Requirements document ( 
http://www.w3.org/TR/rdf-dawg-uc/ ). Please be aware that since the UC&R 
document has been stable since March 2005, the group would need quite a 
good use case which the language does not currently handle in order to add 
a new requirement.

Also, please note that by using BOUND, SPARQL can "disallow joining of two 
mappings that 'contain 
NULLs in common columns'":

OPTIONAL .. ?x ..
OPTIONAL .. ?x ..
FILTER( bound(?x) )

thanks,
Lee

Received on Friday, 4 May 2007 21:48:33 UTC