- From: Jos De_Roo <jos.deroo@agfa.com>
- Date: Wed, 5 May 2004 13:07:00 +0200
- To: eric@w3.org
- Cc: RDF Data Access Working Group <public-rdf-dawg@w3.org>, public-rdf-dawg-request@w3.org, Rob Shearer <Rob.Shearer@networkinference.com>, "Dan Connolly" <connolly@w3.org>
EricP wrote: > On Tue, May 04, 2004 at 02:06:49PM -0700, Rob Shearer wrote: >> >>> Neither do I... >>> I would simply ask the following RDF/N3 kind of query >>> (<graph>).da:from da:select {?N1 <p1> ?N2}, {?N1 <p2> ?N2}. >>> and when getting a nonempty graph the answer is "true" >>> as simple as that! >> >> What's your original graph and what's your subgraph, Jos? >> >> I'm offering a graph with two nodes and no edges, plus the fact that an >> edge of type either p1 or p2 must exist between the two encoded in some >> higher-level semantic language. >> >> I can only see four possible subgraphs of the original graph: one node, >> the other node, both nodes, or neither node. None of these options >> explicates the answer. > > I was under the impression that the problem we were solving was one of > querying an RDF graph and potential inferences from that graph. If we > try to solve the problem of communicating higher-level semantics in a > way that naive RDF processors will understand, we'll be busy for a > very long time. Therefor, I am happy to constrain the "fact that an > edge of type either p1 or p2" to be expressible in RDF statements ala > this example from the "OWL Guide" [1]: > > <owl:Class rdf:ID="Fruit"> > <rdfs:subClassOf rdf:resource="#SweetFruit" /> > <rdfs:subClassOf rdf:resource="#NonSweetFruit" /> > </owl:Class> which is the empty set, no? > and another ground fact: > <ex:Fruit rdf:about="http://www.WordNet.org/grapefruit" /> which woukd then be an inconsistency... > Ask a question to which the answer is yes: > ask (<http://www.WordNet.org/grapefruit> owl:Class ex:SweetFruit || > <http://www.WordNet.org/grapefruit> owl:Class ex:NonSweetFruit) > > and get back the following supporting evidence: > <owl:Class rdf:ID="Fruit"> > <rdfs:subClassOf rdf:resource="#SweetFruit" /> > <rdfs:subClassOf rdf:resource="#NonSweetFruit" /> > </owl:Class> > <ex:Fruit rdf:about="http://www.WordNet.org/grapefruit" /> following from the inconsistency ?-) > If noone has worked out how to express the "fact that an edge of type > either p1 or p2" in RDF, then I'm happy saying we don't define the > answer in a DAWG-QL spec. Variable binding syntaxes from DAWG-QL may > be useful in answering questions on graphs we can't express, but I bet > we'll have a hell of a time defining test suites for them. For the moment I would say in the original graph ### testP :n1 :p :n2. :p :disjunctionOf (:p1 :p2). and have some extra conditions ### extP :disjunctionOf rdfs:domain rdf:Property; rdfs:range rdf:List. {?P :disjunctionOf ?L. ?L :item ?Q. ?X ?Q ?Y} => {?X ?P ?Y}. {?S rdf:first ?X} => {?S :item ?X}. {?S rdf:rest ?B. ?B :item ?X} => {?S :item ?X}. but then when asking (<testP> <extP>).da:from da:select {?N1 :p1 ?N2}, {?N1 :p2 ?N2}. I don't get an answer (for the proof we must have either a proof of ?N1 :p1 ?N2 or a proof of ?N1 :p2 ?N2 and indicate which one it is) Of course, in that case one can simply ask (<testP> <extP>).da:from da:select {?N1 :p ?N2}. and get the subgraph :n1 :p :n2. -- Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/
Received on Wednesday, 5 May 2004 07:13:28 UTC