RE: Another attempt...



> -----Original Message-----
> From: Andrew Newman [mailto:andrewfnewman@gmail.com]
> Sent: 18 March 2008 23:19
> To: Seaborne, Andy
> Cc: Richard Newman; Lee Feigenbaum; Arjohn Kampman; public-rdf-dawg-
> comments@w3.org
> Subject: Re: Another attempt...


> In this conversation I've used: join identity, the universet set or U,
> 1...it has many representations but I'm suggesting it means the same
> thing across a variety of algebras.  And that it's meaning in SPARQL
> is inconsistent with these other algebras.
>
> I was hoping someone would say: "In the SPARQL algebra the JOIN
> identity isn't equivalent to this thing in other algebras
> because...??... and that's why it you get the answer when it is
> involved in a UNION in SPARQL".  Defining multiset UNION has in no way
> helped me understand the result.

The Join identity is { { } }, write this as 1
The Union identity is { }, write this as 0

The analogy with the integers is intended.

A Join 1 = A
A Union 0 = A
A Union 1 != A

In the same way for integers:
X * 1 = X
X + 0 = Z
X + 1 != X


Your definition of U given was:
"""
U - universal relation - a relation with no attributes but contains
all possible tuples of applicable type.
"""
And you gave some characteristics:

A * U = A
A + U = U

For the integers under * and +, you'd have to extend to include at least one infinity to find a U such that:

X + U = U

But then

X * U = U

And it is not the identity of * or +.

You want some element that has the characteristic that:

For all A. A Join U = U

So wouldn't that be the multiset of all possible combinations of variables and values, with a cardinality function of infinity.  (Technically, an extension of SPARQL because the cardinality function of multiset has been changed).

With that U
  A union U = U
as well.

The Join identity is not the universal relation.


> This is very frustrating my first email had the example queries.  I
> said the results of:
> select *
> where {
>  {?s ?p ?o} . {}
> }
>
> Contradicts the results of:
> select *
> where {
>  {?s ?p ?o} union {}
> }
>
> I suggest that the second query return {} (as {} is defined in the SPARQL
> spec).

I can see it as a contradiction only under your definition equalities equating the join identity with U.  But the result of { ?s ?p ?o } is not U even under the definition U you gave.

That all amounts to "Under definitions D, operators do not work as required by D".  But the definitions are the ones you introduced.  They are not in the spec.

        Andy

Received on Wednesday, 19 March 2008 11:05:45 UTC