- From: Pat Hayes <phayes@ihmc.us>
- Date: Fri, 18 Mar 2011 16:14:24 -0500
- To: Dieter Fensel <dieter.fensel@sti2.at>
- Cc: Hugh Glaser <hg@ecs.soton.ac.uk>, Mark Wallace <mwallace@modusoperandi.com>, Alan Ruttenberg <alanruttenberg@gmail.com>, Reto Bachmann-Gmuer <reto.bachmann@trialox.org>, Ivan Shmakov <oneingray@gmail.com>, Ivan Shmakov <ivan@main.uusia.org>, "<semantic-web@w3.org>" <semantic-web@w3.org>
On Mar 18, 2011, at 3:17 PM, Dieter Fensel wrote: > At 03:35 18.03.2011, Pat Hayes wrote: >> Um... Look, there really isn't a problem here. That is, there's nothing at all mysterious or intuitively wrong about bnodes. It is entirely a matter of scoping. An RDF graph with bnodes in it is like an existentially quantified sentence in logic. > > Hmm. Was it maybe a mistake to implicitely include existential quantification in RDF because RDF (without > named graphs) does not provide any scoping mechanism (not even brackets like Lisp)? Covering the issue > through skolemization and leave richer logical means to OWL and RIF may be a more pragmatic choice saving us > some 1000 emails on clarifying the incomprehensible? I thought I was reading this proposal between the > lines of earlier emails of you? Yup, thats what I suggested to the WG. It flew like a lead balloon :-) Its probably too radical for our current charter. As a fallback, I am thinking of writing up a spec-like document defining 'ground RDF', to show how much simpler everything is when you don't have them. It would cover RDF, RDFS, OWL and SPARQL. What do you think? Pat > >> (exists (x)( has(Joe, x) & Called(x, "Bill") & Dog(x) ) >> >> entails, among other things, both >> >> (exists (x)( has(Joe, x) & Dog(x) ) >> >> and >> >> (exists (x)( Called(x, "Bill") & Dog(x) ) >> >> But these two together do NOT entail the first sentence, because there is nothing to guarantee that the two x's that exist are the same x. >> >> This is exactly what happens when you take a subgraph of an RDF graph which splits apart an RDF 'molecule' [1] and then try to put the pieces back together. As I say, nothing mysterious or surprising or even counterintuitive. RDF behaves, in this respect, just like logics have behaved since around 1890. >> >> Pat >> >> >> [1] http://ebiquity.umbc.edu/paper/html/id/240/ >> >> On Mar 17, 2011, at 12:07 PM, Hugh Glaser wrote: >> >> > >> > On 17 Mar 2011, at 14:37, Mark Wallace wrote: >> > >> >> On 3/17/2011 6:34 AM, Hugh Glaser wrote: >> >>> If I take a graph of any kind and use a particular serialisation method, and communicate that somewhere else, and then de-serialise, do I end up with the same graph? >> >>> For most serialisations, the answer will be "no". >> >>> >> >> (Daring with trepidation to enter these waters... :-) ) >> > You and me both mate :-) >> >> >> >> I would think the opposite would be true. I understand that RDF is first and foremost a graph model, independent of serialization. Given that, I would expect that for most serializations, the pre-serialized and post-serialized versions of the graph (i.e., in memory) would be the same. The *serializations* would not be the same, but shouldn't the *logical graph model* be the same? Isn't that the point of the RDF spec separating serialization from logical model? >> >> >> >> E.g. with Jena, given this file (test.ttl) >> >> @prefix : <http://example.com/demo#> . >> >> :joe :has [ a :dog ] . >> > Just to be clear, this is a serialisation already. >> >> I serialize it as RDF-XML: >> >> C> java jena.rdfcat test.ttl >> >> <rdf:RDF >> >> xmlns:rdf=MailScanner has detected a possible fraud attempt from "www.w3.org" claiming to be "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >> >> xmlns=MailScanner has detected a possible fraud attempt from "example.com" claiming to be "http://example.com/demo#"> >> >> <rdf:Description rdf:about=MailScanner has detected a possible fraud attempt from "example.com" claiming to be "http://example.com/demo#joe"> >> >> <has> >> >> <dog/> >> >> </has> >> >> </rdf:Description> >> >> </rdf:RDF> >> >> Or I serialize it as N-Triples: >> >> C> java jena.rdfcat -out ntriple test.ttl >> >> <http://example.com/demo#joe> <http://example.com/demo#has> _:A113e01ecX3aX12ec4399200X3aXX2dX8000 . >> >> _:A113e01ecX3aX12ec4399200X3aXX2dX8000 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.com/demo#dog> . >> >> >> >> Or I serialize it as N-Triples and then de-serialize that back into memory in order to de-serialize it as RDF-XML: >> >> C> java jena.rdfcat -out ntriple test.ttl | java jena.rdfcat -out xml -n - >> >> <rdf:RDF >> >> xmlns:rdf=MailScanner has detected a possible fraud attempt from "www.w3.org" claiming to be "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >> >> xmlns:j.0=MailScanner has detected a possible fraud attempt from "example.com" claiming to be "http://example.com/demo#" > >> >> <rdf:Description rdf:about=MailScanner has detected a possible fraud attempt from "example.com" claiming to be "http://example.com/demo#joe"> >> >> <j.0:has rdf:nodeID="A0"/> >> >> </rdf:Description> >> >> <rdf:Description rdf:nodeID="A0"> >> >> <rdf:type rdf:resource=MailScanner has detected a possible fraud attempt from "example.com" claiming to be "http://example.com/demo#dog"/> >> >> </rdf:Description> >> >> </rdf:RDF> >> >> >> >> I do all that and then pipe it back to N-Triples again: >> >> C> java jena.rdfcat -out ntriple test.ttl | java jena.rdfcat -out xml -n - | java jena.rdfcat -out ntriple -x - >> >> <http://example.com/demo#joe> <http://example.com/demo#has> _:AX2dX59ad73bbX3aX12ec43a94a9X3aXX2dX8000 . >> >> _:AX2dX59ad73bbX3aX12ec43a94a9X3aXX2dX8000 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.com/demo#dog> . >> >> >> >> Yes the serializations all differ, but the graph represented is the same. Right? >> > This graph is pretty simple, so is not likely to show any problems (but a good point to start discussion). >> > If you start with a graph that was a fragment of a graph (that is, it was connected), then things might look different. >> > Consider if the original store also had (in addition to your fragment): >> > _:A113e01ecX3aX12ec4399200X3aXX2dX8000 rdfs:label "Bill" >> > So :joe has a dog called Bill. >> > If I combine your second serialisation with this triple, I do not get the connection. >> > The graph then roughly says that :joe had a dog, and there is a dog in the world called Bill. >> > Clearly the reason is that the b-node identifier being used is not global, so if I move the graph our of the local, to the global and then back again, I have lost information. >> > Unlike if it was a URI, which has a global meaning. >> > So the problem, if it is one, is because of the b-nodes, which is where we came in... :-) >> > Best >> > Hugh >> >> >> >> -Mark >> > >> > -- >> > Hugh Glaser, >> > Intelligence, Agents, Multimedia >> > School of Electronics and Computer Science, >> > University of Southampton, >> > Southampton SO17 1BJ >> > Work: +44 23 8059 3670, Fax: +44 23 8059 3045 >> > Mobile: +44 78 9422 3822, Home: +44 23 8061 5652 >> > http://www.ecs.soton.ac.uk/~hg/ >> > >> > >> > >> >> ------------------------------------------------------------ >> IHMC (850)434 8903 or (650)494 3973 >> 40 South Alcaniz St. (850)202 4416 office >> Pensacola (850)202 4440 fax >> FL 32502 (850)291 0667 mobile >> phayesAT-SIGNihmc.us http://www.ihmc.us/users/phayes > > -- > Dieter Fensel > Director STI Innsbruck, University of Innsbruck, Austria > http://www.sti-innsbruck.at/ > phone: +43-512-507-6488/5, fax: +43-512-507-9872 > > ------------------------------------------------------------ IHMC (850)434 8903 or (650)494 3973 40 South Alcaniz St. (850)202 4416 office Pensacola (850)202 4440 fax FL 32502 (850)291 0667 mobile phayesAT-SIGNihmc.us http://www.ihmc.us/users/phayes
Received on Saturday, 19 March 2011 20:53:55 UTC