XsdDatatypes.py

  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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# -*- coding: utf-8 -*-
#
"""
Lists of XSD datatypes and their mutual relationships

**Requires**: `RDFLib`_, 4.0.0 and higher.

.. _RDFLib: https://github.com/RDFLib/rdflib

**License**: This software is available for use under the `W3C Software License`_.

.. _W3C Software License: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231

**Organization**: `World Wide Web Consortium`_

.. _World Wide Web Consortium: http://www.w3.org

**Author**: `Ivan Herman`_

.. _Ivan Herman: http://www.w3.org/People/Ivan/

"""
__author__ = "Ivan Herman"
__contact__ = "Ivan Herman, ivan@w3.org"
__license__ = "W3C® SOFTWARE NOTICE AND LICENSE, http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231"

from rdflib.namespace import RDF, RDFS, XSD

# The basic XSD types used everywhere; this means not the complete set of day/month types
_Common_XSD_Datatypes = [
    XSD.integer,
    XSD.decimal,
    XSD.nonNegativeInteger,
    XSD.nonPositiveInteger,
    XSD.negativeInteger,
    XSD.positiveInteger,
    XSD.long,
    XSD.int,
    XSD.short,
    XSD.byte,
    XSD.unsignedLong,
    XSD.unsignedInt,
    XSD.unsignedShort,
    XSD.unsignedByte,
    XSD.float,
    XSD.double,
    XSD.string,
    XSD.normalizedString,
    XSD.token,
    XSD.language,
    XSD.Name,
    XSD.NCName,
    XSD.NMTOKEN,
    XSD.boolean,
    XSD.hexBinary,
    XSD.base64Binary,
    XSD.anyURI,
    XSD.dateTimeStamp,
    XSD.dateTime,
    XSD.time,
    XSD.date,
    RDFS.Literal,
    RDF.XMLLiteral,
    RDF.HTML,
    RDF.langString,
]

# RDFS Datatypes: the basic ones plus the complete set of day/month ones
RDFS_Datatypes = _Common_XSD_Datatypes + [
    XSD.gYearMonth,
    XSD.gMonthDay,
    XSD.gYear,
    XSD.gDay,
    XSD.gMonth,
]

# OWL RL Datatypes: the basic ones plus plain literal
OWL_RL_Datatypes = _Common_XSD_Datatypes + [RDF.PlainLiteral]

# XSD Datatype subsumptions
_Common_Datatype_Subsumptions = {
    XSD.dateTimeStamp: [XSD.dateTime],
    XSD.integer: [XSD.decimal],
    XSD.long: [XSD.integer, XSD.decimal],
    XSD.int: [XSD.long, XSD.integer, XSD.decimal],
    XSD.short: [
        XSD.int,
        XSD.long,
        XSD.integer,
        XSD.decimal,
    ],
    XSD.byte: [
        XSD.short,
        XSD.int,
        XSD.long,
        XSD.integer,
        XSD.decimal,
    ],
    XSD.nonNegativeInteger: [XSD.integer, XSD.decimal],
    XSD.positiveInteger: [
        XSD.nonNegativeInteger,
        XSD.integer,
        XSD.decimal,
    ],
    XSD.unsignedLong: [
        XSD.nonNegativeInteger,
        XSD.integer,
        XSD.decimal,
    ],
    XSD.unsignedInt: [
        XSD.unsignedLong,
        XSD.nonNegativeInteger,
        XSD.integer,
        XSD.decimal,
    ],
    XSD.unsignedShort: [
        XSD.unsignedInt,
        XSD.unsignedLong,
        XSD.nonNegativeInteger,
        XSD.integer,
        XSD.decimal,
    ],
    XSD.unsignedByte: [
        XSD.unsignedShort,
        XSD.unsignedInt,
        XSD.unsignedLong,
        XSD.nonNegativeInteger,
        XSD.integer,
        XSD.decimal,
    ],
    XSD.nonPositiveInteger: [XSD.integer, XSD.decimal],
    XSD.negativeInteger: [
        XSD.nonPositiveInteger,
        XSD.integer,
        XSD.decimal,
    ],
    XSD.normalizedString: [XSD.string],
    XSD.token: [XSD.normalizedString, XSD.string],
    XSD.language: [XSD.token, XSD.normalizedString, XSD.string],
    XSD.Name: [XSD.token, XSD.normalizedString, XSD.string],
    XSD.NCName: [
        XSD.Name,
        XSD.token,
        XSD.normalizedString,
        XSD.string,
    ],
    XSD.NMTOKEN: [
        XSD.Name,
        XSD.token,
        XSD.normalizedString,
        XSD.string,
    ],
}

# RDFS Datatype subsumptions: at the moment, there is no extra to XSD
RDFS_Datatype_Subsumptions = _Common_Datatype_Subsumptions

# OWL Datatype subsumptions: at the moment, there is no extra to XSD
OWL_Datatype_Subsumptions = _Common_Datatype_Subsumptions