- From: Martin Duerst <duerst@w3.org>
- Date: Thu, 08 Jan 2004 16:10:06 -0500
- To: Eric Prud'hommeaux <eric@w3.org>, www-rdf-rules@w3.org
At 14:29 04/01/08 -0500, Eric Prud'hommeaux wrote:
>This message discusses using graph matching to query the product of
>inference from RDFS or OWL semantics or arbitrary rules with graph
>implications. Graph means DLG with the standard RDF node types.
>
>I'm sure someone has discussed this before, but I didn't find it
>quickly and I'd like to share ideas here.
>
>The proposed RDF DAWG charter asks the working group to specify
>language and protocol for communicating a query graph to a query
>service and for returning the matches to the requester.
>
>Let's use two KBs, relationalKB and prologKB. relationalKB holds
>some facts:
> holds(dog, subClassOf, animal).
> holds(animal, subClassOf, thing).
> holds(dog, subClassOf, thing).
> holds(rover, instanceOf, dog).
> holds(rover, instanceOf, animal).
> holds(rover, instanceOf, thing).
>
>prologKB holds some (similar) facts:
> holds(A, subClassOf, B) :- holds(A, subClassOf, X), holds(X, subClassOf, B).
> holds(A, instanceOf, B) :- holds(A, instanceOf, X), holds(X, subClassOf, B).
> holds(dog, subClassOf, animal).
> holds(animal, subClassOf, thing).
> holds(rover, instanceOf, dog).
>
>Now let's specify that the KBs only tell you facts in the form of:
> holds(subject1, predicate1, object1).
> holds(subject2, predicate2, object2).
> holds(subjectN, predicateN, objectN).
>
>We can ask either whether rover is a dog:
> query(holds(rover, instanceOf, dog)).
>and get back
> holds(rover, instanceOf, dog).
>from either KB. The same is true for facts that prologKB infers:
> query(holds(rover, instanceOf, What)).
> ==>
> What=dog; What=animal; What=thing;
>
>We can spruce up the query language to express disjunction:
> query(or(holds(rover, instanceOf, animal),
> holds(rover, instanceOf, vegetable))).
>
>If we introduce universals, we can kind of test for rules, depending
>on how the universal is interpreted. The prologDB could interpret
> query(forall(X, and(holds(X, instanceOf, dog)
> holds(X, instanceOf, animal))))
>as testing for the rules
> holds(A, subClassOf, B) :- holds(A, subClassOf, X), holds(X, subClassOf, B).
> holds(A, instanceOf, B) :- holds(A, instanceOf, X), holds(X, subClassOf, B).
> holds(dog, subClassOf, animal).
>while the relationKB would probably interpret this according to relational
>calculus and say
> !(forsome(X, and(holds(X, instanceOf, dog),
> !holds(X, instanceOf, animal))))
>which askes the question:
> Is there anything (in my closed universe) that's a dog but not an
> animal?
Which is not, for relationKB, a correct transformation of your original
forall query, because we also have to test for animals that are not dogs.
[We wouldn't find any in this example, but plenty in the general case :-]
But this also points to another way to convert the query into one that
replies with a (set of) graphs. The query is simply
holds(X, instanceOf, dog), !holds(X, instanceOf, animal)
!holds(X, instanceOf, dog), holds(X, instanceOf, animal)
(i.e. give me all the X that are dogs but not animals, and all the X
that are animals but not dogs). The language can report back all
the triples with X that it found (e.g. holds(kerberos, instanceOf, dog),
[assuming that the legendary Greek dog doesn't count as an animal]
holds(garfield, instanceOf, animal) [garfield is a cat, not a dog].
The equivalent of your "yup" answer would be given by the empty
reply, the empty graph.
Similar to Eric, I just wiped this up, sorry.
Regards, Martin.
>How would this language report back? The response
> "yup"
>seems to violate the "use of RDF in some serialization for the
>returned results" clause [1]. Perhas the query could be labeled:
> query(7, forall(X, and(holds(X, instanceOf, dog)
> holds(X, instanceOf, animal))))
>so the answer could be:
> holds(7, got, "yup").
>
>So, the constraint that responses be couched in terms of graphs has
>some implications, but It doesn't preclude expressivity in the
>query. The solutions above may not be palatable, but I just whipped
>them up -- it is likely that smarter people with more time will
>produce better results.
>
>[1] http://www.w3.org/2003/10/RDF-Query-Charter#expressivity
>--
>-eric
>
>office: +81.466.49.1170 W3C, Keio Research Institute at SFC,
> Shonan Fujisawa Campus, Keio University,
> 5322 Endo, Fujisawa, Kanagawa 252-8520
> JAPAN
> +1.617.258.5741 NE43-344, MIT, Cambridge, MA 02144 USA
>cell: +1.857.222.5741 (does not work in Asia)
>
>(eric@w3.org)
>Feel free to forward this message to any list for any purpose other than
>email address distribution.
Received on Thursday, 8 January 2004 16:10:24 UTC