2017-04-04 21:38:07 +03:00
<?xml version="1.0" encoding="UTF-8"?>
2017-04-05 07:41:47 -04:00
<!--
###############################################################################
#
# Copyright (C) 2017 Tom Kralidis (tomkralidis@gmail.com)
# Copyright (C) 2017 Angelos Tzotsos (gcpp.kalxas@gmail.com)
#
# This source is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option)
# any later version.
#
# This code is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
###############################################################################
-->
2017-04-04 21:38:07 +03:00
<xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" xmlns:rm= "http://qgis.org/resource-metadata/1.0" targetNamespace= "http://qgis.org/resource-metadata/1.0" elementFormDefault= "qualified" attributeFormDefault= "unqualified" version= "1.0" >
2017-04-11 22:32:09 -04:00
<xs:element name= "ResourceMetadata" type= "rm:ResourceMetadataType" >
<xs:annotation >
<xs:appinfo > QGIS Resource Metadata Schema</xs:appinfo>
<xs:documentation > Copyright (C) 2017 Tom Kralidis (tomkralidis@gmail.com)</xs:documentation>
<xs:documentation > Copyright (C) 2017 Angelos Tzotsos (gcpp.kalxas@gmail.com)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name= "ResourceMetadataType" >
<xs:sequence >
<xs:element name= "identifier" type= "xs:string" >
<xs:annotation >
2017-04-11 22:37:09 -04:00
<xs:documentation > Reference, URI, URL or some other mechanism to identify a given resource. </xs:documentation>
2017-04-11 22:32:09 -04:00
</xs:annotation>
</xs:element>
<xs:element name= "parentidentifier" type= "xs:string" minOccurs= "0" >
<xs:annotation >
2017-04-11 22:37:09 -04:00
<xs:documentation > Reference, URI, URL or some other mechanism that that a given resource is a part of (child).</xs:documentation>
2017-04-11 22:32:09 -04:00
</xs:annotation>
</xs:element>
<xs:element name= "language" type= "xs:string" >
<xs:annotation >
<xs:documentation > Human language associated with a given resource. While a formal vocabulary is not imposed, it is advised to use ISO 3166/ISO 639.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "type" type= "xs:string" >
<xs:annotation >
<xs:documentation > Nature of a given resource. While a formal vocabulary is not imposed, it is advised to use the ISO 19115 MD_ScopeCode.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "title" type= "xs:string" >
<xs:annotation >
<xs:documentation > Human readable name of a given resource typically displayed in search results.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "abstract" type= "xs:string" >
<xs:annotation >
<xs:documentation > Description of a given resource.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "keywords" type= "rm:keywordsType" minOccurs= "0" maxOccurs= "unbounded" >
<xs:annotation >
<xs:documentation > Set of descriptive keywords associated with a given resource.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "fees" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Any fees associated with a given resource.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "constraints" type= "rm:constraintsType" minOccurs= "0" maxOccurs= "unbounded" >
<xs:annotation >
<xs:documentation > List of constraints associated with a given resource.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "rights" type= "xs:string" minOccurs= "0" maxOccurs= "unbounded" >
<xs:annotation >
<xs:documentation > Attribution or copyright associated with a given resource.</xs:documentation>
</xs:annotation>
</xs:element>
2017-04-12 06:58:20 -04:00
<xs:element name= "license" type= "xs:string" minOccurs= "1" maxOccurs= "unbounded" >
<xs:annotation >
<xs:documentation > License associated with a given resource (examples: http://opendefinition.org/licenses/).</xs:documentation>
</xs:annotation>
</xs:element>
2017-04-11 22:32:09 -04:00
<xs:element name= "encoding" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Character encoding of the data of a given resource.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "crs" type= "xs:string" >
<xs:annotation >
<xs:documentation > Coordinate reference system associated with the data of a given resource. Examples:
* EPSG:EPSGCODE
* http://www.opengis.net/def/crs/EPSG/0/EPSGCODE (URI Style 1)
* http://www.opengis.net/gml/srs/epsg.xml#EPSGCODE (URI Style 2)
* urn:EPSG:geographicCRS:EPSGCODE
* urn:ogc:def:crs:EPSG::EPSGCODE
* urn:ogc:def:crs:EPSG:EPSGCODE
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "extent" type= "rm:extentType" maxOccurs= "1" >
<xs:annotation >
<xs:documentation > Spatial and temporal extents associated with a given resource.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "contact" type= "rm:contactType" maxOccurs= "unbounded" >
<xs:annotation >
<xs:documentation > Contact person/entity associated with a given resource.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "links" type= "rm:linksType" >
<xs:annotation >
<xs:documentation > Set of online resources associated with a given resource.</xs:documentation>
</xs:annotation>
</xs:element>
2017-04-12 20:58:52 -04:00
<xs:element name= "history" type= "xs:string" minOccurs= "0" maxOccurs= "unbounded" >
<xs:annotation >
<xs:documentation > Freeform description of the history or lineage of the resource.</xs:documentation>
</xs:annotation>
</xs:element>
2017-04-11 22:32:09 -04:00
</xs:sequence>
<xs:attribute name= "version" use= "required" fixed= "1.0" >
<xs:annotation >
<xs:documentation > Version of QGIS Resource Metadata schema used. </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name= "constraintsType" >
<xs:simpleContent >
<xs:extension base= "xs:string" >
<xs:attribute name= "type" type= "xs:string" >
<xs:annotation >
<xs:documentation > Type of constraint. Suggested types are 'access', 'other'.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name= "keywordsType" >
<xs:sequence >
<xs:element name= "keyword" maxOccurs= "unbounded" >
<xs:annotation >
<xs:documentation > Descriptive keyword associated with a resource. While a formal vocabulary is not imposed, it is advised to use rm:keywords/@vocabulary to identify a codelist or applicable vocabulary.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name= "vocabulary" type= "xs:string" >
<xs:annotation >
<xs:documentation > Reference (URI/URL preferred) to a codelist or vocabulary associated with keyword list.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name= "extentType" >
<xs:sequence >
<xs:element name= "spatial" type= "rm:spatialType" maxOccurs= "unbounded" >
<xs:annotation >
<xs:documentation > Geospatial Extent of a given resource.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "temporal" type= "rm:temporalType" minOccurs= "0" maxOccurs= "unbounded" >
<xs:annotation >
<xs:documentation > Temporal extent associated with a given resource. It is advised to use ISO 8601 for consistency.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name= "spatialType" >
<xs:attribute name= "dimensions" type= "xs:integer" default= "2" />
<xs:attribute name= "crs" type= "xs:string" use= "required" >
<xs:annotation >
2017-04-11 23:25:53 -04:00
<xs:documentation > Coordinate reference system.</xs:documentation>
2017-04-11 22:32:09 -04:00
</xs:annotation>
</xs:attribute>
<xs:attribute name= "minx" type= "xs:decimal" use= "required" >
<xs:annotation >
<xs:documentation > Minimum x value according to crs.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name= "miny" type= "xs:decimal" use= "required" >
<xs:annotation >
<xs:documentation > Minimum y value according to crs.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name= "minz" type= "xs:decimal" use= "optional" >
<xs:annotation >
<xs:documentation > Minimum z value according to crs.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name= "maxx" type= "xs:decimal" use= "required" >
<xs:annotation >
<xs:documentation > Maximum x value according to crs.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name= "maxy" type= "xs:decimal" use= "required" >
<xs:annotation >
<xs:documentation > Maximum y value according to crs.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name= "maxz" type= "xs:decimal" use= "optional" >
<xs:annotation >
<xs:documentation > Maximum z value according to crs.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name= "temporalType" >
<xs:choice >
<xs:element name= "instant" type= "xs:dateTime" >
<xs:annotation >
<xs:documentation > Single point in time.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "period" type= "rm:periodType" >
<xs:annotation >
<xs:documentation > Time period or envelope.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:complexType name= "periodType" >
<xs:sequence >
<xs:element name= "start" type= "xs:dateTime" >
<xs:annotation >
<xs:documentation > Begin date/time.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "end" type= "xs:dateTime" minOccurs= "0" >
<xs:annotation >
<xs:documentation > End date/time.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name= "indeterminatePosition" type= "xs:boolean" >
<xs:annotation >
<xs:documentation > Whether resource has no end date/time (i.e. continuous acquisition).</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name= "contactType" >
<xs:sequence >
<xs:element name= "name" type= "xs:string" >
<xs:annotation >
<xs:documentation > Name of contact.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "organization" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Organization contact belongs to/represents.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "position" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Position/title of contact.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "address" type= "rm:addressType" minOccurs= "0" maxOccurs= "unbounded" >
<xs:annotation >
<xs:documentation > Address associated with a given contact.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "voice" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Voice telephone.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "fax" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Facsimile telephone.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "email" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Electronic mail address (note, do not include mailto: protocol as part of the email address).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "role" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Role of contact. While no vocabulary is imposed, it is advised to use ISO 19115 CI_RoleCode.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name= "addressType" >
<xs:sequence >
<xs:element name= "type" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Type of address (e.g. 'postal').</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "address" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Physical address.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "city" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > City.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "administrativearea" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Administrative area (state, provice/territory, etc.).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "postalcode" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Postal code.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name= "country" type= "xs:string" minOccurs= "0" >
<xs:annotation >
<xs:documentation > Country.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name= "linksType" >
<xs:sequence >
<xs:element name= "link" type= "rm:linkType" maxOccurs= "unbounded" >
<xs:annotation >
<xs:documentation > Online resource associated with a given resource. Attribute definitions:
* name: short name (like WMS layer name)
* type: link type. Strongly suggested to use values from the 'identifier' column in https://github.com/OSGeo/Cat-Interop/blob/master/LinkPropertyLookupTable.csv
* description: abstract text about link
* url: endpoint. If the URL is an OWS server, specify the *base* URL only without parameters like service=xxx.....
* format: format specification of online resource. Strongly suggested to use GDAL/OGR format values
2017-04-11 23:25:53 -04:00
* mimeType: MIME type representative of the online resource response (image/png, application/json, etc.)
2017-04-11 22:32:09 -04:00
* size: estimated size (in bytes) of the online resource response
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name= "linkType" >
<xs:attributeGroup ref= "rm:linkAttrs" />
</xs:complexType>
<xs:attributeGroup name= "linkAttrs" >
<xs:attribute name= "name" type= "xs:string" />
<xs:attribute name= "type" type= "xs:string" />
<xs:attribute name= "description" type= "xs:string" use= "optional" />
<xs:attribute name= "url" type= "xs:anyURI" use= "required" />
<xs:attribute name= "format" type= "xs:string" use= "optional" />
<xs:attribute name= "mimeType" type= "xs:string" use= "optional" />
<xs:attribute name= "size" type= "xs:string" use= "optional" />
</xs:attributeGroup>
2017-04-04 21:38:07 +03:00
</xs:schema>