Re: subgraph/entailment

> On 6 Sep 2005, at 20:43, jos.deroo@agfa.com wrote:
>> I am trying to understand the issue..
>> starting from your given data
>>
>> ##############################################
>> @prefix owl: <http://www.w3.org/2002/07/owl#>.
>> @prefix : <enricoP#>.
>>
>> :Paul a :WORKER.
>> :Andrea a :WORKER.
>> :Simon a :EMPLOYEE.
>> :Caroline a :MANAGER.
>> :Paul :has-friend :Andrea.
>> :Paul :has-friend :Simon.
>> :Simon :has-friend :Andrea.
>> :Andrea :has-friend :Caroline.
>>
>> :WORKER owl:unionOf (:EMPLOYEE :MANAGER).
>> ##############################################
>>
>> I really can't see how query (*)
>>
>> ##############################################
>> PREFIX owl: <http://www.w3.org/2002/07/owl#>
>> PREFIX : <enricoP#>
>>
>> SELECT ?X
>>
>> WHERE {
>>   ?X a :WORKER;
>>      :has-friend ?Y.
>>   ?Y a :EMPLOYEE;
>>      :has-friend ?Z.
>>   ?Z a :MANAGER.
>> }
>> ##############################################
>>
>> can give an answer..
>
> [snip]
>
>> Did you really intend query (*) ??
>
> Yes I did :-)
>
> The crucial bit is reasoning about Andrea. We don't know whether she 
> is an employee or a worker (if she were either employee or manager, 
> then the answer to the query would be clearly Paul - do you agree?); 
> but we know that since she is a worker then necessarily she has to be 
> either employee or manager. So, Paul is in the answer for any 
> possible case of on Andrea.
>
> Is it clearer now?

yes it is clearer now :) thanks
am indeed getting prover9 proof

22 - triple(x,qname("rdf:type"),qname(":WORKER")) | - 
triple(x,qname(":has-friend"),y) | - 
triple(y,qname("rdf:type"),qname(":EMPLOYEE")) | - 
triple(y,qname(":has-friend"),z) | - 
triple(z,qname("rdf:type"),qname(":MANAGER")) | 
triple(qname("e:quod"),qname("e:erat"),qname("e:demonstrandum")).  [input]
32 triple(qname(":Paul"),qname("rdf:type"),qname(":WORKER")).  [input]
33 triple(qname(":Andrea"),qname("rdf:type"),qname(":WORKER")).  [input]
34 triple(qname(":Simon"),qname("rdf:type"),qname(":EMPLOYEE")).  [input]
35 triple(qname(":Caroline"),qname("rdf:type"),qname(":MANAGER")). [input]
36 triple(qname(":Paul"),qname(":has-friend"),qname(":Andrea")).  [input]
37 triple(qname(":Paul"),qname(":has-friend"),qname(":Simon")).  [input]
38 triple(qname(":Simon"),qname(":has-friend"),qname(":Andrea")).  [input]
39 triple(qname(":Andrea"),qname(":has-friend"),qname(":Caroline")). 
[input]
45 - triple(x,qname("rdf:type"),qname(":WORKER")) | 
triple(x,qname("rdf:type"),qname(":EMPLOYEE")) | 
triple(x,qname("rdf:type"),qname(":MANAGER")).  [input]
46 - triple(x,qname("rdf:type"),qname(":WORKER")) | - 
triple(x,qname(":has-friend"),y) | - 
triple(y,qname("rdf:type"),qname(":EMPLOYEE")) | - 
triple(y,qname(":has-friend"),z) | - 
triple(z,qname("rdf:type"),qname(":MANAGER")) | 
triple(qname("e:quod"),qname("e:erat"),qname("e:demonstrandum")).  [copy 
22]
48 - triple(qname("e:quod"),qname("e:erat"),qname("e:demonstrandum")). 
[input]
50 - triple(x,qname("rdf:type"),qname(":WORKER")) | - 
triple(x,qname(":has-friend"),y) | - 
triple(y,qname("rdf:type"),qname(":EMPLOYEE")) | - 
triple(y,qname(":has-friend"),z) | - 
triple(z,qname("rdf:type"),qname(":MANAGER")).  [back_unit_del 46 unit_del 
(f 48)]
51 triple(qname(":Andrea"),qname("rdf:type"),qname(":EMPLOYEE")) | 
triple(qname(":Andrea"),qname("rdf:type"),qname(":MANAGER")).  [resolve 
(45 a 33 a)]
62 - triple(qname(":Andrea"),qname("rdf:type"),qname(":EMPLOYEE")).  [ur 
(50 a 32 a b 36 a d 39 a e 35 a)]
64 - triple(qname(":Andrea"),qname("rdf:type"),qname(":MANAGER")).  [ur 
(50 a 32 a b 37 a c 34 a d 38 a)]
66 $F.  [back_unit_del 51 unit_del (a 62) unit_del (b 64)]

-- 
Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/

Received on Wednesday, 7 September 2005 11:49:05 UTC