@Override public OntologyChangeList<Boolean> generateChanges(ChangeGenerationContext context) { Optional<Revision> revision = revisionManager.getRevision(revisionNumber); if(!revision.isPresent()) { return OntologyChangeList.<Boolean>builder().build(false); } List<OWLOntologyChange> changes = new ArrayList<>(); for(OWLOntologyChangeRecord record : revision.get()) { OWLOntologyChangeData revertingChangeData = changeDataReverter.getRevertingChange(record); OWLOntologyChangeRecord revertingRecord = new OWLOntologyChangeRecord(record.getOntologyID(), revertingChangeData); OWLOntologyManager manager = rootOntology.getOWLOntologyManager(); OWLOntologyChange change = revertingRecord.createOntologyChange(manager); changes.add(0, change); } return OntologyChangeList.<Boolean>builder().addAll(changes).build(true); }
@Nonnull @Override public OWLOntologyManager getOntologyManagerForRevision(@Nonnull RevisionNumber revision) { try { OWLOntologyManager manager = WebProtegeOWLManager.createOWLOntologyManager(); final OWLOntologyID singletonOntologyId = new OWLOntologyID(); for (Revision rev : revisionStore.getRevisions()) { if (rev.getRevisionNumber().compareTo(revision) <= 0) { for (OWLOntologyChangeRecord record : rev) { // Anonymous ontologies are not handled nicely at all. OWLOntologyChangeRecord normalisedChangeRecord = normaliseChangeRecord(record, singletonOntologyId); OWLOntologyID ontologyId = normalisedChangeRecord.getOntologyID(); if (!manager.contains(ontologyId)) { manager.createOntology(ontologyId); } OWLOntologyChange change = normalisedChangeRecord.createOntologyChange(manager); manager.applyChange(change); } } } if (manager.getOntologies().isEmpty()) { // No revisions exported. Just create an empty ontology manager.createOntology(); } return manager; } catch (OWLOntologyCreationException e) { throw new RuntimeException("Problem creating ontology: " + e); } }