- From: Dan Connolly <connolly@w3.org>
- Date: Thu, 12 Jan 2006 15:51:09 -0600
- To: Souripriya Das <souripriya.das@oracle.com>
- Cc: Sergio Tessaris <tessaris@inf.unibz.it>, Enrico Franconi <franconi@inf.unibz.it>, Pat Hayes <phayes@ihmc.us>, Bijan Parsia <bparsia@isr.umd.edu>, public-rdf-dawg@w3.org
On Thu, 2006-01-12 at 11:07 -0500, Souripriya Das wrote: > Enrico, Sergio, > > I have two basic questions. If you could explain very clearly (in a > tutorial kind of manner), if possible, it will be very helpful. I think I'll give it a try, though these questions are about terminology that is somewhat ad-hoc, so I can't be sure my answers are correct... > Also, > any specific pointers relevant to these questions. > > 1) What are 'implicit existentials' and how OWL-Lite has it, but RDFS > does not? [Ref: Enrico's e-mail: > http://lists.w3.org/Archives/Public/public-rdf-dawg/2006JanMar/0080.html] Consider "every person has 2 arms": :Person rdfs:subClassOf [ owl:onProperty :arm; owl:cardinality 2 ]. :bob a :Person. the semantics of OWL allow us to conclude that bob has 2 arms, even though we never mentioned them before: :bob :arm _:arm1, _:arm2. _:arm1 owl:differentFrom _:arm2. _:arm1 and _:arm2 are 'implicit existentials', if I understand correctly. There are no constructs like that in RDFS. You never get bnodes in the conclusion that weren't in the premise. > 2) You are using SPARQL blank nodes to specify existential variables. a) > What are the conceptual similarities (and any differences) between > SPARQL blank nodes (existential variables) and RDF blank nodes? Existential variables are pretty much the same in both cases, but in SPARQL, you can put them in the "if" part of a formula, which basically turns them into a universal variable; RDF has no "if" construct. Consider "if anybody has a wife, then they're married". That's the same as "everyone who has a wife is married". In SPARQL: CONSTRUCT { ?who a :Married } WHERE { ?who wife _:somebody }. is the same as: CONSTRUCT { ?who a :Married } WHERE { ?who wife ?anybody }. > b) What > are the differences between distinguished variables and existential > variables? [Ref. Sergio's e-mail: > http://lists.w3.org/Archives/Public/public-rdf-dawg/2006JanMar/0081.html] Distinguished variables are the ones that are, or can be, bound in the results of queries. You can't do SELECT _:somebody WHERE { _:somebody a :Married }. you have to do SELECT ?who WHERE { ?who a :Married }. There isn't any deep semantic reason for this; it's just not necessary to allow bnodes to be SELECTed, so we don't. The more deep semantic issue in Sergio's message is, I think, that SPARQL, unlike most KR query languages before it, allows bnodes for answer value/expressions. There's a sense in which this is not very helpful, even though it's correct: Q: Who's the president of the U.S.? A: somebody. Many KR systems just don't do that. Considering bob and his two arms as above, if you ask: SELECT ?arm WHERE { :bob :arm ?arm } and you include the inferred triples in the input data set, the answer given by some SPARQL services has two results, each of which binds ?arm to a bnode: ?arm = _:arm1 ?arm = _:arm2 This rdfSemantics issue is largely about whether those services are doing The Right Thing. > Thanks, > - Souri. -- Dan Connolly, W3C http://www.w3.org/People/Connolly/ D3C2 887B 0F92 6005 C541 0875 0F91 96DE 6E52 C29E
Received on Thursday, 12 January 2006 21:51:16 UTC