![JAR search and dependency download from the Maven repository](/logo.png)
edu.stanford.protege.webprotege.change.matcher.SubClassOfEditChangeMatcher Maven / Gradle / Ivy
The newest version!
package edu.stanford.protege.webprotege.change.matcher;
import edu.stanford.protege.webprotege.change.OntologyChange;
import edu.stanford.protege.webprotege.change.description.EditedRelationshipValue;
import edu.stanford.protege.webprotege.change.description.SwitchedRelationshipProperty;
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 Mar 2017
*/
public class SubClassOfEditChangeMatcher implements ChangeMatcher {
@Inject
public SubClassOfEditChangeMatcher() {
}
@Override
public Optional getDescription(List changeData) {
if (changeData.size() != 2) {
return Optional.empty();
}
var change0 = changeData.get(0);
var 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();
PropertyFiller extractorAdd = new PropertyFiller(addAx.getSubClass(),
addAx.getSuperClass());
PropertyFiller extractorRem = new PropertyFiller(remAx.getSubClass(),
remAx.getSuperClass());
if (!extractorAdd.isPropertyAndFillerPresent() || !extractorRem.isPropertyAndFillerPresent()) {
return Optional.empty();
}
var addedProp = extractorAdd.getProperty().get();
var removedProp = extractorRem.getProperty().get();
var addedFiller = extractorAdd.getFiller().get();
var removedFiller = extractorRem.getFiller().get();
if (addedFiller.equals(removedFiller)) {
if (addedProp.equals(removedProp)) {
return Optional.empty();
}
else {
return Optional.of(ChangeSummary.get(SwitchedRelationshipProperty.get(
addAx.getSubClass(),
removedProp,
addedProp,
addedFiller
)));
}
}
return Optional.of(ChangeSummary.get(EditedRelationshipValue.get(addAx.getSubClass(),
addedProp,
removedFiller,
addedFiller)));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy