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

edu.stanford.protege.webprotege.change.FindAndReplaceIRIPrefixChangeGenerator Maven / Gradle / Ivy

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



import edu.stanford.protege.webprotege.common.ChangeRequestId;
import edu.stanford.protege.webprotege.entity.EntityRenamer;
import edu.stanford.protege.webprotege.index.ProjectSignatureIndex;
import edu.stanford.protege.webprotege.owlapi.RenameMap;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLEntity;

import javax.annotation.Nonnull;
import java.util.Collection;
import java.util.HashMap;

import static com.google.common.base.Preconditions.checkNotNull;

/**
 * Author: Matthew Horridge
* Stanford University
* Bio-Medical Informatics Research Group
* Date: 11/09/2013 */ public class FindAndReplaceIRIPrefixChangeGenerator implements ChangeListGenerator> { @Nonnull private final String fromPrefix; @Nonnull private final String toPrefix; @Nonnull private final ProjectSignatureIndex projectSignatureIndex; @Nonnull private final EntityRenamer entityRenamer; @Nonnull private final ChangeRequestId changeRequestId; public FindAndReplaceIRIPrefixChangeGenerator(@Nonnull ChangeRequestId changeRequestId, @Nonnull String fromPrefix, @Nonnull String toPrefix, @Nonnull ProjectSignatureIndex projectSignatureIndex, @Nonnull EntityRenamer entityRenamer) { this.changeRequestId = changeRequestId; this.fromPrefix = checkNotNull(fromPrefix); this.toPrefix = checkNotNull(toPrefix); this.projectSignatureIndex = checkNotNull(projectSignatureIndex); this.entityRenamer = checkNotNull(entityRenamer); } @Override public ChangeRequestId getChangeRequestId() { return changeRequestId; } @Override public OntologyChangeList> generateChanges(ChangeGenerationContext context) { var builder = OntologyChangeList.>builder(); var renameMap = new HashMap(); projectSignatureIndex.getSignature() .filter(entity -> !entity.isBuiltIn()) .filter(this::beginsWithFromPrefix) .forEach(entity -> { var iri = entity.getIRI(); var toIri = IRI.create(toPrefix + iri.subSequence(fromPrefix.length(), iri.length())); renameMap.put(entity, toIri); }); var changeList = entityRenamer.generateChanges(renameMap); builder.addAll(changeList); return builder.build(renameMap.keySet()); } private boolean beginsWithFromPrefix(OWLEntity entity) { return entity.getIRI().toString().startsWith(fromPrefix); } @Override public Collection getRenamedResult(Collection result, RenameMap renameMap) { return result; } @Nonnull @Override public String getMessage(ChangeApplicationResult> result) { return String.format("Replaced IRI prefix <%s> with <%s>", fromPrefix, toPrefix); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy