1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//! Constant datatype IRIs and base URIs used literally during translation.

// --- Macros to allow const concatenation in submodules ---------------------

macro_rules! uris {
    ($($name:ident => $uri:literal,)*) => (
        $(macro_rules! $name {() => ($uri)})*
    );
}

uris! {
    dc => "http://purl.org/dc/elements/1.1/",
    obo => "http://purl.obolibrary.org/obo/",
    oboInOwl => "http://www.geneontology.org/formats/oboInOwl#",
    owl => "http://www.w3.org/2002/07/owl#",
    rdf => "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
    rdfs => "http://www.w3.org/2000/01/rdf-schema#",
    xml => "http://www.w3.org/XML/1998/namespace",
    xsd => "http://www.w3.org/2001/XMLSchema#",
}

// --- Base URIs -------------------------------------------------------------

/// Base URIs used in the Open Biomedical Ontologies semantic vocabulary.
pub mod uri {
    /// The Dublin Core Metadata Element Set, version 1.1.
    pub const DC: &str = dc!();
    /// The Open Biomedical Ontologies base URI.
    pub const OBO: &str = obo!();
    /// The OBO in OWL mappings defined by the Gene Ontology project.
    pub const OBO_IN_OWL: &str = oboInOwl!();
    /// The Ontology Web Language base URI
    pub const OWL: &str = owl!();
    /// The RDF Concepts Vocabulary (RDF) namespace URI.
    pub const RDF: &str = rdf!();
    /// The RDF Schema vocabulary.
    pub const RDFS: &str = rdfs!();
    /// The "xml:" namespace URI for the XML 1.0 specification.
    pub const XML: &str = xml!();
    /// The XML Schema namespace URI.
    pub const XSD: &str = xsd!();
}

// --- Datatype URIs ---------------------------------------------------------

/// Datatypes used in OBO to OWL translation.
pub mod datatype {
    /// XML Schema datatypes.
    pub mod xsd {
        pub const STRING: &str = concat!(xsd!(), "string");
        pub const BOOLEAN: &str = concat!(xsd!(), "boolean");
        pub const DATETIME: &str = concat!(xsd!(), "dateTime");
    }
}

// --- Annotation Property URIs ----------------------------------------------

/// Annotation properties used to expose OBO semantics in OWL.
pub mod property {
    /// OBO in OWL common annotation properties.
    pub mod obo_in_owl {
        // Actually defined in `http://www.geneontologyorg/formats/oboInOwl`
        pub const CONSIDER: &str = concat!(oboInOwl!(), "consider");
        pub const HAS_ALTERNATIVE_ID: &str = concat!(oboInOwl!(), "hasAlternativeId");
        pub const HAS_DATE: &str = concat!(oboInOwl!(), "hasDate");
        pub const HAS_DBXREF: &str = concat!(oboInOwl!(), "hasDbXref");
        pub const HAS_DEFAULT_NAMESPACE: &str = concat!(oboInOwl!(), "hasDefaultNamespace");
        pub const HAS_DEFINITION: &str = concat!(oboInOwl!(), "hasDefinition");
        pub const HAS_OBO_NAMESPACE: &str = concat!(oboInOwl!(), "hasOBONamespace");
        pub const HAS_SUBSET: &str = concat!(oboInOwl!(), "hasSubset");
        pub const HAS_SYNONYM: &str = concat!(oboInOwl!(), "hasSynonym");
        pub const HAS_BROAD_SYNONYM: &str = concat!(oboInOwl!(), "hasBroadSynonym");
        pub const HAS_EXACT_SYNONYM: &str = concat!(oboInOwl!(), "hasExactSynonym");
        pub const HAS_NARROW_SYNONYM: &str = concat!(oboInOwl!(), "hasNarrowSynonym");
        pub const HAS_RELATED_SYNONYM: &str = concat!(oboInOwl!(), "hasRelatedSynonym");
        pub const HAS_SYNONYM_TYPE: &str = concat!(oboInOwl!(), "hasSynonymType");
        pub const HAS_URI: &str = concat!(oboInOwl!(), "hasURI");
        pub const HAS_VERSION: &str = concat!(oboInOwl!(), "hasVersion");
        pub const IN_SUBSET: &str = concat!(oboInOwl!(), "inSubset");
        pub const IS_CYCLIC: &str = concat!(oboInOwl!(), "isCyclic");
        pub const REPLACED_BY: &str = concat!(oboInOwl!(), "replacedBy");
        pub const SAVED_BY: &str = concat!(oboInOwl!(), "savedBy");
        pub const SUBSET_PROPERTY: &str = concat!(oboInOwl!(), "SubsetProperty");
        pub const SYNONYM_TYPE_PROPERTY: &str = concat!(oboInOwl!(), "SynonymTypeProperty");

        // Undeclared but used all over the place.
        pub const CREATED_BY: &str = concat!(oboInOwl!(), "created_by");
        pub const AUTO_GENERATED_BY: &str = concat!(oboInOwl!(), "autoGeneratedBy");
        pub const CREATION_DATE: &str = concat!(oboInOwl!(), "creation_date");
        pub const HAS_OBO_FORMAT_VERSION: &str = concat!(oboInOwl!(), "hasOBOFormatVersion");
        pub const ID: &str = concat!(oboInOwl!(), "id");
        pub const NAMESPACE_ID_RULE: &str = concat!(oboInOwl!(), "NamespaceIdRule");
        pub const SHORTHAND: &str = concat!(oboInOwl!(), "shorthand");
        pub const IS_CLASS_LEVEL: &str = concat!(oboInOwl!(), "is_class_level");
        pub const IS_METADATA_TAG: &str = concat!(oboInOwl!(), "is_metadata_tag");
        pub const IS_ANTI_SYMMETRIC: &str = concat!(oboInOwl!(), "is_anti_symmetric");
        pub const DISJOINT_OVER: &str = concat!(oboInOwl!(), "disjoint_over");
    }

    /// OWL2 annotation properties.
    pub mod owl {
        pub const DEPRECATED: &str = concat!(owl!(), "deprecated");
    }

    /// RDF Schema annotation properties.
    pub mod rdfs {
        pub const LABEL: &str = concat!(rdfs!(), "label");
        pub const COMMENT: &str = concat!(rdfs!(), "comment");
        pub const SUB_PROPERTY_OF: &str = concat!(rdfs!(), "subPropertyOf");
    }

    /// Dublin core annotation properties.
    pub mod dc {
        pub const CREATOR: &str = concat!(dc!(), "creator");
        pub const DATE: &str = concat!(dc!(), "date");
    }

    /// Information artifact ontology annotation properties.
    pub mod iao {
        pub const REPLACED_BY: &str = concat!(obo!(), "IAO_0100001");
        pub const DEFINITION: &str = concat!(obo!(), "IAO_0000115");
        pub const ANTISYMMETRIC_PROPERTY: &str = concat!(obo!(), "IAO_0000427");
    }
}