Package edu.stanford.bmir.protege.web.server.change

Source Code of edu.stanford.bmir.protege.web.server.change.FindAndReplaceIRIPrefixChangeGenerator

package edu.stanford.bmir.protege.web.server.change;

import edu.stanford.bmir.protege.web.server.owlapi.OWLAPIProject;
import edu.stanford.bmir.protege.web.server.owlapi.RenameMap;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.model.OWLOntologyChange;
import org.semanticweb.owlapi.util.OWLEntityRenamer;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

/**
* Author: Matthew Horridge<br>
* Stanford University<br>
* Bio-Medical Informatics Research Group<br>
* Date: 11/09/2013
*/
public class FindAndReplaceIRIPrefixChangeGenerator implements ChangeListGenerator<Void> {

    private String fromPrefix;

    private String toPrefix;

    public FindAndReplaceIRIPrefixChangeGenerator(String fromPrefix, String toPrefix) {
        this.fromPrefix = checkNotNull(fromPrefix);
        this.toPrefix = checkNotNull(toPrefix);
    }

    @Override
    public OntologyChangeList<Void> generateChanges(OWLAPIProject project, ChangeGenerationContext context) {
        OntologyChangeList.Builder<Void> builder = OntologyChangeList.builder();
        Map<OWLEntity, IRI> renameMap = new HashMap<OWLEntity, IRI>();
        for(OWLEntity entity : project.getRootOntology().getSignature(true)) {
            if(!entity.isBuiltIn()) {
                IRI iri = entity.getIRI();
                String iriString = iri.toString();
                if(iriString.startsWith(fromPrefix)) {
                    StringBuilder sb = new StringBuilder(toPrefix);
                    sb.append(iri.subSequence(fromPrefix.length(), iri.length()));
                    IRI toIRI = IRI.create(sb.toString());
                    renameMap.put(entity, toIRI);
                }
            }
        }
        OWLEntityRenamer entityRenamer = new OWLEntityRenamer(project.getRootOntology().getOWLOntologyManager(), project.getRootOntology().getImportsClosure());
        List<OWLOntologyChange> changeList = entityRenamer.changeIRI(renameMap);
        builder.addAll(changeList);
        return builder.build();
    }

    @Override
    public Void getRenamedResult(Void result, RenameMap renameMap) {
        return result;
    }
}
TOP

Related Classes of edu.stanford.bmir.protege.web.server.change.FindAndReplaceIRIPrefixChangeGenerator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.