diff --git a/src/main/java/org/stanford/ncbo/owlapi/wrapper/OntologyParser.java b/src/main/java/org/stanford/ncbo/owlapi/wrapper/OntologyParser.java index a10ee173..704c84cf 100644 --- a/src/main/java/org/stanford/ncbo/owlapi/wrapper/OntologyParser.java +++ b/src/main/java/org/stanford/ncbo/owlapi/wrapper/OntologyParser.java @@ -142,6 +142,22 @@ private boolean isOBO(OWLOntology ontology) { return isOBO; } + /** + * Get the source ontology IRI and add it to the target ontology + * + * @param fact + * @param sourceOnt + */ + private void addOntologyIRI(OWLDataFactory fact, OWLOntology sourceOnt) { + Optional ontologyIRI = sourceOnt.getOntologyID().getOntologyIRI(); + Optional versionIRI = sourceOnt.getOntologyID().getVersionIRI(); + if (ontologyIRI.isPresent()) { + OWLOntologyID newOntologyID = new OWLOntologyID(ontologyIRI, versionIRI); + SetOntologyID setOntologyID = new SetOntologyID(targetOwlOntology, newOntologyID); + this.targetOwlManager.applyChange(setOntologyID); + } + } + /** * Copies ontology-level annotation axioms from the source ontology to the target ontology. *

@@ -177,13 +193,14 @@ private void addGroundMetadata(IRI documentIRI, OWLDataFactory factory, OWLOntol } } - private boolean buildOWLOntology(boolean isOBO) { + private boolean buildOWLOntology(OWLOntology masterOntology, boolean isOBO) { Set allAxioms = new HashSet(); OWLDataFactory fact = sourceOwlManager.getOWLDataFactory(); try { targetOwlOntology = targetOwlManager.createOntology(); + addOntologyIRI(fact, masterOntology); } catch (OWLOntologyCreationException e) { log.error(e.getMessage()); parserLog.addError(ParserError.OWL_CREATE_ONTOLOGY_EXCEPTION, "Error buildOWLOntology" + e.getMessage()); @@ -532,7 +549,7 @@ private boolean internalParse() { boolean isOBO = isOBO(ontology); - if (!buildOWLOntology(isOBO)) return false; + if (!buildOWLOntology(ontology, isOBO)) return false; if (!serializeOntology()) return false;