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

edu.stanford.protege.webprotege.entity.OWLPrimitiveData Maven / Gradle / Ivy

There is a newer version: 0.9.6-WHO
Show newest version
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