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

edu.stanford.protege.webprotege.frame.PropertyValueDescriptor Maven / Gradle / Ivy

The newest version!
package edu.stanford.protege.webprotege.frame;

import edu.stanford.protege.webprotege.entity.*;
import org.semanticweb.owlapi.model.OWLAxiom;

import java.util.Optional;
import java.util.Set;

/**
 * @author Matthew Horridge, Stanford University, Bio-Medical Informatics Research Group, Date: 27/02/2014
 *
 */
public class PropertyValueDescriptor {

    private final OWLPropertyData property;

    private final OWLPrimitiveData value;

    private State state = State.ASSERTED;

    private final boolean mostSpecific;

    private final Set additionalAxioms;

    public PropertyValueDescriptor(OWLPropertyData property, OWLPrimitiveData value, State state, boolean mostSpecific, Set additionalAxioms) {
        this.property = property;
        this.value = value;
        this.state = state;
        this.mostSpecific = mostSpecific;
        this.additionalAxioms = additionalAxioms;
    }

    @Override
    public int hashCode() {
        return "PropertyValueDescriptor".hashCode() + property.hashCode() + value.hashCode() + state.hashCode() + (mostSpecific ? 1 : 0);
    }

    @Override
    public boolean equals(Object o) {
        if(o == this) {
            return true;
        }
        if(!(o instanceof PropertyValueDescriptor)) {
            return false;
        }
        PropertyValueDescriptor other = (PropertyValueDescriptor) o;
        return this.property.equals(other.property) &&
                this.value.equals(other.value) &&
                this.state == other.state &&
                this.mostSpecific == other.mostSpecific;
    }

    public State getState() {
        return state;
    }

    public OWLPropertyData getProperty() {
        return property;
    }

    public OWLPrimitiveData getValue() {
        return value;
    }

    public boolean isMostSpecific() { return mostSpecific; }

    public Set getAdditionalAxioms() {
        return additionalAxioms;
    }

    public Optional toPropertyValue() {
            return property.accept(new OWLPrimitiveDataVisitorAdapter, RuntimeException>() {
                @Override
                protected Optional getDefaultReturnValue() {
                    return Optional.empty();
                }

                @Override
                public Optional visit(final OWLObjectPropertyData propertyData) throws RuntimeException {
                    return value.accept(new OWLPrimitiveDataVisitorAdapter, RuntimeException>() {
                        @Override
                        public Optional visit(OWLClassData data) throws RuntimeException {
                            return Optional.of(PropertyClassValue.get(propertyData, data, state));
                        }

                        @Override
                        public Optional visit(OWLNamedIndividualData data) throws RuntimeException {
                            return Optional.of(PropertyIndividualValue.get(propertyData, data, state));
                        }
                    });
                }

                @Override
                public Optional visit(final OWLDataPropertyData propertyData) throws RuntimeException {
                    return value.accept(new OWLPrimitiveDataVisitorAdapter, RuntimeException>() {
                        @Override
                        public Optional visit(OWLDatatypeData data) throws RuntimeException {
                            return Optional.of(PropertyDatatypeValue.get(propertyData, data, state));
                        }

                        @Override
                        public Optional visit(OWLLiteralData data) throws RuntimeException {
                            return Optional.of(PropertyLiteralValue.get(propertyData, data, state));
                        }
                    });
                }

                @Override
                public Optional visit(final OWLAnnotationPropertyData propertyData) throws RuntimeException {
                    return value.accept(new OWLPrimitiveDataVisitorAdapter, RuntimeException>() {
                        @Override
                        public Optional visit(OWLLiteralData data) throws RuntimeException {
                            return Optional.of(PropertyAnnotationValue.get(propertyData, data, state));
                        }

                        @Override
                        public Optional visit(IRIData data) throws RuntimeException {
                            return Optional.of(PropertyAnnotationValue.get(propertyData, data, state));
                        }

                        @Override
                        public Optional visit(OWLClassData data) throws RuntimeException {
                            return Optional.of(PropertyAnnotationValue.get(propertyData, data, state));
                        }

                        @Override
                        public Optional visit(OWLObjectPropertyData data) throws RuntimeException {
                            return Optional.of(PropertyAnnotationValue.get(propertyData, data, state));
                        }

                        @Override
                        public Optional visit(OWLDataPropertyData data) throws RuntimeException {
                            return Optional.of(PropertyAnnotationValue.get(propertyData, data, state));
                        }

                        @Override
                        public Optional visit(OWLAnnotationPropertyData data) throws RuntimeException {
                            return Optional.of(PropertyAnnotationValue.get(propertyData, data, state));
                        }

                        @Override
                        public Optional visit(OWLNamedIndividualData data) throws RuntimeException {
                            return Optional.of(PropertyAnnotationValue.get(propertyData, data, state));
                        }

                        @Override
                        public Optional visit(OWLDatatypeData data) throws RuntimeException {
                            return Optional.of(PropertyAnnotationValue.get(propertyData, data, state));
                        }
                    });
                }
            });
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy