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

edu.stanford.protege.webprotege.bulkop.NewAnnotationData Maven / Gradle / Ivy

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

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.auto.value.AutoValue;
import org.semanticweb.owlapi.model.OWLAnnotationProperty;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Optional;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 27 Sep 2018
 */
@AutoValue

public abstract class NewAnnotationData {

    @JsonCreator
    public static NewAnnotationData get(@JsonProperty("property") @Nonnull Optional property,
                                        @JsonProperty("value") @Nonnull Optional value,
                                        @JsonProperty("languageTag") @Nonnull Optional languageTag) {
        return new AutoValue_NewAnnotationData(property.orElse(null),
                                           value.orElse(null),
                                           languageTag.orElse(null));
    }

    @Nullable
    protected abstract OWLAnnotationProperty property();

    @Nonnull
    public Optional getProperty() {
        return Optional.ofNullable(property());
    }

    @Nullable
    protected abstract String value();

    @Nonnull
    public Optional getValue() {
        return Optional.ofNullable(value());
    }

    @Nullable
    protected abstract String languageTag();

    @Nonnull
    public Optional getLanguageTag() {
        return Optional.ofNullable(languageTag());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy