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 ?

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";);
>>
>>  OntClass cl2 = model1.getOntClass("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";);
>>
>>  OntClass cl4 = model1.getOntClass("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";);
>>
>>  OntClass cl6 = model1.getOntClass("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";);
>>
>>
>>  OntClass clss2 = model1.getOntClass("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";);
>>
>>   if(clss3.hasSubClass(clss1)){
>>
>>  System.out.println(clss3.toString() + " has subclasse " +
>> clss1.toString() );
>>
>>  }
>>
>>     OntClass clss4 = model1.getOntClass("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