MakePrimitiveSubClassesMutuallyDisjoint не работает - PullRequest
0 голосов
/ 06 мая 2018

Я хотел использовать MakePrimitiveSubClassesMutuallyDisjoint, чтобы все подклассы класса не пересекались. Но с моим кодом этого не происходит:

OWLClass owlClass = createClass(concept.getId());

// Here I recursively create the subclasses 
processByLevel(skos, owlClass, concept.getNarrowerConcepts());

// But at this point all the subclass should have been created and set as subclasses  
MakePrimitiveSubClassesMutuallyDisjoint primitive = new MakePrimitiveSubClassesMutuallyDisjoint(dataFactory, owlClass, ontology);

manager.saveOntology(ontology);

Я не смог найти пример того, как он используется, и я не уверен, что пропускаю шаг с manager, может быть (что-то вроде addAxiom, но для этого).

Я не могу отладить внутри метода, но я проверил, были ли подклассы установлены после рекурсии, вызвав это:

ontology.getSubClassAxiomsForSuperClass(owlClass).size();

И результат ожидаемый.

Но, тем не менее, я ничего не вижу в результирующей онтологии, утверждающей, что классы не пересекаются.

1 Ответ

0 голосов
/ 06 мая 2018
OWLClass owlClass = createClass(concept.getId());

// Here I recursively create the subclasses 
processByLevel(skos, owlClass, concept.getNarrowerConcepts());

// But at this point all the subclass should have been created and set as subclasses  
MakePrimitiveSubClassesMutuallyDisjoint primitive = new MakePrimitiveSubClassesMutuallyDisjoint(dataFactory, owlClass, ontology);

// this line is necessary, it actually changes the content of the ontology
manager.applyChanges(primitive.getChanges());

manager.saveOntology(ontology);
...