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

edu.stanford.protege.webprotege.change.matcher.ClassMoveChangeMatcher Maven / Gradle / Ivy

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

import com.google.common.collect.ImmutableSet;
import edu.stanford.protege.webprotege.change.OntologyChange;
import edu.stanford.protege.webprotege.change.description.MovedClasses;
import edu.stanford.protege.webprotege.owlapi.OWLObjectStringFormatter;
import org.semanticweb.owlapi.model.AxiomType;
import org.semanticweb.owlapi.model.OWLSubClassOfAxiom;

import javax.inject.Inject;
import java.util.List;
import java.util.Optional;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 13/04/16
 */
public class ClassMoveChangeMatcher implements ChangeMatcher {

    private final OWLObjectStringFormatter formatter;

    @Inject
    public ClassMoveChangeMatcher(OWLObjectStringFormatter formatter) {
        this.formatter = formatter;
    }

    @Override
    public Optional getDescription(List changeData) {
        if(changeData.size() != 2) {
            return Optional.empty();
        }
        OntologyChange change0 = changeData.get(0);
        OntologyChange change1 = changeData.get(1);
        CandidateAxiomEdit edit = new CandidateAxiomEdit<>(change0, change1, AxiomType.SUBCLASS_OF);
        if (!edit.hasAddAndRemove()) {
            return Optional.empty();
        }
        OWLSubClassOfAxiom addAx = edit.getAddAxiom().get();
        OWLSubClassOfAxiom remAx = edit.getRemoveAxiom().get();
        if(!addAx.getSubClass().equals(remAx.getSubClass())) {
            return Optional.empty();
        }
        if(addAx.getSuperClass().isAnonymous()) {
            return Optional.empty();
        }
        if(remAx.getSuperClass().isAnonymous()) {
            return Optional.empty();
        }
        return Optional.of(ChangeSummary.get(MovedClasses.get(ImmutableSet.of(addAx.getSubClass().asOWLClass()),
                                                              ImmutableSet.of(remAx.getSuperClass().asOWLClass()),
                                                              addAx.getSuperClass().asOWLClass())));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy