Search in sources :

Example 1 with OWLOntologyChangeData

use of org.semanticweb.owlapi.change.OWLOntologyChangeData in project webprotege by protegeproject.

the class ProjectDocumentStore method saveOntologyChanges.

// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void saveOntologyChanges(List<OWLOntologyChange> rawChangeList) {
    // Put changes into a buffer
    try {
        writeLock.lock();
        try {
            ListMultimap<OWLOntology, OWLOntologyChange> changesByOntology = ArrayListMultimap.create();
            for (OWLOntologyChange change : rawChangeList) {
                changesByOntology.put(change.getOntology(), change);
            }
            for (OWLOntology ontology : changesByOntology.keySet()) {
                IRI docIRI = ontology.getOWLOntologyManager().getOntologyDocumentIRI(ontology);
                if (!"file".equalsIgnoreCase(docIRI.toURI().getScheme())) {
                    throw new RuntimeException("Document IRI is not a local file IRI");
                }
                List<OWLOntologyChange> ontologyChangeList = changesByOntology.get(ontology);
                List<OWLOntologyChangeData> infoList = new ArrayList<>();
                for (OWLOntologyChange change : ontologyChangeList) {
                    OWLOntologyChangeRecord changeRecord = change.getChangeRecord();
                    infoList.add(changeRecord.getData());
                }
                File file = new File(docIRI.toURI());
                BinaryOWLOntologyDocumentSerializer serializer = new BinaryOWLOntologyDocumentSerializer();
                serializer.appendOntologyChanges(file, new OntologyChangeDataList(infoList, System.currentTimeMillis(), BinaryOWLMetadata.emptyMetadata()));
            }
        } catch (IOException e) {
            logger.error("An error occurred whilst saving ontology changes: {}", e.getMessage(), e);
            e.printStackTrace();
        }
    } finally {
        writeLock.unlock();
    }
}
Also used : ArrayList(java.util.ArrayList) OntologyChangeDataList(org.semanticweb.binaryowl.change.OntologyChangeDataList) OWLOntologyCreationIOException(org.semanticweb.owlapi.io.OWLOntologyCreationIOException) BinaryOWLOntologyDocumentSerializer(org.semanticweb.binaryowl.BinaryOWLOntologyDocumentSerializer) OWLOntologyChangeRecord(org.semanticweb.owlapi.change.OWLOntologyChangeRecord) OWLOntologyChangeData(org.semanticweb.owlapi.change.OWLOntologyChangeData)

Example 2 with OWLOntologyChangeData

use of org.semanticweb.owlapi.change.OWLOntologyChangeData in project webprotege by protegeproject.

the class RevisionReverterChangeListGenerator method generateChanges.

@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);
}
Also used : OWLOntologyChangeRecord(org.semanticweb.owlapi.change.OWLOntologyChangeRecord) Revision(edu.stanford.bmir.protege.web.server.revision.Revision) OWLOntologyChange(org.semanticweb.owlapi.model.OWLOntologyChange) ArrayList(java.util.ArrayList) OWLOntologyManager(org.semanticweb.owlapi.model.OWLOntologyManager) OWLOntologyChangeData(org.semanticweb.owlapi.change.OWLOntologyChangeData)

Aggregations

ArrayList (java.util.ArrayList)2 OWLOntologyChangeData (org.semanticweb.owlapi.change.OWLOntologyChangeData)2 OWLOntologyChangeRecord (org.semanticweb.owlapi.change.OWLOntologyChangeRecord)2 Revision (edu.stanford.bmir.protege.web.server.revision.Revision)1 BinaryOWLOntologyDocumentSerializer (org.semanticweb.binaryowl.BinaryOWLOntologyDocumentSerializer)1 OntologyChangeDataList (org.semanticweb.binaryowl.change.OntologyChangeDataList)1 OWLOntologyCreationIOException (org.semanticweb.owlapi.io.OWLOntologyCreationIOException)1 OWLOntologyChange (org.semanticweb.owlapi.model.OWLOntologyChange)1 OWLOntologyManager (org.semanticweb.owlapi.model.OWLOntologyManager)1