@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<>
	a owl:Ontology ;
	rdfs:comment "XML Schema Datatypes" .

xsd:ID
	a rdfs:Datatype ;
	owl:onDatatype xsd:NCName .

xsd:IDREF
	a rdfs:Datatype ;
	owl:onDatatype xsd:NCName .

xsd:ENTITY
	a rdfs:Datatype ;
	owl:onDatatype xsd:NCName .

xsd:NCName
	a rdfs:Datatype ;
	owl:onDatatype xsd:Name .

xsd:NMTOKEN
	a rdfs:Datatype ;
	owl:onDatatype xsd:token .

xsd:Name
	a rdfs:Datatype ;
	owl:onDatatype xsd:token .

xsd:totalDigits
	a rdf:Property ,
		owl:DatatypeProperty ;
	rdfs:range xsd:positiveInteger ;
	rdfs:comment "The maximum number of decimal digits required to represent a value." .

xsd:fractionDigits
	a rdf:Property ,
		owl:DatatypeProperty ;
	rdfs:range xsd:nonNegativeInteger ;
	rdfs:comment "The total number of digits to the right of the decimal point required to represent a value." .

xsd:pattern
	a rdf:Property ,
		owl:DatatypeProperty ;
	rdfs:comment "A regular expression that matches complete valid literals." .

xsd:maxInclusive
	a rdf:Property ,
		owl:DatatypeProperty ;
	rdfs:comment "The inclusive upper bound of an ordered datatype." .

xsd:maxExclusive
	a rdf:Property ,
		owl:DatatypeProperty ;
	rdfs:comment "The exclusive upper bound of an ordered datatype." .

xsd:minInclusive
	a rdf:Property ,
		owl:DatatypeProperty ;
	rdfs:comment "The inclusive lower bound of an ordered datatype." .

xsd:minExclusive
	a rdf:Property ,
		owl:DatatypeProperty ;
	rdfs:comment "The exclusive lower bound of an ordered datatype." .

xsd:QName
	a rdfs:Datatype ;
	rdfs:comment "XML qualified names." .

xsd:anyURI
	a rdfs:Datatype ;
	rdfs:comment "URI reference." .

xsd:base64Binary
	a rdfs:Datatype ;
	rdfs:comment "Base64-encoded arbitrary binary data." ;
	owl:withRestrictions (
		[
			xsd:pattern "(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?"
		]
	) .

xsd:boolean
	a rdfs:Datatype ;
	owl:withRestrictions (
		[
			xsd:pattern "(true|false)"
		]
	) .

xsd:byte
	a rdfs:Datatype ;
	owl:onDatatype xsd:short ;
	owl:withRestrictions (
		[
			xsd:pattern "[0-9A-F][0-9A-F]"
		] [
			xsd:maxInclusive 127
		] [
			xsd:minInclusive -128
		]
	) .

xsd:date
	a rdfs:Datatype ;
	owl:withRestrictions (
		[
			xsd:pattern "-?[0-9][0-9][0-9][0-9]([0-9]*)?-(0[1-9]|1[0-1])-([0-3][1-9])([+-][0-1][0-9]:[0-6][0-9])?"
		]
	) .

xsd:dateTime
	a rdfs:Datatype .

xsd:decimal
	a rdfs:Datatype ;
	rdfs:comment "A subset of the real numbers, which can be represented by decimal numerals." ;
	owl:withRestrictions (
		[
			xsd:pattern "[+-]?[0-9]*\\.?[0-9]*"
		]
	) .

xsd:double
	a rdfs:Datatype ;
	rdfs:comment "IEEE double-precision 64-bit floating point." ;
	owl:withRestrictions (
		[
			xsd:pattern "[+-]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)"
		]
	) .

xsd:duration
	a rdfs:Datatype .

xsd:float
	a rdfs:Datatype ;
	rdfs:comment "IEEE single-precision 32-bit floating point." ;
	owl:onDatatype xsd:double .

xsd:gDay
	a rdfs:Datatype .

xsd:gMonth
	a rdfs:Datatype .

xsd:gMonthDay
	a rdfs:Datatype .

xsd:gYear
	a rdfs:Datatype .

xsd:gYearMonth
	a rdfs:Datatype .

xsd:hexBinary
	a rdfs:Datatype ;
	rdfs:comment "Hex-encoded arbitrary binary data." ;
	owl:withRestrictions (
		[
			xsd:pattern "[0-9A-F]*"
		]
	) .

xsd:int
	a rdfs:Datatype ;
	owl:onDatatype xsd:long ;
	owl:withRestrictions (
		[
			xsd:maxInclusive 2147483647
		] [
			xsd:minInclusive -2147483648
		]
	) .

xsd:integer
	a rdfs:Datatype ;
	owl:onDatatype xsd:decimal ;
	owl:withRestrictions (
		[
			xsd:pattern "[-+]?[0-9]+"
		] [
			xsd:fractionDigits 0
		]
	) .

xsd:language
	a rdfs:Datatype ;
	owl:onDatatype xsd:token ;
	owl:withRestrictions (
		[
			xsd:pattern "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
		]
	) .

xsd:long
	a rdfs:Datatype ;
	owl:onDatatype xsd:integer ;
	owl:withRestrictions (
		[
			xsd:maxInclusive 9223372036854775807
		] [
			xsd:minInclusive -9223372036854775808
		]
	) .

xsd:negativeInteger
	a rdfs:Datatype ;
	owl:onDatatype xsd:nonPositiveInteger ;
	owl:withRestrictions (
		[
			xsd:maxInclusive -1
		]
	) .

xsd:nonNegativeInteger
	a rdfs:Datatype ;
	owl:onDatatype xsd:integer ;
	owl:withRestrictions (
		[
			xsd:pattern "[0-9]*"
		] [
			xsd:minInclusive 0
		]
	) .

xsd:nonPositiveInteger
	a rdfs:Datatype ;
	owl:onDatatype xsd:integer ;
	owl:withRestrictions (
		[
			xsd:pattern "(0|-[0-9]+)"
		] [
			xsd:maxInclusive 0
		]
	) .

xsd:normalizedString
	a rdfs:Datatype ;
	owl:onDatatype xsd:string ;
	rdfs:comment "The set of strings that do not contain the carriage return (#xD), line feed (#xA) nor tab (#x9) characters." .

xsd:positiveInteger
	a rdfs:Datatype ;
	owl:onDatatype xsd:nonNegativeInteger ;
	owl:withRestrictions (
		[
			xsd:pattern "[+]?[0-9]+"
		] [
			xsd:minInclusive 1
		]
	) .

xsd:short
	a rdfs:Datatype ;
	owl:onDatatype xsd:int ;
	owl:withRestrictions (
		[
			xsd:maxInclusive 32767
		] [
			xsd:minInclusive -32768
		]
	) .

xsd:string
	a rdfs:Datatype ;
	rdfs:comment "A character string." .

xsd:time
	a rdfs:Datatype ;
	owl:withRestrictions (
		[
			xsd:pattern "[1-2][0-9]:[0-5][0-9]:[0-5][0-9].[0-9][0-9][0-9]"
		]
	) .

xsd:token
	a rdfs:Datatype ;
	owl:onDatatype xsd:normalizedString ;
	rdfs:comment "The set of strings that do not contain the carriage return (#xD), line feed (#xA) nor tab (#x9) characters, that have no leading or trailing spaces (#x20) and that have no internal sequences of two or more spaces." .

xsd:unsignedByte
	a rdfs:Datatype ;
	owl:onDatatype xsd:unsignedShort ;
	owl:withRestrictions (
		[
			xsd:maxInclusive 255
		]
	) .

xsd:unsignedInt
	a rdfs:Datatype ;
	owl:onDatatype xsd:unsignedLong ;
	owl:withRestrictions (
		[
			xsd:maxInclusive 4294967295
		]
	) .

xsd:unsignedLong
	a rdfs:Datatype ;
	owl:onDatatype xsd:nonNegativeInteger ;
	owl:withRestrictions (
		[
			xsd:maxInclusive 18446744073709551615
		]
	) .

xsd:unsignedShort
	a rdfs:Datatype ;
	owl:onDatatype xsd:unsignedInt ;
	owl:withRestrictions (
		[
			xsd:maxInclusive 65535
		]
	) .