- 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