private OWLOntologyChangeRecord normaliseChangeRecord(OWLOntologyChangeRecord changeRecord, OWLOntologyID singletonAnonymousId) { OWLOntologyID ontologyID = changeRecord.getOntologyID(); if (ontologyID.isAnonymous()) { return new OWLOntologyChangeRecord(singletonAnonymousId, changeRecord.getData()); } else { // As is return changeRecord; } }
@Override public String toString() { return getName() + '(' + ontologyID + ' ' + data + ')'; }
/** * Gets a {@link OWLOntologyChangeRecord} that is derived from this {@code OWLOntologyChange}'s * {@link OWLOntologyID} and it's {@link OWLOntologyChangeData}. * * @return An {@link OWLOntologyChangeRecord} containing an {@link OWLOntologyID} equal to the * {@link OWLOntologyID} of this {@code OWLOntologyChange}'s {@link OWLOntology}. Not * {@code * null} . */ public OWLOntologyChangeRecord getChangeRecord() { return new OWLOntologyChangeRecord(ont.getOntologyID(), getChangeData()); }
@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); }
@Override public Boolean visit(RemoveImportData data) throws RuntimeException { OWLOntologyID ontologyID = object.getOntologyID(); return isSameAsSubject(ontologyID); } });
@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); } }
/** * Gets a {@link OWLOntologyChangeRecord} that is derived from this {@code OWLOntologyChange}'s * {@link OWLOntologyID} and it's {@link OWLOntologyChangeData}. * * @return An {@link OWLOntologyChangeRecord} containing an {@link OWLOntologyID} equal to the * {@link OWLOntologyID} of this {@code OWLOntologyChange}'s {@link OWLOntology}. Not * {@code * null} . */ public OWLOntologyChangeRecord getChangeRecord() { return new OWLOntologyChangeRecord(ont.getOntologyID(), getChangeData()); }
private DiffOperation getDiffOperation(OWLOntologyChangeRecord changeRecord) { return changeRecord.getData().accept(changeOperationVisitor); } }
@Override public OWLOntologyChangeData visit(SetOntologyIDData data) throws RuntimeException { return new SetOntologyIDData(record.getOntologyID()); }
/** * Gets a {@link OWLOntologyChangeRecord} that is derived from this {@code OWLOntologyChange}'s * {@link OWLOntologyID} and it's {@link OWLOntologyChangeData}. * * @return An {@link OWLOntologyChangeRecord} containing an {@link OWLOntologyID} equal to the * {@link OWLOntologyID} of this {@code OWLOntologyChange}'s {@link OWLOntology}. Not * {@code * null} . */ public OWLOntologyChangeRecord getChangeRecord() { return new OWLOntologyChangeRecord(ont.getOntologyID(), getChangeData()); }
@Nonnull private static ImmutableList<OWLOntologyChangeRecord> internChangeRecords(OntologyChangeRecordList list, final Interner<OWLAxiom> axiomInterner) { var changeRecords = list.getChangeRecords(); var internedChangeRecordsListBuilder = ImmutableList.<OWLOntologyChangeRecord>builder(); var changeDataInterner = new ChangeDataInterner(axiomInterner); for(var chanceRecord : changeRecords) { var ontologyId = chanceRecord.getOntologyID(); var changeData = chanceRecord.getData(); var internedChangeData = changeData.accept(changeDataInterner); if(internedChangeData == changeData) { internedChangeRecordsListBuilder.add(chanceRecord); } else { OWLOntologyChangeRecord rec = new OWLOntologyChangeRecord(ontologyId, internedChangeData); internedChangeRecordsListBuilder.add(rec); } } return internedChangeRecordsListBuilder.build(); }
@Override public String toString() { return getName() + '(' + ontologyID + ' ' + data + ')'; }
private static RevisionDetails.ChangeDetails toChangeDetails(@Nonnull OWLOntologyChangeRecord record) { return record.getData().accept(MAPPING_VISITOR); }
@Override public Boolean visit(AddOntologyAnnotationData data) throws RuntimeException { OWLOntologyID ontologyID = object.getOntologyID(); return isSameAsSubject(ontologyID); }
/** * A convenience method that creates an {@code OWLOntologyChangeRecord} by * deriving data from an {@link OWLOntologyChange} object. * * @param change The {@link OWLOntologyChange} object. * @return instance of OntologychangeRecord */ public static OWLOntologyChangeRecord createFromOWLOntologyChange(OWLOntologyChange change) { checkNotNull(change, "change must not be null"); OWLOntologyID ontologyId = change.getOntology().getOntologyID(); OWLOntologyChangeData data = change.getChangeData(); return new OWLOntologyChangeRecord(ontologyId, data); }
@Override public String toString() { return getName() + '(' + ontologyID + ' ' + data + ')'; }
private static Optional<IRI> getAxiom(OWLOntologyChangeRecord rec) { OWLOntologyChangeData data = rec.getData(); if (data instanceof AxiomChangeData) { OWLAxiom axiom = ((AxiomChangeData) data).getAxiom(); return getSubject(axiom); } else { return Optional.empty(); } }
@Override public Boolean visit(RemoveOntologyAnnotationData data) throws RuntimeException { OWLOntologyID ontologyID = object.getOntologyID(); return isSameAsSubject(ontologyID); }
private ImmutableList<OWLOntologyChangeRecord> getInitialChangeRecords(OWLOntologyManager rootOntologyManager) { // TODO: Separate change generator ImmutableList.Builder<OWLOntologyChangeRecord> changeRecordList = ImmutableList.builder(); for (OWLOntology ont : rootOntologyManager.getOntologies()) { rootOntologyManager.setOntologyFormat(ont, new BinaryOWLOntologyDocumentFormat()); for (OWLAxiom axiom : ont.getAxioms()) { changeRecordList.add(new OWLOntologyChangeRecord(ont.getOntologyID(), new AddAxiomData(axiom))); } for (OWLAnnotation annotation : ont.getAnnotations()) { changeRecordList.add(new OWLOntologyChangeRecord(ont.getOntologyID(), new AddOntologyAnnotationData(annotation))); } for (OWLImportsDeclaration importsDeclaration : ont.getImportsDeclarations()) { changeRecordList.add(new OWLOntologyChangeRecord(ont.getOntologyID(), new AddImportData(importsDeclaration))); } } return changeRecordList.build(); }