Search code examples
rdfowlprotegereasoningpellet

OWL and DL Reasoning: Why is Eros not beautiful?


I have created an ontology based on:

  1. Every person is beautiful if one of his/her parents is beautiful

  2. Aphrodite is a parent of Eros

  3. Aphrodite is beautiful

thus we would expect Eros to be beautiful too! However, the Pellet reasoner doesn't seem to infer that. If I manually put the type of Eros to successful, it will accept it, but shouldn't it infer it?

My ontology lies here (change the extension to .owl). I am also providing screenshots from Protege:

Class hierarchy: enter image description here Eros: enter image description here Inferred class hierarchy: enter image description here

What am I missing?


EDIT:

I can see Eros appearing in this DL query:

hasParent some Beautiful

but not in this:

hasParent exactly 1 Beautiful

but still even if I say OK for some, I would expect to see Beautiful as I see Child in my 2nd picture, where Child is inferred by the reasoner.


Solution

  • What about the HermiT reasoner (built-in with protege) ?

    UDPATE:

    Ok, here is a new ontology I wrote based on your assignment (though, I didn't complete all sentences just the ones that suffice to infer that Eros is happy).

    For the RDF/XML syntax see this pastebin link

    Now the reasoner will certainly infer that both Aphrodite and Eros are happy, although that was never asserted in the ontology above. Here is a DL query for Happy concept that shows the result, "notice we just query which instances belongs to Happy concept":

    enter image description here

    Eros is finally happy :)

    enter image description here

    Here is the same ontology in Manchester syntax

    Ontology: <beautiful>
    
    
    ObjectProperty: <beautiful#hasChild>
    
    
    Class: <beautiful#Happy>
    
        EquivalentTo: 
            <beautiful#Person>
             and (<beautiful#hasChild> only <beautiful#Beautiful>),
            <beautiful#Beautiful>
             and <beautiful#Person>
    
    
    Class: <beautiful#Beautiful>
    
    
    Class: <beautiful#Successful>
    
        EquivalentTo: 
            <beautiful#Beautiful>
             and <beautiful#Successful>
    
    
    Class: <beautiful#Child>
    
    
    Class: <beautiful#Parent>
    
    
    Class: <beautiful#Person>
    
    
    Individual: <beautiful#Aphrodite>
    
        Types: 
            <beautiful#Beautiful>,
            <beautiful#Parent>,
            <beautiful#Person>
    
        Facts:  
         <beautiful#hasChild>  <beautiful#Eros>
    
    
    Individual: <beautiful#Eros>
    
        Types: 
            <beautiful#Successful>,
            <beautiful#Person>
    

    MORE UPDATE:

    DL query on Beautiful shows Eros as Beautiful too:

    enter image description here

    Hope it helps.