}
protected Registry populateRegistry(OWLOntology registry) throws RegistryContentException {
log.debug("Populating registry content from ontology {}", registry);
Registry reg = riFactory.createRegistry(registry);
Set<OWLOntology> closure = registry.getOWLOntologyManager().getImportsClosure(registry);
// Just scan all individuals. Recurse in case the registry imports more registries.
for (OWLIndividual ind : registry.getIndividualsInSignature(true)) {
// We do not allow anonymous registry items.
if (ind.isAnonymous()) continue;
RegistryItem item = null;
// IRI id = ind.asOWLNamedIndividual().getIRI();
Type t = RegistryUtils.getType(ind, closure);
if (t == null) {
log.warn("Undetermined type for registry ontology individual {}", ind);
continue;
}
switch (t) {
case LIBRARY:
log.debug("Found library for individual {}", ind);
// Create the library and attach to parent and children
item = populateLibrary(ind.asOWLNamedIndividual(), closure);
reg.addChild(item);
item.addRegistryContentListener(this);
break;
case ONTOLOGY:
log.debug("Found ontology for individual {}", ind);
// Create the ontology and attach to parent
item = populateOntology(ind.asOWLNamedIndividual(), closure);
item.addRegistryContentListener(this);
// We don't know where to attach it within this method.
break;
default:
break;
}
}
try {
reg.addRegistryContentListener(this);
log.info("Registry {} added.", reg.getIRI());
population.put(reg.getIRI(), reg);
} catch (Exception e) {
log.error("Invalid identifier for library item " + reg, e);
return null;
}
return reg;