
edu.stanford.protege.webprotege.entity.OWLPrimitiveData Maven / Gradle / Ivy
package edu.stanford.protege.webprotege.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import edu.stanford.protege.webprotege.common.DictionaryLanguage;
import edu.stanford.protege.webprotege.common.ShortForm;
import org.semanticweb.owlapi.model.*;
import javax.annotation.Nonnull;
import java.util.Optional;
import java.util.function.Supplier;
import static com.google.common.collect.ImmutableList.toImmutableList;
import static com.google.common.collect.ImmutableMap.toImmutableMap;
/**
* Author: Matthew Horridge
* Stanford University
* Bio-Medical Informatics Research Group
* Date: 03/12/2012
*
* A {@link OWLPrimitiveData} object wraps either an {@link OWLEntity}, an {@link OWLLiteral} or an
* {@link IRI}.
*
*/
@JsonSubTypes({
@Type(OWLClassData.class),
@Type(OWLObjectPropertyData.class),
@Type(OWLDataPropertyData.class),
@Type(OWLAnnotationPropertyData.class),
@Type(OWLNamedIndividualData.class),
@Type(OWLDatatypeData.class),
@Type(IRIData.class),
@Type(OWLLiteralData.class)
})
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME)
public abstract class OWLPrimitiveData extends ObjectData implements Comparable {
protected static ImmutableList toShortFormList(@Nonnull ImmutableMap shortForms) {
return shortForms.entrySet().stream().map(e -> ShortForm.get(e.getKey(), e.getValue())).collect(
toImmutableList());
}
public Optional asIRI() {
return Optional.empty();
}
@Nonnull
@Override
@JsonIgnore
public abstract OWLPrimitive getObject();
@JsonIgnore
public ImmutableMap getShortFormsMap() {
return getShortForms()
.stream()
.collect(toImmutableMap(ShortForm::getDictionaryLanguage, ShortForm::getShortForm));
}
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public abstract ImmutableList getShortForms();
/**
* A convenience method that gets the first short form for this object
*/
@JsonIgnore
public abstract String getBrowserText();
protected String getFirstShortForm(Supplier defaultValue) {
return getShortForms()
.stream()
.findFirst()
.map(ShortForm::getShortForm)
.orElseGet(defaultValue);
}
public abstract R accept(OWLPrimitiveDataVisitor visitor) throws E;
public abstract R accept(OWLEntityVisitorEx visitor, R defaultValue);
@JsonIgnore
public abstract PrimitiveType getType();
@JsonIgnore
public boolean isOWLEntity() {
return getObject() instanceof OWLEntity;
}
@JsonIgnore
public boolean isIRI() {
return getObject() instanceof IRI;
}
@JsonIgnore
public boolean isOWLLiteral() {
return getObject() instanceof OWLLiteral;
}
public abstract Optional asAnnotationValue();
public abstract Optional asEntity();
public Optional asLiteral() {
return Optional.empty();
}
@Override
public int compareTo(OWLPrimitiveData o) {
return getBrowserText().compareToIgnoreCase(o.getBrowserText());
}
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
public abstract boolean isDeprecated();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy