in core/src/main/java/org/apache/sdap/mudrod/ontology/process/OwlParser.java [62:108]
private void parseClass(OntClass cls, List<Object> occurs, int depth) {
//dont deal with anonymous classes
if (cls.isAnon()) {
return;
}
//add cls to Ontology searchterms
//list labels
Iterator<?> labelIter = cls.listLabels(null);
//if has no labels
if (!labelIter.hasNext()) {
//add rdf:ID as a label
cls.addLabel(rdfidToLabel(cls.getLocalName()), null);
}
//reset the label iterator
labelIter = cls.listLabels(null);
while (labelIter.hasNext()) {
Literal l = (Literal) labelIter.next();
((LocalOntology) ont).addSearchTerm(l.toString(), cls);
}
// recurse to the next level down
if (cls.canAs(OntClass.class) && !occurs.contains(cls)) {
//list subclasses
for (Iterator<?> i = cls.listSubClasses(true); i.hasNext(); ) {
OntClass sub = (OntClass) i.next();
// we push this expression on the occurs list before we recurse
occurs.add(cls);
parseClass(sub, occurs, depth + 1);
occurs.remove(cls);
}
//list instances
for (Iterator<?> i = cls.listInstances(); i.hasNext(); ) {
//add search terms for each instance
//list labels
Individual individual = (Individual) i.next();
for (Iterator<?> j = individual.listLabels(null); j.hasNext(); ) {
Literal l = (Literal) j.next();
((LocalOntology) ont).addSearchTerm(l.toString(), individual);
}
}
}
}