I have an ontology with one individual a and 6 classes (A, B, C, D, E, F). Individual belongs to the following disjunctions: (A or B; C or D; E or F).
There is some way how can I infer that an individual has to be in one of the two classes from each disjunction? I tried to create one state in which all assertions from ontology will be satisfied. For example that a belongs to A, C, F. But with function getTypes for reasoner from owlapi it is not possible, because it returns empty NodeSet.
ontologyManager = OWLManager.createOWLOntologyManager();
ontology = ontologyManager.loadOntologyFromOntologyDocument(new File(Configuration.ONTOLOGY));
OWLReasonerFactory reasonerFactory = new OpenlletReasonerFactory();
reasoner = reasonerFactory.createReasoner(ontology);
reasoner.getTypes(ind, false).getNodes()
I tried also Hermit (ReasonerFactory()) and jFact (JFactFactory()).
I tried the following too:
Set<OWLClassExpression> ontologyTypes = EntitySearcher.getTypes(ind, ontology).collect(toSet());
But this returns me only ClassExpression in form ObjectUnionOf which doesn't help because I need atomic classes.
I understand that reasoner infers in this function just classes to which individual always belongs. But is there some way how to decide to which classes from the disjunction it should belong? I need to build some model for any ontology but I can't find any function in reasoner which should do this or something similar.