# Re: SPARQL 1.1 - LeftJoin definition

From: Andy Seaborne <andy.seaborne@epimorphics.com>
Date: Mon, 05 Dec 2011 14:32:17 +0000
Message-ID: <4EDCD5F1.1090601@epimorphics.com>

```David,

Thank you for your comment - I have incorporated your suggestion of
using ∀ and ∃ into the editors working draft.

We would be grateful if you would acknowledge that your comment has been

Andy

On 23/11/11 14:05, David McNeil wrote:
> I was studying the SPARQL 1.1 spec [1] and found that to my reading this
> text in 18.4 could be tightened up a bit.
>
> LeftJoin(Ω_1 , Ω_2 , expr) =
>      { merge(μ_1, μ_2 ) | μ_1 in Ω_1 and μ_2 in Ω_2 , and μ_1 and μ_2
> are compatible and expr(merge(μ_1 , μ_2 )) is true }
> ∪
>      { μ_1 | μ_1 in Ω_1 and μ_2 in Ω_2 , and μ_1 and μ_2 are not
> compatible, or Ω_2 is empty }
> ∪
>      { μ_1 | μ_1 in Ω_1 and μ_2 in Ω_2 , and μ_1 and μ_2 are compatible
> and expr(merge(μ_1 , μ_2 )) is false, or Ω_2 is empty }
>
> Notice that the last two clauses can be read to mean that every tuple in
> Ω_1 should be paired with every tuple in Ω_2 . I don't think this
> matches the prior definition of Diff. Would it make sense to change the
> last two clauses to something like:
>
>      { μ_1 | μ_1 in Ω_1, ∀ μ_2 in Ω_2 , μ_1 and μ_2 are not compatible,
> or Ω_2 is empty }
> ∪
>     { μ_1 | μ_1 in Ω_1 and ∃μ_2 in Ω_2 , such that_μ_1 and μ_2 are
> compatible and expr(merge(μ_1 , μ_2 )) is false, or Ω_2 is empty }
>
> In addition, shouldn't the "or Ω_2 is empty" condition be dropped from
> one of these clauses so that we only include the contents of Ω1 one time
> if Ω2 is empty?
>
> Thank you.
> -David
>