- From: Dan Connolly <connolly@w3.org>
- Date: Mon, 25 Jun 2001 02:44:47 -0500
- To: pat hayes <phayes@ai.uwf.edu>
- CC: Brian McBride <bwm@hplb.hpl.hp.com>, w3c-rdfcore-wg@w3.org
pat hayes wrote: [...] > The RDF distinction between anonymous nodes and named nodes is > logically invisible, as far as I can see. I have been convinced otherwise. I'm still not certain, but let's see if I can reproduce the argument and its ability to convince... > All nodes have an identity, > so giving one of them a URI doesnt really change anything about it or > what it means. All nodes could be non-anonymous and nothing would > change in the meanings of any RDF. Anonymity seems to be a kind of > syntactic sweetener which works by removing some bitterness rather > than by adding sugar. I think anonymous nodes have non-trivial expressive power. In sum: skolemization is *not* a two-way street: while a proof of a skolemized formula is generally accepted as a proof of the formula with existential quantifiers, it doesn't work the other way around. You lose information when you replace an existentially quanitified variable/term with a URI. In detail: let's suppose you're buying a book. You transmit, to the bookseller, a description of the book you want to buy; roughly, "it's by Barnsley and it's called Fractals Everywhere. I want it in hardback, tomorrow." Formally, in n-triples: ---8<--- _:g0 <http://purl.org/dc/elements/1.1/title> "Fractals Everywhere" . _:g0 <http://purl.org/dc/elements/1.1/creator> "Barnsley" . _:g0 <http://booksellers.example/vocab#binding> <http://booksellers.example/vocab#hardback> . _:g0 <http://booksellers.example/vocab#shipping> <http://booksellers.example/vocab#nextDay> . ---8<--- In KIF, by my understanding of anonymous nodes: ---8<--- (exists (?x0 ) (and (PropertyValue http\:\/\/purl\.org\/dc\/elements\/1\.1\/title ?x0 "Fractals Everywhere") (PropertyValue http\:\/\/purl\.org\/dc\/elements\/1\.1\/creator ?x0 "Barnsley") (PropertyValue http\:\/\/booksellers\.example\/vocab\#binding ?x0 http\:\/\/booksellers\.example\/vocab\#hardback) (PropertyValue http\:\/\/booksellers\.example\/vocab\#shipping ?x0 http\:\/\/booksellers\.example\/vocab\#nextDay) ) ) ---8<--- Now if I use something like Sergey's algorithm[1,2] to compute a URI for this anonymous term, I get something like: ---8<--- <http://skolem.example#432oj34oij2o3ijo23j> <http://purl.org/dc/elements/1.1/title> "Fractals Everywhere" . <http://skolem.example#432oj34oij2o3ijo23j> <http://purl.org/dc/elements/1.1/creator> "Barnsley" . <http://skolem.example#432oj34oij2o3ijo23j> <http://booksellers.example/vocab#binding> <http://booksellers.example/vocab#hardback> . <http://skolem.example#432oj34oij2o3ijo23j> <http://booksellers.example/vocab#shipping> <http://booksellers.example/vocab#nextDay> . ---8<--- i.e. in KIF: ---8<--- (and (PropertyValue http\:\/\/purl\.org\/dc\/elements\/1\.1\/title http\:\/\/skolem\.example\#432oj34oij2o3ijo23j "Fractals Everywhere") (PropertyValue http\:\/\/purl\.org\/dc\/elements\/1\.1\/creator http\:\/\/skolem\.example\#432oj34oij2o3ijo23j "Barnsley") (PropertyValue http\:\/\/booksellers\.example\/vocab\#binding http\:\/\/skolem\.example\#432oj34oij2o3ijo23j http\:\/\/booksellers\.example\/vocab\#hardback) (PropertyValue http\:\/\/booksellers\.example\/vocab\#shipping http\:\/\/skolem\.example\#432oj34oij2o3ijo23j http\:\/\/booksellers\.example\/vocab\#nextDay) ) ---8<--- Now suppose the bookseller's inventory database shows: ---8<--- <http://booksRus.example/inv2001-06-25#item342323> <http://purl.org/dc/elements/1.1/title> "Fractals Everywhere" . <http://booksRus.example/inv2001-06-25#item342323> <http://purl.org/dc/elements/1.1/creator> "Barnsley" . <http://booksRus.example/inv2001-06-25#item342323> <http://booksellers.example/vocab#binding> <http://booksellers.example/vocab#hardback> . <http://booksRus.example/inv2001-06-25#item342323> <http://booksellers.example/vocab#shipping> <http://booksellers.example/vocab#nextDay> . ---8<--- i.e. ---8<--- (and (PropertyValue http\:\/\/purl\.org\/dc\/elements\/1\.1\/title http\:\/\/booksRus\.example\/inv2001\-06\-25\#item342323 "Fractals Everywhere") (PropertyValue http\:\/\/purl\.org\/dc\/elements\/1\.1\/creator http\:\/\/booksRus\.example\/inv2001\-06\-25\#item342323 "Barnsley") (PropertyValue http\:\/\/booksellers\.example\/vocab\#binding http\:\/\/booksRus\.example\/inv2001\-06\-25\#item342323 http\:\/\/booksellers\.example\/vocab\#hardback) (PropertyValue http\:\/\/booksellers\.example\/vocab\#shipping http\:\/\/booksRus\.example\/inv2001\-06\-25\#item342323 http\:\/\/booksellers\.example\/vocab\#nextDay) ) ---8<--- This information from the inventory database clearly provides a match (i.e. a proof, or the interesting bits of one, anyway) for the description of the book stated as a formula involving an existentially quantified variable, ?x0. But it doesn't match/prove the formula where _:g0 is replaced by the skolem constant <http://skolem.example#432oj34oij2o3ijo23j> . So an RDF document with anonymous nodes is *not* interchangeable with a skolemized version of that document. Q.E.D. I think this is the important part of Pat's message that I disagree with is: > RDF is supposed to > consist of assertions, not equations, and they are pretty simple > assertions of the logical form (V s o) . Those s's and o's are > logical names = logical constants, ie they denote things, one thing > each in a given interpretation. Now, logical names are *just* like > existentially quantified variables where the quantifers are at the > top level (the only level there is in RDF), ie not inside any > universal quantifiers. The s's and o's would be just logical constants if we left out anonymous/existentially-quantified terms. But RDF does have such terms, as demonstrated above. And the semantics of such terms is non-trivially different from the semantics of constants: an existentially quantified formula is satisfied by an interpretation if there's *some* thing you can bind the existential term to that makes it work out. Skolemizing the formula reduces the number of interpretations that satisify the formula. It's one of those things that usually works "without loss of generality," but doesn't, in the case of RDF; i.e. in the case when constant symbols that are shared between documents. p.s. This message is really about an existing issue http://www.w3.org/2000/03/rdf-tracking/#rdfms-identity-anon-resources The fact that there are graphs involving anonymous nodes that are not expressible in RDF/XML is, I agree, another issue; one that, I'm afraid, belongs in the postpone-to-next-version pile. [1] Re: RDF API 1.0 Draft / algorithm for anonymous URIs Sergey Melnik (Wed, 08 Dec 1999) http://lists.w3.org/Archives/Public/www-rdf-interest/1999Dec/0046.html [2] what I actually used was random scratching at the keyboard ;-) -- Dan Connolly, W3C http://www.w3.org/People/Connolly/
Received on Monday, 25 June 2001 03:46:04 UTC