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

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