All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.stanford.protege.webprotege.entity.EntityRenamer Maven / Gradle / Ivy

The newest version!
package edu.stanford.protege.webprotege.entity;

import edu.stanford.protege.webprotege.change.AddAxiomChange;
import edu.stanford.protege.webprotege.change.OntologyChange;
import edu.stanford.protege.webprotege.change.RemoveAxiomChange;
import edu.stanford.protege.webprotege.index.AxiomsByReferenceIndex;
import edu.stanford.protege.webprotege.index.ProjectOntologiesIndex;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.util.OWLObjectDuplicator;

import javax.annotation.Nonnull;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 2019-08-21
 */
public class EntityRenamer {

    @Nonnull
    private final OWLDataFactory dataFactory;

    @Nonnull
    private final ProjectOntologiesIndex projectOntologiesIndex;

    @Nonnull
    private final AxiomsByReferenceIndex axiomsByReferenceIndex;

    @Inject
    public EntityRenamer(@Nonnull OWLDataFactory dataFactory,
                         @Nonnull ProjectOntologiesIndex projectOntologiesIndex,
                         @Nonnull AxiomsByReferenceIndex axiomsByReferenceIndex) {
        this.dataFactory = dataFactory;
        this.projectOntologiesIndex = projectOntologiesIndex;
        this.axiomsByReferenceIndex = axiomsByReferenceIndex;
    }

    public List generateChanges(@Nonnull Map iriReplacementMap) {
        OWLObjectDuplicator duplicator = new OWLObjectDuplicator(iriReplacementMap, dataFactory);
        var changes = new ArrayList();
        projectOntologiesIndex.getOntologyIds().forEach(ontId -> {
            axiomsByReferenceIndex.getReferencingAxioms(iriReplacementMap.keySet(), ontId)
                                  .forEach(ax -> {
                                      var removeAxiom = RemoveAxiomChange.of(ontId, ax);
                                      changes.add(removeAxiom);
                                      OWLAxiom replacementAx = duplicator.duplicateObject(ax);
                                      var addAxiom = AddAxiomChange.of(ontId, replacementAx);
                                      changes.add(addAxiom);
                                  });
        });
        return changes;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy