W3C home > Mailing lists > Public > public-rdf-dawg-comments@w3.org > March 2008

Another attempt...

From: Andrew Newman <andrewfnewman@gmail.com>
Date: Tue, 18 Mar 2008 10:55:30 +1000
Message-ID: <2db5a5c40803171755h211074cej250a4c1bbf06140c@mail.gmail.com>
To: andy.seaborne@hp.com, "Lee Feigenbaum" <lee@thefigtrees.net>
Cc: "Arjohn Kampman" <arjohn.kampman@aduna-software.com>, "public-rdf-dawg-comments@w3.org" <public-rdf-dawg-comments@w3.org>
Here it is, one more time from the top...I hope someone follows my
reasoning enough to at least point out the mistake I'm making.

The definition in 5.2.1 "one solution that does not bind any
variables" seems to be contradictory of the definition of the
universal set/universal relation and the definition in 12.3 and it's
not what happens when you use it in ARQ.

So is the empty group pattern a good name, is it really empty - it has
a cardinality of 1 - isn't the *really* empty set (or multiset) have a
cardinality of 0 and is trivially false/empty set?

Furthermore, does it really not bind to any variables?  When you use
it in a query:
SELECT ?x
WHERE {{}}

You get back: {?x -> {}}

You add ?a, ?b, ?c and so on and you get back those binding to {} as
well - so that would suggest to me that it binds to every variable -
rather than not binding to any variable.  If it is binding to
everything then it is consistent (with my idea) of the universal set.

A related question is why bother?  Why not return trivially true back
instead of binding it to any variables at all - isn't that equivalent?

If it is the universal set then UNIONing it with anything - it should
also be trivially true - if it contains all possible bindings then
UNIONing it with anything returns itself.  Much like TRUE OR X in
boolean logic - it doesn't matter what X is - because with OR you
don't even have to look at X you just return TRUE.

If it's not, how can it be the identity of JOIN?  What is happening
when JOINing with the empty group pattern?  Isn't it finding a 1 from
0 that is compatible with 2 in 2?  Again, the identity of JOIN is
something that is binding to everything - rather than something that
doesn't.

Like I said, this is only to make it consistent with boolean, set, bag
or relational algebra.  I'm not sure anyone knows exactly what an
algebra is so this behavior might be arbitrary.

The added confusion is that I don't understand the current SPARQL
result of UNIONing {} in SPARQL as you end up with something that is
neither a usual result nor an identity but a combination of the two
(which is where the conversation started).  It seems to be
correct/valid to keep collecting these empty sets (unless you
eliminate them with a distinct), what does that mean?

I haven't seen a mixture of this kind so it'd be useful if there were
a few pointers or explanation around it because I think it is
different to most other algebras.
Received on Tuesday, 18 March 2008 00:56:03 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 18 March 2008 00:56:04 GMT