На самом деле использование аргумента делает задачу тривиальной, потому что единственным именованным классом без родителя будет owl:Thing
.
Шутки в сторону, вам нужно взять все классы в сигнатуре онтологии и,для каждого убедитесь, что он не отображается в аксиоме подкласса как подкласс (или, если это так, класс на другой стороне равен owl:Thing
.
Код будет выглядеть следующим образом:
OWLDataFactory df=OWLManager.getOWLDataFactory();
OWLClass thing=df.getOWLThing();
OWLOntology o = ...
o.classesInSignature()
// all asserted superclasses
.filter(c->o.subClassAxiomsForSubClass(c)
// skip owl:Thing
.filter(s->!thing.equals(s.getSuperClass()))
// only keep the ones with no superclass
.count()==0)
.forEach(System.out::println);
В этом примере выводятся IRI для этих классов.