W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > April to June 2004

Re: Reqirement 3.5: subgraph results

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>
Message-ID: <OF7E915CB9.BED05EFC-ONC1256E8B.002D81AE-C1256E8B.003CEC88@agfa.com>

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

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:00:43 UTC