Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
package org.semanticweb.owlapi.model;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
/**
* Convenience interface for classes that have an annotation value referred - i.e., annotation
* assertion axioms, annotations and annotation values. The annotation value referred is the main
* annotation value, nested annotations or annotations on axioms are excluded.
*
* The purpose of these methods is providing stream friendly shortcuts to operate on literals, iris
* and anonymous individuals used as values for annotations.
*/
public interface HasAnnotationValue {
/**
* @return for IRI values, the IRI, else an empty Optional
*/
default Optional iriValue() {
return Optional.ofNullable(annotationValue().asIRI().orNull());
}
/**
* @return for literal values, the literal, else an empty Optional
*/
default Optional literalValue() {
return Optional.ofNullable(annotationValue().asLiteral().orNull());
}
/**
* @return for anonymous individual values, the individual, else an empty Optional
*/
default Optional anonymousIndividualValue() {
return Optional.ofNullable(annotationValue().asAnonymousIndividual().orNull());
}
/**
* @return the annotation value itself; this method allows OWLAnnotationAssertionAxiom and
* OWLAnnotation to use the default methods rather than replicate the methods. For
* OWLAnnotationValue instances, the value returned is the object itself.
*/
OWLAnnotationValue annotationValue();
/**
* Execute the consumer if and only if the annotation value is of the specified type and the
* predicate evaluates to true; the alternative runnable is executed if the predicate does not
* match or the type does not match (only once if both conditions do not match).
*
* @param type of input
* @param witness class for which predicate and consumer should be executed
* @param p predicate to test
* @param c consumer to apply
* @param r runnable to execute if the predicate does not match or the annotation type does not
* match
*/
default void when(Class witness, Predicate p,
Consumer c, Runnable r) {
OWLAnnotationValue t = annotationValue();
if (witness.isInstance(t)) {
T av = witness.cast(t);
if (p.test(av)) {
c.accept(av);
} else {
r.run();
}
} else {
r.run();
}
}
/**
* Apply the function if and only if the annotation value is of the specified type and the
* predicate evaluates to true; the alternative supplier is executed if the predicate does not
* match or the type does not match (only once if both conditions do not match).
*
* @param type to match
* @param return type
* @param witness class for which predicate and function should be executed
* @param p predicate to test
* @param f function to apply
* @param s supplier to execute if the predicate does not match or the annotation type does not
* match
* @return function result or supplier result, depending on predicate evaluation
*/
default O map(Class witness, Predicate p,
Function f, Supplier s) {
OWLAnnotationValue t = annotationValue();
if (witness.isInstance(t)) {
T av = witness.cast(t);
if (p.test(av)) {
return f.apply(av);
} else {
return s.get();
}
}
return s.get();
}
/**
* Apply the function if and only if the annotation value is of the specified type and the
* predicate evaluates to true; the default value is returned if the predicate does not match or
* the type does not match.
*
* @param type to match
* @param return type
* @param witness class for which predicate and function should be executed
* @param p predicate to test
* @param f function to apply
* @param defaultValue default value to return if the predicate does not match or the annotation
* type does not match
* @return function result or default value, depending on predicate evaluation
*/
default O map(Class witness, Predicate p,
Function f, O defaultValue) {
OWLAnnotationValue t = annotationValue();
if (witness.isInstance(t)) {
T av = witness.cast(t);
if (p.test(av)) {
return f.apply(av);
} else {
return defaultValue;
}
}
return defaultValue;
}
/**
* @param literalConsumer consumer to run if the value is a literal
*/
default void ifLiteral(Consumer literalConsumer) {
OWLAnnotationValue value = annotationValue();
if (value.isLiteral()) {
literalConsumer.accept((OWLLiteral) value);
}
}
/**
* @param literalConsumer consumer to run if the value is a literal
* @param elseAction runnable to run if the value iS not a literal
*/
default void ifLiteralOrElse(Consumer literalConsumer, Runnable elseAction) {
OWLAnnotationValue value = annotationValue();
if (value.isLiteral()) {
literalConsumer.accept((OWLLiteral) value);
} else {
elseAction.run();
}
}
/**
* @param iriConsumer consumer to run if the value is an IRI
*/
default void ifIri(Consumer iriConsumer) {
OWLAnnotationValue value = annotationValue();
if (value.isIRI()) {
iriConsumer.accept((IRI) value);
}
}
/**
* @param iriConsumer consumer to run if the value is an IRI
* @param elseAction runnable to run if the value is not an IRI
*/
default void ifIriOrElse(Consumer iriConsumer, Runnable elseAction) {
OWLAnnotationValue value = annotationValue();
if (value.isIRI()) {
iriConsumer.accept((IRI) value);
} else {
elseAction.run();
}
}
/**
* @param anonConsumer consumer to run if the value is an anonymous individual
*/
default void ifAnonymousIndividual(Consumer anonConsumer) {
OWLAnnotationValue value = annotationValue();
if (value.isIndividual()) {
anonConsumer.accept((OWLAnonymousIndividual) value);
}
}
/**
* @param anonConsumer consumer to run if the value is an anonymous individual
* @param elseAction runnable to run if the value is not an anonymous individual
*/
default void ifAnonymousIndividualOrElse(Consumer anonConsumer,
Runnable elseAction) {
OWLAnnotationValue value = annotationValue();
if (value.isIndividual()) {
anonConsumer.accept((OWLAnonymousIndividual) value);
} else {
elseAction.run();
}
}
/**
* @param function function to run if the value is a literal
* @param returned type
* @return mapped value for literals, empty otherwise
*/
default Optional mapLiteral(Function function) {
OWLAnnotationValue value = annotationValue();
if (value.isLiteral()) {
return Optional.ofNullable(function.apply((OWLLiteral) value));
}
return Optional.empty();
}
/**
* @param function function to run if the value is a literal
* @param defaultValue value returned if the value if not a literal
* @param returned type
* @return mapped value for literals, default value for non literals
*/
default T mapLiteralOrElse(Function function, T defaultValue) {
OWLAnnotationValue value = annotationValue();
if (value.isLiteral()) {
return function.apply((OWLLiteral) value);
}
return defaultValue;
}
/**
* @param function function to run if the value is a literal
* @param defaultValue supplier to run if the value is not a literal
* @param returned type
* @return mapped value for literals, supplier result for non literals
*/
default T mapLiteralOrElseGet(Function function, Supplier defaultValue) {
OWLAnnotationValue value = annotationValue();
if (value.isLiteral()) {
return function.apply((OWLLiteral) value);
}
return defaultValue.get();
}
/**
* @param function function to run if the value is an IRI
* @param returned type
* @return mapped value for IRIs, empty for non IRIs
*/
default Optional mapIri(Function function) {
OWLAnnotationValue value = annotationValue();
if (value.isIRI()) {
return Optional.ofNullable(function.apply((IRI) value));
}
return Optional.empty();
}
/**
* @param function function to run if the value is an IRI
* @param defaultValue default value to return if the value is not an IRI
* @param return type
* @return mapped value for IRIs, default value for non IRIs
*/
default T mapIriOrElse(Function function, T defaultValue) {
OWLAnnotationValue value = annotationValue();
if (value.isIRI()) {
return function.apply((IRI) value);
}
return defaultValue;
}
/**
* @param function function to run if the value is an IRI
* @param defaultValue supplier to run if the value is not an IRI
* @param returned type
* @return mapped value for IRIs, supplier result for non IRIs
*/
default T mapIriOrElseGet(Function function, Supplier defaultValue) {
OWLAnnotationValue value = annotationValue();
if (value.isIRI()) {
return function.apply((IRI) value);
}
return defaultValue.get();
}
/**
* @param function function to run if the value is an anonymous individual
* @param returned type
* @return mapped value for anonymous individuals, empty for non individuals
*/
default Optional mapAnonymousIndividual(Function function) {
OWLAnnotationValue value = annotationValue();
if (value.isIRI()) {
return Optional.ofNullable(function.apply((OWLAnonymousIndividual) value));
}
return Optional.empty();
}
/**
* @param function function to run if the value is an anonymous individual
* @param defaultValue default value to if the value is not an anonymous individual
* @param returned type
* @return mapped value for anonymous individuals, default value for non individuals
*/
default T mapAnonymousIndividualOrElse(Function function,
T defaultValue) {
OWLAnnotationValue value = annotationValue();
if (value.isAnonymous()) {
return function.apply((OWLAnonymousIndividual) value);
}
return defaultValue;
}
/**
* @param function function to run if the value is an anonymous individual
* @param defaultValue supplier to run if the value is not an anonymous individual
* @param returned type
* @return mapped value for anonymous individuals, supplier result for non individuals
*/
default T mapAnonymousIndividualOrElseGet(Function function,
Supplier defaultValue) {
OWLAnnotationValue value = annotationValue();
if (value.isAnonymous()) {
return function.apply((OWLAnonymousIndividual) value);
}
return defaultValue.get();
}
/**
* @param literalConsumer consumer to run for literals
* @param iriConsumer consumer to run for IRIs
* @param anonConsumer consumer to run for anonymous individuals
*/
default void ifValue(Consumer literalConsumer, Consumer iriConsumer,
Consumer anonConsumer) {
OWLAnnotationValue value = annotationValue();
if (value.isLiteral()) {
ifLiteral(literalConsumer);
} else if (value.isIRI()) {
ifIri(iriConsumer);
} else {
ifAnonymousIndividual(anonConsumer);
}
}
/**
* @param literalFunction function to run for literals
* @param iriFunction function to run for IRIs
* @param anonFunction function to run for anonymous individuals
* @param returned type
* @return mapped value, or empty if none matches (currently there will be always one matching
* function, but the creation of a new OWLAnnotationValue subinterface would change
* that)
*/
default Optional mapValue(Function literalFunction,
Function iriFunction, Function anonFunction) {
OWLAnnotationValue value = annotationValue();
if (value.isLiteral()) {
return mapLiteral(literalFunction);
} else if (value.isIRI()) {
return mapIri(iriFunction);
} else {
return mapAnonymousIndividual(anonFunction);
}
}
}