
edu.stanford.protege.webprotege.entity.IRIData Maven / Gradle / Ivy
package edu.stanford.protege.webprotege.entity;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.google.auto.value.AutoValue;
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.IRI;
import org.semanticweb.owlapi.model.OWLAnnotationValue;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.model.OWLEntityVisitorEx;
import javax.annotation.Nonnull;
import java.util.Objects;
import java.util.Optional;
/**
* Author: Matthew Horridge
* Stanford University
* Bio-Medical Informatics Research Group
* Date: 06/12/2012
*/
@AutoValue
@JsonTypeName("IRIData")
public abstract class IRIData extends OWLPrimitiveData {
public static IRIData get(@Nonnull IRI iri, @Nonnull ImmutableMap shortForms) {
return get(iri, toShortFormList(shortForms));
}
public static IRIData get(IRI iri,
ImmutableList shortForms) {
return new AutoValue_IRIData(shortForms, false, iri);
}
public static IRIData get(IRI iri,
ImmutableList shortForms,
boolean deprecated) {
return new AutoValue_IRIData(shortForms, deprecated, iri);
}
@JsonCreator
private static IRIData get(@JsonProperty("iri") String iri,
@JsonProperty(value = "shortForms", defaultValue = "[]") ImmutableList shortForms,
@JsonProperty(value = "deprecated", defaultValue = "false") boolean deprecated) {
return new AutoValue_IRIData(Objects.requireNonNullElse(shortForms, ImmutableList.of()),
deprecated,
IRI.create(iri));
}
@Nonnull
@Override
public abstract IRI getObject();
@JsonIgnore
public IRI getIri() {
return getObject();
}
@JsonProperty("iri")
private String getIriString() {
return getIri().toString();
}
@Override
public PrimitiveType getType() {
return PrimitiveType.IRI;
}
@Override
public R accept(OWLPrimitiveDataVisitor visitor) throws E {
return visitor.visit(this);
}
@Override
public R accept(OWLEntityVisitorEx visitor, R defaultValue) {
return defaultValue;
}
@Override
public String getBrowserText() {
return getObject().toString();
}
@JsonIgnore
public boolean isHTTPLink() {
return "http".equalsIgnoreCase(getObject().getScheme()) || "https".equalsIgnoreCase(getObject().getScheme());
}
@JsonIgnore
public boolean isWikipediaLink() {
return isHTTPLink() && getObject().toString().contains("wikipedia.org/wiki/");
}
@JsonIgnore
public String getUnquotedBrowserText() {
return getObject().toString();
}
@Override
public Optional asAnnotationValue() {
return Optional.of(getObject());
}
@Override
public Optional asEntity() {
return Optional.empty();
}
@Override
public Optional asIRI() {
return Optional.of(getObject());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy