Hi Dave,

Thanks for the reply.

But if I get the following results by using the method "hasSubClass" (you
can see in my code)

http://human.owl#NCI_C12919 <http://human.owl/#NCI_C12919> has subclass
http://mouse.owl#MA_0000011 <http://mouse.owl/#MA_0000011>

http://human.owl#NCI_C21599 <http://human.owl/#NCI_C21599> has subclass
http://mouse.owl#MA_0000011 <http://mouse.owl/#MA_0000011>

http://mouse.owl#MA_0000011 <http://mouse.owl/#MA_0000011> has subclass
http://mouse.owl#MA_0001755 <http://mouse.owl/#MA_0001755>

http://human.owl#NCI_C12919 <http://human.owl/#NCI_C12919> has subclass
http://mouse.owl#MA_0001755 <http://mouse.owl/#MA_0001755>


How can be possible to have this result ?

http://human.owl#NCI_C21599 <http://human.owl/#NCI_C21599> doesnt have
subclass http://mouse.owl#MA_0001755 <http://mouse.owl/#MA_0001755>

If http://mouse.owl#MA_0001755 <http://mouse.owl/#MA_0001755> is a subclass
of http://mouse.owl#MA_0000011 <http://mouse.owl/#MA_0000011>, and
http://mouse.owl#MA_0000011 <http://mouse.owl/#MA_0000011> is a subclass of
http://human.owl#NCI_C21599 <http://human.owl/#NCI_C21599> (the hasSubClass
returned true), then it should be true that
http://mouse.owl#MA_0001755<http://mouse.owl/#MA_0001755> is
subclass of http://human.owl#NCI_C21599 <http://human.owl/#NCI_C21599>. But
somehow the "hasSubClass" method returns false.

The ontologies are little big. I will reduce them in a way that I will have
only the necessary classes to build this example.

Thanks!




On 19 February 2013 21:58, Dave Reynolds <[email protected]> wrote:

> On 19/02/13 19:44, Emanuel Santos wrote:
>
>> I noticed using
>> "PelletReasonerFactory.THE_**SPEC" instead of
>> "OntModelSpec.OWL_MEM_TRANS_**INF"
>> the example above gives the right answer. Any idea why this happens ?
>>
>
> Without, as Ian said, a complete minimal example no one can tell.
>
> Your example is not complete since it doesn't show the actual ontologies
> you are processing. It is certainly not minimal. In fact you seem to assert
> both subclass and superclass relations both ways round, twice.
>
> Your code in effect says that the following pairs are equivalent class
> (subclass of each other):
>      #MA_0001251  <>  #NCI_C49482
>      #MA_0000011  <>  #NCI_C12374
>      #MA_0000003  <>  #NCI_C12919
>
> then you say that
>
>   #NCI_C21599 doesnt have subclass #MA_0001755
>
> Since neither of those are mentioned in your code then we've no reason to
> expect otherwise. Presumably you expect this because of something in our
> ontologies but it may be that your ontologies require more than just the
> transitive reasoner to reason over. Did you, for example, try OWL_MICRO?
>
> Dave
>
>
>> Emanuel
>>
>>
>> On 19 February 2013 12:45, Emanuel Santos <[email protected]> wrote:
>>
>>  There is a missprint there: Instead of
>>>
>>> dmb1.addAltEntry("bio2",mouse)**; should be
>>> dmb1.addAltEntry("bio2",human)**;
>>>
>>>
>>> Thanks!
>>>
>>>
>>> On 19 February 2013 12:08, Emanuel Santos <[email protected]> wrote:
>>>
>>>  Hi, thanks for the reply.
>>>>
>>>> Try using hasSubclass(Resourse, true) and hasSubclass(Resourse, false)
>>>> and didnt get the right results.
>>>>
>>>> Here is the example:
>>>>
>>>> I'm using the mouse and human ontologies used in OAEI.
>>>>
>>>>
>>>> (...) files....bio1... bio2
>>>>
>>>>    OntModel model1 = ModelFactory.**createOntologyModel(**OntModelSpec.
>>>> OWL_MEM_TRANS_INF);
>>>>
>>>>    OntDocumentManager dmb1 = model1.getDocumentManager();
>>>>
>>>>   dmb1.addAltEntry("bio1",mouse)**;
>>>>
>>>> dmb1.addAltEntry("bio2",mouse)**;
>>>>
>>>>      System.out.println("Loading Ontology (1) ...");
>>>>
>>>>   model1.read("bio1");
>>>>
>>>>   model1.read("bio2");
>>>>
>>>>
>>>>     OntClass cl1 = 
>>>> model1.getOntClass("http://**mouse.owl#MA_0001251<http://mouse.owl#MA_0001251>
>>>> ");
>>>>
>>>>   OntClass cl2 = 
>>>> model1.getOntClass("http://**human.owl#NCI_C49482<http://human.owl#NCI_C49482>
>>>> ");
>>>>
>>>>    cl1.addSubClass(cl2);
>>>>
>>>>   cl1.addSuperClass(cl2);
>>>>
>>>>   cl2.addSubClass(cl1);
>>>>
>>>>   cl2.addSuperClass(cl1);
>>>>
>>>>    OntClass cl3 = 
>>>> model1.getOntClass("http://**mouse.owl#MA_0000011<http://mouse.owl#MA_0000011>
>>>> ");
>>>>
>>>>   OntClass cl4 = 
>>>> model1.getOntClass("http://**human.owl#NCI_C12374<http://human.owl#NCI_C12374>
>>>> ");
>>>>
>>>>    cl3.addSubClass(cl4);
>>>>
>>>>   cl3.addSuperClass(cl4);
>>>>
>>>>   cl4.addSubClass(cl3);
>>>>
>>>>   cl4.addSuperClass(cl3);
>>>>
>>>>    OntClass cl5 = 
>>>> model1.getOntClass("http://**mouse.owl#MA_0000003<http://mouse.owl#MA_0000003>
>>>> ");
>>>>
>>>>   OntClass cl6 = 
>>>> model1.getOntClass("http://**human.owl#NCI_C12919<http://human.owl#NCI_C12919>
>>>> ");
>>>>
>>>>    cl5.addSubClass(cl6);
>>>>
>>>>   cl5.addSuperClass(cl6);
>>>>
>>>>   cl6.addSubClass(cl5);
>>>>
>>>>   cl6.addSuperClass(cl5);
>>>>
>>>>
>>>>      OntClass clss1 = 
>>>> model1.getOntClass("http://**mouse.owl#MA_0000011<http://mouse.owl#MA_0000011>
>>>> ");
>>>>
>>>>
>>>>   OntClass clss2 = 
>>>> model1.getOntClass("http://**human.owl#NCI_C12919<http://human.owl#NCI_C12919>
>>>> ");
>>>>
>>>>    if(clss2.hasSubClass(clss1)){
>>>>
>>>>   System.out.println(clss2.**toString() + " has subclasse " +
>>>> clss1.toString() );
>>>>
>>>>   }
>>>>
>>>>      OntClass clss3 = 
>>>> model1.getOntClass("http://**human.owl#NCI_C21599<http://human.owl#NCI_C21599>
>>>> ");
>>>>
>>>>    if(clss3.hasSubClass(clss1)){
>>>>
>>>>   System.out.println(clss3.**toString() + " has subclasse " +
>>>> clss1.toString() );
>>>>
>>>>   }
>>>>
>>>>      OntClass clss4 = 
>>>> model1.getOntClass("http://**mouse.owl#MA_0001755<http://mouse.owl#MA_0001755>
>>>> ");
>>>>
>>>>    if(clss1.hasSubClass(clss4)){
>>>>
>>>>   System.out.println(clss1.**toString() + " has subclasse " +
>>>> clss4.toString() );
>>>>
>>>>   }
>>>>
>>>>      if(clss2.hasSubClass(clss4)){
>>>>
>>>>   System.out.println(clss2.**toString() + " has subclasse " +
>>>> clss4.toString() );
>>>>
>>>>   }
>>>>
>>>>
>>>>   if(clss3.hasSubClass(clss4)){
>>>>
>>>>   System.out.println(clss3.**toString() + " has subclasse " +
>>>> clss4.toString() );
>>>>
>>>>   }else{
>>>>
>>>>   System.out.println(clss3.**toString() + " doesnt have subclasse " +
>>>> clss4.toString() );
>>>>
>>>>   }
>>>>
>>>>
>>>>
>>>> Result:
>>>>
>>>> http://human.owl#NCI_C12919 has subclasse http://mouse.owl#MA_0000011
>>>>
>>>> http://human.owl#NCI_C21599 has subclasse http://mouse.owl#MA_0000011
>>>>
>>>> http://mouse.owl#MA_0000011 has subclasse http://mouse.owl#MA_0001755
>>>>
>>>> http://human.owl#NCI_C12919 has subclasse http://mouse.owl#MA_0001755
>>>>
>>>> http://human.owl#NCI_C21599 doesnt have subclasse
>>>> http://mouse.owl#MA_0001755
>>>>
>>>>
>>>>
>>>> Where is the bug ? It could be a easy one.. I didn't sleep.. :)
>>>>
>>>>
>>>> Thanks!
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On 19 February 2013 09:33, Ian Dickinson <[email protected]> wrote:
>>>>
>>>>  Hi Emanuel,
>>>>> These kinds of questions are *much* easier to answer if you supply a
>>>>> complete minimal example - working code, including the data.  The short
>>>>> answer is that the transitive reasoner should give you the answer
>>>>> you're
>>>>> expecting, so there's something wrong in the way you're querying the
>>>>> model,
>>>>> or something wrong in the data.
>>>>>
>>>>> Ian
>>>>>
>>>>>
>>>>> On 19/02/13 04:31, Emanuel Santos wrote:
>>>>>
>>>>>  Hi again,
>>>>>>
>>>>>> I have a ontology model created with "OntModelSpec.OWL_MEM_TRANS_**
>>>>>>
>>>>>> INF".
>>>>>>
>>>>>> Given the original ontology I added some new "subclass" relations
>>>>>> between some classes (using addSubClass and addSuperClass methods).
>>>>>>
>>>>>> Now I have a class A that is a subclass of B and C.
>>>>>> And another class D that is subclass of A.
>>>>>>
>>>>>> (these results are given by hasSubClass method)
>>>>>>
>>>>>>
>>>>>> Given this model I should get the result that D is a subclass of B and
>>>>>> C. But for some reason I'm not getting that result (again using
>>>>>> hasSubClass method)
>>>>>> Does this mean that the model does not fully update the new inferred
>>>>>> relations between classes ? What should I do?
>>>>>>
>>>>>> It is odd, because A is only a subclass (not direct one) of C after
>>>>>> the addition of the new relations, i.e. A subclass C is inferred.
>>>>>>
>>>>>> Any ideas ?!
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>>
>>>>>>
>>>>> --
>>>>> ______________________________****____________________________**__
>>>>>
>>>>> Ian Dickinson                   Epimorphics Ltd, Bristol, UK
>>>>> mailto:[email protected]        http://www.epimorphics.com
>>>>> cell: +44-7786-850536              landline: +44-1275-399069
>>>>> ------------------------------****----------------------------**--
>>>>>
>>>>> Epimorphics Ltd.  is a limited company registered in England
>>>>> (no. 7016688). Registered address: Court Lodge, 105 High St,
>>>>>                Portishead, Bristol BS20 6PT, UK
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to