On 8 Nov 2007, at 17:02, Boris Motik wrote:
> Hello,
>
> Anonymous individuals really are existentials, not just "unknown
> names". In fact, the anonymous individuals are exactly like bnodes
> in RDF.
[snip]
Conrad Bock wrote:
[snip]
> So anonymous individuals translate to existentials? I thought
> anonymnous just meant "has no name". Then O2 would only follow
> from O1
> if sameAs(Mary, _:1).
[snip]
It's a surprise, isn't it? I find it to be a surprise for lots and
lots of people. I sometimes I feel I spend half my time explaining
this point and the various (usually undesirable) consequences. See
the recent threads:
http://lists.w3.org/Archives/Public/public-owl-dev/2007OctDec/0001.htmlhttp://www.w3.org/mid/470201B6.6030809@talis.com
(I think Reto is a bit confused about the "existential" part, i.e.,
does a Bnode require (at least one) denotation in an interpration and
the "variable", i.e., *plural* part of existential variables.
Existentially quantified variables can, loosely speaking, get
multiple bindings in any interpretation. So, loosely speaking, they
are more work! ;))
I gave some equivalences in:
http://lists.w3.org/Archives/Public/public-owl-dev/2007OctDec/0010.html
For example, under the RDF semantics document reading:
(1) s p _:x.
Is syntactic sugar for:
(2) s rdf:type [a owl:Restriction;
owl:onProperty p;
owl:someValuesFrom owl:Thing]
If we can skolemize them, not only do I think the semantics would
accord with most people's expectations, but it will make, e.g.,
SPARQL/OWL much much easier to be compatible with SPARQL/RDF. In
fact, it is my intent that the SPARQL/OWL spec I write will treat
BNodes as skolem constants so that I can sensibly (and practically)
return them in answers:
http://code.google.com/p/owl1-1/wiki/SparqlOwl
People might find my SPARQL tutorial slides helpful:
http://www.cs.man.ac.uk/~bparsia/2006/row-tutorial/
particularly around slide 32 or so.
So, BNodes as variables introduce, IMHO, serious user issues as well
as decidability and implementation issues.
Perhaps it's time to start a wiki page on this issue? And test cases?
Do we have test case infrastructure? So, for example, if we read
BNodes as variables, thent (1) is equivalent to (2) (assuming no
other uses of _:x in the graph). If we read them as "anonymous" or
"local" constants, then (1) still entails (2), but not the reverse.
Cheers,
Bijan.