owlprotegeowl-apifact++

Retrieve inferred object property filler in OWL ontology


How can I retrieve for each class in my ontology O all (inferred) existential restrictions?

My current approach is to iterate over all pairs of classes and object properties, and check if the restriction is satisfied:

  • for each subclass (C, D) in Classes(O) × Classes(O):
    • for each property P defined in Object properties(O):
      • if C and P some D is satisfiable:
        • yield (C, P, D)

This is pretty slow as I am working with the vaccine ontology which has 4557 classes and 107 object properties. Even it is a one-time computation, I may learn something from seeing better approaches.

Using the OWLKnowledgeExplorerReasoner from JFact as suggested here did not work because it crashed when retrieving the neighbour labels (see my test case)

Can you suggest any improved solution using OWLAPI, Protégé or any other tool? Also, it would be nice to only retrieve the most specific filler classes.

Thanks!


Solution

  • First of all, your check is wrong. For an empty ontology C and P some D would be satisfiable, which is not what you want. You have to check whether C and not (P some D) is unsatisfiable (alternatively, you can just check isSubsumedBy(C, P some D)).

    You can improve the exploration time if you use some techniques that are used for classification, e.g.:

    It also helps if you can narrow down the problem. Do you really need to check all pairs and all properties?

    Using the OWLKnowledgeExplorerReasoner from JFact as suggested here did not work because it crashed when retrieving the neighbour labels (Exception Unreachable situation!).

    Could you please provide a test case and a full stacktrace of the problem so we can fix it? Did you try to use the same with FaCT++?