package org.semanticweb.owlapi.model; import static org.semanticweb.owlapi.util.OWLAPIPreconditions.emptyOptional; import java.util.Optional; /** * Value visitor for EntityType * * @param <T> type to return * @author ignazio */ public interface EntityTypeVisitorEx<T> { /** * @param entity entity to visit * @return return value */ default Optional<T> visit(EntityType<?> entity) { if (entity.equals(EntityType.CLASS)) { return visitCLASS(); } if (entity.equals(EntityType.OBJECT_PROPERTY)) { return visitOBJECT_PROPERTY(); } if (entity.equals(EntityType.DATA_PROPERTY)) { return visitDATA_PROPERTY(); } if (entity.equals(EntityType.ANNOTATION_PROPERTY)) { return visitANNOTATION_PROPERTY(); } if (entity.equals(EntityType.NAMED_INDIVIDUAL)) { return visitNAMED_INDIVIDUAL(); } if (entity.equals(EntityType.DATATYPE)) { return visitDATATYPE(); } return doDefault(); } /** * @return default value if no values are matched */ default Optional<T> doDefault() { return emptyOptional(); } /** * @return value for class */ Optional<T> visitCLASS(); /** * @return value for object property */ Optional<T> visitOBJECT_PROPERTY(); /** * @return value for data property */ Optional<T> visitDATA_PROPERTY(); /** * @return value for annotation property */ Optional<T> visitANNOTATION_PROPERTY(); /** * @return value for individual */ Optional<T> visitNAMED_INDIVIDUAL(); /** * @return value for datatype */ Optional<T> visitDATATYPE(); }