Modelling problems with long role chains in Protege-Owl

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Modelling problems with long role chains in Protege-Owl

Rajverma

Hi List,

 

I want to model the following… I have a concept HeartPatient, and sub-concepts HappyHeartPatient and WeakHeartPatient… Please have a look at the attached OWL ontology…

 

 

(i)                   HearPatient: (hasValve exactly 4 Valve) AND (hasValve some (Valve and (hasCondition has “Weak”)))

 

The ‘necessary and sufficient’ conditions for the concept ‘HeartPatient’ says that, he must have exactly 4 hasValve relations where the concept Valve is true… AND he must have ‘some’ hasValve relation, where the concept Valve is true, ‘and’ that has some hasCondition relation where the datatype property Weak is true… So the below tableau is a model for this concept…

 

 

   HP

                                                                      /   / \   \

                                                               hV /   /    \    \ hV

                                                                  /  hV    hV   \

                                                           Valve  /          \    Valve

                                                     Valve      Valve

          |

                                                         | hasCondition

                                                         |

                                                      Weak

 

 

(ii)                 HappyHeartPatient: (HeartPatient) AND (hasValve min 2 (Valve and (hasCondition has "Strong")))

 

The necessary conditions for the concept ‘HappyHeartPatient’ says that, if one is a HHP then he must be a HeartPatient and must have atleast two valves that are Strong… So the below tableau is a model for this concept…

 

 

 HHP

                                                                      /   / \   \

                                                               hV /   /    \    \ hV

                                                                  /  hV    hV   \

                                                           Valve  /          \    Valve

                                                 /   Valve      Valve

       hC /        |             |

                                             /          | hC         | hC

                                        Weak        |             |

                                                     Strong    Strong

 

 

(iii)                WeakHeartPatient: (HeartPatient) AND (hasValve min 2 (Valve and (hasCondition has "Weak")))

 

The necessary conditions for the concept ‘WeakHeartPatient’ says that, if one is a WHP then he must be a HeartPatient and must have atleast two valves that are Weak… So the below tableau is a model for this concept…

 

 

 HHP

                                                                      /   / \   \

                                                               hV /   /    \    \ hV

                                                                  /  hV    hV   \

                                                           Valve  /          \    Valve

                                                     Valve      Valve

                     |             |

                                                        | hC         | hC

                     |              |

                                                    Weak     Weak

 

 

Now I want to add an individual HP1 under the concept HeartPatient, who has 4 valves and the condition of at-least two of them is strong, and then run the inference tests to see weather it can be infered by the system that this HP1 is also of the type HHP because he has all the properties of the concept HHP.

 

But, the problem now is to model this individual… Firstly, in the Individuals tab, it only gives a single widget to enter the values for ‘hasValve’, but nothing else regarding the ‘hasCondition’ that is connected between the concept ‘Valve’ and the datatype ‘Strong’!

 

Nick suggested to try OWL-DL Individuals tab in this case, so I tried there but I’m getting some DIG errors when I try to classify… it says that “DIG Reasoner Error: attempt tp take the length of a non-sequence |WeakHeartPatient| [ID: ]” I don’t know what this means! This error doesn’t appear though when I replace the “min 2” condition to “some” in the restriction axioms of HHP and WHP… So what’s the problem regarding “some” and “min x” restrictions?

 

One more question: In the OWL-DL Individuals tab there are initially 4 asserted relationships for the 4 individual valves that I have defined, so I tried to use some of these individual valves (Valve_1, Valve_2 etc) while defining the later asserted relationships to say, for example, HP1 has Valve_1 and the condition of this Valve_1 is Strong, similarly for Valve_2, but I could not use the individual valves here but only the concept Valve, and when I do so there are some anonymous entries (valves) created in the list of valves for HP1. I guess this is because of the usage of the concept Valve in the additional asserted relationships, but are there any side effects of this? and is this OK?

 

Did any DLer try to model this kind of lengthy and complex role chains in Protégé-Owl?

 

Cheers,

Raj


patient.owl (9K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Modelling problems with long role chains in Protege-Owl

Hai Wang
Hi Raj,
There are few problems you may need to pay attention in our model.
* You need to make Valve_1 .... Valve_4 different, otherwise they  
could refer to same thing.
* You asserted "Valve and (hasCondition has "Strong") twice, but it  
does not mean that HP satisfied (hasValve min 2 (Valve and  
(hasCondition has "Strong"))) condition necessarily .
* As I remember that DIG 1.1 does not support to have hasValue  
restrictions to datatype, those information will be ignored when  
protege sent the ontology to reasoner through DIG.  I suggest you try  
to load your ontology to some platforms which can connect to reason  
directly and give a try.


Regards
Hai

On 27 Apr 2006, at 15:27, Mudunuri, Raj wrote:

> Hi List,
>
>
>
> I want to model the following… I have a concept HeartPatient, and  
> sub-concepts HappyHeartPatient and WeakHeartPatient… Please have a  
> look at the attached OWL ontology…
>
>
>
>
>
> (i)                   HearPatient: (hasValve exactly 4 Valve) AND  
> (hasValve some (Valve and (hasCondition has “Weak”)))
>
>
>
> The ‘necessary and sufficient’ conditions for the concept  
> ‘HeartPatient’ says that, he must have exactly 4 hasValve relations  
> where the concept Valve is true… AND he must have ‘some’ hasValve  
> relation, where the concept Valve is true, ‘and’ that has some  
> hasCondition relation where the datatype property Weak is true… So  
> the below tableau is a model for this concept…
>
>
>
>
>
>    HP
>
>                                                                        
> /   / \   \
>
>                                                                
> hV /   /    \    \ hV
>
>                                                                   /  h
> V    hV   \
>
>                                                            
> Valve  /          \    Valve
>
>                                                      Valve      Valve
>
>           |
>
>                                                          |  
> hasCondition
>
>                                                          |
>
>                                                       Weak
>
>
>
>
>
> (ii)                 HappyHeartPatient: (HeartPatient) AND  
> (hasValve min 2 (Valve and (hasCondition has "Strong")))
>
>
>
> The necessary conditions for the concept ‘HappyHeartPatient’ says  
> that, if one is a HHP then he must be a HeartPatient and must have  
> atleast two valves that are Strong… So the below tableau is a model  
> for this concept…
>
>
>
>
>
>  HHP
>
>                                                                        
> /   / \   \
>
>                                                                
> hV /   /    \    \ hV
>
>                                                                   /  h
> V    hV   \
>
>                                                            
> Valve  /          \    Valve
>
>                                                  /   Valve      Valve
>
>        hC /        |             |
>
>                                              /          |  
> hC         | hC
>
>                                         Weak        |             |
>
>                                                      Strong    Strong
>
>
>
>
>
> (iii)                WeakHeartPatient: (HeartPatient) AND (hasValve  
> min 2 (Valve and (hasCondition has "Weak")))
>
>
>
> The necessary conditions for the concept ‘WeakHeartPatient’ says  
> that, if one is a WHP then he must be a HeartPatient and must have  
> atleast two valves that are Weak… So the below tableau is a model  
> for this concept…
>
>
>
>
>
>  HHP
>
>                                                                        
> /   / \   \
>
>                                                                
> hV /   /    \    \ hV
>
>                                                                   /  h
> V    hV   \
>
>                                                            
> Valve  /          \    Valve
>
>                                                      Valve      Valve
>
>                      |             |
>
>                                                         |  
> hC         | hC
>
>                      |              |
>
>                                                     Weak     Weak
>
>
>
>
>
> Now I want to add an individual HP1 under the concept HeartPatient,  
> who has 4 valves and the condition of at-least two of them is  
> strong, and then run the inference tests to see weather it can be  
> infered by the system that this HP1 is also of the type HHP because  
> he has all the properties of the concept HHP.
>
>
>
> But, the problem now is to model this individual… Firstly, in the  
> Individuals tab, it only gives a single widget to enter the values  
> for ‘hasValve’, but nothing else regarding the ‘hasCondition’ that  
> is connected between the concept ‘Valve’ and the datatype ‘Strong’!
>
>
>
> Nick suggested to try OWL-DL Individuals tab in this case, so I  
> tried there but I’m getting some DIG errors when I try to classify…  
> it says that “DIG Reasoner Error: attempt tp take the length of a  
> non-sequence |WeakHeartPatient| [ID: ]” I don’t know what this  
> means! This error doesn’t appear though when I replace the “min 2”  
> condition to “some” in the restriction axioms of HHP and WHP… So  
> what’s the problem regarding “some” and “min x” restrictions?
>
>
>
> One more question: In the OWL-DL Individuals tab there are  
> initially 4 asserted relationships for the 4 individual valves that  
> I have defined, so I tried to use some of these individual valves  
> (Valve_1, Valve_2 etc) while defining the later asserted  
> relationships to say, for example, HP1 has Valve_1 and the  
> condition of this Valve_1 is Strong, similarly for Valve_2, but I  
> could not use the individual valves here but only the concept  
> Valve, and when I do so there are some anonymous entries (valves)  
> created in the list of valves for HP1. I guess this is because of  
> the usage of the concept Valve in the additional asserted  
> relationships, but are there any side effects of this? and is this OK?
>
>
>
> Did any DLer try to model this kind of lengthy and complex role  
> chains in Protégé-Owl?
>
>
>
> Cheers,
>
> Raj
>
> <patient.owl>

-------------------------------------------------------------------------
To unsubscribe go to http://protege.stanford.edu/community/subscribe.html

Reply | Threaded
Open this post in threaded view
|

Re: Modelling problems with long role chains in Protege-Owl

Elyes Lehtihet-3

I tried to solve the same kind of problem few weeks ago. I made some changes to your initial ontology and tested it against the latest version of Racer, Pellet and Fact++. I think it is a problem with QCR and not “long role chains”. Please see attached ontology.

 

hasCondition is not a DatatypeProperty anymore but an ObjectProperty, range Condition.

Condition has two Individuals {Weak Strong} that are disjoint ... Condition can only be Weak or Strong.

To make it more clear, I added badValve where hasCondition has Weak; and goodValve (hasCondition has Strong). Instantiated a couple of bad/good Valves and created an owl:AllDifferent between the individuals. goodValve and badValve are disjoint.

 

HeartPatient: hasValve only Valve and hasValve exactly 4

HappyHeartPatient, WeakHeartPatient and NotBad are subclasses of Patient and are all disjoint.

 

HappyHeartPatient : hasValve only (Valve and (hasCondition has Strong))

WeakHeartPatient : hasValve only (Valve and (hasCondition has Weak))

NotBad : hasValve max 2 (Valve and (hasCondition has Weak)) ... QCR (valuesFrom)

 

Now the reasoners are supposed to generate an inconsistency if you try to:

(1) Add more than 4 bad/good valves to any type of Patient

(2) Add a badValve to a HappyHeartPatient

(3) Add a goodValve to a WeakHeartPatient

(4) Add more than 2 badValve to a NotBad

 

- Racer successfully passed all the tests.

- Pellet doesn’t detect (4)... it generates an error when first computing inferred types, but seems to ignore the next iterations?

- FaCT++ doesn’t detect (2) and (3) ... but successfully detect (4)?

 

I am not surprised that Pellet didn’t detect (4), but it is strange that FaCT ignore (2) and (3)

 

All comments will be appreciated...

 

Regards,

Elyes

 

-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Hai Wang
Sent: Thursday, April 27, 2006 6:16 PM
To: [hidden email]
Subject: [protege-owl] Re: Modelling problems with long role chains in Protege-Owl

 

Hi Raj,

There are few problems you may need to pay attention in our model.

* You need to make Valve_1 .... Valve_4 different, otherwise they 

could refer to same thing.

* You asserted "Valve and (hasCondition has "Strong") twice, but it 

does not mean that HP satisfied (hasValve min 2 (Valve and 

(hasCondition has "Strong"))) condition necessarily .

* As I remember that DIG 1.1 does not support to have hasValue 

restrictions to datatype, those information will be ignored when 

protege sent the ontology to reasoner through DIG.  I suggest you try 

to load your ontology to some platforms which can connect to reason 

directly and give a try.

 

 

Regards

Hai

 

On 27 Apr 2006, at 15:27, Mudunuri, Raj wrote:

 

> Hi List,

> 

> 

> 

> I want to model the following… I have a concept HeartPatient, and 

> sub-concepts HappyHeartPatient and WeakHeartPatient… Please have a 

> look at the attached OWL ontology…

> 

> 

> 

> 

> 

> (i)                   HearPatient: (hasValve exactly 4 Valve) AND 

> (hasValve some (Valve and (hasCondition has “Weak”)))

> 

> 

> 

> The ‘necessary and sufficient’ conditions for the concept 

> ‘HeartPatient’ says that, he must have exactly 4 hasValve relations 

> where the concept Valve is true… AND he must have ‘some’ hasValve 

> relation, where the concept Valve is true, ‘and’ that has some 

> hasCondition relation where the datatype property Weak is true… So 

> the below tableau is a model for this concept…

> 

> 

> 

> 

> 

>    HP

> 

>                                                                        

> /   / \   \

> 

>                                                                

> hV /   /    \    \ hV

> 

>                                                                   /  h

> V    hV   \

> 

>                                                             

> Valve  /          \    Valve

> 

>                                                      Valve      Valve

> 

>           |

> 

>                                                          | 

> hasCondition

> 

>                                                          |

> 

>                                                       Weak

> 

> 

> 

> 

> 

> (ii)                 HappyHeartPatient: (HeartPatient) AND 

> (hasValve min 2 (Valve and (hasCondition has "Strong")))

> 

> 

> 

> The necessary conditions for the concept ‘HappyHeartPatient’ says 

> that, if one is a HHP then he must be a HeartPatient and must have 

> atleast two valves that are Strong… So the below tableau is a model 

> for this concept…

> 

> 

> 

> 

> 

>  HHP

> 

>                                                                       

> /   / \   \

> 

>                                                                

> hV /   /    \    \ hV

> 

>                                                                   /  h

> V    hV   \

> 

>                                                            

> Valve  /          \    Valve

> 

>                                                  /   Valve      Valve

> 

>        hC /        |             |

> 

>                                              /          | 

> hC         | hC

> 

>                                         Weak        |             |

> 

>                                                      Strong    Strong

> 

> 

> 

> 

> 

> (iii)                WeakHeartPatient: (HeartPatient) AND (hasValve 

> min 2 (Valve and (hasCondition has "Weak")))

> 

> 

> 

> The necessary conditions for the concept ‘WeakHeartPatient’ says 

> that, if one is a WHP then he must be a HeartPatient and must have 

> atleast two valves that are Weak… So the below tableau is a model 

> for this concept…

> 

> 

> 

> 

> 

>  HHP

> 

>                                                                       

> /   / \   \

> 

>                                                                 

> hV /   /    \    \ hV

> 

>                                                                   /  h

> V    hV   \

> 

>                                                            

> Valve  /          \    Valve

> 

>                                                      Valve      Valve

> 

>                      |             |

> 

>                                                         | 

> hC         | hC

> 

>                      |              |

> 

>                                                     Weak     Weak

> 

> 

> 

> 

> 

> Now I want to add an individual HP1 under the concept HeartPatient, 

> who has 4 valves and the condition of at-least two of them is 

> strong, and then run the inference tests to see weather it can be 

> infered by the system that this HP1 is also of the type HHP because 

> he has all the properties of the concept HHP.

> 

> 

> 

> But, the problem now is to model this individual… Firstly, in the 

> Individuals tab, it only gives a single widget to enter the values 

> for ‘hasValve’, but nothing else regarding the ‘hasCondition’ that 

> is connected between the concept ‘Valve’ and the datatype ‘Strong’!

> 

> 

> 

> Nick suggested to try OWL-DL Individuals tab in this case, so I 

> tried there but I’m getting some DIG errors when I try to classify… 

> it says that “DIG Reasoner Error: attempt tp take the length of a 

> non-sequence |WeakHeartPatient| [ID: ]” I don’t know what this 

> means! This error doesn’t appear though when I replace the “min 2” 

> condition to “some” in the restriction axioms of HHP and WHP… So 

> what’s the problem regarding “some” and “min x” restrictions?

> 

> 

> 

> One more question: In the OWL-DL Individuals tab there are 

> initially 4 asserted relationships for the 4 individual valves that 

> I have defined, so I tried to use some of these individual valves 

> (Valve_1, Valve_2 etc) while defining the later asserted 

> relationships to say, for example, HP1 has Valve_1 and the 

> condition of this Valve_1 is Strong, similarly for Valve_2, but I 

> could not use the individual valves here but only the concept 

> Valve, and when I do so there are some anonymous entries (valves) 

> created in the list of valves for HP1. I guess this is because of 

> the usage of the concept Valve in the additional asserted 

> relationships, but are there any side effects of this? and is this OK?

> 

> 

> 

> Did any DLer try to model this kind of lengthy and complex role 

> chains in Protégé-Owl?

> 

> 

> 

> Cheers,

> 

> Raj

> 

> <patient.owl>

 

-------------------------------------------------------------------------

To unsubscribe go to http://protege.stanford.edu/community/subscribe.html


patient.owl (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

AW: Re: Modelling problems with long role chains in Protege-Owl

Rajverma
In reply to this post by Rajverma

Hi Elyes,

 

Excellent… I was expecting exactly this kind of experimentation… It cleared many of my doubts… I tried to play futher with your ontology, and it prompted me a few new doubts…

 

  1. Actually your 1st point is not true, I mean when you add more than 4 bad/good valves to HHP/WHP the reasoner does not raise an error but Protégé can only show those widgets in red rectangles… This is because the reasoner tries to make a model by grouping the extra nodes (that are > 4) into 4 nodes if we don’t explicitely say that all the individuals that we define are different from each other… This is what Hai Wang is saying I suppose, am I right Hai? Now my question is how do we do it? I mean, how can we explicitely say that our individuals are different from each other? Are they not so by default?

 

  1. I changed some things in the ontology that you sent me… Initially I changed all the general concept inclusion axioms (necessary conditions) into concept definitions (necessary and sufficient conditions)… Then, I removed the individuals of HHP and NB, and then I added one more individual each for bad and good valves making them 4 badValves and 4 goodValves, and then I created an individual for HeartPatient… My aim is to check whether this HP1 is infered to be a HHP or WHP or NB according to its properties… I selected all the individual valves for this HP1 from badValve, expecting that HP1 now should be infered as WHP type, but surpraisingly it didn’t do that… Ofcourse when there are not more than 2 badValves it can be infered as NB but when all of them are badValves then it should infer it as an WHP, isn’t it?

 

  1. After changing the necessary conditions into necessary & sufficient conditions the concept HHP is rightly infered to be a subconcept of NB… but, in the individuals, when I make the HP1 to have all badValves then it is not infering to be a WHP… in the other case, when I make all the valves to be goodValves then it is infered as NB... ok, but it should also infer and show that HP1 as HHP right? But why is it not doing that?

 

Thanx,

Raj

 

 

 


Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Elyes Lehtihet
Gesendet: Freitag, 28. April 2006 09:43
An: [hidden email]
Betreff: [protege-owl] Re: Modelling problems with long role chains in Protege-Owl

 

I tried to solve the same kind of problem few weeks ago. I made some changes to your initial ontology and tested it against the latest version of Racer, Pellet and Fact++. I think it is a problem with QCR and not “long role chains”. Please see attached ontology.

 

hasCondition is not a DatatypeProperty anymore but an ObjectProperty, range Condition.

Condition has two Individuals {Weak Strong} that are disjoint ... Condition can only be Weak or Strong.

To make it more clear, I added badValve where hasCondition has Weak; and goodValve (hasCondition has Strong). Instantiated a couple of bad/good Valves and created an owl:AllDifferent between the individuals. goodValve and badValve are disjoint.

 

HeartPatient: hasValve only Valve and hasValve exactly 4

HappyHeartPatient, WeakHeartPatient and NotBad are subclasses of Patient and are all disjoint.

 

HappyHeartPatient : hasValve only (Valve and (hasCondition has Strong))

WeakHeartPatient : hasValve only (Valve and (hasCondition has Weak))

NotBad : hasValve max 2 (Valve and (hasCondition has Weak)) ... QCR (valuesFrom)

 

Now the reasoners are supposed to generate an inconsistency if you try to:

(1) Add more than 4 bad/good valves to any type of Patient

(2) Add a badValve to a HappyHeartPatient

(3) Add a goodValve to a WeakHeartPatient

(4) Add more than 2 badValve to a NotBad

 

- Racer successfully passed all the tests.

- Pellet doesn’t detect (4)... it generates an error when first computing inferred types, but seems to ignore the next iterations?

- FaCT++ doesn’t detect (2) and (3) ... but successfully detect (4)?

 

I am not surprised that Pellet didn’t detect (4), but it is strange that FaCT ignore (2) and (3)

 

All comments will be appreciated...

 

Regards,

Elyes

 

-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Hai Wang
Sent: Thursday, April 27, 2006 6:16 PM
To: [hidden email]
Subject: [protege-owl] Re: Modelling problems with long role chains in Protege-Owl

 

Hi Raj,

There are few problems you may need to pay attention in our model.

* You need to make Valve_1 .... Valve_4 different, otherwise they 

could refer to same thing.

* You asserted "Valve and (hasCondition has "Strong") twice, but it 

does not mean that HP satisfied (hasValve min 2 (Valve and 

(hasCondition has "Strong"))) condition necessarily .

* As I remember that DIG 1.1 does not support to have hasValue 

restrictions to datatype, those information will be ignored when 

protege sent the ontology to reasoner through DIG.  I suggest you try 

to load your ontology to some platforms which can connect to reason 

directly and give a try.

 

 

Regards

Hai

 

On 27 Apr 2006, at 15:27, Mudunuri, Raj wrote:

 

> Hi List,

> 

> 

> 

> I want to model the following… I have a concept HeartPatient, and 

> sub-concepts HappyHeartPatient and WeakHeartPatient… Please have a 

> look at the attached OWL ontology…

> 

> 

> 

> 

> 

> (i)                   HearPatient: (hasValve exactly 4 Valve) AND 

> (hasValve some (Valve and (hasCondition has “Weak”)))

> 

> 

> 

> The ‘necessary and sufficient’ conditions for the concept 

> ‘HeartPatient’ says that, he must have exactly 4 hasValve relations 

> where the concept Valve is true… AND he must have ‘some’ hasValve 

> relation, where the concept Valve is true, ‘and’ that has some 

> hasCondition relation where the datatype property Weak is true… So 

> the below tableau is a model for this concept…

> 

> 

> 

> 

> 

>    HP

> 

>                                                                        

> /   / \   \

> 

>                                                                

> hV /   /    \    \ hV

> 

>                                                                   /  h

> V    hV   \

> 

>                                                             

> Valve  /          \    Valve

> 

>                                                      Valve      Valve

> 

>           |

> 

>                                                          | 

> hasCondition

> 

>                                                          |

> 

>                                                       Weak

> 

> 

> 

> 

> 

> (ii)                 HappyHeartPatient: (HeartPatient) AND 

> (hasValve min 2 (Valve and (hasCondition has "Strong")))

> 

> 

> 

> The necessary conditions for the concept ‘HappyHeartPatient’ says 

> that, if one is a HHP then he must be a HeartPatient and must have 

> atleast two valves that are Strong… So the below tableau is a model 

> for this concept…

> 

> 

> 

> 

> 

>  HHP

> 

>                                                                       

> /   / \   \

> 

>                                                                

> hV /   /    \    \ hV

> 

>                                                                   /  h

> V    hV   \

> 

>                                                            

> Valve  /          \    Valve

> 

>                                                  /   Valve      Valve

> 

>        hC /        |             |

> 

>                                              /          | 

> hC         | hC

> 

>                                         Weak        |             |

> 

>                                                      Strong    Strong

> 

> 

> 

> 

> 

> (iii)                WeakHeartPatient: (HeartPatient) AND (hasValve 

> min 2 (Valve and (hasCondition has "Weak")))

> 

> 

> 

> The necessary conditions for the concept ‘WeakHeartPatient’ says 

> that, if one is a WHP then he must be a HeartPatient and must have 

> atleast two valves that are Weak… So the below tableau is a model 

> for this concept…

> 

> 

> 

> 

> 

>  HHP

> 

>                                                                       

> /   / \   \

> 

>                                                                 

> hV /   /    \    \ hV

> 

>                                                                   /  h

> V    hV   \

> 

>       

Reply | Threaded
Open this post in threaded view
|

Re: AW: Re: Modelling problems with long role chains in Protege-Owl

Elyes Lehtihet-3

Hi Raj,

 

I made all the individuals distinct by going to OWL / Edit owl:AllDifferent… then group the distinct individuals. If you don’t make them explicitly distinct, the reasoners will not generate an error –that’s probably what happened when you added goodValues instance that were not distinct with the others….

 

For the necessary and sufficient condition, I am not sure that I fully understand the concept… not enough to guess what will happen…

 

I am just a bit confused about the behavior of the existing reasoners when checking QCRs.

 

Regards,

Elyes

 


From: [hidden email] [mailto:[hidden email]] On Behalf Of Mudunuri, Raj
Sent: Friday, April 28, 2006 4:36 PM
To: [hidden email]
Subject: [protege-owl] AW: Re: Modelling problems with long role chains in Protege-Owl

 

Hi Elyes,

 

Excellent… I was expecting exactly this kind of experimentation… It cleared many of my doubts… I tried to play futher with your ontology, and it prompted me a few new doubts…

 

  1. Actually your 1st point is not true, I mean when you add more than 4 bad/good valves to HHP/WHP the reasoner does not raise an error but Protégé can only show those widgets in red rectangles… This is because the reasoner tries to make a model by grouping the extra nodes (that are > 4) into 4 nodes if we don’t explicitely say that all the individuals that we define are different from each other… This is what Hai Wang is saying I suppose, am I right Hai? Now my question is how do we do it? I mean, how can we explicitely say that our individuals are different from each other? Are they not so by default?

 

  1. I changed some things in the ontology that you sent me… Initially I changed all the general concept inclusion axioms (necessary conditions) into concept definitions (necessary and sufficient conditions)… Then, I removed the individuals of HHP and NB, and then I added one more individual each for bad and good valves making them 4 badValves and 4 goodValves, and then I created an individual for HeartPatient… My aim is to check whether this HP1 is infered to be a HHP or WHP or NB according to its properties… I selected all the individual valves for this HP1 from badValve, expecting that HP1 now should be infered as WHP type, but surpraisingly it didn’t do that… Ofcourse when there are not more than 2 badValves it can be infered as NB but when all of them are badValves then it should infer it as an WHP, isn’t it?

 

  1. After changing the necessary conditions into necessary & sufficient conditions the concept HHP is rightly infered to be a subconcept of NB… but, in the individuals, when I make the HP1 to have all badValves then it is not infering to be a WHP… in the other case, when I make all the valves to be goodValves then it is infered as NB... ok, but it should also infer and show that HP1 as HHP right? But why is it not doing that?

 

Thanx,

Raj

 

 

 


Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Elyes Lehtihet
Gesendet: Freitag, 28. April 2006 09:43
An: [hidden email]
Betreff: [protege-owl] Re: Modelling problems with long role chains in Protege-Owl

 

I tried to solve the same kind of problem few weeks ago. I made some changes to your initial ontology and tested it against the latest version of Racer, Pellet and Fact++. I think it is a problem with QCR and not “long role chains”. Please see attached ontology.

 

hasCondition is not a DatatypeProperty anymore but an ObjectProperty, range Condition.

Condition has two Individuals {Weak Strong} that are disjoint ... Condition can only be Weak or Strong.

To make it more clear, I added badValve where hasCondition has Weak; and goodValve (hasCondition has Strong). Instantiated a couple of bad/good Valves and created an owl:AllDifferent between the individuals. goodValve and badValve are disjoint.

 

HeartPatient: hasValve only Valve and hasValve exactly 4

HappyHeartPatient, WeakHeartPatient and NotBad are subclasses of Patient and are all disjoint.

 

HappyHeartPatient : hasValve only (Valve and (hasCondition has Strong))

WeakHeartPatient : hasValve only (Valve and (hasCondition has Weak))

NotBad : hasValve max 2 (Valve and (hasCondition has Weak)) ... QCR (valuesFrom)

 

Now the reasoners are supposed to generate an inconsistency if you try to:

(1) Add more than 4 bad/good valves to any type of Patient

(2) Add a badValve to a HappyHeartPatient

(3) Add a goodValve to a WeakHeartPatient

(4) Add more than 2 badValve to a NotBad

 

- Racer successfully passed all the tests.

- Pellet doesn’t detect (4)... it generates an error when first computing inferred types, but seems to ignore the next iterations?

- FaCT++ doesn’t detect (2) and (3) ... but successfully detect (4)?

 

I am not surprised that Pellet didn’t detect (4), but it is strange that FaCT ignore (2) and (3)

 

All comments will be appreciated...

 

Regards,

Elyes

 

-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Hai Wang
Sent: Thursday, April 27, 2006 6:16 PM
To: [hidden email]
Subject: [protege-owl] Re: Modelling problems with long role chains in Protege-Owl

 

Hi Raj,

There are few problems you may need to pay attention in our model.

* You need to make Valve_1 .... Valve_4 different, otherwise they 

could refer to same thing.

* You asserted "Valve and (hasCondition has "Strong") twice, but it 

does not mean that HP satisfied (hasValve min 2 (Valve and 

(hasCondition has "Strong"))) condition necessarily .

* As I remember that DIG 1.1 does not support to have hasValue 

restrictions to datatype, those information will be ignored when 

protege sent the ontology to reasoner through DIG.  I suggest you try 

to load your ontology to some platforms which can connect to reason 

directly and give a try.

 

 

Regards

Hai

 

On 27 Apr 2006, at 15:27, Mudunuri, Raj wrote:

 

> Hi List,

> 

> 

> 

> I want to model the following… I have a concept HeartPatient, and 

> sub-concepts HappyHeartPatient and WeakHeartPatient… Please have a 

> look at the attached OWL ontology…

> 

> 

> 

> 

> 

> (i)                   HearPatient: (hasValve exactly 4 Valve) AND 

> (hasValve some (Valve and (hasCondition has “Weak”)))

> 

> 

> 

> The ‘necessary and sufficient’ conditions for the concept 

> ‘HeartPatient’ says that, he must have exactly 4 hasValve relations 

> where the concept Valve is true… AND he must have ‘some’ hasValve 

> relation, where the concept Valve is true, ‘and’ that has some 

> hasCondition relation where the datatype property Weak is true… So 

> the below tableau is a model for this concept…

> 

> 

> 

> 

> 

>    HP

> 

>                                                                        

> /   / \   \

> 

>                                                                

> hV /   /    \    \ hV

> 

>                                                                   /  h

> V    hV   \

> 

>                                                             

> Valve  /          \    Valve

> 

>                                                      Valve      Valve

> 

>           |

> 

>                                                          | 

> hasCondition

> 

>                                                          |

> 

>                                                       Weak

> 

> 

> 

> 

> 

> (ii)                 HappyHeartPatient: (HeartPatient) AND 

> (hasValve min 2 (Valve and (hasCondition has "Strong")))

> 

> 

> 

> The necessary conditions for the concept ‘HappyHeartPatient’ says 

> that, if one is a HHP then he must be a HeartPatient and must have 

> atleast two valves that are Strong… So the below tableau is a model 

> for this concept…

> 

> 

> 

> 

> 

>  HHP

> 

>                                                                       

> /   / \   \

> 

>                                                                

> hV /   /    \    \ hV

> 

>                                                                   /  h

> V    hV   \

> 

>                                                            

> Valve  /          \    Valve

> 

>                                                  /   Valve      Valve

> 

>        hC /        |             |

> 

>                                              /          | 

> hC         | hC

> 

>                                         Weak        |             |

> 

>                                                      Strong    Strong

> 

> 

> 

> 

> 

> (iii)                WeakHeartPatient: (HeartPatient) AND (hasValve 

> min 2 (Valve and (hasCondition has "Weak")))

> 

> 

> 

> The necessary conditions for the concept ‘WeakHeartPatient’ says 

> that, if one is a WHP then he must be a HeartPatient and must have 

> atleast two valves that are Weak… So the below tableau is a model 

> for this concept…

> 

> 

> 

Reply | Threaded
Open this post in threaded view
|

AW: Re: AW: Re: Modelling problems with long role chains in Protege-Owl

Rajverma
In reply to this post by Rajverma

Hi Elyes,

 

You are right, the reason for not raising an error by the reasoner is due to not making the individuals distinct explicitely…I did not know this option of using “Edit owl:AllDifferent” from the Owl menu to achieve this task…

 

Nick/Mathew, I think it wud be better to have this “Edit owl:AllDifferent” option somewhere in the individual editor rather than in the Owl menu, isn’t it!

 

Thanq,

Raj

 

 


Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Elyes Lehtihet
Gesendet: Freitag, 28. April 2006 18:00
An: [hidden email]
Betreff: [protege-owl] Re: AW: Re: Modelling problems with long role chains in Protege-Owl

 

Hi Raj,

 

I made all the individuals distinct by going to OWL / Edit owl:AllDifferent… then group the distinct individuals. If you don’t make them explicitly distinct, the reasoners will not generate an error –that’s probably what happened when you added goodValues instance that were not distinct with the others….

 

For the necessary and sufficient condition, I am not sure that I fully understand the concept… not enough to guess what will happen…

 

I am just a bit confused about the behavior of the existing reasoners when checking QCRs.

 

Regards,

Elyes

 


From: [hidden email] [mailto:[hidden email]] On Behalf Of Mudunuri, Raj
Sent: Friday, April 28, 2006 4:36 PM
To: [hidden email]
Subject: [protege-owl] AW: Re: Modelling problems with long role chains in Protege-Owl

 

Hi Elyes,

 

Excellent… I was expecting exactly this kind of experimentation… It cleared many of my doubts… I tried to play futher with your ontology, and it prompted me a few new doubts…

 

  1. Actually your 1st point is not true, I mean when you add more than 4 bad/good valves to HHP/WHP the reasoner does not raise an error but Protégé can only show those widgets in red rectangles… This is because the reasoner tries to make a model by grouping the extra nodes (that are > 4) into 4 nodes if we don’t explicitely say that all the individuals that we define are different from each other… This is what Hai Wang is saying I suppose, am I right Hai? Now my question is how do we do it? I mean, how can we explicitely say that our individuals are different from each other? Are they not so by default?

 

  1. I changed some things in the ontology that you sent me… Initially I changed all the general concept inclusion axioms (necessary conditions) into concept definitions (necessary and sufficient conditions)… Then, I removed the individuals of HHP and NB, and then I added one more individual each for bad and good valves making them 4 badValves and 4 goodValves, and then I created an individual for HeartPatient… My aim is to check whether this HP1 is infered to be a HHP or WHP or NB according to its properties… I selected all the individual valves for this HP1 from badValve, expecting that HP1 now should be infered as WHP type, but surpraisingly it didn’t do that… Ofcourse when there are not more than 2 badValves it can be infered as NB but when all of them are badValves then it should infer it as an WHP, isn’t it?

 

  1. After changing the necessary conditions into necessary & sufficient conditions the concept HHP is rightly infered to be a subconcept of NB… but, in the individuals, when I make the HP1 to have all badValves then it is not infering to be a WHP… in the other case, when I make all the valves to be goodValves then it is infered as NB... ok, but it should also infer and show that HP1 as HHP right? But why is it not doing that?

 

Thanx,

Raj

 

 

 


Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Elyes Lehtihet
Gesendet: Freitag, 28. April 2006 09:43
An: [hidden email]
Betreff: [protege-owl] Re: Modelling problems with long role chains in Protege-Owl

 

I tried to solve the same kind of problem few weeks ago. I made some changes to your initial ontology and tested it against the latest version of Racer, Pellet and Fact++. I think it is a problem with QCR and not “long role chains”. Please see attached ontology.

 

hasCondition is not a DatatypeProperty anymore but an ObjectProperty, range Condition.

Condition has two Individuals {Weak Strong} that are disjoint ... Condition can only be Weak or Strong.

To make it more clear, I added badValve where hasCondition has Weak; and goodValve (hasCondition has Strong). Instantiated a couple of bad/good Valves and created an owl:AllDifferent between the individuals. goodValve and badValve are disjoint.

 

HeartPatient: hasValve only Valve and hasValve exactly 4

HappyHeartPatient, WeakHeartPatient and NotBad are subclasses of Patient and are all disjoint.

 

HappyHeartPatient : hasValve only (Valve and (hasCondition has Strong))

WeakHeartPatient : hasValve only (Valve and (hasCondition has Weak))

NotBad : hasValve max 2 (Valve and (hasCondition has Weak)) ... QCR (valuesFrom)

 

Now the reasoners are supposed to generate an inconsistency if you try to:

(1) Add more than 4 bad/good valves to any type of Patient

(2) Add a badValve to a HappyHeartPatient

(3) Add a goodValve to a WeakHeartPatient

(4) Add more than 2 badValve to a NotBad

 

- Racer successfully passed all the tests.

- Pellet doesn’t detect (4)... it generates an error when first computing inferred types, but seems to ignore the next iterations?

- FaCT++ doesn’t detect (2) and (3) ... but successfully detect (4)?

 

I am not surprised that Pellet didn’t detect (4), but it is strange that FaCT ignore (2) and (3)

 

All comments will be appreciated...

 

Regards,

Elyes

 

-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Hai Wang
Sent: Thursday, April 27, 2006 6:16 PM
To: [hidden email]
Subject: [protege-owl] Re: Modelling problems with long role chains in Protege-Owl

 

Hi Raj,

There are few problems you may need to pay attention in our model.

* You need to make Valve_1 .... Valve_4 different, otherwise they 

could refer to same thing.

* You asserted "Valve and (hasCondition has "Strong") twice, but it 

does not mean that HP satisfied (hasValve min 2 (Valve and 

(hasCondition has "Strong"))) condition necessarily .

* As I remember that DIG 1.1 does not support to have hasValue 

restrictions to datatype, those information will be ignored when 

protege sent the ontology to reasoner through DIG.  I suggest you try 

to load your ontology to some platforms which can connect to reason 

directly and give a try.

 

 

Regards

Hai

 

On 27 Apr 2006, at 15:27, Mudunuri, Raj wrote:

 

> Hi List,

> 

> 

> 

> I want to model the following… I have a concept HeartPatient, and 

> sub-concepts HappyHeartPatient and WeakHeartPatient… Please have a 

> look at the attached OWL ontology…

> 

> 

> 

> 

> 

> (i)                   HearPatient: (hasValve exactly 4 Valve) AND 

> (hasValve some (Valve and (hasCondition has “Weak”)))

> 

> 

> 

> The ‘necessary and sufficient’ conditions for the concept 

> ‘HeartPatient’ says that, he must have exactly 4 hasValve relations 

> where the concept Valve is true… AND he must have ‘some’ hasValve 

> relation, where the concept Valve is true, ‘and’ that has some 

> hasCondition relation where the datatype property Weak is true… So 

> the below tableau is a model for this concept…

> 

> 

> 

> 

> 

>    HP

> 

>                                                                        

> /   / \   \

> 

>                                                                

> hV /   /    \    \ hV

> 

>                                                                   /  h

> V    hV   \

> 

>                                                             

> Valve  /          \    Valve

> 

>                                                      Valve      Valve

> 

>           |

> 

>                                                          | 

> hasCondition

> 

>                                                          |

> 

>                                                       Weak

> 

> 

> 

> 

> 

> (ii)                 HappyHeartPatient: (HeartPatient) AND 

> (hasValve min 2 (Valve and (hasCondition has "Strong")))

> 

> 

> 

> The necessary conditions for the concept ‘HappyHeartPatient’ says 

> that, if one is a HHP then he must be a HeartPatient and must have 

> atleast two valves that are Strong… So the below tableau is a model 

> for this concept…

> 

> 

> 

> 

> 

>  HHP

> 

>                                                                       

> /   / \   \

> 

>                                                                

> hV /   /    \    \ hV

> 

>                                                                   /  h

> V    hV   \

>