historical data prior of its import into Wikidata.
All tests done in ECCC's bulkschema.xsd aren't replicated here as we're
- focusing into pure Wikimedia Commons data quality -->
+ focusing into pure Wikimedia Commons data quality.
+
+ Schema is restrictive on purpose: up to date extreme values are hard coded
+ just like current year. It WILL break starting 2021 so we can make sure
+ someone has checked potential upstream structure change before running
+ Commons data update. -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- Define elements -->
<xsd:element name="climatedata">
<xsd:element ref="lang" minOccurs="1" maxOccurs="1" />
<xsd:element ref="stationinformation" minOccurs="1" maxOccurs="1" />
<xsd:element ref="legend" minOccurs="1" maxOccurs="1" />
- <xsd:element ref="stationdata" minOccurs="1" maxOccurs="unbounded" />
+ <xsd:choice>
+ <xsd:element ref="stationdata" minOccurs="1" maxOccurs="unbounded" />
+ <xsd:element ref="month" minOccurs="1" maxOccurs="unbounded" />
+ </xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:complexType>
</xsd:element>
+ <xsd:element name="month">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="day" minOccurs="0" maxOccurs="31" />
+ </xsd:sequence>
+ <xsd:attributeGroup ref="attrgroup-month" />
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="day">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="temperature" minOccurs="5" maxOccurs="5" />
+ <xsd:element ref="precipitation" minOccurs="4" maxOccurs="4" />
+ <xsd:element ref="pop" minOccurs="1" maxOccurs="1" />
+ </xsd:sequence>
+ <xsd:attributeGroup ref="attrgroup-day" />
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="temperature">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="temperature-values">
+ <xsd:attributeGroup ref="attrgroup-temperature" />
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="precipitation">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="precipitation-values">
+ <xsd:attributeGroup ref="attrgroup-precipitation" />
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="pop">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="pop-values">
+ <xsd:attributeGroup ref="attrgroup-pop" />
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+
<!-- Define attributes -->
<xsd:attribute name="flag">
<xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="1840" />
- <xsd:maxInclusive value="2019" />
+ <xsd:maxInclusive value="2020" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attribute>
</xsd:attributeGroup>
+ <xsd:attributeGroup name="attrgroup-month">
+ <xsd:attribute name="index" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="1" />
+ <xsd:maxInclusive value="12" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="attrgroup-day">
+ <xsd:attribute name="index" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="1" />
+ <xsd:maxInclusive value="31" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="attrgroup-temperature">
+ <xsd:attribute name="class" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="extremeMax" />
+ <xsd:enumeration value="extremeMin" />
+ <xsd:enumeration value="normalMax" />
+ <xsd:enumeration value="normalMin" />
+ <xsd:enumeration value="normalMean" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="units" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">temperature must be provided in °C.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:enumeration value="°C" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="unitType" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">unitType must be provided metric.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:enumeration value="metric" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="period" use="optional" />
+ <xsd:attribute name="year" use="optional">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="1840" />
+ <xsd:maxInclusive value="2020" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="quality" use="optional">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="†" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="attrgroup-precipitation">
+ <xsd:attribute name="class" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="extremeRainfall" />
+ <xsd:enumeration value="extremeSnowfall" />
+ <xsd:enumeration value="extremePrecipitation" />
+ <xsd:enumeration value="extremeSnowOnGround" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="units" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">precipitation must be provided in mm or cm.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:enumeration value="mm" />
+ <xsd:enumeration value="cm" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="unitType" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">unitType must be provided metric.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:enumeration value="metric" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="period" use="required" />
+ <xsd:attribute name="year" use="optional">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="1840" />
+ <xsd:maxInclusive value="2020" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="quality" use="optional">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="†" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="attrgroup-pop">
+ <xsd:attribute name="units" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="%" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:attributeGroup>
+
<!-- Define types -->
<xsd:simpleType name="meanmaxtemp-values">
<xsd:union memberTypes="empty">
</xsd:union>
</xsd:simpleType>
+ <xsd:simpleType name="temperature-values">
+ <xsd:union memberTypes="empty">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:float">
+ <xsd:minInclusive value="-63.0" />
+ <xsd:maxInclusive value="50.0">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">Value is currently between -63.0 and 50.0.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:maxInclusive>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="precipitation-values">
+ <xsd:union memberTypes="sharps empty">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:float">
+ <xsd:minInclusive value="0.0" />
+ <xsd:maxInclusive value="999">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">Max value is currently 999.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:maxInclusive>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="pop-values">
+ <xsd:union memberTypes="empty">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:float">
+ <xsd:minInclusive value="0.0" />
+ <xsd:maxInclusive value="100.0">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">Percentage.</xsd:documentation>
+ </xsd:annotation>
+ </xsd:maxInclusive>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:union>
+ </xsd:simpleType>
+
<xsd:simpleType name="empty">
<xsd:restriction base="xsd:string">
<xsd:length value="0" />