Re: Another attempt...

Andrew Newman wrote:
> Having gone through SPARQL thoroughly now with Andy off list, it is
> clear that SPARQL is not isomorphic with boolean algebra and it's
> definition of compatibility is not consistent with boolean or
> relational algebra - so I'm not going to try to make the assertion
> that SPARQL has an isomorphism with set, bag or relational algebras
> anymore (more to come).  You may continue to do that but I'm convinced
> now that it's not.

I don't intend to make such assertions. They have (a lot of)
similarities but aren't exactly isomorphic.

> In SPARQL this is okay:
> select *
> where { { ?s ?p ?o } . { ?a ?b ?c } }
> 
> This causes a cross product of results (which I'm going to suggest a
> test is added) - in relational algebra this returns 0 results - there
> must be at least one shared variable for the JOIN to proceed in a
> relational JOIN.

Are you sure about this? If this is true then how can DEE be the join
identity in relational algebra, since it doesn't have any variables to
share? AFAIK, a join of two relations that do not share any variables
simply results in the Cartesian product of the two relations (an outer
join in SQL terminology).

> This is one of the reasons I think that DEE/DUM are U/0 too - as DUM
> causes JOIN failure and results in DUM in relational algebra.  In
> SPARQL the empty bindings (what might be considered 0 or DUM) is the
> join identity - which is the opposite to relational algebra.

This can't be correct, is it? SPARQL is actually very similar to
relational algebra in this respect, far from the opposite. In SPARQL,
the join identity is the multiset that contains a single empty binding
set. This is very similar to DEE, the relation with a single 0-tuple.
DUM is more or less equivalant to an empty multiset -- so with zero
binding sets -- in SPARQL. A join with an empty multiset results in an
empty multiset in SPARQL too.

--
Arjohn

Received on Wednesday, 26 March 2008 08:44:19 UTC