edu.stanford.protege.webprotege.change.matcher.PropertyFiller Maven / Gradle / Ivy
The newest version!
package edu.stanford.protege.webprotege.change.matcher;
import org.semanticweb.owlapi.model.*;
import javax.annotation.Nonnull;
import java.util.Optional;
/**
* Matthew Horridge
* Stanford Center for Biomedical Informatics Research
* 13 Mar 2017
*/
public class PropertyFiller {
private static final PropertyExtactor PROPERTY_EXTACTOR = new PropertyExtactor();
private static final FillerExtractor FILLER_EXTRACTOR = new FillerExtractor();
private final OWLClassExpression classExpression;
private final OWLObject subject;
public PropertyFiller(@Nonnull OWLObject subject,
@Nonnull OWLClassExpression classExpression) {
this.classExpression = classExpression;
this.subject = subject;
}
@Nonnull
public OWLObject getSubject() {
return subject;
}
@Nonnull
public Optional getProperty() {
return classExpression.accept(PROPERTY_EXTACTOR);
}
@Nonnull
public Optional getFiller() {
return classExpression.accept(FILLER_EXTRACTOR);
}
public boolean isPropertyAndFillerPresent() {
return getProperty().isPresent() && getFiller().isPresent();
}
private static class PropertyExtactor implements OWLClassExpressionVisitorEx> {
@Nonnull
@Override
public Optional visit(@Nonnull OWLClass ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectIntersectionOf ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectUnionOf ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectComplementOf ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectSomeValuesFrom ce) {
if (!ce.getProperty().isAnonymous()) {
return Optional.of(ce.getProperty().asOWLObjectProperty());
}
else {
return Optional.empty();
}
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectAllValuesFrom ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectHasValue ce) {
if (!ce.getProperty().isAnonymous()) {
return Optional.of(ce.getProperty().asOWLObjectProperty());
}
else {
return Optional.empty();
}
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectMinCardinality ce) {
if (!ce.getProperty().isAnonymous() && ce.getCardinality() == 1) {
return Optional.of(ce.getProperty().asOWLObjectProperty());
}
else {
return Optional.empty();
}
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectExactCardinality ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectMaxCardinality ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectHasSelf ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectOneOf ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataSomeValuesFrom ce) {
if (!ce.getProperty().isAnonymous()) {
return Optional.of(ce.getProperty().asOWLDataProperty());
}
else {
return Optional.empty();
}
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataAllValuesFrom ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataHasValue ce) {
if (!ce.getProperty().isAnonymous()) {
return Optional.of(ce.getProperty().asOWLDataProperty());
}
else {
return Optional.empty();
}
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataMinCardinality ce) {
if (!ce.getProperty().isAnonymous() && ce.getCardinality() == 1) {
return Optional.of(ce.getProperty().asOWLDataProperty());
}
else {
return Optional.empty();
}
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataExactCardinality ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataMaxCardinality ce) {
return Optional.empty();
}
}
private static class FillerExtractor implements OWLClassExpressionVisitorEx> {
@Nonnull
@Override
public Optional visit(@Nonnull OWLClass ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectIntersectionOf ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectUnionOf ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectComplementOf ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectSomeValuesFrom ce) {
return Optional.of(ce.getFiller());
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectAllValuesFrom ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectHasValue ce) {
return Optional.of(ce.getFiller());
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectMinCardinality ce) {
if (ce.getCardinality() == 1) {
return Optional.of(ce.getFiller());
}
else {
return Optional.empty();
}
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectExactCardinality ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectMaxCardinality ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectHasSelf ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLObjectOneOf ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataSomeValuesFrom ce) {
return Optional.of(ce.getFiller());
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataAllValuesFrom ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataHasValue ce) {
return Optional.of(ce.getFiller());
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataMinCardinality ce) {
if (ce.getCardinality() == 1) {
return Optional.of(ce.getFiller());
}
else {
return Optional.empty();
}
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataExactCardinality ce) {
return Optional.empty();
}
@Nonnull
@Override
public Optional visit(@Nonnull OWLDataMaxCardinality ce) {
return Optional.empty();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy