Re: Reqirement 3.5: subgraph results

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