package org.obolibrary.oboformat.parser; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.EnumSet; import java.util.Map; import java.util.Set; import javax.annotation.Nullable; import com.google.common.collect.Maps; /** * OBOformat constants. */ public class OBOFormatConstants { private static final Map<String, OboFormatTag> TAGSTABLE = Maps.uniqueIndex(Arrays.asList(OboFormatTag.values()), OboFormatTag::getTag); /** * tags */ public static final Set<String> TAGS = TAGSTABLE.keySet(); /** * @param tag tag * @return oboformat tag */ @Nullable public static OboFormatTag getTag(String tag) { return TAGSTABLE.get(tag); } /** * @return Date format for OboFormatTag.TAG_DATE */ public static final DateFormat headerDateFormat() { return new SimpleDateFormat("dd:MM:yyyy HH:mm"); } /** * OBOformat tags. */ public enum OboFormatTag { //@formatter:off /**TAG_FORMAT_VERSION. */ TAG_FORMAT_VERSION ("format-version"), /**TAG_ONTOLOGY. */ TAG_ONTOLOGY ("ontology"), /**TAG_DATA_VERSION. */ TAG_DATA_VERSION ("data-version"), /**TAG_DATE. */ TAG_DATE ("date"), /**TAG_SAVED_BY. */ TAG_SAVED_BY ("saved-by"), /**TAG_AUTO_GENERATED_BY. */ TAG_AUTO_GENERATED_BY ("auto-generated-by"), /**TAG_IMPORT. */ TAG_IMPORT ("import"), /**TAG_SUBSETDEF. */ TAG_SUBSETDEF ("subsetdef"), /**TAG_SYNONYMTYPEDEF. */ TAG_SYNONYMTYPEDEF ("synonymtypedef"), /**TAG_DEFAULT_NAMESPACE. */ TAG_DEFAULT_NAMESPACE ("default-namespace"), /**TAG_IDSPACE. */ TAG_IDSPACE ("idspace"), /**TAG_TREAT_XREFS_AS_EQUIVALENT. */ TAG_TREAT_XREFS_AS_EQUIVALENT ("treat-xrefs-as-equivalent"), /**XREFS_AS_REVERSE_GENUS_DIFFERENTIA. */ TAG_TREAT_XREFS_AS_REVERSE_GENUS_DIFFERENTIA ("treat-xrefs-as-reverse-genus-differentia"), /**TAG_TREAT_XREFS_AS_GENUS_DIFFERENTIA. */ TAG_TREAT_XREFS_AS_GENUS_DIFFERENTIA ("treat-xrefs-as-genus-differentia"), /**TAG_TREAT_XREFS_AS_RELATIONSHIP. */ TAG_TREAT_XREFS_AS_RELATIONSHIP ("treat-xrefs-as-relationship"), /**TAG_TREAT_XREFS_AS_IS_A. */ TAG_TREAT_XREFS_AS_IS_A ("treat-xrefs-as-is_a"), /**TAG_TREAT_XREFS_AS_HAS_SUBCLASS. */ TAG_TREAT_XREFS_AS_HAS_SUBCLASS ("treat-xrefs-as-has-subclass"), /**TAG_OWL_AXIOMS. */ TAG_OWL_AXIOMS ("owl-axioms"), /**TAG_REMARK. */ TAG_REMARK ("remark"), /**TAG_ID. */ TAG_ID ("id"), /**TAG_NAME. */ TAG_NAME ("name"), /**TAG_NAMESPACE. */ TAG_NAMESPACE ("namespace"), /**TAG_ALT_ID. */ TAG_ALT_ID ("alt_id"), /**TAG_DEF. */ TAG_DEF ("def"), /**TAG_COMMENT. */ TAG_COMMENT ("comment"), /**TAG_SUBSET. */ TAG_SUBSET ("subset"), /**TAG_SYNONYM. */ TAG_SYNONYM ("synonym"), /**TAG_XREF. */ TAG_XREF ("xref"), /**TAG_BUILTIN. */ TAG_BUILTIN ("builtin"), /**TAG_PROPERTY_VALUE. */ TAG_PROPERTY_VALUE ("property_value"), /**TAG_IS_A. */ TAG_IS_A ("is_a"), /**TAG_INTERSECTION_OF. */ TAG_INTERSECTION_OF ("intersection_of"), /**TAG_UNION_OF. */ TAG_UNION_OF ("union_of"), /**TAG_EQUIVALENT_TO. */ TAG_EQUIVALENT_TO ("equivalent_to"), /**TAG_DISJOINT_FROM. */ TAG_DISJOINT_FROM ("disjoint_from"), /**TAG_RELATIONSHIP. */ TAG_RELATIONSHIP ("relationship"), /**TAG_CREATED_BY. */ TAG_CREATED_BY ("created_by"), /**TAG_CREATION_DATE. */ TAG_CREATION_DATE ("creation_date"), /**TAG_IS_OBSELETE. */ TAG_IS_OBSELETE ("is_obsolete"), /**TAG_REPLACED_BY. */ TAG_REPLACED_BY ("replaced_by"), /**TAG_IS_ANONYMOUS. */ TAG_IS_ANONYMOUS ("is_anonymous"), /**TAG_DOMAIN. */ TAG_DOMAIN ("domain"), /**TAG_RANGE. */ TAG_RANGE ("range"), /**TAG_IS_ANTI_SYMMETRIC. */ TAG_IS_ANTI_SYMMETRIC ("is_anti_symmetric"), /**TAG_IS_CYCLIC. */ TAG_IS_CYCLIC ("is_cyclic"), /**TAG_IS_REFLEXIVE. */ TAG_IS_REFLEXIVE ("is_reflexive"), /**TAG_IS_SYMMETRIC. */ TAG_IS_SYMMETRIC ("is_symmetric"), /**TAG_IS_TRANSITIVE. */ TAG_IS_TRANSITIVE ("is_transitive"), /**TAG_IS_FUNCTIONAL. */ TAG_IS_FUNCTIONAL ("is_functional"), /**TAG_IS_INVERSE_FUNCTIONAL. */ TAG_IS_INVERSE_FUNCTIONAL ("is_inverse_functional"), /**TAG_TRANSITIVE_OVER. */ TAG_TRANSITIVE_OVER ("transitive_over"), /**TAG_HOLDS_OVER_CHAIN. */ TAG_HOLDS_OVER_CHAIN ("holds_over_chain"), /**TAG_EQUIVALENT_TO_CHAIN. */ TAG_EQUIVALENT_TO_CHAIN ("equivalent_to_chain"), /**TAG_DISJOINT_OVER. */ TAG_DISJOINT_OVER ("disjoint_over"), /**TAG_EXPAND_ASSERTION_TO. */ TAG_EXPAND_ASSERTION_TO ("expand_assertion_to"), /**TAG_EXPAND_EXPRESSION_TO. */ TAG_EXPAND_EXPRESSION_TO ("expand_expression_to"), /**TAG_IS_CLASS_LEVEL_TAG. */ TAG_IS_CLASS_LEVEL_TAG ("is_class_level"), /**TAG_IS_METADATA_TAG. */ TAG_IS_METADATA_TAG ("is_metadata_tag"), /**TAG_CONSIDER. */ TAG_CONSIDER ("consider"), /**TAG_INVERSE_OF. */ TAG_INVERSE_OF ("inverse_of"), /**TAG_IS_ASYMMETRIC. */ TAG_IS_ASYMMETRIC ("is_asymmetric"), /**TAG_NAMESPACE_ID_RULE. */ TAG_NAMESPACE_ID_RULE ("namespace-id-rule"), /**TAG_LOGICAL_DEFINITION_VIEW_RELATION. */ TAG_LOGICAL_DEFINITION_VIEW_RELATION ("logical-definition-view-relation"), //@formatter:on // these are keywords, not tags, but we keep them here for convenience /** * Scope. */ TAG_SCOPE("scope"), /** * Implicit, in synonymtypedef. */ TAG_HAS_SYNONYM_TYPE("has_synonym_type"), /** implicit, in synonym. */ /** * Broad. */ TAG_BROAD("BROAD"), /** * Narrow. */ TAG_NARROW("NARROW"), /** * Exact. */ TAG_EXACT("EXACT"), /** * Related. */ TAG_RELATED("RELATED"); /** * Term frames. */ public static final EnumSet<OboFormatTag> TERM_FRAMES = EnumSet.of(TAG_INTERSECTION_OF, TAG_UNION_OF, TAG_EQUIVALENT_TO, TAG_DISJOINT_FROM, TAG_RELATIONSHIP, TAG_IS_A); /** * Typedef frames. */ public static final EnumSet<OboFormatTag> TYPEDEF_FRAMES = EnumSet.of(TAG_INTERSECTION_OF, TAG_UNION_OF, TAG_EQUIVALENT_TO, TAG_DISJOINT_FROM, TAG_INVERSE_OF, TAG_TRANSITIVE_OVER, TAG_DISJOINT_OVER, TAG_IS_A); private final String tag; OboFormatTag(String tag) { this.tag = tag; } /** * @return tag */ public String getTag() { return tag; } @Override public String toString() { return tag; } } }