diff --git a/ckanext/spatial/harvesters/iso19115/__init__.py b/ckanext/spatial/harvesters/iso19115/__init__.py new file mode 100644 index 00000000..8675b46f --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/__init__.py @@ -0,0 +1,4 @@ +from ckanext.spatial.harvesters.iso19115.harvester import ISO19115Harvester +from ckanext.spatial.harvesters.iso19115.spatial_harvester import ISO19115SpatialHarvester +from ckanext.spatial.harvesters.iso19115.validators \ + import ISO19115_Schema, ISO19115_1_Schema, ISO19115_2_Schema, ISO19115_Schematron \ No newline at end of file diff --git a/ckanext/spatial/harvesters/iso19115/harvester.py b/ckanext/spatial/harvesters/iso19115/harvester.py new file mode 100644 index 00000000..750d6406 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/harvester.py @@ -0,0 +1,583 @@ +import re +import six +from six.moves.urllib.parse import urlparse, urlunparse, urlencode + +import logging +from lxml import etree + +from ckan import model +from ckan import plugins as p +from ckantoolkit import config + +from ckan.lib.navl.validators import not_empty +from ckan import logic + +from ckan.plugins.core import SingletonPlugin, implements + +from ckanext.harvest.interfaces import IHarvester +from ckanext.harvest.model import HarvestObject + +from ckanext.spatial.harvesters.csw import CSWHarvester +from ckanext.spatial.interfaces import ISpatialHarvester + +from ckanext.spatial.harvesters.iso19115.model import ISO19115Document + +class ISO19115Harvester(CSWHarvester, SingletonPlugin): + ''' + A Harvester for CSW servers + ''' + implements(IHarvester) + + # def __init__(self): + #_csw = CSWHarvester() + # super(SpatialHarvester, self).__init__() + +# IHarvester + + # From parent + def info(self): + ''' + Harvesting implementations must provide this method, which will return + a dictionary containing different descriptors of the harvester. The + returned dictionary should contain: + + * name: machine-readable name. This will be the value stored in the + database, and the one used by ckanext-harvest to call the appropiate + harvester. + * title: human-readable name. This will appear in the form's select box + in the WUI. + * description: a small description of what the harvester does. This + will appear on the form as a guidance to the user. + + A complete example may be:: + + { + 'name': 'csw', + 'title': 'CSW Server', + 'description': 'A server that implements OGC's Catalog Service + for the Web (CSW) standard' + } + + :returns: A dictionary with the harvester descriptors + ''' + return { + 'name': 'iso19115_csw_harvester', + 'title': 'ISO19115 CSW based', + 'description': 'A server that implements OGC\'s Catalog Service for the Web (CSW) standard' + } + + # From parent CSWHarvester + # From parent SpatialHarvester + # def validate_config(self, config): + # ''' + + # [optional] + + # Harvesters can provide this method to validate the configuration + # entered in the form. It should return a single string, which will be + # stored in the database. Exceptions raised will be shown in the form's + # error messages. + + # :param harvest_object_id: Config string coming from the form + # :returns: A string with the validated configuration options + # ''' + # # Delegate + # return self._csw.validate_config(config) + + # From parent CSWHarvester + # def get_original_url(self, harvest_object_id): + # ''' + # [optional] + + # This optional but very recommended method allows harvesters to return + # the URL to the original remote document, given a Harvest Object id. + # Note that getting the harvest object you have access to its guid as + # well as the object source, which has the URL. + # This URL will be used on error reports to help publishers link to the + # original document that has the errors. If this method is not provided + # or no URL is returned, only a link to the local copy of the remote + # document will be shown. + + # Examples: + # * For a CKAN record: http://{ckan-instance}/api/rest/{guid} + # * For a WAF record: http://{waf-root}/{file-name} + # * For a CSW record: http://{csw-server}/?Request=GetElementById&Id={guid}&... + + # :param harvest_object_id: HarvestObject id + # :returns: A string with the URL to the original document + # ''' + # # Delegate + # return self._csw.get_original_url(harvest_object_id) + + # obj = model.Session.query(HarvestObject).\ + # filter(HarvestObject.id==harvest_object_id).\ + # first() + # if not obj: + # return None + + # return obj.source.url + + # overriding waiting for merge #258 + # From parent CSWHarvester + # def gather_stage(self, harvest_job): + # ''' + # The gather stage will receive a HarvestJob object and will be + # responsible for: + # - gathering all the necessary objects to fetch on a later. + # stage (e.g. for a CSW server, perform a GetRecords request) + # - creating the necessary HarvestObjects in the database, specifying + # the guid and a reference to its job. The HarvestObjects need a + # reference date with the last modified date for the resource, this + # may need to be set in a different stage depending on the type of + # source. + # - creating and storing any suitable HarvestGatherErrors that may + # occur. + # - returning a list with all the ids of the created HarvestObjects. + # - to abort the harvest, create a HarvestGatherError and raise an + # exception. Any created HarvestObjects will be deleted. + + # :param harvest_job: HarvestJob object + # :returns: A list of HarvestObject ids + # ''' + + # #TODO ######################################################################## + # # be sure to reload config + # self._set_source_config(harvest_job.source.config) + # ######################################################################### + + # return self._csw.gather_stage(harvest_job) + + # overriding waiting for merge #258 + # From parent CSWHarvester + def fetch_stage(self,harvest_object): + ''' + The fetch stage will receive a HarvestObject object and will be + responsible for: + - getting the contents of the remote object (e.g. for a CSW server, + perform a GetRecordById request). + - saving the content in the provided HarvestObject. + - creating and storing any suitable HarvestObjectErrors that may + occur. + - returning True if everything is ok (ie the object should now be + imported), "unchanged" if the object didn't need harvesting after + all (ie no error, but don't continue to import stage) or False if + there were errors. + + :param harvest_object: HarvestObject object + :returns: True if successful, 'unchanged' if nothing to import after + all, False if not successful + ''' + + # Check harvest object status + status = self._get_object_extra(harvest_object, 'status') + + if status == 'delete': + # No need to fetch anything, just pass to the import stage + return True + + log = logging.getLogger(__name__ + '.CSW.fetch') + log.debug('CswHarvester fetch_stage for object: %s', harvest_object.id) + + url = harvest_object.source.url + try: + self._setup_csw_client(url) + except Exception as e: + self._save_object_error('Error contacting the CSW server: %s' % e, + harvest_object) + return False + #TODO ######################################################################## + # load config + self._set_source_config(harvest_object.source.config) + # get output_schema from config + namespace = self.source_config.get('output_schema',self.output_schema()) + identifier = harvest_object.guid + try: + record = self.csw.getrecordbyid([identifier], outputschema=namespace) + except Exception as e: + self._save_object_error('Error getting the CSW record with GUID %s' % identifier, harvest_object) + return False + ########################################################################## + + if record is None: + self._save_object_error('Empty record for GUID %s' % identifier, + harvest_object) + return False + + try: + # Save the fetch contents in the HarvestObject + # Contents come from csw_client already declared and encoded as utf-8 + # Remove original XML declaration + content = re.sub('<\?xml(.*)\?>', '', record['xml']) + + harvest_object.content = content.strip() + harvest_object.save() + except Exception as e: + self._save_object_error('Error saving the harvest object for GUID %s [%r]' % \ + (identifier, e), harvest_object) + return False + + log.debug('XML content saved (len %s)', len(record['xml'])) + return True + + # From parent SpatialHarvester + def import_stage(self, harvest_object): + ''' + The import stage will receive a HarvestObject object and will be + responsible for: + - performing any necessary action with the fetched object (e.g. + create, update or delete a CKAN package). + Note: if this stage creates or updates a package, a reference + to the package should be added to the HarvestObject. + - setting the HarvestObject.package (if there is one) + - setting the HarvestObject.current for this harvest: + - True if successfully created/updated + - False if successfully deleted + - setting HarvestObject.current to False for previous harvest + objects of this harvest source if the action was successful. + - creating and storing any suitable HarvestObjectErrors that may + occur. + - creating the HarvestObject - Package relation (if necessary) + - returning True if the action was done, "unchanged" if the object + didn't need harvesting after all or False if there were errors. + + NB You can run this stage repeatedly using 'paster harvest import'. + + :param harvest_object: HarvestObject object + :returns: True if the action was done, "unchanged" if the object didn't + need harvesting after all or False if there were errors. + ''' + + log = logging.getLogger(__name__ + '.import') + log.debug('Import stage for harvest object: %s', harvest_object.id) + + # check arguments + if not harvest_object: + log.error('No harvest object received') + return False + elif harvest_object.content is None: + self._save_object_error('Empty content for object {0}'.format(harvest_object.id), harvest_object, 'Import') + return False + + + # read configuration + self._set_source_config(harvest_object.source.config) + + # prepare context + context = { + 'model': model, + 'session': model.Session, + 'user': self._get_user_name(), + # Tunnelled to pass to spatial_plugin + 'config': dict(self.source_config) + } + + # Flag previous object as not current anymore + # Get the last harvested object (if any) + previous_object = model.Session.query(HarvestObject) \ + .filter(HarvestObject.guid==harvest_object.guid) \ + .filter(HarvestObject.current==True) \ + .first() + if previous_object and not self.force_import: + previous_object.current = False + previous_object.add() + + ############################################## + + # evaluate the new status + if self.force_import: + status = 'change' + else: + status = self._get_object_extra(harvest_object, 'status') + + if status == 'delete': + return self._delete(context, harvest_object) + + ################### + # TODO guess the 'right' ISpatialHarvester + + # Validate ISO document + is_valid, _status, _plugin, _validator = self._validate(harvest_object) + if not is_valid: + # If validation errors were found, import will stop unless + # harvester validation flag says otherwise + # TODO better policy, based on cumulated _status + # a boolean can't express too much, + # we should be able to ask + if not self.source_config.get('continue_on_validation_errors') \ + and \ + not p.toolkit.asbool(config.get('ckanext.spatial.harvest.continue_on_validation_errors', False)): + return False + # Build the package dict + package_dict = None + if not _plugin: + # if not spatial_plugins: + log.error('unable to guess the format using validator, '+\ + 'fallback to default iso19139 implementation') + + csw_harvester = p.get_plugin('csw_harvester') + + # fallback to default parent implementation + # TODO rise a ticket: unable to extend CSWHarvester + # super.get_package_dict(iso_values, harvest_object) + # overlaps but not implements ISpatialHarvester method + # harvester.get_package_dict(context, { + # 'package_dict': package_dict, + # 'iso_values': parsed_values, + # 'xml_tree': parsed_values.xml_tree, + # 'harvest_object': harvest_object, + # }) + + if csw_harvester: + # Parse ISO document + try: + from ckanext.spatial.model import ISODocument + iso_parser = ISODocument(harvest_object.content) + parsed_values = iso_parser.read_values() + except Exception as e: + self._save_object_error('Error parsing ISO document for object {0}: {1}'.format(harvest_object.id, six.text_type(e)), + harvest_object, 'Import') + return False + + package_dict = csw_harvester.get_package_dict(parsed_values, harvest_object) + else: + # a plugin has been found and used to parse + # let's use that implementation to provide a package + + # Parse ISO document + # TODO use _status and policy to understand which parser to use + # this may require an interface method from ISpatialHarvester + try: + parser = ISO19115Document(harvest_object.content) + parsed_values = parser.read_values() + except Exception as e: + self._save_object_error('Error parsing ISO document for object {0}: {1}'.format(harvest_object.id, six.text_type(e)), + harvest_object, 'Import') + return False + + package_dict = _plugin.get_package_dict(context, { + 'package_dict': package_dict, + 'iso_values': parsed_values, + # TODO ticket + # should be passed by base parser.read_values() + # but it's not there... + 'xml_tree': parsed_values.get('xml_tree',etree.fromstring(harvest_object.content)), + 'harvest_object': harvest_object, + }) + + if not package_dict: + log.error('No package dict returned, aborting import for object {0}'.format(harvest_object.id)) + return False + + + ################### + + # Update GUID with the one on the document + iso_guid = parsed_values.get('guid') + self._set_guid(harvest_object, iso_guid) + + # Get document modified date + metadata_date = parsed_values.get('metadata-date') + if metadata_date: + import dateutil + try: + harvest_object.metadata_modified_date = dateutil.parser.parse(metadata_date, ignoretz=True) + except ValueError: + self._save_object_error('Could not extract reference date for object {0} ({1})' + .format(harvest_object.id, parsed_values['metadata-date']), harvest_object, 'Import') + return False + else: + import datetime + #TODO log warn! + harvest_object.metadata_modified_date = datetime.datetime.today() + + + # TODO doublecheck when to .add() + # Flag this object as the current one + harvest_object.current = True + harvest_object.add() + ################### + + # The default package schema does not like Upper case tags + tag_schema = logic.schema.default_tags_schema() + tag_schema['name'] = [not_empty, six.text_type] + package_schema = logic.schema.default_create_package_schema() + package_schema['tags'] = tag_schema + context['schema'] = package_schema + + try: + if status == 'new': + self._new(context, log, harvest_object, package_schema, package_dict) + + elif status == 'change': + # Check if the modified date is more recent + if not self.force_import \ + and previous_object and \ + harvest_object.metadata_modified_date <= previous_object.metadata_modified_date: + + # Assign the previous job id to the new object to + # avoid losing history + harvest_object.harvest_job_id = previous_object.job.id + harvest_object.add() + # Delete the previous object to avoid cluttering the object table + previous_object.delete() + + self._change(context, log, harvest_object, package_schema, package_dict) + else: + + package_dict['id'] = harvest_object.package_id + + package_id = p.toolkit.get_action('package_update')(context, package_dict) + log.info('Updated package %s with guid %s', package_id, harvest_object.guid) + + except p.toolkit.ValidationError as e: + self._save_object_error('Validation Error: %s' % six.text_type(e.error_summary), harvest_object, 'Import') + return False + + model.Session.commit() + + return True + + + def _set_guid(self, harvest_object, iso_guid): + import uuid + import hashlib + if iso_guid and harvest_object.guid != iso_guid: + # First make sure there already aren't current objects + # with the same guid + existing_object = model.Session.query(HarvestObject.id) \ + .filter(HarvestObject.guid==iso_guid) \ + .filter(HarvestObject.current==True) \ + .first() + if existing_object: + self._save_object_error('Object {0} already has this guid {1}'.format(existing_object.id, iso_guid), + harvest_object, 'Import') + return False + + harvest_object.guid = iso_guid + harvest_object.add() + + # Generate GUID if not present (i.e. it's a manual import) + if not harvest_object.guid: + m = hashlib.md5() + m.update(harvest_object.content.encode('utf8', 'ignore')) + harvest_object.guid = m.hexdigest() + harvest_object.add() #???? + + def _validate(self, harvest_object): + ''' + :returns: [True|False] status plugin_name + if True some validator has passed (first win) + in that case also the plugin is passed + (True, status[plugin_name]['errors'], plugin, validator) + if False the plugin name is false and a report + can be located under: + status[plugin_name]['errors'] + ''' + # Add any custom validators from extensions + is_valid = False + status = {} + for plugin in p.PluginImplementations(ISpatialHarvester): + + # TODO priority / preferences / order (let's define harvester options to use into get_validators())? + for validator in plugin.get_validators(): + # TODO this assume document as xml, we can do better... (using csw outputformat) + _errors=[] + try: + # TODO + # report: + # File "/srv/app/src_extensions/ckanext-spatial/ckanext/spatial/harvesters/base.py", line 827, in _validate_document + # valid, profile, errors = validator.is_valid(xml) + # ValueError: need more than 2 values to unpack + # is_valid, _profile, _errors = self._validate_document(harvest_object.content, harvest_object, validator) + # is_valid interface is also specifying an different tuple: + # class XsdValidator(BaseValidator): + # '''Base class for validators that use an XSD schema.''' + # @classmethod + # def _is_valid(cls, xml, xsd_filepath, xsd_name): + # Returns: + # (is_valid, [(error_message_string, error_line_number)]) + # which instead (as is currently used) should be: + # (is_valid, [(error_line_number, error_message_string)]) + + # if csw outputformat application/xml + + document_string = re.sub('<\?xml(.*)\?>', '', harvest_object.content) + try: + _xml = etree.fromstring(document_string) + except etree.XMLSyntaxError as e: + self._save_object_error('Could not parse XML file: {0}'.format(six.text_type(e)), harvest_object, 'Import') + return False, None, [] + + is_valid, _errors = validator.is_valid(_xml) + except Exception as e: + is_valid = False + _errors.insert(0, ('{0} Validation Error'.format(str(e)), e)) + + plugin_name = plugin.name# or plugin.__class__.__name__ + + # accumulate errors by (profile and plugin) + status.update({plugin_name:{'status':is_valid, 'validator':validator.name, 'errors':_errors}}) + + # The first win, order policy matter! + if is_valid: + return is_valid, status, plugin, validator + + # continue iterating to guess the right profile + + return is_valid, status, None, None + + def _delete(self, log, context, harvest_object): + # Delete package + context.update({ + 'ignore_auth': True, + }) + p.toolkit.get_action('package_delete')(context, {'id': harvest_object.package_id}) + log.info('Deleted package {0} with guid {1}'.format(harvest_object.package_id, harvest_object.guid)) + return True + + def _change(self, context, log, harvest_object, package_schema, package_dict): + + + # Reindex the corresponding package to update the reference to the + # harvest object + if ((config.get('ckanext.spatial.harvest.reindex_unchanged', True) != 'False' + or self.source_config.get('reindex_unchanged') != 'False') + and harvest_object.package_id): + context.update({'validate': False, 'ignore_auth': True}) + try: + package_dict = logic.get_action('package_show')(context, + {'id': harvest_object.package_id}) + except p.toolkit.ObjectNotFound: + # TODO LOG?!?! + pass + else: + for extra in package_dict.get('extras', []): + if extra['key'] == 'harvest_object_id': + extra['value'] = harvest_object.id + if package_dict: + from ckan.lib.search.index import PackageSearchIndex + PackageSearchIndex().index_package(package_dict) + + log.info('Document with GUID %s unchanged, skipping...' % (harvest_object.guid)) + + def _new(self, context, log, harvest_object, package_schema, package_dict): + + # We need to explicitly provide a package ID, otherwise ckanext-spatial + # won't be be able to link the extent to the package. + import uuid + package_dict['id'] = six.text_type(uuid.uuid4()) + package_schema['id'] = [six.text_type] + + # Save reference to the package on the object + harvest_object.package_id = package_dict['id'] + harvest_object.add() + # Defer constraints and flush so the dataset can be indexed with + # the harvest object id (on the after_show hook from the harvester + # plugin) + model.Session.execute('SET CONSTRAINTS harvest_object_package_id_fkey DEFERRED') + model.Session.flush() + + package_id = p.toolkit.get_action('package_create')(context, package_dict) + log.info('Created new package %s with guid %s', package_id, harvest_object.guid) + + diff --git a/ckanext/spatial/harvesters/iso19115/model.py b/ckanext/spatial/harvesters/iso19115/model.py new file mode 100644 index 00000000..e78141c3 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/model.py @@ -0,0 +1,1762 @@ +from lxml import etree +from owslib.util import element_to_string +import six +import json +import copy +import datetime +import re +import logging +log = logging.getLogger(__name__) + +# Py2 vs Py3 encoding +def _encode(element): + import sys + if sys.version_info[0] < 3: + return element.encode('utf-8') + else: + return str(element) + +from ckanext.spatial.model.harvested_metadata import MappedXmlElement, MappedXmlDocument + +class ISOElement(MappedXmlElement): + + namespaces = { + "gts": "http://www.isotc211.org/2005/gts", + # "gml": "http://www.opengis.net/gml", + "gml32": "http://www.opengis.net/gml/3.2", + "gmx": "http://www.isotc211.org/2005/gmx", + "gsr": "http://www.isotc211.org/2005/gsr", + "gss": "http://www.isotc211.org/2005/gss", + # "gco": "http://www.isotc211.org/2005/gco", + "gmd": "http://www.isotc211.org/2005/gmd", + # "srv": "http://www.isotc211.org/2005/srv", + # ISO19115-3 + "xlink": "http://www.w3.org/1999/xlink", + "gml": "http://www.opengis.net/gml/3.2", + "cit": "http://standards.iso.org/iso/19115/-3/cit/2.0", + # "fcc": "http://standards.iso.org/iso/19110/fcc/1.0", + "gco": "http://standards.iso.org/iso/19115/-3/gco/1.0", + "gcx": "http://standards.iso.org/iso/19115/-3/gcx/1.0", + "gex": "http://standards.iso.org/iso/19115/-3/gex/1.0", + "lan": "http://standards.iso.org/iso/19115/-3/lan/1.0", + # "mac": "http://standards.iso.org/iso/19115/-3/mac/2.0", + # "mas": "http://standards.iso.org/iso/19115/-3/mas/1.0", + "mcc": "http://standards.iso.org/iso/19115/-3/mcc/1.0", + "mco": "http://standards.iso.org/iso/19115/-3/mco/1.0", + "mdb": "http://standards.iso.org/iso/19115/-3/mdb/2.0", + # "mdq": "http://standards.iso.org/iso/19157/-2/mdq/1.0", + "mds": "http://standards.iso.org/iso/19115/-3/mds/2.0", + "mmi": "http://standards.iso.org/iso/19115/-3/mmi/1.0", + # "mpc": "http://standards.iso.org/iso/19115/-3/mpc/1.0", + # "mrc": "http://standards.iso.org/iso/19115/-3/mrc/2.0", + "mrd": "http://standards.iso.org/iso/19115/-3/mrd/1.0", + "mri": "http://standards.iso.org/iso/19115/-3/mri/1.0", + "mrl": "http://standards.iso.org/iso/19115/-3/mrl/2.0", + "mrs": "http://standards.iso.org/iso/19115/-3/mrs/1.0", + # "msr": "http://standards.iso.org/iso/19115/-3/msr/2.0", + "srv": "http://standards.iso.org/iso/19115/-3/srv/2.0", + "xml": "http://www.w3.org/XML/1998/namespace", + # "xsi": "http://www.w3.org/2001/XMLSchema-instance", + # "dqc": "http://standards.iso.org/iso/19157/-2/dqc/1.0", + + } + + +class ISOResourceLocator(ISOElement): + + elements = [ + ISOElement( + name="url", + search_paths=[ + "gmd:linkage/gmd:URL/text()", + # 19115-3 + "cit:linkage/gco:CharacterString/text()", + ], + multiplicity="1", + ), + ISOElement( + name="function", + search_paths=[ + "gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue", + # 19115-3 + "cit:function/cit:CI_OnLineFunctionCode/@codeListValue", + "cit:function/cit:CI_OnLineFunctionCode/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="name", + search_paths=[ + "gmd:name/gco:CharacterString/text()", + "gmd:name/gmx:MimeFileType/text()", + # 19115-3 + "cit:name/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="description", + search_paths=[ + "gmd:description/gco:CharacterString/text()", + # 19115-3 + "cit:description/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="protocol", + search_paths=[ + "gmd:protocol/gco:CharacterString/text()", + # 19115-3 + "cit:protocol/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + # 19115-3 + ISOElement( + name="protocol-request", + search_paths=[ + # 19115-3 + "cit:protocolRequest/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="application-profile", + search_paths=[ + # 19115-3 + "cit:applicationProfile/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="distribution-format", + search_paths=[ + "ancestor::mrd:MD_DigitalTransferOptions/mrd:distributionFormat/mrd:MD_Format/mrd:formatSpecificationCitation/cit:CI_Citation/cit:title/gco:CharacterString/text()" + ], + multiplicity="*" + ), + ISOElement( + name="distributor-format", + search_paths=[ + "ancestor::mrd:MD_Distributor/mrd:distributorFormat/mrd:MD_Format/mrd:formatSpecificationCitation/cit:CI_Citation/cit:title/gco:CharacterString/text()" + ], + multiplicity="*" + ), + + ISOElement( + name="offline", + search_paths=[ + "ancestor::mrd:MD_DigitalTransferOptions/mrd:offLine/mrd:MD_Medium/cit:CI_Citation/cit:title/gco:CharacterString/text()" + ], + multiplicity="*" + ), + ISOElement( + name="transfer-size", + search_paths=[ + "ancestor::mrd:MD_DigitalTransferOptions/mrd:transferSize/gco:Real/text()" + ], + multiplicity="0..1" + ), + ISOElement( + name="units-of-distribution", + search_paths=[ + "ancestor::mrd:MD_DigitalTransferOptions/mrd:unitsOfDistribution/gco:CharacterString/text()" + ], + multiplicity="0..1" + ) + ] + + +class ISOResponsibleParty(ISOElement): + + elements = [ + ISOElement( + name="individual-name", + search_paths=[ + "gmd:individualName/gco:CharacterString/text()", + # 19115-3 + "cit:party/cit:CI_Individual/cit:name/gco:CharacterString/text()", + "cit:party/cit:CI_Organisation/cit:individual/cit:CI_Individual/cit:name/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="organisation-name", + search_paths=[ + "gmd:organisationName/gco:CharacterString/text()", + # 19115-3 + "cit:party/cit:CI_Organisation/cit:name/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="position-name", + search_paths=[ + "gmd:positionName/gco:CharacterString/text()", + # 19115-3 + "cit:party/cit:CI_Individual/cit:positionName/gco:CharacterString/text()", + "cit:party/cit:CI_Organisation/cit:individual/cit:CI_Individual/cit:positionName/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="contact-info", + search_paths=[ + "gmd:contactInfo/gmd:CI_Contact", + # 19115-3 + "cit:party/cit:CI_Individual/cit:contactInfo/cit:CI_Contact", + "cit:party/cit:CI_Organisation/cit:individual/cit:CI_Individual/cit:contactInfo/cit:CI_Contact", + "cit:party/cit:CI_Organisation/cit:contactInfo/cit:CI_Contact", + ], + multiplicity="0..1", + elements = [ + ISOElement( + name="email", + search_paths=[ + "gmd:address/gmd:CI_Address/gmd:electronicMailAddress/gco:CharacterString/text()", + # 19115-3 + "cit:address/cit:CI_Address/cit:electronicMailAddress/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOResourceLocator( + name="online-resource", + search_paths=[ + "gmd:onlineResource/gmd:CI_OnlineResource", + # 19115-3 + "cit:onlineResource/cit:CI_OnlineResource", + ], + multiplicity="0..1", + ), + + ] + ), + ISOElement( + name="role", + search_paths=[ + "gmd:role/gmd:CI_RoleCode/@codeListValue", + # 19115-3 + "gmd:role/gmd:CI_RoleCode/text()", + "cit:role/cit:CI_RoleCode/@codeListValue", + "cit:role/cit:CI_RoleCode/text()", + ], + multiplicity="0..1", + ), + ] + + +class ISODataFormat(ISOElement): + + elements = [ + ISOElement( + name="name", + search_paths=[ + "gmd:name/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="version", + search_paths=[ + "gmd:version/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ] + + +class ISOReferenceDate(ISOElement): + + elements = [ + ISOElement( + name="type", + search_paths=[ + "gmd:dateType/gmd:CI_DateTypeCode/@codeListValue", + "gmd:dateType/gmd:CI_DateTypeCode/text()", + # 19115-3 + "cit:dateType/cit:CI_DateTypeCode/@codeListValue", + "cit:dateType/cit:CI_DateTypeCode/text()", + ], + multiplicity="1", + ), + ISOElement( + name="value", + search_paths=[ + "gmd:date/gco:Date/text()", + "gmd:date/gco:DateTime/text()", + # 19115-3 + "cit:date/gco:Date/text()", + "cit:date/gco:DateTime/text()", + ], + multiplicity="1", + #TODO check multiplicity="0..1", + ), + ] + +class ISOCoupledResources(ISOElement): + + elements = [ + ISOElement( + name="title", + search_paths=[ + "@xlink:title", + ], + multiplicity="*", + ), + ISOElement( + name="href", + search_paths=[ + "@xlink:href", + ], + multiplicity="*", + ), + ISOElement( + name="uuid", + search_paths=[ + "@uuidref", + ], + multiplicity="*", + ), + + ] + + +class ISOBoundingBox(ISOElement): + + elements = [ + ISOElement( + name="west", + search_paths=[ + "gmd:westBoundLongitude/gco:Decimal/text()", + # ISO19115-3 + "gex:westBoundLongitude/gco:Decimal/text()", + ], + multiplicity="1", + ), + ISOElement( + name="east", + search_paths=[ + "gmd:eastBoundLongitude/gco:Decimal/text()", + # ISO19115-3 + "gex:eastBoundLongitude/gco:Decimal/text()", + ], + multiplicity="1", + ), + ISOElement( + name="north", + search_paths=[ + "gmd:northBoundLatitude/gco:Decimal/text()", + # ISO19115-3 + "gex:northBoundLatitude/gco:Decimal/text()", + ], + multiplicity="1", + ), + ISOElement( + name="south", + search_paths=[ + "gmd:southBoundLatitude/gco:Decimal/text()", + # ISO19115-3 + "gex:southBoundLatitude/gco:Decimal/text()", + ], + multiplicity="1", + ), + ] + +class ISOBrowseGraphic(ISOElement): + + elements = [ + ISOElement( + name="file", + search_paths=[ + "gmd:fileName/gco:CharacterString/text()", + ], + multiplicity="1", + ), + ISOElement( + name="description", + search_paths=[ + "gmd:fileDescription/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="type", + search_paths=[ + "gmd:fileType/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ] + +# ISO19115-3 +class ISOLocalised(ISOElement): + + elements = [ + ISOElement( + name="default", + search_paths=[ + "gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name='local', + search_paths=[ + "gmd:PT_FreeText/gmd:textGroup", + "lan:PT_FreeText/lan:textGroup", + ], + multiplicity="0..1", + elements=[ + ISOElement( + name="value", + search_paths=[ + "gmd:LocalisedCharacterString/text()", + "lan:LocalisedCharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="language_code", + search_paths=[ + "gmd:LocalisedCharacterString/@locale", + "lan:LocalisedCharacterString/@locale", + ], + multiplicity="0..1", + ) + ] + ) + ] + + +class ISOKeyword(ISOElement): + + elements = [ + ISOElement( + name="keyword", + search_paths=[ + #"gmd:keyword/gco:CharacterString/text()", + "gmd:keyword", + # ISO19115-3 + "mri:keyword", + ], + multiplicity="*", + ), + ISOElement( + name="type", + search_paths=[ + "gmd:type/gmd:MD_KeywordTypeCode/@codeListValue", + "gmd:type/gmd:MD_KeywordTypeCode/text()", + # ISO19115-3 + "mri:type/mri:MD_KeywordTypeCode/@codeListValue", + "mri:type/mri:MD_KeywordTypeCode/text()", + ], + multiplicity="0..1", + ), + # If Thesaurus information is needed at some point, this is the + # place to add it + ] + + def infer_keywords(self, values): + keywords = values['keywords'] + + defaultLangKey = cleanLangKey(values.get('metadata-language', 'en')) + + value = [] + if isinstance(keywords, list): + for klist in keywords: + ktype = klist.get('type') + for item in klist.get('keywords', []): + LangDict = local_to_dict(item, defaultLangKey) + value.append({ + 'keyword': json.dumps(LangDict), + 'type': ktype + }) + else: + for item in keywords: + LangDict = local_to_dict(item, defaultLangKey) + value.append({ + 'keyword': json.dumps(LangDict), + 'type': item.get('type') + }) + values['keywords'] = value + + def infer_values(self, values): + #iso19139-3 + self.infer_keywords(values) + return values + +# ISO19115-3 +class ISOTemporalExtent(ISOElement): + + elements = [ + ISOElement(name="begin", + search_paths=[ + "gml:beginPosition/text()", + "gml32:beginPosition/text()", + ], + multiplicity="0..1" + ), + ISOElement(name="end", + search_paths=[ + "gml:endPosition/text()", + "gml32:endPosition/text()", + ], + multiplicity="0..1" + ) + ] + +# ISO19115-3 +class ISOVerticalExtent(ISOElement): + + elements = [ + ISOElement(name="min", + search_paths=[ + "gmd:minimumValue/gco:Real/text()", + "gex:minimumValue/gco:Real/text()", + ], + multiplicity="0..1" + ), + ISOElement(name="max", + search_paths=[ + "gmd:maximumValue/gco:Real/text()", + "gex:maximumValue/gco:Real/text()", + ], + multiplicity="0..1" + ) + ] + +# ISO19115-3 +class ISOIdentifier(ISOElement): + + elements = [ + ISOElement( + name="code", + search_paths=[ + # ISO19115-3 + "mcc:code/gco:CharacterString/text()", + "mcc:code/gcx:Anchor/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="authority", + search_paths=[ + # ISO19115-3 + "mcc:authority/cit:CI_Citation/cit:title/gco:CharacterString/text()", + "mcc:authority/cit:CI_Citation/cit:title/gcx:Anchor/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="code-space", + search_paths=[ + # ISO19115-3 + "mcc:codeSpace/gco:CharacterString/text()", + "mcc:codeSpace/gcx:Anchor/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="version", + search_paths=[ + # ISO19115-3 + "mcc:version/gco:CharacterString/text()", + "mcc:version/gcx:Anchor/text()", + ], + multiplicity="0..1", + ), + ] + +class ISOUsage(ISOElement): + + elements = [ + ISOElement( + name="usage", + search_paths=[ + "gmd:specificUsage/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOResponsibleParty( + name="contact-info", + search_paths=[ + "gmd:userContactInfo/gmd:CI_ResponsibleParty", + ], + multiplicity="0..1", + ), + ] + +class ISOAggregationInfo(ISOElement): + + elements = [ + ISOElement( + name="aggregate-dataset-name", + search_paths=[ + "gmd:aggregateDatasetName/gmd:CI_Citation/gmd:title/gco:CharacterString/text()", + # ISO19115-3 + "mri:name/cit:CI_Citation/cit:title/gco:CharacterString/text()" + ], + multiplicity="0..1", + ), + ISOElement( + name="aggregate-dataset-identifier", + search_paths=[ + "gmd:aggregateDatasetIdentifier/gmd:MD_Identifier/gmd:code/gco:CharacterString/text()", + # ISO19115-3 + "mri:name/cit:CI_Citation/cit:identifier/mcc:MD_Identifier/mcc:code/gco:CharacterString/text()" + ], + multiplicity="0..1", + ), + ISOElement( + name="association-type", + search_paths=[ + "gmd:associationType/gmd:DS_AssociationTypeCode/@codeListValue", + "gmd:associationType/gmd:DS_AssociationTypeCode/text()", + # ISO19115-3 + "mri:associationType/mri:DS_AssociationTypeCode/@codeListValue", + "mri:associationType/mri:DS_AssociationTypeCode/text()" + ], + multiplicity="0..1", + ), + ISOElement( + name="initiative-type", + search_paths=[ + "gmd:initiativeType/gmd:DS_InitiativeTypeCode/@codeListValue", + "gmd:initiativeType/gmd:DS_InitiativeTypeCode/text()", + # ISO19115-3 + "mri:initiativeType/mri:DS_InitiativeTypeCode/@codeListValue", + "mri:initiativeType/mri:DS_InitiativeTypeCode/text()", + ], + multiplicity="0..1", + ), + ] + +# ISO19115-3 +class ISOCitation(ISOElement): + elements = [ + ISOElement( + name="type", + search_paths=[ + # 19115-3 + "ancestor::mdb:MD_Metadata/mdb:metadataScope/mdb:MD_MetadataScope/mdb:resourceScope/mcc:MD_ScopeCode/@codeListValue", + "ancestor::mdb:MD_Metadata/mdb:metadataScope/mdb:MD_MetadataScope/mdb:resourceScope/mcc:MD_ScopeCode/text()", + ], + multiplicity="1", + ), + ISOElement( + name="id", + search_paths=[ + # 19115-3 + "ancestor::mdb:MD_Metadata/mdb:metadataIdentifier/mcc:MD_Identifier", + ], + multiplicity="0..1", + elements=[ + ISOElement( + name="code", + search_paths=[ + # ISO19115-3 + "mcc:code/gco:CharacterString/text()", + "mcc:code/gcx:Anchor/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="authority", + search_paths=[ + # ISO19115-3 + "mcc:authority/cit:CI_Citation/cit:title/gco:CharacterString/text()", + "mcc:authority/cit:CI_Citation/cit:title/gcx:Anchor/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="code-space", + search_paths=[ + # ISO19115-3 + "mcc:codeSpace/gco:CharacterString/text()", + "mcc:codeSpace/gcx:Anchor/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="version", + search_paths=[ + # ISO19115-3 + "mcc:version/gco:CharacterString/text()", + "mcc:version/gcx:Anchor/text()", + ], + multiplicity="0..1", + ), + ] + ), + ISOResponsibleParty( + name="author", + search_paths=[ + # 19115-3 + "cit:citedResponsibleParty/cit:CI_Responsibility" + ], + multiplicity="1..*", + ), + ISOReferenceDate( + name="issued", + search_paths=[ + # 19115-3 + "ancestor::mdb:MD_Metadata/mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:date/cit:CI_Date[cit:dateType/cit:CI_DateTypeCode/@codeListValue != 'creation']", + "ancestor::mdb:MD_Metadata/mdb:dateInfo/cit:CI_Date" + ], + multiplicity="1..*", + ), + ISOLocalised( + name="abstract", + search_paths=[ + # ISO19115-3 + "ancestor::mdb:MD_Metadata/mdb:identificationInfo/mri:MD_DataIdentification/mri:abstract", + "ancestor::mdb:MD_Metadata/mdb:identificationInfo/srv:SV_ServiceIdentification/mri:abstract", + ], + multiplicity="1", + ), + ISOElement( + name="publisher", + search_paths=[ + # 19115-3 + "cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/text() ='publisher']/cit:party/cit:CI_Individual/cit:name/gco:CharacterString/text()[boolean(.)]", + "cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/text() ='publisher']/cit:party/cit:CI_Organisation/cit:name/gco:CharacterString/text()[boolean(.)]", + + ], + multiplicity="1", + ), + ISOLocalised( + name="title", + search_paths=[ + # 19115-3 + "cit:title", + ], + multiplicity="1", + ), + ] + + def infer_values(self, values): + self.infer_citation(values) + return values + + def infer_citation(self, values): + if 'citation' not in values or not values['citation']: + return + value = values['citation'][0] + if len(value['issued']): + dates = value['issued'] + if isinstance(dates[0], str): + dates.sort(reverse=True) + else: # it's an object + dates = sorted(dates, key=lambda k: k['value'], reverse=True) + issued_date = str(dates[0]['value']) + value['issued'] = [{"date-parts": [issued_date[:4], issued_date[5:7], issued_date[8:10]]}] + value['id'] = calculate_identifier(value['id']) + + # remove duplicate entries + author_list = [ + {"individual-name": x['individual-name'], + "organisation-name": x['organisation-name'], + } for x in value['author']] + author_list = [i for n, i in enumerate(author_list) if i not in author_list[n + 1:]] + + #clear author list + value['author'] = [] + + for author in author_list: + ind = author.get('individual-name') + org = author.get('organisation-name') + if ind: + name_list = ind.split() + value['author'].append({ + "given": ' '.join(name_list[0:-1]), + "family": name_list[-1] + }) + else: + value['author'].append({"literal": org}) + + defaultLangKey = cleanLangKey(values.get('metadata-language', 'en')) + value['title'] = local_to_dict(value['title'], defaultLangKey) + value['abstract'] = local_to_dict(value['abstract'], defaultLangKey) + + identifier = values.get('unique-resource-identifier-full', {}) + if identifier: + doi = calculate_identifier(identifier) + doi = re.sub(r'^http.*doi\.org/', '', doi, flags=re.IGNORECASE) # strip https://doi.org/ and the like + if doi and re.match(r'^10.\d{4,9}\/[-._;()/:A-Z0-9]+$', doi, re.IGNORECASE): + value['DOI'] = doi + # TODO: could we have more then one doi? + import ckan.lib.munge as munge + from ckan.lib.helpers import url_for + field = {} + for lang in ['fr', 'en']: + field[lang] = copy(value) + title = field[lang]['title'] + field[lang]['title'] = title.get(lang) + abstract = field[lang]['abstract'] + field[lang]['abstract'] = abstract.get(lang) + field[lang]['language'] = lang + field[lang]['URL'] = url_for( + controller='dataset', + action='read', + id=munge.munge_name(values.get('guid', '')), + local=lang, + qualified=True + ) + field[lang] = json.dumps([field[lang]]) + # the dump converts utf-8 escape sequences to unicode escape + # sequences so we have to convert back again + # if(field[lang] and re.search(r'\\u[0-9a-fA-F]{4}', field[lang])): + # field[lang] = field[lang].decode("raw_unicode_escape") + # double escape any double quotes that are already escaped + field[lang] = field[lang].replace('\"', '\\"') + values['citation'] = json.dumps(field) + + +class ISO19115Document(MappedXmlDocument): + + # Attribute specifications from "XPaths for GEMINI" by Peter Parslow. + + elements = [ + # TODO check why commented out + # ISOElement( + # name="guid", + # search_paths="gmd:fileIdentifier/gco:CharacterString/text()", + # multiplicity="0..1", + # ), + ISOIdentifier( + name="guid", + search_paths=[ + # ISO 19139 + "gmd:fileIdentifier/gco:CharacterString/text()", + # 19115-3 + "mdb:metadataIdentifier/mcc:MD_Identifier" + ], + multiplicity="0..1", + ), + ISOElement( + name="metadata-language", + search_paths=[ + "gmd:language/gmd:LanguageCode/@codeListValue", + "gmd:language/gmd:LanguageCode/text()", + "gmd:language/gco:CharacterString/text()", + # 19115-3 + "mdb:defaultLocale/lan:PT_Locale/lan:language/lan:LanguageCode/@codeListValue", + "mdb:defaultLocale/lan:PT_Locale/lan:language/lan:LanguageCode/text()", + ], + multiplicity="1", + # TODO check why changed + # multiplicity="0..1", + ), + ISOElement( + name="metadata-standard-name", + search_paths="gmd:metadataStandardName/gco:CharacterString/text()", + multiplicity="0..1", + ), + ISOElement( + name="metadata-standard-version", + search_paths="gmd:metadataStandardVersion/gco:CharacterString/text()", + multiplicity="0..1", + ), + ISOElement( + name="resource-type", + search_paths=[ + "gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue", + "gmd:hierarchyLevel/gmd:MD_ScopeCode/text()", + # 19115-3 + "mdb:metadataScope/mdb:MD_MetadataScope/mdb:resourceScope/mcc:MD_ScopeCode/@codeListValue", + "mdb:metadataScope/mdb:MD_MetadataScope/mdb:resourceScope/mcc:MD_ScopeCode/text()", + ], + multiplicity="*", + ), + ISOResponsibleParty( + name="metadata-point-of-contact", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty", + # 19115-3 + "mdb:contact/cit:CI_Responsibility", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/@codeListValue ='pointOfContact']", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/text() ='pointOfContact']", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:resourceMaintenance/mmi:MD_MaintenanceInformation/mmi:contact/cit:CI_Responsibility", + ], + multiplicity="1..*", + ), + # 19115-3 + ISOResponsibleParty( + name="cited-responsible-party", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty", + # 19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility", + ], + multiplicity="1..*", + ), + ISOReferenceDate( + name="metadata-reference-date", + search_paths=[ + # 19115-3 + "mdb:dateInfo/cit:CI_Date", + ], + multiplicity="1..*", + ), + + ISOElement( + name="metadata-date", + search_paths=[ + "gmd:dateStamp/gco:DateTime/text()", + "gmd:dateStamp/gco:Date/text()", + # 19115-3 + "mdb:dateInfo/cit:CI_Date/cit:date/gco:Date/text()", + "mdb:dateInfo/cit:CI_Date/cit:date/gco:DateTime/text()" + ], + multiplicity="1..*", + #TODO check why changed + # multiplicity="1", + ), + ISOElement( + name="spatial-reference-system", + search_paths=[ + "gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:code/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + # ISOElement( + ISOLocalised( + name="title", + search_paths=[ + # "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString/text()", + # "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString/text()", + # inferred by 'citation' + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:title", + # 19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:citation/cit:CI_Citation/cit:title", + ], + multiplicity="1", + ), + ISOElement( + name="alternate-title", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:alternateTitle/gco:CharacterString/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:alternateTitle/gco:CharacterString/text()", + ], + multiplicity="*", + ), + ISOReferenceDate( + name="dataset-reference-date", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date", + # 19115-3 + "mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:date/cit:CI_Date" + ], + multiplicity="1..*", + ), + ISOElement( + name="unique-resource-identifier", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code/gco:CharacterString/text()", + "gmd:identificationInfo/gmd:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code/gco:CharacterString/text()", + # 19115-3 + "mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:identifier/mcc:MD_Identifier/mcc:code/gco:CharacterString/text()", + "mdb:identificationInfo/mri:SV_ServiceIdentification/mri:citation/cit:CI_Citation/cit:identifier/mcc:MD_Identifier/mcc:code/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + # 19115-3 + ISOIdentifier( + # this would commonly be a DOI + name="unique-resource-identifier-full", + search_paths=[ + "mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:identifier/mcc:MD_Identifier", + "mdb:identificationInfo/mri:SV_ServiceIdentification/mri:citation/cit:CI_Citation/cit:identifier/mcc:MD_Identifier", + ], + multiplicity="0..1", + ), + + ISOElement( + name="presentation-form", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:presentationForm/gmd:CI_PresentationFormCode/text()", + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:presentationForm/gmd:CI_PresentationFormCode/@codeListValue", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:presentationForm/gmd:CI_PresentationFormCode/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:presentationForm/gmd:CI_PresentationFormCode/@codeListValue", + + ], + multiplicity="*", + ), + ISOElement( + name="abstract", + search_paths=[ + # "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract/gco:CharacterString/text()", + # "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:abstract/gco:CharacterString/text()", + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:abstract", + # ISO19115-3 + "mdb:identificationInfo/mri:MD_DataIdentification/mri:abstract", + "mdb:identificationInfo/srv:SV_ServiceIdentification/mri:abstract", + ], + multiplicity="1", + ), + ISOElement( + name="purpose", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:purpose/gco:CharacterString/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:purpose/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOResponsibleParty( + name="responsible-organisation", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty", + "gmd:contact/gmd:CI_ResponsibleParty", + # 19115-3 + "mdb:contact/cit:CI_Responsibility[cit:party/cit:CI_Organisation]", + "mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/@codeListValue ='pointOfContact' and cit:party/cit:CI_Organisation]", + "mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/@codeListValue ='originator' and cit:party/cit:CI_Organisation]", + "mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/@codeListValue ='owner' and cit:party/cit:CI_Organisation]", + "mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/@codeListValue ='rightsHolder' and cit:party/cit:CI_Organisation]", + "mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/text() ='pointOfContact' and cit:party/cit:CI_Organisation]", + "mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/text() ='originator' and cit:party/cit:CI_Organisation]", + "mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/text() ='owner' and cit:party/cit:CI_Organisation]", + "mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/text() ='rightsHolder' and cit:party/cit:CI_Organisation]", + ], + multiplicity="1..*", + ), + ISOElement( + name="frequency-of-update", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceMaintenance/gmd:MD_MaintenanceInformation/gmd:maintenanceAndUpdateFrequency/gmd:MD_MaintenanceFrequencyCode/@codeListValue", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:resourceMaintenance/gmd:MD_MaintenanceInformation/gmd:maintenanceAndUpdateFrequency/gmd:MD_MaintenanceFrequencyCode/@codeListValue", + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceMaintenance/gmd:MD_MaintenanceInformation/gmd:maintenanceAndUpdateFrequency/gmd:MD_MaintenanceFrequencyCode/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:resourceMaintenance/gmd:MD_MaintenanceInformation/gmd:maintenanceAndUpdateFrequency/gmd:MD_MaintenanceFrequencyCode/text()", + # 19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:resourceMaintenance/mmi:MD_MaintenanceInformation/mmi:maintenanceAndUpdateFrequency/mmi:MD_MaintenanceFrequencyCode/@codeListValue", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:resourceMaintenance/mmi:MD_MaintenanceInformation/mmi:maintenanceAndUpdateFrequency/mmi:MD_MaintenanceFrequencyCode/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="maintenance-note", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceMaintenance/gmd:MD_MaintenanceInformation/gmd:maintenanceNote/gco:CharacterString/text()", + "gmd:identificationInfo/gmd:SV_ServiceIdentification/gmd:resourceMaintenance/gmd:MD_MaintenanceInformation/gmd:maintenanceNote/gco:CharacterString/text()", + # 19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:resourceMaintenance/mmi:MD_MaintenanceInformation/mmi:maintenanceNote/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="progress", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:status/gmd:MD_ProgressCode/@codeListValue", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:status/gmd:MD_ProgressCode/@codeListValue", + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:status/gmd:MD_ProgressCode/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:status/gmd:MD_ProgressCode/text()", + # ISO19115-3 + "mdb:identificationInfo/mri:MD_DataIdentification/mri:status/mcc:MD_ProgressCode/@codeListValue", + "mdb:identificationInfo/srv:SV_ServiceIdentification/mri:status/mcc:MD_ProgressCode/@codeListValue", + "mdb:identificationInfo/mri:MD_DataIdentification/mri:status/mcc:MD_ProgressCode/text()", + "mdb:identificationInfo/srv:SV_ServiceIdentification/mri:status/mcc:MD_ProgressCode/text()", + ], + multiplicity="*", + ), + ISOKeyword( + name="keywords", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords", + # ISO19115-3 + "mdb:identificationInfo/mri:MD_DataIdentification/mri:descriptiveKeywords/mri:MD_Keywords", + "mdb:identificationInfo/srv:SV_ServiceIdentification/mri:descriptiveKeywords/mri:MD_Keywords", + ], + multiplicity="*" + ), + ISOElement( + name="keyword-inspire-theme", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString/text()", + ], + multiplicity="*", + ), + # Deprecated: kept for backwards compatibilty + ISOElement( + name="keyword-controlled-other", + search_paths=[ + "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:keywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString/text()", + ], + multiplicity="*", + ), + ISOUsage( + name="usage", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceSpecificUsage/gmd:MD_Usage", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:resourceSpecificUsage/gmd:MD_Usage", + ], + multiplicity="*" + ), + ISOElement( + name="limitations-on-public-access", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:otherConstraints/gco:CharacterString/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:otherConstraints/gco:CharacterString/text()", + # 19115-3 + "mdb:identificationInfo/mri:MD_DataIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:otherConstraints/gco:CharacterString/text()", + "mdb:identificationInfo/mri:MD_DataIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:otherConstraints/gcx:Anchor/text()", + "mdb:identificationInfo/mri:SV_ServiceIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:otherConstraints/gco:CharacterString/text()", + "mdb:identificationInfo/mri:SV_ServiceIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:otherConstraints/gcx:Anchor/text()", + ], + multiplicity="*", + ), + ISOElement( + name="access-constraints", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue", + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:accessConstraints/gmd:MD_RestrictionCode/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:accessConstraints/gmd:MD_RestrictionCode/text()", + # 19115-3 + "mdb:identificationInfo/mri:MD_DataIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:accessConstraints/mco:MD_RestrictionCode/@codeListValue", + "mdb:identificationInfo/srv:SV_ServiceIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:accessConstraints/mco:MD_RestrictionCode/@codeListValue", + "mdb:identificationInfo/mri:MD_DataIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:accessConstraints/mco:MD_RestrictionCode/text()", + "mdb:identificationInfo/srv:SV_ServiceIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:accessConstraints/mco:MD_RestrictionCode/text()", + ], + multiplicity="*", + ), + + ISOElement( + name="use-constraints", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_Constraints/gmd:useLimitation/gco:CharacterString/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:resourceConstraints/gmd:MD_Constraints/gmd:useLimitation/gco:CharacterString/text()", + # 19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:resourceConstraints/mco:MD_Constraints/mco:useLimitation/gco:CharacterString/text()", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:resourceConstraints/mco:MD_LegalConstraints/mco:useLimitation/gco:CharacterString/text()", + ], + # TODO check why this has changed + # multiplicity="*", + multiplicity="0..1", + ), + # 19115-3 + ISOElement( + name="use-constraints-code", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_Constraints/gmd:useConstraints/gmd:MD_RestrictionCode/@codeListValue", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:resourceConstraints/gmd:MD_Constraints/gmd:useConstraints/gmd:MD_RestrictionCode/text()", + # 19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:resourceConstraints/mco:MD_Constraints/mco:useConstraints/mco:MD_RestrictionCode/@codeListValue", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:resourceConstraints/mco:MD_Constraints/mco:useConstraints/mco:MD_RestrictionCode/text()", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:resourceConstraints/mco:MD_LegalConstraints/mco:useConstraints/mco:MD_RestrictionCode/@codeListValue", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:resourceConstraints/mco:MD_LegalConstraints/mco:useConstraints/mco:MD_RestrictionCode/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="legal-constraints-reference-code", + search_paths=[ + + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:resourceConstraints/mco:MD_LegalConstraints/mco:reference/cit:CI_Citation/cit:identifier/mcc:MD_Identifier/mcc:code/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + + ISOAggregationInfo( + name="aggregation-info", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:aggregationInfo/gmd:MD_AggregateInformation", + "gmd:identificationInfo/gmd:SV_ServiceIdentification/gmd:aggregationInfo/gmd:MD_AggregateInformation", + # ISO19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:associatedResource/mri:MD_AssociatedResource" + ], + multiplicity="*" + ), + ISOElement( + name="spatial-data-service-type", + search_paths=[ + "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:serviceType/gco:LocalName/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="spatial-resolution", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:distance/gco:Distance/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:distance/gco:Distance/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="spatial-resolution-units", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:distance/gco:Distance/@uom", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:distance/gco:Distance/@uom", + ], + multiplicity="0..1", + ), + ISOElement( + name="equivalent-scale", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:equivalentScale/gmd:MD_RepresentativeFraction/gmd:denominator/gco:Integer/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:equivalentScale/gmd:MD_RepresentativeFraction/gmd:denominator/gco:Integer/text()", + ], + multiplicity="*", + ), + ISOElement( + name="dataset-language", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:language/gmd:LanguageCode/@codeListValue", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:language/gmd:LanguageCode/@codeListValue", + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:language/gmd:LanguageCode/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:language/gmd:LanguageCode/text()", + ], + multiplicity="*", + ), + ISOElement( + name="topic-category", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode/text()", + # ISO19115-3 + "mdb:identificationInfo/mri:MD_DataIdentification/mri:topicCategory/mri:MD_TopicCategoryCode/text()", + ], + multiplicity="*", + ), + ISOElement( + name="extent-controlled", + search_paths=[ + ], + multiplicity="*", + ), + ISOElement( + name="extent-free-text", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicDescription/gmd:geographicIdentifier/gmd:MD_Identifier/gmd:code/gco:CharacterString/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicDescription/gmd:geographicIdentifier/gmd:MD_Identifier/gmd:code/gco:CharacterString/text()", + ], + multiplicity="*", + ), + ISOBoundingBox( + name="bbox", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox", + "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox", + # ISO19115-3 + "mdb:identificationInfo/mri:MD_DataIdentification/mri:extent/gex:EX_Extent/gex:geographicElement/gex:EX_GeographicBoundingBox", + ], + multiplicity="*", + ), + # ISO19115-3 + ISOElement( + name="spatial", + search_paths=[ + # ISO19139 + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_BoundingPolygon/gmd:polygon/node()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_BoundingPolygon/gmd:polygon/node()", + # ISO19115-3 + "mdb:identificationInfo/mri:MD_DataIdentification/mri:extent/gex:EX_Extent/gex:geographicElement/gex:EX_BoundingPolygon/gex:polygon/node()", + ], + multiplicity="*", + ), + # TODO check why commented out + # ISOElement( + # name="temporal-extent-begin", + # search_paths=[ + # "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition/text()", + # "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml32:TimePeriod/gml32:beginPosition/text()", + # "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition/text()", + # "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml32:TimePeriod/gml32:beginPosition/text()", + # ], + # multiplicity="*", + # ), + # ISOElement( + # name="temporal-extent-end", + # search_paths=[ + # "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:endPosition/text()", + # "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml32:TimePeriod/gml32:endPosition/text()", + # "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:endPosition/text()", + # "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml32:TimePeriod/gml32:endPosition/text()", + # ], + # multiplicity="*", + # ), + # ISO19115-3 + ISOTemporalExtent( + name="temporal-extent", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod", + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml32:TimePeriod", + "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod", + "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml32:TimePeriod", + # ISO19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:extent/gex:EX_Extent/gex:temporalElement/gex:EX_TemporalExtent/gex:extent/gml:TimePeriod" + ], + multiplicity="*", + ), + ISOElement( + name="vertical-extent", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:verticalElement/gmd:EX_VerticalExtent", + "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:verticalElement/gmd:EX_VerticalExtent", + # ISO19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:extent/gex:EX_Extent/gex:verticalElement/gex:EX_VerticalExtent", + ], + multiplicity="*", + ), + # ISO19115-3 + ISOElement( + name="vertical-extent-crs", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:verticalElement/gmd:EX_VerticalExtent/gmd:verticalCRSId/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:MD_Identifier/gmd:code/gco:CharacterString/text()", + "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:verticalElement/gmd:EX_VerticalExtent/gmd:verticalCRSId/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:MD_Identifier/gmd:code/gco:CharacterString/text()", + # ISO19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:extent/gex:EX_Extent/gex:verticalElement/gex:EX_VerticalExtent/gex:verticalCRSId/mrs:MD_ReferenceSystem/mrs:referenceSystemIdentifier/mcc:MD_Identifier/mcc:code/gco:CharacterString/text()", + ], + multiplicity="*", + ), + + ISOCoupledResources( + name="coupled-resource", + search_paths=[ + "gmd:identificationInfo/srv:SV_ServiceIdentification/srv:operatesOn", + ], + multiplicity="*", + ), + ISOElement( + name="additional-information-source", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:supplementalInformation/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISODataFormat( + name="data-format", + search_paths=[ + "gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format", + # 19115-3 + "mdb:distributionInfo/mrd:MD_Distribution/mrd:distributionFormat/mrd:MD_Format/mrd:formatSpecificationCitation/cit:CI_Citation/cit:title", + ], + multiplicity="*", + ), + ISOResponsibleParty( + name="distributor", + search_paths=[ + "gmd:distributionInfo/gmd:MD_Distribution/gmd:distributor/gmd:MD_Distributor/gmd:distributorContact/gmd:CI_ResponsibleParty", + # 19115-3 + "mdb:distributionInfo/mrd:MD_Distribution/mrd:distributor/mrd:MD_Distributor/mrd:distributorContact/cit:CI_Responsibility", + ], + multiplicity="*", + ), + ISOResourceLocator( + name="resource-locator", + search_paths=[ + "gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource", + "gmd:distributionInfo/gmd:MD_Distribution/gmd:distributor/gmd:MD_Distributor/gmd:distributorTransferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource", + # 19115-3 + "mdb:distributionInfo/mrd:MD_Distribution/mrd:transferOptions/mrd:MD_DigitalTransferOptions/mrd:onLine/cit:CI_OnlineResource", + "mdb:distributionInfo/mrd:MD_Distribution/mrd:distributor/mrd:MD_Distributor/mrd:distributorTransferOptions/mrd:MD_DigitalTransferOptions/mrd:onLine/cit:CI_OnlineResource", + ], + multiplicity="*", + ), + ISOResourceLocator( + name="resource-locator-identification", + search_paths=[ + "gmd:identificationInfo//gmd:CI_OnlineResource", + ], + multiplicity="*", + ), + ISOElement( + name="conformity-specification", + search_paths=[ + "gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:specification", + ], + multiplicity="0..1", + ), + ISOElement( + name="conformity-pass", + search_paths=[ + "gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:pass/gco:Boolean/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="conformity-explanation", + search_paths=[ + "gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:explanation/gco:CharacterString/text()", + ], + multiplicity="0..1", + ), + ISOElement( + name="lineage", + search_paths=[ + "gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:lineage/gmd:LI_Lineage/gmd:statement/gco:CharacterString/text()", + "mdb:resourceLineage/mrl:LI_Lineage/mrl:statement/gco:CharacterString/text()" + ], + multiplicity="0..1", + ), + ISOBrowseGraphic( + name="browse-graphic", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:graphicOverview/gmd:MD_BrowseGraphic", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:graphicOverview/gmd:MD_BrowseGraphic", + ], + multiplicity="*", + ), + # 19115-3 + ISOResponsibleParty( + name="author", + search_paths=[ + "gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty", + "gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty", + # 19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/@codeListValue ='author']", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/@codeListValue ='originator']", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/@codeListValue ='owner']", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/text() ='author']", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/text() ='originator']", + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility[cit:role/cit:CI_RoleCode/text() ='owner']", + ], + multiplicity="1..*", + ), + ISOCitation( + name="citation", + search_paths=[ + # 19115-3 + "mdb:identificationInfo/*[contains(local-name(), 'Identification')]/mri:citation/cit:CI_Citation" + ], + multiplicity="1..*", + ), + ] + + def infer_values(self, values): + # Todo: Infer name. + self.infer_date_released(values) + self.infer_date_updated(values) + self.infer_date_created(values) + self.infer_url(values) + # Todo: Infer resources. + self.infer_tags(values) + self.infer_publisher(values) + self.infer_contact(values) + self.infer_contact_email(values) + + #ISO19139-3 + self.clean_metadata_reference_date(values) + self.clean_dataset_reference_date(values) + self.infer_metadata_date(values) + self.infer_spatial(values) + self.infer_metadata_language(values) + self.infer_multilingual(values) + self.infer_guid(values) + self.infer_temporal_vertical_extent(values) + + # self.infer_citation(values) + # self.drop_empty_objects(values) + # self.infert_keywords(values) + + return values + + def clean_metadata_reference_date(self, values): + dates = [] + for date in values['metadata-reference-date']: + date['value'] = iso_date_time_to_utc(date['value']) + dates.append(date) + if dates: + dates.sort(key=lambda x: x['value']) # sort list of objects by value attribute + values['metadata-reference-date'] = dates + + def clean_dataset_reference_date(self, values): + dates = [] + for date in values['dataset-reference-date']: + try: + date['value'] = iso_date_time_to_utc(date['value'])[:10] + except Exception as e: + date['value'] = date['value'][:10] + log.warn('Problem converting dataset-reference-date to utc format. Defaulting to %s instead', date['value']) + + dates.append(date) + if dates: + dates.sort(key=lambda x: x['value']) # sort list of objects by value attribute + values['dataset-reference-date'] = dates + + def infer_metadata_date(self, values): + dates = values.get('metadata-date', []) + + # use newest date in list + if len(dates): + dates.sort(reverse=True) + values['metadata-date'] = dates[0] + + def infer_spatial(self, values): + geom = None + for xmlGeom in values.get('spatial', []): + # convert bytes to str + try: + xmlGeom = xmlGeom.decode() + except (UnicodeDecodeError, AttributeError): + pass + + if isinstance(xmlGeom, list): + for n, x in enumerate(xmlGeom): + try: + xmlGeom[n] = x.decode() + except (UnicodeDecodeError, AttributeError): + pass + + if isinstance(xmlGeom, list): + if len(xmlGeom) == 1: + xmlGeom = xmlGeom[0] + + from osgeo import ogr + try: + geom = ogr.CreateGeometryFromGML(xmlGeom) + except Exception: + try: + geom = ogr.CreateGeometryFromWkt(xmlGeom) + except Exception: + try: + geom = ogr.CreateGeometryFromJson(xmlGeom) + except Exception: + log.error('Spatial field is not GML, WKT, or GeoJSON. Can not convert spatial field.') + pass + return + if geom: + values['spatial'] = geom.ExportToJson() + if not values.get('bbox'): + extent = geom.GetEnvelope() + if extent: + values['bbox'].append({'west': '', 'east': '', 'north': '', 'south': ''}) + values['bbox'][0]['west'], values['bbox'][0]['east'], values['bbox'][0]['north'], values['bbox'][0]['south'] = extent + + def infer_metadata_language(self, values): + # ckan uses en / fr for language codes as apposed to eng / fra which is common in th iso standard + if values.get('metadata-language'): + values['metadata-language'] = values['metadata-language'][:2].lower() + + def infer_multilingual(self, values): + for key in values: + value = values[key] + + # second case used to gracfully fail if no secondary language is defined + if ( + isinstance(value, dict) and + ( + ('default' in value and 'local' in value and len(value) == 2) or + ('default' in value and len(value) == 1) + ) + ): + defaultLangKey = cleanLangKey(values.get('metadata-language', 'en')) + LangDict = local_to_dict(values[key], defaultLangKey) + values[key] = json.dumps(LangDict) + + + def infer_date_released(self, values): + value = '' + for date in values['dataset-reference-date']: + if date['type'] == 'publication': + value = date['value'] + break + values['date-released'] = value + + def infer_date_updated(self, values): + value = '' + dates = [] + # Use last of several multiple revision dates. + for date in values['dataset-reference-date']: + if date['type'] == 'revision': + dates.append(date['value']) + + if len(dates): + if len(dates) > 1: + dates.sort(reverse=True) + value = dates[0] + + values['date-updated'] = value + + def infer_date_created(self, values): + value = '' + for date in values['dataset-reference-date']: + if date['type'] == 'creation': + value = date['value'] + break + values['date-created'] = value + + def infer_url(self, values): + value = '' + for locator in values['resource-locator']: + if locator['function'] == 'information': + value = locator['url'] + break + values['url'] = value + + def infer_tags(self, values): + tags = [] + for key in ['keyword-inspire-theme', 'keyword-controlled-other']: + for item in values[key]: + if item not in tags: + tags.append(item) + values['tags'] = tags + + def infer_publisher(self, values): + value = '' + for responsible_party in values['responsible-organisation']: + if responsible_party['role'] == 'publisher': + value = responsible_party['organisation-name'] + if value: + break + values['publisher'] = value + + def infer_contact(self, values): + value = '' + for responsible_party in values['responsible-organisation']: + value = responsible_party['organisation-name'] + if value: + break + values['contact'] = value + + def infer_contact_email(self, values): + value = '' + for responsible_party in values['responsible-organisation']: + if isinstance(responsible_party, dict) and \ + isinstance(responsible_party.get('contact-info'), dict) and \ + 'email' in responsible_party['contact-info']: + value = responsible_party['contact-info']['email'] + if value: + break + values['contact-email'] = value + + def infer_temporal_vertical_extent(self, values): + value = {} + te = values.get('temporal-extent', []) + if te: + blist = [x.get('begin') for x in te] + elist = [x.get('end') for x in te] + try: + value['begin'] = iso_date_time_to_utc(min(blist))[:10] + if max(elist): # end is blank for datasets with ongoing collection + value['end'] = iso_date_time_to_utc(max(elist))[:10] + except Exception as e: + value['begin'] = min(blist)[:10] + if max(elist): + value['end'] = max(elist)[:10] + log.warn('Problem converting temporal-extent dates to utc format. Defaulting to %s and %s instead', value.get('begin',''), value.get('end','')) + + values['temporal-extent-begin'] = value['begin'] + values['temporal-extent-end'] = value['end'] + + value = {} + te = values.get('vertical-extent', []) + if te: + minlist = [x.get('min') for x in te] + maxlist = [x.get('max') for x in te] + value['min'] = min(minlist) + value['max'] = max(maxlist) + values['vertical-extent'] = value + + def infer_guid(self, values): + identifier = values.get('guid', {}) + guid = calculate_identifier(identifier) + if guid: + values['guid'] = guid + + + + +def iso_date_time_to_utc(value): + value = value.replace("Z", "+0000") + post_remove = 99 + if re.search(r'[+-]\d{4}', value): + post_remove = -5 + timedelta = datetime.timedelta(hours=int(value[-5:][1:3]), minutes=int(value[-5:][-2:])) * (-1 if value[-5:][0] == '+' else 1) + else: + timedelta = datetime.timedelta(hours=0, minutes=0) + try: + utc_dt = datetime.datetime.strptime(value, '%Y-%m-%d') # date alone is valid + except ValueError: + try: + utc_dt = datetime.datetime.strptime(value[:post_remove], '%Y-%m-%dT%H:%M:%S') + timedelta + except Exception as e: + try: + utc_dt = datetime.datetime.strptime(value[:post_remove], '%Y-%m-%dT%H:%M:%S.%f') + timedelta + except Exception as e: + log.debug('Could not convert datetime value %s to UTC: %s', value, e) + raise + return utc_dt.strftime('%Y-%m-%d %H:%M:%S') + +def calculate_identifier(identifier): + if isinstance(identifier, str): + return identifier + code = identifier.get('code') + codeSpace = identifier.get('code-space') + authority = identifier.get('authority') + version = identifier.get('version') + guid = None + if code: + id_list = [authority, codeSpace, code, version] + guid = '_'.join(x.strip() for x in id_list if x.strip()) + return guid + +def cleanLangKey(key): + key = re.sub("[^a-zA-Z]+", "", key) + key = key[:2] + return key + +def local_to_dict(item, defaultLangKey): + # XML parser seems to generate unicode strings containg utf-8 escape + # charicters even though the file is utf-8. To fix must encode unicode + # to latin1 then treet as regular utf-8 string. Seems this is not + # true for all files so trying latin1 first and then utf-8 if it does + # not encode. + out = {} + + default = item.get('default').strip() + # decode double escaped unicode chars + if(default and re.search(r'\\\\u[0-9a-fA-F]{4}', default)): + if isinstance(default, str): # encode to get bytestring as decode only works on bytes + default = default.encode().decode('unicode-escape') + else: # we have bytes + default = default.decode('unicode-escape') + + # this will create a byte string so better to let the json.dumps library handle it + # try: + # default = default.encode('utf-8') + # except Exception: + # log.error('Failed to encode string "%r" as utf-8', default) + if len(default) > 1: + out.update({defaultLangKey: default}) + + local = item.get('local') + if isinstance(local, dict): + langKey = cleanLangKey(local.get('language_code')) + # langKey = langKey.encode('utf-8') + + LangValue = item.get('local').get('value') + LangValue = LangValue.strip() + # decode double escaped unicode chars + if(LangValue and re.search(r'\\\\u[0-9a-fA-F]{4}', LangValue)): + if isinstance(LangValue, str): # encode to get bytestring as decode only works on bytes + LangValue = LangValue.encode().decode('unicode-escape') + else: # we have bytes + LangValue = LangValue.decode('unicode-escape') + + # this will create a byte string so better to let the json.dumps library handle it + # try: + # LangValue = LangValue.encode('utf-8') + # except Exception: + # log.error('Failed to encode string "%r" as utf-8', LangValue) + if len(LangValue) > 1: + out.update({langKey: LangValue}) + + return out + + def drop_empty_objects(self, values): + to_drop = [] + for key, value in values.items(): + if value == {} or value == []: + to_drop.append(key) + for key in to_drop: + del values[key] \ No newline at end of file diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/SchematronConstraints.xml b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/SchematronConstraints.xml new file mode 100644 index 00000000..6cfd40f1 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/SchematronConstraints.xml @@ -0,0 +1,71 @@ + + Schematron constraints for GML / ISO 19136 + + + + + + ValueArray may not carry both a reference to a codeSpace and a uom + + + + + All components shall be of the same type + All components shall be of the same type + + + + + The presence of a dimension attribute implies the presence of the srsName attribute. + The presence of an axisLabels attribute implies the presence of the srsName attribute. + The presence of an uomLabels attribute implies the presence of the srsName attribute. + The presence of an uomLabels attribute implies the presence of the axisLabels attribute and vice versa. + + + + + All patches shall be gml:PolygonPatch elements or an element in the substitution group of gml:PolygonPatch. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future. + + + + + All patches shall be gml:Triangle elements or an element in the substitution group of gml:PolygonPatch. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future. + + + + + Property element may not carry both a reference to an object and contain an object. + Property element shall either carry a reference to an object or contain an object. + + + + + All values in the domain set shall be gml:MultiPoint elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future. + + + + + All values in the domain set shall be gml:MultiCurve elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future. + + + + + All values in the domain set shall be gml:MultiSurface elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future. + + + + + All values in the domain set shall be gml:MultiSolid elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future. + + + + + All values in the domain set shall be gml:Grid elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future. + + + + + All values in the domain set shall be gml:RectifiedGrid elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future. + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/basicTypes.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/basicTypes.xsd new file mode 100644 index 00000000..c802eb56 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/basicTypes.xsd @@ -0,0 +1,268 @@ + + + + basicTypes.xsd + See ISO/DIS 19136 8.2. +W3C XML Schema provides a set of built-in "simple" types which define methods for representing values as literals without internal markup. These are described in W3C XML Schema Part 2:2001. Because GML is an XML encoding in which instances are described using XML Schema, these simple types shall be used as far as possible and practical for the representation of data types. W3C XML Schema also provides methods for defining +- new simple types by restriction and combination of the built-in types, and +- complex types, with simple content, but which also have XML attributes. +In many places where a suitable built-in simple type is not available, simple content types derived using the XML Schema mechanisms are used for the representation of data types in GML. +A set of these simple content types that are required by several GML components are defined in the basicTypes schema, as well as some elements based on them. These are primarily based around components needed to record amounts, counts, flags and terms, together with support for exceptions or null values. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + gml:NilReasonType defines a content model that allows recording of an explanation for a void value or other exception. +gml:NilReasonType is a union of the following enumerated values: +- inapplicable there is no value +- missing the correct value is not readily available to the sender of this data. Furthermore, a correct value may not exist +- template the value will be available later +- unknown the correct value is not known to, and not computable by, the sender of this data. However, a correct value probably exists +- withheld the value is not divulged +- other:text other brief explanation, where text is a string of two or more characters with no included spaces +and +- anyURI which should refer to a resource which describes the reason for the exception +A particular community may choose to assign more detailed semantics to the standard values provided. Alternatively, the URI method enables a specific or more complete explanation for the absence of a value to be provided elsewhere and indicated by-reference in an instance document. +gml:NilReasonType is used as a member of a union in a number of simple content types where it is necessary to permit a value from the NilReasonType union as an alternative to the primary type. + + + + + + + + + + + + + + + + + + + + + + + + gml:SignType is a convenience type with values "+" (plus) and "-" (minus). + + + + + + + + + Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value. + + + + + + Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value. + + + + + + Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value. + + + + + + Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value. + + + + + + Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value. + + + + + + gml:CodeType is a generalized type to be used for a term, keyword or name. +It adds a XML attribute codeSpace to a term, where the value of the codeSpace attribute (if present) shall indicate a dictionary, thesaurus, classification scheme, authority, or pattern for the term. + + + + + + + + + + gml:CodeWithAuthorityType requires that the codeSpace attribute is provided in an instance. + + + + + + + + + + gml:MeasureType supports recording an amount encoded as a value of XML Schema double, together with a units of measure indicated by an attribute uom, short for "units Of measure". The value of the uom attribute identifies a reference system for the amount, usually a ratio or interval scale. + + + + + + + + + + The simple type gml:UomIdentifer defines the syntax and value space of the unit of measure identifier. + + + + + + This type specifies a character string of length at least one, and restricted such that it must not contain any of the following characters: ":" (colon), " " (space), (newline), (carriage return), (tab). This allows values corresponding to familiar abbreviations, such as "kg", "m/s", etc. +It is recommended that the symbol be an identifier for a unit of measure as specified in the "Unified Code of Units of Measure" (UCUM) (http://aurora.regenstrief.org/UCUM). This provides a set of symbols and a grammar for constructing identifiers for units of measure that are unique, and may be easily entered with a keyboard supporting the limited character set known as 7-bit ASCII. ISO 2955 formerly provided a specification with this scope, but was withdrawn in 2001. UCUM largely follows ISO 2955 with modifications to remove ambiguities and other problems. + + + + + + + + This type specifies a URI, restricted such that it must start with one of the following sequences: "#", "./", "../", or a string of characters followed by a ":". These patterns ensure that the most common URI forms are supported, including absolute and relative URIs and URIs that are simple fragment identifiers, but prohibits certain forms of relative URI that could be mistaken for unit of measure symbol . +NOTE It is possible to re-write such a relative URI to conform to the restriction (e.g. "./m/s"). +In an instance document, on elements of type gml:MeasureType the mandatory uom attribute shall carry a value corresponding to either +- a conventional unit of measure symbol, +- a link to a definition of a unit of measure that does not have a conventional symbol, or when it is desired to indicate a precise or variant definition. + + + + + + + + This type is deprecated for tuples with ordinate values that are numbers. +CoordinatesType is a text string, intended to be used to record an array of tuples or coordinates. +While it is not possible to enforce the internal structure of the string through schema validation, some optional attributes have been provided in previous versions of GML to support a description of the internal structure. These attributes are deprecated. The attributes were intended to be used as follows: +Decimal symbol used for a decimal point (default="." a stop or period) +cs symbol used to separate components within a tuple or coordinate string (default="," a comma) +ts symbol used to separate tuples or coordinate strings (default=" " a space) +Since it is based on the XML Schema string type, CoordinatesType may be used in the construction of tables of tuples or arrays of tuples, including ones that contain mixed text and numeric values. + + + + + + + + + + + + A type for a list of values of the respective simple type. + + + + + + A type for a list of values of the respective simple type. + + + + + + A type for a list of values of the respective simple type. + + + + + + A type for a list of values of the respective simple type. + + + + + + A type for a list of values of the respective simple type. + + + + + + A type for a list of values of the respective simple type. + + + + + + A type for a list of values of the respective simple type. + + + + + + A type for a list of values of the respective simple type. + + + + + + A type for a list of values of the respective simple type. + + + + + + A type for a list of values of the respective simple type. + + + + + + gml:CodeListType provides for lists of terms. The values in an instance element shall all be valid according to the rules of the dictionary, classification scheme, or authority identified by the value of its codeSpace attribute. + + + + + + + + + + gml:CodeOrNilReasonListType provides for lists of terms. The values in an instance element shall all be valid according to the rules of the dictionary, classification scheme, or authority identified by the value of its codeSpace attribute. An instance element may also include embedded values from NilReasonType. It is intended to be used in situations where a term or classification is expected, but the value may be absent for some reason. + + + + + + + + + + gml:MeasureListType provides for a list of quantities. + + + + + + + + + + gml:MeasureOrNilReasonListType provides for a list of quantities. An instance element may also include embedded values from NilReasonType. It is intended to be used in situations where a value is expected, but the value may be absent for some reason. + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coordinateOperations.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coordinateOperations.xsd new file mode 100644 index 00000000..ce916524 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coordinateOperations.xsd @@ -0,0 +1,537 @@ + + + + coordinateOperations.xsd + See ISO/DIS 19136 13.6. +The spatial or temporal coordinate operations schema components can be divided into five logical parts, which define elements and types for XML encoding of the definitions of: +- Multiple abstract coordinate operations +- Multiple concrete types of coordinate operations, including Transformations and Conversions +- Abstract and concrete parameter values and groups +- Operation methods +- Abstract and concrete operation parameters and groups +These schema component encodes the Coordinate Operation package of the UML Model for ISO 19111 Clause 11. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + gml:AbstractCoordinateOperation is a mathematical operation on coordinates that transforms or converts coordinates to another coordinate reference system. Many but not all coordinate operations (from CRS A to CRS B) also uniquely define the inverse operation (from CRS B to CRS A). In some cases, the operation method algorithm for the inverse operation is the same as for the forward algorithm, but the signs of some operation parameter values shall be reversed. In other cases, different algorithms are required for the forward and inverse operations, but the same operation parameter values are used. If (some) entirely different parameter values are needed, a different coordinate operation shall be defined. +The optional coordinateOperationAccuracy property elements provide estimates of the impact of this coordinate operation on point position accuracy. + + + + + + + + + + + + + + + + + + + gml:operationVersion is the version of the coordinate transformation (i.e., instantiation due to the stochastic nature of the parameters). Mandatory when describing a transformation, and should not be supplied for a conversion. + + + + + gml:coordinateOperationAccuracy is an association role to a DQ_PositionalAccuracy object as encoded in ISO/TS 19139, either referencing or containing the definition of that positional accuracy. That object contains an estimate of the impact of this coordinate operation on point accuracy. That is, it gives position error estimates for the target coordinates of this coordinate operation, assuming no errors in the source coordinates. + + + + + + + + + gml:sourceCRS is an association role to the source CRS (coordinate reference system) of this coordinate operation. + + + + + gml:targetCRS is an association role to the target CRS (coordinate reference system) of this coordinate operation. + + + + + gml:CoordinateOperationPropertyType is a property type for association roles to a coordinate operation, either referencing or containing the definition of that coordinate operation. + + + + + + + + + gml:AbstractSingleOperation is a single (not concatenated) coordinate operation. + + + + + gml:SingleOperationPropertyType is a property type for association roles to a single operation, either referencing or containing the definition of that single operation. + + + + + + + + + gm:AbstractGeneralConversion is an abstract operation on coordinates that does not include any change of datum. The best-known example of a coordinate conversion is a map projection. The parameters describing coordinate conversions are defined rather than empirically derived. Note that some conversions have no parameters. The operationVersion, sourceCRS, and targetCRS elements are omitted in a coordinate conversion. +This abstract complex type is expected to be extended for well-known operation methods with many Conversion instances, in GML Application Schemas that define operation-method-specialized element names and contents. This conversion uses an operation method, usually with associated parameter values. However, operation methods and parameter values are directly associated with concrete subtypes, not with this abstract type. All concrete types derived from this type shall extend this type to include a "usesMethod" element that references the "OperationMethod" element. Similarly, all concrete types derived from this type shall extend this type to include zero or more elements each named "uses...Value" that each use the type of an element substitutable for the "AbstractGeneralParameterValue" element. + + + + + + + + + + + + + + + + + + + + + + + gml:GeneralConversionPropertyType is a property type for association roles to a general conversion, either referencing or containing the definition of that conversion. + + + + + + + + + gml:AbstractGeneralTransformation is an abstract operation on coordinates that usually includes a change of Datum. The parameters of a coordinate transformation are empirically derived from data containing the coordinates of a series of points in both coordinate reference systems. This computational process is usually "over-determined", allowing derivation of error (or accuracy) estimates for the transformation. Also, the stochastic nature of the parameters may result in multiple (different) versions of the same coordinate transformation. The operationVersion, sourceCRS, and targetCRS proeprty elements are mandatory in a coordinate transformation. +This abstract complex type is expected to be extended for well-known operation methods with many Transformation instances, in Application Schemas that define operation-method-specialized value element names and contents. This transformation uses an operation method with associated parameter values. However, operation methods and parameter values are directly associated with concrete subtypes, not with this abstract type. All concrete types derived from this type shall extend this type to include a "usesMethod" element that references one "OperationMethod" element. Similarly, all concrete types derived from this type shall extend this type to include one or more elements each named "uses...Value" that each use the type of an element substitutable for the "AbstractGeneralParameterValue" element. + + + + + + + + + + + + + + + + + + + + + + + + + + gml:GeneralTransformationPropertyType is a property type for association roles to a general transformation, either referencing or containing the definition of that transformation. + + + + + + + + + + gml:ConcatenatedOperation is an ordered sequence of two or more coordinate operations. This sequence of operations is constrained by the requirement that the source coordinate reference system of step (n+1) must be the same as the target coordinate reference system of step (n). The source coordinate reference system of the first step and the target coordinate reference system of the last step are the source and target coordinate reference system associated with the concatenated operation. Instead of a forward operation, an inverse operation may be used for one or more of the operation steps mentioned above, if the inverse operation is uniquely defined by the forward operation. +The gml:coordOperation property elements are an ordered sequence of associations to the two or more operations used by this concatenated operation. The AggregationAttributeGroup should be used to specify that the coordOperation associations are ordered. + + + + + + + + + + + + + gml:coordOperation is an association role to a coordinate operation. + + + + + gml:ConcatenatedOperationPropertyType is a property type for association roles to a concatenated operation, either referencing or containing the definition of that concatenated operation. + + + + + + + + + gml:PassThroughOperation is a pass-through operation specifies that a subset of a coordinate tuple is subject to a specific coordinate operation. +The modifiedCoordinate property elements are an ordered sequence of positive integers defining the positions in a coordinate tuple of the coordinates affected by this pass-through operation. The AggregationAttributeGroup should be used to specify that the modifiedCoordinate elements are ordered. + + + + + + + + + + + + + + + + gml:modifiedCoordinate is a positive integer defining a position in a coordinate tuple. + + + + + gml:PassThroughOperationPropertyType is a property type for association roles to a pass through operation, either referencing or containing the definition of that pass through operation. + + + + + + + + + gml:Conversion is a concrete operation on coordinates that does not include any change of Datum. The best-known example of a coordinate conversion is a map projection. The parameters describing coordinate conversions are defined rather than empirically derived. Note that some conversions have no parameters. +This concrete complex type can be used without using a GML Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one Conversion instance. +The usesValue property elements are an unordered list of composition associations to the set of parameter values used by this conversion operation. + + + + + + + + + + + + + + + gml:method is an association role to the operation method used by a coordinate operation. + + + + + gml:parameterValue is a composition association to a parameter value or group of parameter values used by a coordinate operation. + + + + + gml:ConversionPropertyType is a property type for association roles to a concrete general-purpose conversion, either referencing or containing the definition of that conversion. + + + + + + + + + gml:Transformation is a concrete object element derived from gml:GeneralTransformation (13.6.2.13). +This concrete object can be used for all operation methods, without using a GML Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one Transformation instance. +The parameterValue elements are an unordered list of composition associations to the set of parameter values used by this conversion operation. + + + + + + + + + + + + + + + gml:TransformationPropertyType is a property type for association roles to a transformation, either referencing or containing the definition of that transformation. + + + + + + + + + gml:AbstractGeneralParameterValue is an abstract parameter value or group of parameter values. +This abstract complexType is expected to be extended and restricted for well-known operation methods with many instances, in Application Schemas that define operation-method-specialized element names and contents. Specific parameter value elements are directly contained in concrete subtypes, not in this abstract type. All concrete types derived from this type shall extend this type to include one "...Value" element with an appropriate type, which should be one of the element types allowed in the ParameterValueType. In addition, all derived concrete types shall extend this type to include a "operationParameter" property element that references one element substitutable for the "OperationParameter" object element. + + + + + + + + gml:AbstractGeneralParameterValuePropertyType is a property type for inline association roles to a parameter value or group of parameter values, always containing the values. + + + + + + + + gml:ParameterValue is a parameter value, an ordered sequence of values, or a reference to a file of parameter values. This concrete complex type may be used for operation methods without using an Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one instance. This complex type may be used, extended, or restricted for well-known operation methods, especially for methods with many instances. + + + + + + + + + + + + + + + + + + + + + + + + gml:value is a numeric value of an operation parameter, with its associated unit of measure. + + + + + gml:stringValue is a character string value of an operation parameter. A string value does not have an associated unit of measure. + + + + + gml:integerValue is a positive integer value of an operation parameter, usually used for a count. An integer value does not have an associated unit of measure. + + + + + gml:booleanValue is a boolean value of an operation parameter. A Boolean value does not have an associated unit of measure. + + + + + gml:valueList is an ordered sequence of two or more numeric values of an operation parameter list, where each value has the same associated unit of measure. An element of this type contains a space-separated sequence of double values. + + + + + gml:integerValueList is an ordered sequence of two or more integer values of an operation parameter list, usually used for counts. These integer values do not have an associated unit of measure. An element of this type contains a space-separated sequence of integer values. + + + + + gml:valueFile is a reference to a file or a part of a file containing one or more parameter values, each numeric value with its associated unit of measure. When referencing a part of a file, that file shall contain multiple identified parts, such as an XML encoded document. Furthermore, the referenced file or part of a file may reference another part of the same or different files, as allowed in XML documents. + + + + + gml:operationParameter is an association role to the operation parameter of which this is a value. + + + + + gml:ParameterValueGroup is a group of related parameter values. The same group can be repeated more than once in a Conversion, Transformation, or higher level ParameterValueGroup, if those instances contain different values of one or more parameterValues which suitably distinquish among those groups. This concrete complex type can be used for operation methods without using an Application Schema that defines operation-method-specialized element names and contents. This complex type may be used, extended, or restricted for well-known operation methods, especially for methods with only one instance. +The parameterValue elements are an unordered set of composition association roles to the parameter values and groups of values included in this group. + + + + + + + + + + + + + + + gml:group is an association role to the operation parameter group for which this element provides parameter values. + + + + + gml:OperationMethod is a method (algorithm or procedure) used to perform a coordinate operation. Most operation methods use a number of operation parameters, although some coordinate conversions use none. Each coordinate operation using the method assigns values to these parameters. +The parameter elements are an unordered list of associations to the set of operation parameters and parameter groups used by this operation method. + + + + + + + + + + + + + + + + + + + + gml:formulaCitation provides a reference to a publication giving the formula(s) or procedure used by an coordinate operation method. + + + + + + + + + + + gml:formula Formula(s) or procedure used by an operation method. The use of the codespace attribite has been deprecated. The property value shall be a character string. + + + + + gml:sourceDimensions is the number of dimensions in the source CRS of this operation method. + + + + + gml:targetDimensions is the number of dimensions in the target CRS of this operation method. + + + + + gml:parameter is an association to an operation parameter or parameter group. + + + + + gml:OperationMethodPropertyType is a property type for association roles to a concrete general-purpose operation method, either referencing or containing the definition of that method. + + + + + + + + + gml:GeneralOperationParameter is the abstract definition of a parameter or group of parameters used by an operation method. + + + + + + + + + + + + + + gml:minimumOccurs is the minimum number of times that values for this parameter group or parameter are required. If this attribute is omitted, the minimum number shall be one. + + + + + gml:AbstractGeneralOperationParameterPropertyType is a property type for association roles to an operation parameter or group, either referencing or containing the definition of that parameter or group. + + + + + + + + + gml:OperationParameter is the definition of a parameter used by an operation method. Most parameter values are numeric, but other types of parameter values are possible. This complex type is expected to be used or extended for all operation methods, without defining operation-method-specialized element names. + + + + + + + + + + + + gml:OperationParameterPropertyType is a property type for association roles to an operation parameter, either referencing or containing the definition of that parameter. + + + + + + + + + gml:OperationParameterGroup is the definition of a group of parameters used by an operation method. This complex type is expected to be used or extended for all applicable operation methods, without defining operation-method-specialized element names. +The generalOperationParameter elements are an unordered list of associations to the set of operation parameters that are members of this group. + + + + + + + + + + + + + + + gml:maximumOccurs is the maximum number of times that values for this parameter group may be included. If this attribute is omitted, the maximum number shall be one. + + + + + gml:OperationParameterPropertyType is a property type for association roles to an operation parameter group, either referencing or containing the definition of that parameter group. + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coordinateReferenceSystems.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coordinateReferenceSystems.xsd new file mode 100644 index 00000000..540f6939 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coordinateReferenceSystems.xsd @@ -0,0 +1,373 @@ + + + + coordinateReferenceSystems.xsd + See ISO/DIS 19136 13.3. +The spatial-temporal coordinate reference systems schema components are divided into two logical parts. One part defines elements and types for XML encoding of abstract coordinate reference systems definitions. The larger part defines specialized constructs for XML encoding of definitions of the multiple concrete types of spatial-temporal coordinate reference systems. +These schema components encode the Coordinate Reference System packages of the UML Models of ISO 19111 Clause 8 and ISO/DIS 19136 D.3.10, with the exception of the abstract "SC_CRS" class. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + gml:AbstractSingleCRS implements a coordinate reference system consisting of one coordinate system and one datum (as opposed to a Compound CRS). + + + + + gml:SingleCRSPropertyType is a property type for association roles to a single coordinate reference system, either referencing or containing the definition of that coordinate reference system. + + + + + + + + + gml:AbstractGeneralDerivedCRS is a coordinate reference system that is defined by its coordinate conversion from another coordinate reference system. This abstract complex type shall not be used, extended, or restricted, in a GML Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document. + + + + + + + + + + + + + + gml:conversion is an association role to the coordinate conversion used to define the derived CRS. + + + + + gml:CompundCRS is a coordinate reference system describing the position of points through two or more independent coordinate reference systems. It is associated with a non-repeating sequence of two or more instances of SingleCRS. + + + + + + + + + + + + + + + The gml:componentReferenceSystem elements are an ordered sequence of associations to all the component coordinate reference systems included in this compound coordinate reference system. The gml:AggregationAttributeGroup should be used to specify that the gml:componentReferenceSystem properties are ordered. + + + + + gml:CompoundCRSPropertyType is a property type for association roles to a compound coordinate reference system, either referencing or containing the definition of that reference system. + + + + + + + + + + gml:GeodeticCRS is a coordinate reference system based on a geodetic datum. + + + + + + + + + + + + + + + + + gml:ellipsoidalCS is an association role to the ellipsoidal coordinate system used by this CRS. + + + + + gml:cartesianCS is an association role to the Cartesian coordinate system used by this CRS. + + + + + gml:sphericalCS is an association role to the spherical coordinate system used by this CRS. + + + + + gml:geodeticDatum is an association role to the geodetic datum used by this CRS. + + + + + + gml:GeodeticCRSPropertyType is a property type for association roles to a geodetic coordinate reference system, either referencing or containing the definition of that reference system. + + + + + + + + + gml:VerticalCRS is a 1D coordinate reference system used for recording heights or depths. Vertical CRSs make use of the direction of gravity to define the concept of height or depth, but the relationship with gravity may not be straightforward. By implication, ellipsoidal heights (h) cannot be captured in a vertical coordinate reference system. Ellipsoidal heights cannot exist independently, but only as an inseparable part of a 3D coordinate tuple defined in a geographic 3D coordinate reference system. + + + + + + + + + + + + + + + gml:verticalCS is an association role to the vertical coordinate system used by this CRS. + + + + + gml:verticalDatum is an association role to the vertical datum used by this CRS. + + + + + gml:VerticalCRSPropertyType is a property type for association roles to a vertical coordinate reference system, either referencing or containing the definition of that reference system. + + + + + + + + + gml:ProjectedCRS is a 2D coordinate reference system used to approximate the shape of the earth on a planar surface, but in such a way that the distortion that is inherent to the approximation is carefully controlled and known. Distortion correction is commonly applied to calculated bearings and distances to produce values that are a close match to actual field values. + + + + + + + + + + + + + + + + + + gml:baseGeodeticCRS is an association role to the geodetic coordinate reference system used by this projected CRS. + + + + + gml:ProjectedCRSPropertyType is a property type for association roles to a projected coordinate reference system, either referencing or containing the definition of that reference system. + + + + + + + + + gml:DerivedCRS is a single coordinate reference system that is defined by its coordinate conversion from another single coordinate reference system known as the base CRS. The base CRS can be a projected coordinate reference system, if this DerivedCRS is used for a georectified grid coverage as described in ISO 19123, Clause 8. + + + + + + + + + + + + + + + + gml:baseCRS is an association role to the coordinate reference system used by this derived CRS. + + + + + The gml:derivedCRSType property describes the type of a derived coordinate reference system. The required codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property. + + + + + An association role to the coordinate system used by this CRS. + + + + + gml:DerivedCRSPropertyType is a property type for association roles to a non-projected derived coordinate reference system, either referencing or containing the definition of that reference system. + + + + + + + + + gml:EngineeringCRS is a contextually local coordinate reference system which can be divided into two broad categories: +- earth-fixed systems applied to engineering activities on or near the surface of the earth; +- CRSs on moving platforms such as road vehicles, vessels, aircraft, or spacecraft, see ISO 19111 8.3. + + + + + + + + + + + + + + + + + deprecated + + + + + + + + + + + gml:cylindricalCS is an association role to the cylindrical coordinate system used by this CRS. + + + + + gml:linearCS is an association role to the linear coordinate system used by this CRS. + + + + + gml:polarCS is an association role to the polar coordinate system used by this CRS. + + + + + gml:userDefinedCS is an association role to the user defined coordinate system used by this CRS. + + + + + gml:engineeringDatum is an association role to the engineering datum used by this CRS. + + + + + gml:EngineeringCRSPropertyType is a property type for association roles to an engineering coordinate reference system, either referencing or containing the definition of that reference system. + + + + + + + + + gml:ImageCRS is an engineering coordinate reference system applied to locations in images. Image coordinate reference systems are treated as a separate sub-type because the definition of the associated image datum contains two attributes not relevant to other engineering datums. + + + + + + + + + + + + + + + + + + + gml:affineCS is an association role to the affine coordinate system used by this CRS. + + + + + gml:imageDatum is an association role to the image datum used by this CRS. + + + + + gml:ImageCRSPropertyType is a property type for association roles to an image coordinate reference system, either referencing or containing the definition of that reference system. + + + + + + + + + gml:TemporalCRS is a 1D coordinate reference system used for the recording of time. + + + + + + + + + + + + + + + + + + gml:timeCS is an association role to the time coordinate system used by this CRS. + + + + + gml:temporalDatum is an association role to the temporal datum used by this CRS. + + + + + gml:TemporalCRSPropertyType is a property type for association roles to a temporal coordinate reference system, either referencing or containing the definition of that reference system. + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coordinateSystems.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coordinateSystems.xsd new file mode 100644 index 00000000..65082c0e --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coordinateSystems.xsd @@ -0,0 +1,297 @@ + + + + coordinateSystems.xsd + See ISO/DIS 19136 13.4. +The coordinate systems schema components can be divded into three logical parts, which define elements and types for XML encoding of the definitions of: +- Coordinate system axes +- Abstract coordinate system +- Multiple concrete types of spatial-temporal coordinate systems +These schema components encode the Coordinate System packages of the UML Models of ISO 19111 Clause 9 and ISO/DIS 19136 D.3.10. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + gml:CoordinateSystemAxis is a definition of a coordinate system axis. + + + + + + + + + + + + + + + The uom attribute provides an identifier of the unit of measure used for this coordinate system axis. The value of this coordinate in a coordinate tuple shall be recorded using this unit of measure, whenever those coordinates use a coordinate reference system that uses a coordinate system that uses this axis. + + + + + + + + gml:axisAbbrev is the abbreviation used for this coordinate system axis; this abbreviation is also used to identify the coordinates in the coordinate tuple. The codeSpace attribute may reference a source of more information on a set of standardized abbreviations, or on this abbreviation. + + + + + gml:axisDirection is the direction of this coordinate system axis (or in the case of Cartesian projected coordinates, the direction of this coordinate system axis at the origin). +Within any set of coordinate system axes, only one of each pair of terms may be used. For earth-fixed CRSs, this direction is often approximate and intended to provide a human interpretable meaning to the axis. When a geodetic datum is used, the precise directions of the axes may therefore vary slightly from this approximate direction. +The codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property. + + + + + The gml:minimumValue and gml:maximumValue properties allow the specification of minimum and maximum value normally allowed for this axis, in the unit of measure for the axis. For a continuous angular axis such as longitude, the values wrap-around at this value. Also, values beyond this minimum/maximum can be used for specified purposes, such as in a bounding box. A value of minus infinity shall be allowed for the gml:minimumValue element, a value of plus infiniy for the gml:maximumValue element. If these elements are omitted, the value is unspecified. + + + + + The gml:minimumValue and gml:maximumValue properties allow the specification of minimum and maximum value normally allowed for this axis, in the unit of measure for the axis. For a continuous angular axis such as longitude, the values wrap-around at this value. Also, values beyond this minimum/maximum can be used for specified purposes, such as in a bounding box. A value of minus infinity shall be allowed for the gml:minimumValue element, a value of plus infiniy for the gml:maximumValue element. If these elements are omitted, the value is unspecified. + + + + + gml:rangeMeaning describes the meaning of axis value range specified by gml:minimumValue and gml:maximumValue. This element shall be omitted when both gml:minimumValue and gml:maximumValue are omitted. This element should be included when gml:minimumValue and/or gml:maximumValue are included. If this element is omitted when the gml:minimumValue and/or gml:maximumValue are included, the meaning is unspecified. The codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property. + + + + + gml:CoordinateSystemAxisPropertyType is a property type for association roles to a coordinate system axis, either referencing or containing the definition of that axis. + + + + + + + + + gml:AbstractCoordinateSystem is a coordinate system (CS) is the non-repeating sequence of coordinate system axes that spans a given coordinate space. A CS is derived from a set of mathematical rules for specifying how coordinates in a given space are to be assigned to points. The coordinate values in a coordinate tuple shall be recorded in the order in which the coordinate system axes associations are recorded. This abstract complex type shall not be used, extended, or restricted, in an Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document. + + + + + + + + + + + + + + + The gml:axis property is an association role (ordered sequence) to the coordinate system axes included in this coordinate system. The coordinate values in a coordinate tuple shall be recorded in the order in which the coordinate system axes associations are recorded, whenever those coordinates use a coordinate reference system that uses this coordinate system. The gml:AggregationAttributeGroup should be used to specify that the axis objects are ordered. + + + + + gml:CoordinateSystemPropertyType is a property type for association roles to a coordinate system, either referencing or containing the definition of that coordinate system. + + + + + + + + + gml:EllipsoidalCS is a two- or three-dimensional coordinate system in which position is specified by geodetic latitude, geodetic longitude, and (in the three-dimensional case) ellipsoidal height. An EllipsoidalCS shall have two or three gml:axis property elements; the number of associations shall equal the dimension of the CS. + + + + + + + + + + gml:EllipsoidalCSPropertyType is a property type for association roles to an ellipsoidal coordinate system, either referencing or containing the definition of that coordinate system. + + + + + + + + + gml:CartesianCS is a 1-, 2-, or 3-dimensional coordinate system. In the 1-dimensional case, it contains a single straight coordinate axis. In the 2- and 3-dimensional cases gives the position of points relative to orthogonal straight axes. In the multi-dimensional case, all axes shall have the same length unit of measure. A CartesianCS shall have one, two, or three gml:axis property elements. + + + + + + + + + + gml:CartesianCSPropertyType is a property type for association roles to a Cartesian coordinate system, either referencing or containing the definition of that coordinate system. + + + + + + + + + gml:VerticalCS is a one-dimensional coordinate system used to record the heights or depths of points. Such a coordinate system is usually dependent on the Earth's gravity field, perhaps loosely as when atmospheric pressure is the basis for the vertical coordinate system axis. A VerticalCS shall have one gml:axis property element. + + + + + + + + + + gml:VerticalCSPropertyType is a property type for association roles to a vertical coordinate system, either referencing or containing the definition of that coordinate system. + + + + + + + + + gml:TimeCS is a one-dimensional coordinate system containing a time axis, used to describe the temporal position of a point in the specified time units from a specified time origin. A TimeCS shall have one gml:axis property element. + + + + + + + + + + gml:TimeCSPropertyType is a property type for association roles to a time coordinate system, either referencing or containing the definition of that coordinate system. + + + + + + + + + gml:LinearCS is a one-dimensional coordinate system that consists of the points that lie on the single axis described. The associated coordinate is the distance – with or without offset – from the specified datum to the point along the axis. A LinearCS shall have one gml:axis property element. + + + + + + + + + + gml:LinearCSPropertyType is a property type for association roles to a linear coordinate system, either referencing or containing the definition of that coordinate system. + + + + + + + + + gml:UserDefinedCS is a two- or three-dimensional coordinate system that consists of any combination of coordinate axes not covered by any other coordinate system type. A UserDefinedCS shall have two or three gml:axis property elements; the number of property elements shall equal the dimension of the CS. + + + + + + + + + + gml:UserDefinedCSPropertyType is a property type for association roles to a user-defined coordinate system, either referencing or containing the definition of that coordinate system. + + + + + + + + + gml:SphericalCS is a three-dimensional coordinate system with one distance measured from the origin and two angular coordinates. A SphericalCS shall have three gml:axis property elements. + + + + + + + + + + gml:SphericalCSPropertyType is property type for association roles to a spherical coordinate system, either referencing or containing the definition of that coordinate system. + + + + + + + + + gml:PolarCS ia s two-dimensional coordinate system in which position is specified by the distance from the origin and the angle between the line from the origin to a point and a reference direction. A PolarCS shall have two gml:axis property elements. + + + + + + + + + + gml:PolarCSPropertyType is a property type for association roles to a polar coordinate system, either referencing or containing the definition of that coordinate system. + + + + + + + + + gml:CylindricalCS is a three-dimensional coordinate system consisting of a polar coordinate system extended by a straight coordinate axis perpendicular to the plane spanned by the polar coordinate system. A CylindricalCS shall have three gml:axis property elements. + + + + + + + + + + gml:CylindricalCSPropertyType is a property type for association roles to a cylindrical coordinate system, either referencing or containing the definition of that coordinate system. + + + + + + + + + gml:AffineCS is a two- or three-dimensional coordinate system with straight axes that are not necessarily orthogonal. An AffineCS shall have two or three gml:axis property elements; the number of property elements shall equal the dimension of the CS. + + + + + + + + + + gml:AffineCSPropertyType is a property type for association roles to an affine coordinate system, either referencing or containing the definition of that coordinate system. + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coverage.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coverage.xsd new file mode 100644 index 00000000..c0b83810 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/coverage.xsd @@ -0,0 +1,292 @@ + + + + coverage.xsd + See ISO/DIS 19136 20.3. +A coverage incorporates a mapping from a spatiotemporal domain to a range set, the latter providing the set in which the attribute values live. The range set may be an arbitrary set including discrete lists, integer or floating point ranges, and multi-dimensional vector spaces. +A coverage can be viewed as the graph of the coverage function f:A à B, that is as the set of ordered pairs {(x, f(x)) | where x is in A}. This view is especially applicable to the GML encoding of a coverage. In the case of a discrete coverage, the domain set A is partitioned into a collection of subsets (typically a disjoint collection) A = UAi and the function f is constant on each Ai. For a spatial domain, the Ai are geometry elements, hence the coverage can be viewed as a collection of (geometry,value) pairs, where the value is an element of the range set. If the spatial domain A is a topological space then the coverage can be viewed as a collection of (topology,value) pairs, where the topology element in the pair is a topological n-chain (in GML terms this is a gml:TopoPoint, gml:TopoCurve, gml:TopoSurface or gml:TopoSolid). +A coverage is implemented as a GML feature. We can thus speak of a "temperature distribution feature", or a "remotely sensed image feature", or a "soil distribution feature". +As is the case for any GML object, a coverage object may also be the value of a property of a feature. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + The base type for coverages is gml:AbstractCoverageType. The basic elements of a coverage can be seen in this content model: the coverage contains gml:domainSet and gml:rangeSet properties. The gml:domainSet property describes the domain of the coverage and the gml:rangeSet property describes the range of the coverage. + + + + + + + + + + + + + This element serves as the head of a substitution group which may contain any coverage whose type is derived from gml:AbstractCoverageType. It may act as a variable in the definition of content models where it is required to permit any coverage to be valid. + + + + + + + + + + + + + + A discrete coverage consists of a domain set, range set and optionally a coverage function. The domain set consists of either spatial or temporal geometry objects, finite in number. The range set is comprised of a finite number of attribute values each of which is associated to every direct position within any single spatiotemporal object in the domain. In other words, the range values are constant on each spatiotemporal object in the domain. This coverage function maps each element from the coverage domain to an element in its range. The coverageFunction element describes the mapping function. +This element serves as the head of a substitution group which may contain any discrete coverage whose type is derived from gml:DiscreteCoverageType. + + + + + + + + + + + + + + A continuous coverage as defined in ISO 19123 is a coverage that can return different values for the same feature attribute at different direct positions within a single spatiotemporal object in its spatiotemporal domain. The base type for continuous coverages is AbstractContinuousCoverageType. +The coverageFunction element describes the mapping function. +The abstract element gml:AbstractContinuousCoverage serves as the head of a substitution group which may contain any continuous coverage whose type is derived from gml:AbstractContinuousCoverageType. + + + + + The gml:domainSet property element describes the spatio-temporal region of interest, within which the coverage is defined. Its content model is given by gml:DomainSetType. +The value of the domain is thus a choice between a gml:AbstractGeometry and a gml:AbstractTimeObject. In the instance these abstract elements will normally be substituted by a geometry complex or temporal complex, to represent spatial coverages and time-series, respectively. +The presence of the gml:AssociationAttributeGroup means that domainSet follows the usual GML property model and may use the xlink:href attribute to point to the domain, as an alternative to describing the domain inline. Ownership semantics may be provided using the gml:OwnershipAttributeGroup. + + + + + + + + + + + + + + + + The gml:rangeSet property element contains the values of the coverage (sometimes called the attribute values). Its content model is given by gml:RangeSetType. +This content model supports a structural description of the range. The semantic information describing the range set is embedded using a uniform method, as part of the explicit values, or as a template value accompanying the representation using gml:DataBlock and gml:File. +The values from each component (or "band") in the range may be encoded within a gml:ValueArray element or a concrete member of the gml:AbstractScalarValueList substitution group . Use of these elements satisfies the value-type homogeneity requirement. + + + + + + + + + + + + + gml:DataBlock describes the Range as a block of text encoded values similar to a Common Separated Value (CSV) representation. +The range set parameterization is described by the property gml:rangeParameters. + + + + + + + + + + + + + + + gml:CoordinatesType consists of a list of coordinate tuples, with each coordinate tuple separated by the ts or tuple separator (whitespace), and each coordinate in the tuple by the cs or coordinate separator (comma). +The gml:tupleList encoding is effectively "band-interleaved". + + + + + gml:doubleOrNilReasonList consists of a list of gml:doubleOrNilReason values, each separated by a whitespace. The gml:doubleOrNilReason values are grouped into tuples where the dimension of each tuple in the list is equal to the number of range parameters. + + + + + for efficiency reasons, GML also provides a means of encoding the range set in an arbitrary external encoding, such as a binary file. This encoding may be "well-known" but this is not required. This mode uses the gml:File element. +The values of the coverage (attribute values in the range set) are transmitted in a external file that is referenced from the XML structure described by gml:FileType. The external file is referenced by the gml:fileReference property that is an anyURI (the gml:fileName property has been deprecated). This means that the external file may be located remotely from the referencing GML instance. +The gml:compression property points to a definition of a compression algorithm through an anyURI. This may be a retrievable, computable definition or simply a reference to an unambiguous name for the compression method. +The gml:mimeType property points to a definition of the file mime type. +The gml:fileStructure property is defined by a codelist. Note further that all values shall be enclosed in a single file. Multi-file structures for values are not supported in GML. +The semantics of the range set is described as above using the gml:rangeParameters property. +Note that if any compression algorithm is applied, the structure above applies only to the pre-compression or post-decompression structure of the file. +Note that the fields within a record match the gml:valueComponents of the gml:CompositeValue in document order. + + + + + + + + + deprecated + + + + + + + + + + + + The gml:coverageFunction property describes the mapping function from the domain to the range of the coverage. +The value of the CoverageFunction is one of gml:CoverageMappingRule and gml:GridFunction. +If the gml:coverageFunction property is omitted for a gridded coverage (including rectified gridded coverages) the gml:startPoint is assumed to be the value of the gml:low property in the gml:Grid geometry, and the gml:sequenceRule is assumed to be linear and the gml:axisOrder property is assumed to be "+1 +2". + + + + + + + + + + + + gml:CoverageMappingRule provides a formal or informal description of the coverage function. +The mapping rule may be defined as an in-line string (gml:ruleDefinition) or via a remote reference through xlink:href (gml:ruleReference). +If no rule name is specified, the default is 'Linear' with respect to members of the domain in document order. + + + + + + + + + + + gml:GridFunction provides an explicit mapping rule for grid geometries, i.e. the domain shall be a geometry of type grid. It describes the mapping of grid posts (discrete point grid coverage) or grid cells (discrete surface coverage) to the values in the range set. +The gml:startPoint is the index position of a point in the grid that is mapped to the first point in the range set (this is also the index position of the first grid post). If the gml:startPoint property is omitted the gml:startPoint is assumed to be equal to the value of gml:low in the gml:Grid geometry. Subsequent points in the mapping are determined by the value of the gml:sequenceRule. + + + + + + + + + + + The gml:SequenceRuleType is derived from the gml:SequenceRuleEnumeration through the addition of an axisOrder attribute. The gml:SequenceRuleEnumeration is an enumerated type. The rule names are defined in ISO 19123. If no rule name is specified the default is "Linear". + + + + + + deprecated + + + + + + + + + + + + + + + + + + + The different values in a gml:AxisDirectionList indicate the incrementation order to be used on all axes of the grid. Each axis shall be mentioned once and only once. + + + + + + The value of a gml:AxisDirection indicates the incrementation order to be used on an axis of the grid. + + + + + + + + In a gml:MultiPointCoverage the domain set is a gml:MultiPoint, that is a collection of arbitrarily distributed geometric points. +The content model is identical with gml:DiscreteCoverageType, but that gml:domainSet shall have values gml:MultiPoint. +In a gml:MultiPointCoverage the mapping from the domain to the range is straightforward. +- For gml:DataBlock encodings the points of the gml:MultiPoint are mapped in document order to the tuples of the data block. +- For gml:CompositeValue encodings the points of the gml:MultiPoint are mapped to the members of the composite value in document order. +- For gml:File encodings the points of the gml:MultiPoint are mapped to the records of the file in sequential order. + + + + + + In a gml:MultiCurveCoverage the domain is partioned into a collection of curves comprising a gml:MultiCurve. The coverage function then maps each curve in the collection to a value in the range set. +The content model is identical with gml:DiscreteCoverageType, but that gml:domainSet shall have values gml:MultiCurve. +In a gml:MultiCurveCoverage the mapping from the domain to the range is straightforward. +- For gml:DataBlock encodings the curves of the gml:MultiCurve are mapped in document order to the tuples of the data block. +- For gml:CompositeValue encodings the curves of the gml:MultiCurve are mapped to the members of the composite value in document order. +- For gml:File encodings the curves of the gml:MultiCurve are mapped to the records of the file in sequential order. + + + + + + In a gml:MultiSurfaceCoverage the domain is partioned into a collection of surfaces comprising a gml:MultiSurface. The coverage function than maps each surface in the collection to a value in the range set. +The content model is identical with gml:DiscreteCoverageType, but that gml:domainSet shall have values gml:MultiSurface. +In a gml:MultiSurfaceCoverage the mapping from the domain to the range is straightforward. +- For gml:DataBlock encodings the surfaces of the gml:MultiSurface are mapped in document order to the tuples of the data block. +- For gml:CompositeValue encodings the surfaces of the gml:MultiSurface are mapped to the members of the composite value in document order. +- For gml:File encodings the surfaces of the gml:MultiSurface are mapped to the records of the file in sequential order. + + + + + + In a gml:MultiSolidCoverage the domain is partioned into a collection of solids comprising a gml:MultiSolid. The coverage function than maps each solid in the collection to a value in the range set. +The content model is identical with gml:DiscreteCoverageType, but that gml:domainSet shall have values gml:MultiSolid. +In a gml:MultiSolidCoverage the mapping from the domain to the range is straightforward. +- For gml:DataBlock encodings the solids of the gml:MultiSolid are mapped in document order to the tuples of the data block. +- For gml:CompositeValue encodings the solids of the gml:MultiSolid are mapped to the members of the composite value in document order. +- For gml:File encodings the solids of the gml:MultiSolid are mapped to the records of the file in sequential order. + + + + + + A gml:GriddedCoverage is a discrete point coverage in which the domain set is a geometric grid of points. +Note that this is the same as the gml:MultiPointCoverage except that we have a gml:Grid to describe the domain. +The simple gridded coverage is not geometrically referenced and hence no geometric positions are assignable to the points in the grid. Such geometric positioning is introduced in the gml:RectifiedGridCoverage. + + + + + The gml:RectifiedGridCoverage is a discrete point coverage based on a rectified grid. It is similar to the grid coverage except that the points of the grid are geometrically referenced. The rectified grid coverage has a domain that is a gml:RectifiedGrid geometry. + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/datums.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/datums.xsd new file mode 100644 index 00000000..6ed68c4d --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/datums.xsd @@ -0,0 +1,287 @@ + + + + + datums.xsd + See ISO/DIS 19136 13.5 +The datums schema components can be divided into three logical parts, which define elements and types for XML encoding of the definitions of: +- Abstract datum +- Geodetic datums, including ellipsoid and prime meridian +- Multiple other concrete types of spatial or temporal datums +These schema components encode the Datum packages of the UML Models of ISO 19111 Clause 10 and ISO/DIS 19136 D.3.10. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + A gml:AbstractDatum specifies the relationship of a coordinate system to the earth, thus creating a coordinate reference system. A datum uses a parameter or set of parameters that determine the location of the origin of the coordinate reference system. Each datum subtype may be associated with only specific types of coordinate systems. This abstract complex type shall not be used, extended, or restricted, in a GML Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document. + + + + + + + + + + + + + + + + + gml:anchorDefinition is a description, possibly including coordinates, of the definition used to anchor the datum to the Earth. Also known as the "origin", especially for engineering and image datums. The codeSpace attribute may be used to reference a source of more detailed on this point or surface, or on a set of such descriptions. +- For a geodetic datum, this point is also known as the fundamental point, which is traditionally the point where the relationship between geoid and ellipsoid is defined. In some cases, the "fundamental point" may consist of a number of points. In those cases, the parameters defining the geoid/ellipsoid relationship have been averaged for these points, and the averages adopted as the datum definition. +- For an engineering datum, the anchor definition may be a physical point, or it may be a point with defined coordinates in another CRS.may +- For an image datum, the anchor definition is usually either the centre of the image or the corner of the image. +- For a temporal datum, this attribute is not defined. Instead of the anchor definition, a temporal datum carries a separate time origin of type DateTime. + + + + + gml:realizationEpoch is the time after which this datum definition is valid. See ISO 19111 Table 32 for details. + + + + + gml:DatumPropertyType is a property type for association roles to a datum, either referencing or containing the definition of that datum. + + + + + + + + + gml:GeodeticDatum is a geodetic datum defines the precise location and orientation in 3-dimensional space of a defined ellipsoid (or sphere), or of a Cartesian coordinate system centered in this ellipsoid (or sphere). + + + + + + + + + + + + + + + gml:primeMeridian is an association role to the prime meridian used by this geodetic datum. + + + + + gml:ellipsoid is an association role to the ellipsoid used by this geodetic datum. + + + + + gml:GeodeticDatumPropertyType is a property type for association roles to a geodetic datum, either referencing or containing the definition of that datum. + + + + + + + + + A gml:Ellipsoid is a geometric figure that may be used to describe the approximate shape of the earth. In mathematical terms, it is a surface formed by the rotation of an ellipse about its minor axis. + + + + + + + + + + + + + + + gml:semiMajorAxis specifies the length of the semi-major axis of the ellipsoid, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a length, such as metres or feet. + + + + + gml:secondDefiningParameter is a property containing the definition of the second parameter that defines the shape of an ellipsoid. An ellipsoid requires two defining parameters: semi-major axis and inverse flattening or semi-major axis and semi-minor axis. When the reference body is a sphere rather than an ellipsoid, only a single defining parameter is required, namely the radius of the sphere; in that case, the semi-major axis "degenerates" into the radius of the sphere. +The inverseFlattening element contains the inverse flattening value of the ellipsoid. This value is a scale factor (or ratio). It uses gml:LengthType with the restriction that the unit of measure referenced by the uom attribute must be suitable for a scale factor, such as percent, permil, or parts-per-million. +The semiMinorAxis element contains the length of the semi-minor axis of the ellipsoid. When the isSphere element is included, the ellipsoid is degenerate and is actually a sphere. The sphere is completely defined by the semi-major axis, which is the radius of the sphere. + + + + + + + + + + + + + + + + + + + gml:EllipsoidPropertyType is a property type for association roles to an ellipsoid, either referencing or containing the definition of that ellipsoid. + + + + + + + + + A gml:PrimeMeridian defines the origin from which longitude values are determined. The default value for the prime meridian gml:identifier value is "Greenwich". + + + + + + + + + + + + + + gml:greenwichLongitude is the longitude of the prime meridian measured from the Greenwich meridian, positive eastward. If the value of the prime meridian "name" is "Greenwich" then the value of greenwichLongitude shall be 0 degrees. + + + + + gml:PrimeMeridianPropertyType is a property type for association roles to a prime meridian, either referencing or containing the definition of that meridian. + + + + + + + + + gml:EngineeringDatum defines the origin of an engineering coordinate reference system, and is used in a region around that origin. This origin may be fixed with respect to the earth (such as a defined point at a construction site), or be a defined point on a moving vehicle (such as on a ship or satellite). + + + + + + + + + + gml:EngineeringDatumPropertyType is a property type for association roles to an engineering datum, either referencing or containing the definition of that datum. + + + + + + + + + gml:ImageDatum defines the origin of an image coordinate reference system, and is used in a local context only. For an image datum, the anchor definition is usually either the centre of the image or the corner of the image. For more information, see ISO 19111 B.3.5. + + + + + + + + + + + + + + gml:pixelInCell is a specification of the way an image grid is associated with the image data attributes. The required codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property. + + + + + gml:ImageDatumPropertyType is a property type for association roles to an image datum, either referencing or containing the definition of that datum. + + + + + + + + + gml:VerticalDatum is a textual description and/or a set of parameters identifying a particular reference level surface used as a zero-height surface, including its position with respect to the Earth for any of the height types recognized by this International Standard. + + + + + + + + + + gml:VerticalDatumPropertyType is property type for association roles to a vertical datum, either referencing or containing the definition of that datum. + + + + + + + + + A gml:TemporalDatum defines the origin of a Temporal Reference System. This type omits the "anchorDefinition" and "realizationEpoch" elements and adds the "origin" element with the dateTime type. + + + + + + + + + + + + + + The TemporalDatumBaseType partially defines the origin of a temporal coordinate reference system. This type restricts the AbstractDatumType to remove the "anchorDefinition" and "realizationEpoch" elements. + + + + + + + + + + + + + + + + + + + + gml:origin is the date and time origin of this temporal datum. + + + + + gml:TemporalDatumPropertyType is a property type for association roles to a temporal datum, either referencing or containing the definition of that datum. + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/defaultStyle.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/defaultStyle.xsd new file mode 100644 index 00000000..86bd4365 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/defaultStyle.xsd @@ -0,0 +1,453 @@ + + + + defaultStyle.xsd + + GML is an OGC Standard. + Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + Top-level property. Used in application schemas to "attach" the styling information to GML data. The link between the data and the style should be established through this property only. + + + + + + [complexType of] Top-level property. Used in application schemas to "attach" the styling information to GML data. The link between the data and the style should be established through this property only. + + + + + + + + + + + The value of the top-level property. It is an abstract element. Used as the head element of the substitution group for extensibility purposes. + + + + + + [complexType of] The value of the top-level property. It is an abstract element. Used as the head element of the substitution group for extensibility purposes. + + + + + + + + + Predefined concrete value of the top-level property. Encapsulates all other styling information. + + + + + + [complexType of] Predefined concrete value of the top-level property. Encapsulates all other styling information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The style descriptor for features. + + + + + + [complexType of] The style descriptor for features. + + + + + + + + + + + + + + + + + + + Used to specify the grammar of the feature query mechanism. + + + + + + + + + + + Base complex type for geometry, topology, label and graph styles. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The style descriptor for geometries of a feature. + + + + + + [complexType of] The style descriptor for geometries of a feature. + + + + + + + + + deprecated + Deprecated in GML version 3.1.0. Use symbol with inline content instead. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The style descriptor for topologies of a feature. Describes individual topology elements styles. + + + + + + [complexType of] The style descriptor for topologies of a feature. Describes individual topology elements styles. + + + + + + + + + deprecated + Deprecated in GML version 3.1.0. Use symbol with inline content instead. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The style descriptor for labels of a feature, geometry or topology. + + + + + + [complexType of] The style descriptor for labels of a feature, geometry or topology. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The style descriptor for a graph consisting of a number of features. Describes graph-specific style attributes. + + + + + + [complexType of] The style descriptor for a graph consisting of a number of features. Describes graph-specific style attributes. + + + + + + + + + + + + + + + + + + + + + The symbol property. Extends the gml:AssociationType to allow for remote referencing of symbols. + + + + + + [complexType of] The symbol property. Allows for remote referencing of symbols. + + + + + + + + + + + + + Used to specify the type of the symbol used. + + + + + + + + + + + Label is mixed -- composed of text and XPath expressions used to extract the useful information from the feature. + + + + + + + + + + Defines the geometric transformation of entities. There is no particular grammar defined for this value. + + + + + + Used to vary individual graphic parameters and attributes of the style, symbol or text. + + + + + + + + + + + + Graph-specific styling property. + + + + + + + + + + Graph-specific styling property. + + + + + + + + + + Graph-specific styling property. + + + + + + + + + + Graph-specific styling property. + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/deprecatedTypes.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/deprecatedTypes.xsd new file mode 100644 index 00000000..a71816ad --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/deprecatedTypes.xsd @@ -0,0 +1,1133 @@ + + + + deprecatedTypes.xsd + All global schema components that are part of the GML schema, but were deprecated. See Annex I. + + GML is an OGC Standard. + Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + deprecated + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + deprecated + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + + + + + + deprecated + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + + + + + + + + + deprecated + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + + + + deprecated + + + + + deprecated + + + + + + + + + + + + + + + deprecated + + + + + deprecated + + + + + + + + + + + + + + + + + + + + + deprecated + + + + + + + + deprecated + + + + + deprecated + + + + + + + + + deprecated + + + + + deprecated + + + + + + + + deprecated + + + + + deprecated + + + + + + + + + deprecated + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + + deprecated + + + + + deprecated + + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + + + + + + deprecated + + + + + deprecated + + + + + + + + + + + + deprecated + + + + + + + + + + deprecated + + + + + deprecated + + + + + + + deprecated + + + + + deprecated + + + + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + deprecated + + + + + deprecated + + + + + + + + + + + + + + deprecated + + + + + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + deprecated + + + + + deprecated + + + + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + + + + + + + + + + + + + + + + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + + + deprecated + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/dictionary.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/dictionary.xsd new file mode 100644 index 00000000..4568a8cb --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/dictionary.xsd @@ -0,0 +1,90 @@ + + + + dictionary.xsd + See ISO/DIS 19136 Clause 16. +Many applications require definitions of terms which are used within instance documents as the values of certain properties or as reference information to tie properties to standard information values in some way. Units of measure and descriptions of measurable phenomena are two particular examples. +It will often be convenient to use definitions provided by external authorities. These may already be packaged for delivery in various ways, both online and offline. In order that they may be referred to from GML documents it is generally necessary that a URI be available for each definition. Where this is the case then it is usually preferable to refer to these directly. +Alternatively, it may be convenient or necessary to capture definitions in XML, either embedded within an instance document containing features or as a separate document. The definitions may be transcriptions from an external source, or may be new definitions for a local purpose. In order to support this case, some simple components are provided in GML in the form of +- a generic gml:Definition, which may serve as the basis for more specialized definitions +- a generic gml:Dictionary, which allows a set of definitions or references to definitions to be collected +These components may be used directly, but also serve as the basis for more specialised definition elements in GML, in particular: coordinate operations, coordinate reference systems, datums, temporal reference systems, and units of measure. +Note that the GML definition and dictionary components implement a simple nested hierarchy of definitions with identifiers. The latter provide handles which may be used in the description of more complex relationships between terms. However, the GML dictionary components are not intended to provide direct support for complex taxonomies, ontologies or thesauri. Specialised XML tools are available to satisfy the more sophisticated requirements. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + The basic gml:Definition element specifies a definition, which can be included in or referenced by a dictionary. +The content model for a generic definition is a derivation from gml:AbstractGMLType. +The gml:description property element shall hold the definition if this can be captured in a simple text string, or the gml:descriptionReference property element may carry a link to a description elsewhere. +The gml:identifier element shall provide one identifier identifying this definition. The identifier shall be unique within the dictionaries using this definition. +The gml:name elements shall provide zero or more terms and synonyms for which this is the definition. +The gml:remarks element shall be used to hold additional textual information that is not conceptually part of the definition but is useful in understanding the definition. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sets of definitions may be collected into dictionaries or collections. +A gml:Dictionary is a non-abstract collection of definitions. +The gml:Dictionary content model adds a list of gml:dictionaryEntry properties that contain or reference gml:Definition objects. A database handle (gml:id attribute) is required, in order that this collection may be referred to. The standard gml:identifier, gml:description, gml:descriptionReference and gml:name properties are available to reference or contain more information about this dictionary. The gml:description and gml:descriptionReference property elements may be used for a description of this dictionary. The derived gml:name element may be used for the name(s) of this dictionary. for remote definiton references gml:dictionaryEntry shall be used. If a Definition object contained within a Dictionary uses the descriptionReference property to refer to a remote definition, then this enables the inclusion of a remote definition in a local dictionary, giving a handle and identifier in the context of the local dictionary. + + + + + + + + + + + + + + + + This property element contains or refers to the definitions which are members of a dictionary. +The content model follows the standard GML property pattern, so a gml:dictionaryEntry may either contain or refer to a single gml:Definition. Since gml:Dictionary is substitutable for gml:Definition, the content of an entry may itself be a lower level dictionary. +Note that if the value is provided by reference, this definition does not carry a handle (gml:id) in this context, so does not allow external references to this specific definition in this context. When used in this way the referenced definition will usually be in a dictionary in the same XML document. + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/direction.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/direction.xsd new file mode 100644 index 00000000..2df35fc1 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/direction.xsd @@ -0,0 +1,84 @@ + + + + direction.xsd + See ISO/DIS 19136 Clause 18. +The direction schema components provide the GML Application Schema developer with a standard property element to describe direction, and associated objects that may be used to express orientation, direction, heading, bearing or other directional aspects of geographic features. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + The property gml:direction is intended as a pre-defined property expressing a direction to be assigned to features defined in a GML application schema. + + + + + + + + + + + + + + + + Direction vectors are specified by providing components of a vector. + + + + + + deprecated + + + + + + + + + direction descriptions are specified by a compass point code, a keyword, a textual description or a reference to a description. +A gml:compassPoint is specified by a simple enumeration. +In addition, thre elements to contain text-based descriptions of direction are provided. +If the direction is specified using a term from a list, gml:keyword should be used, and the list indicated using the value of the codeSpace attribute. +if the direction is decribed in prose, gml:direction or gml:reference should be used, allowing the value to be included inline or by reference. + + + + + + + + + + + These directions are necessarily approximate, giving direction with a precision of 22.5°. It is thus generally unnecessary to specify the reference frame, though this may be detailed in the definition of a GML application language. + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/dynamicFeature.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/dynamicFeature.xsd new file mode 100644 index 00000000..5b4c8399 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/dynamicFeature.xsd @@ -0,0 +1,109 @@ + + + + dynamicFeature.xsd + See ISO/DIS 19136 15.6. +A number of types and relationships are defined to represent the time-varying properties of geographic features. +In a comprehensive treatment of spatiotemporal modeling, Langran (see Bibliography) distinguished three principal temporal entities: states, events, and evidence; the schema specified in the following Subclauses incorporates elements for each. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + Evidence is represented by a simple gml:dataSource or gml:dataSourceReference property that indicates the source of the temporal data. The remote link attributes of the gml:dataSource element have been deprecated along with its current type. + + + + + Evidence is represented by a simple gml:dataSource or gml:dataSourceReference property that indicates the source of the temporal data. + + + + + A convenience group. This allows an application schema developer to include dynamic properties in a content model in a standard fashion. + + + + + + + + + + + States are captured by time-stamped instances of a feature. The content model extends the standard gml:AbstractFeatureType with the gml:dynamicProperties model group. +Each time-stamped instance represents a 'snapshot' of a feature. The dynamic feature classes will normally be extended to suit particular applications. A dynamic feature bears either a time stamp or a history. + + + + + + + + + + + + A gml:DynamicFeatureCollection is a feature collection that has a gml:validTime property (i.e. is a snapshot of the feature collection) or which has a gml:history property that contains one or more gml:AbstractTimeSlices each of which contain values of the time varying properties of the feature collection. Note that the gml:DynamicFeatureCollection may be one of the following: +1. A feature collection which consists of static feature members (members do not change in time) but which has properties of the collection object as a whole that do change in time . +2. A feature collection which consists of dynamic feature members (the members are gml:DynamicFeatures) but which also has properties of the collection as a whole that vary in time. + + + + + + + + + + + + + + + + + + + + + + + + + To describe an event — an action that occurs at an instant or over an interval of time — GML provides the gml:AbtractTimeSlice element. A timeslice encapsulates the time-varying properties of a dynamic feature -- it shall be extended to represent a time stamped projection of a specific feature. The gml:dataSource property describes how the temporal data was acquired. +A gml:AbstractTimeSlice instance is a GML object that encapsulates updates of the dynamic—or volatile—properties that reflect some change event; it thus includes only those feature properties that have actually changed due to some process. +gml:AbstractTimeSlice basically provides a facility for attribute-level time stamping, in contrast to the object-level time stamping of dynamic feature instances. +The time slice can thus be viewed as event or process-oriented, whereas a snapshot is more state or structure-oriented. A timeslice has richer causality, whereas a snapshot merely portrays the status of the whole. + + + + + + + + + + + + + + + + A generic sequence of events constitute a gml:history of an object. +The gml:history element contains a set of elements in the substitution group headed by the abstract element gml:AbstractTimeSlice, representing the time-varying properties of interest. The history property of a dynamic feature associates a feature instance with a sequence of time slices (i.e. change events) that encapsulate the evolution of the feature. + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/feature.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/feature.xsd new file mode 100644 index 00000000..eb28ef9a --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/feature.xsd @@ -0,0 +1,94 @@ + + + + feature.xsd + See ISO/DIS 19136 Clause 9. +A GML feature is a (representation of a) identifiable real-world object in a selected domain of discourse. The feature schema provides a framework for the creation of GML features and feature collections. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + The basic feature model is given by the gml:AbstractFeatureType. +The content model for gml:AbstractFeatureType adds two specific properties suitable for geographic features to the content model defined in gml:AbstractGMLType. +The value of the gml:boundedBy property describes an envelope that encloses the entire feature instance, and is primarily useful for supporting rapid searching for features that occur in a particular location. +The value of the gml:location property describes the extent, position or relative location of the feature. + + + + + + + + + + + + + This abstract element serves as the head of a substitution group which may contain any elements whose content model is derived from gml:AbstractFeatureType. This may be used as a variable in the construction of content models. +gml:AbstractFeature may be thought of as "anything that is a GML feature" and may be used to define variables or templates in which the value of a GML property is "any feature". This occurs in particular in a GML feature collection where the feature member properties contain one or multiple copies of gml:AbstractFeature respectively. + + + + + + + + + + + + This property describes the minimum bounding box or rectangle that encloses the entire feature. + + + + + + + + + + + + + + gml:EnvelopeWithTimePeriod is provided for envelopes that include a temporal extent. It adds two time position properties, gml:beginPosition and gml:endPosition, which describe the extent of a time-envelope. +Since gml:EnvelopeWithTimePeriod is assigned to the substitution group headed by gml:Envelope, it may be used whenever gml:Envelope is valid. + + + + + + + + + + + + + + + + The gml:locationName property element is a convenience property where the text value describes the location of the feature. If the location names are selected from a controlled list, then the list shall be identified in the codeSpace attribute. + + + + + The gml:locationReference property element is a convenience property where the text value referenced by the xlink:href attribute describes the location of the feature. + + + + + To create a collection of GML features, a property type shall be derived by extension from gml:AbstractFeatureMemberType. +By default, this abstract property type does not imply any ownership of the features in the collection. The owns attribute of gml:OwnershipAttributeGroup may be used on a property element instance to assert ownership of a feature in the collection. A collection shall not own a feature already owned by another object. + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryAggregates.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryAggregates.xsd new file mode 100644 index 00000000..e3834204 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryAggregates.xsd @@ -0,0 +1,197 @@ + + + + geometryAggregates.xsd + See ISO/DIS 19136 12.3. +Geometric aggregates (i.e. instances of a subtype of gml:AbstractGeometricAggregateType) are arbitrary aggregations of geometry elements. They are not assumed to have any additional internal structure and are used to "collect" pieces of geometry of a specified type. Application schemas may use aggregates for features that use multiple geometric objects in their representations. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + + + gml:AbstractGeometricAggregate is the abstract head of the substitution group for all geometric aggregates. + + + + + + + + + + + + + + + gml:MultiGeometry is a collection of one or more GML geometry objects of arbitrary type. +The members of the geometric aggregate may be specified either using the "standard" property (gml:geometryMember) or the array property (gml:geometryMembers). It is also valid to use both the "standard" and the array properties in the same collection. + + + + + This property element either references a geometry element via the XLink-attributes or contains the geometry element. + + + + + This property element contains a list of geometry elements. The order of the elements is significant and shall be preserved when processing the array. + + + + + A property that has a geometric aggregate as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none. + + + + + + + + + + + + + + + + + + + + A gml:MultiPoint consists of one or more gml:Points. +The members of the geometric aggregate may be specified either using the "standard" property (gml:pointMember) or the array property (gml:pointMembers). It is also valid to use both the "standard" and the array properties in the same collection. + + + + + This property element either references a Point via the XLink-attributes or contains the Point element. + + + + + This property element contains a list of points. The order of the elements is significant and shall be preserved when processing the array. + + + + + A property that has a collection of points as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none. + + + + + + + + + + + + + + + + + + + + A gml:MultiCurve is defined by one or more gml:AbstractCurves. +The members of the geometric aggregate may be specified either using the "standard" property (gml:curveMember) or the array property (gml:curveMembers). It is also valid to use both the "standard" and the array properties in the same collection. + + + + + This property element contains a list of curves. The order of the elements is significant and shall be preserved when processing the array. + + + + + A property that has a collection of curves as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none. + + + + + + + + + + + + + + + + + + + + A gml:MultiSurface is defined by one or more gml:AbstractSurfaces. +The members of the geometric aggregate may be specified either using the "standard" property (gml:surfaceMember) or the array property (gml:surfaceMembers). It is also valid to use both the "standard" and the array properties in the same collection. + + + + + This property element contains a list of surfaces. The order of the elements is significant and shall be preserved when processing the array. + + + + + A property that has a collection of surfaces as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none. + + + + + + + + + + + + + + + + + + + + A gml:MultiSolid is defined by one or more gml:AbstractSolids. +The members of the geometric aggregate may be specified either using the "standard" property (gml:solidMember) or the array property (gml:solidMembers). It is also valid to use both the "standard" and the array properties in the same collection. + + + + + This property element either references a solid via the XLink-attributes or contains the solid element. A solid element is any element, which is substitutable for gml:AbstractSolid. + + + + + This property element contains a list of solids. The order of the elements is significant and shall be preserved when processing the array. + + + + + A property that has a collection of solids as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none. + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryBasic0d1d.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryBasic0d1d.xsd new file mode 100644 index 00000000..f14472e4 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryBasic0d1d.xsd @@ -0,0 +1,277 @@ + + + + geometryBasic0d1d.xsd + See ISO/DIS 19136 Clause 10. +Any geometry element that inherits the semantics of AbstractGeometryType may be viewed as a set of direct positions. +All of the classes derived from AbstractGeometryType inherit an optional association to a coordinate reference system. All direct positions shall directly or indirectly be associated with a coordinate reference system. When geometry elements are aggregated in another geometry element (such as a MultiGeometry or GeometricComplex), which already has a coordinate reference system specified, then these elements are assumed to be in that same coordinate reference system unless otherwise specified. +The geometry model distinguishes geometric primitives, aggregates and complexes. +Geometric primitives, i.e. instances of a subtype of AbstractGeometricPrimitiveType, will be open, that is, they will not contain their boundary points; curves will not contain their end points, surfaces will not contain their boundary curves, and solids will not contain their bounding surfaces. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + All geometry elements are derived directly or indirectly from this abstract supertype. A geometry element may have an identifying attribute (gml:id), one or more names (elements identifier and name) and a description (elements description and descriptionReference) . It may be associated with a spatial reference system (attribute group gml:SRSReferenceGroup). +The following rules shall be adhered to: +- Every geometry type shall derive from this abstract type. +- Every geometry element (i.e. an element of a geometry type) shall be directly or indirectly in the substitution group of AbstractGeometry. + + + + + + + + + + The attribute group SRSReferenceGroup is an optional reference to the CRS used by this geometry, with optional additional information to simplify the processing of the coordinates when a more complete definition of the CRS is not needed. +In general the attribute srsName points to a CRS instance of gml:AbstractCoordinateReferenceSystem. For well-known references it is not required that the CRS description exists at the location the URI points to. +If no srsName attribute is given, the CRS shall be specified as part of the larger context this geometry element is part of. + + + + + + + + The attributes uomLabels and axisLabels, defined in the SRSInformationGroup attribute group, are optional additional and redundant information for a CRS to simplify the processing of the coordinate values when a more complete definition of the CRS is not needed. This information shall be the same as included in the complete definition of the CRS, referenced by the srsName attribute. When the srsName attribute is included, either both or neither of the axisLabels and uomLabels attributes shall be included. When the srsName attribute is omitted, both of these attributes shall be omitted. +The attribute axisLabels is an ordered list of labels for all the axes of this CRS. The gml:axisAbbrev value should be used for these axis labels, after spaces and forbidden characters are removed. When the srsName attribute is included, this attribute is optional. When the srsName attribute is omitted, this attribute shall also be omitted. +The attribute uomLabels is an ordered list of unit of measure (uom) labels for all the axes of this CRS. The value of the string in the gml:catalogSymbol should be used for this uom labels, after spaces and forbidden characters are removed. When the axisLabels attribute is included, this attribute shall also be included. When the axisLabels attribute is omitted, this attribute shall also be omitted. + + + + + + + The AbstractGeometry element is the abstract head of the substitution group for all geometry elements of GML. This includes pre-defined and user-defined geometry elements. Any geometry element shall be a direct or indirect extension/restriction of AbstractGeometryType and shall be directly or indirectly in the substitution group of AbstractGeometry. + + + + + A geometric property may either be any geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same or another document). Note that either the reference or the contained element shall be given, but not both or none. +If a feature has a property that takes a geometry element as its value, this is called a geometry property. A generic type for such a geometry property is GeometryPropertyType. + + + + + + + + + + If a feature has a property which takes an array of geometry elements as its value, this is called a geometry array property. A generic type for such a geometry property is GeometryArrayPropertyType. +The elements are always contained inline in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported. + + + + + + + + + Direct position instances hold the coordinates for a position within some coordinate reference system (CRS). Since direct positions, as data types, will often be included in larger objects (such as geometry elements) that have references to CRS, the srsName attribute will in general be missing, if this particular direct position is included in a larger element with such a reference to a CRS. In this case, the CRS is implicitly assumed to take on the value of the containing object's CRS. +if no srsName attribute is given, the CRS shall be specified as part of the larger context this geometry element is part of, typically a geometric object like a point, curve, etc. + + + + + + + + + + + posList instances (and other instances with the content model specified by DirectPositionListType) hold the coordinates for a sequence of direct positions within the same coordinate reference system (CRS). +if no srsName attribute is given, the CRS shall be specified as part of the larger context this geometry element is part of, typically a geometric object like a point, curve, etc. +The optional attribute count specifies the number of direct positions in the list. If the attribute count is present then the attribute srsDimension shall be present, too. +The number of entries in the list is equal to the product of the dimensionality of the coordinate reference system (i.e. it is a derived value of the coordinate reference system definition) and the number of direct positions. + + + + + + + + + + + + GML supports two different ways to specify a geometric position: either by a direct position (a data type) or a point (a geometric object). +pos elements are positions that are "owned" by the geometric primitive encapsulating this geometric position. +pointProperty elements contain a point that may be referenced from other geometry elements or reference another point defined elsewhere (reuse of existing points). + + + + + + + + + GML supports two different ways to specify a list of geometric positions: either by a sequence of geometric positions (by reusing the group definition) or a sequence of direct positions (element posList). +The posList element allows for a compact way to specify the coordinates of the positions, if all positions are represented in the same coordinate reference system. + + + + + + + + + For some applications the components of the position may be adjusted to yield a unit vector. + + + + + + + + + + + + + + + deprecated + + + + + + + + + Envelope defines an extent using a pair of positions defining opposite corners in arbitrary dimensions. The first direct position is the "lower corner" (a coordinate position consisting of all the minimal ordinates for each dimension for all points within the envelope), the second one the "upper corner" (a coordinate position consisting of all the maximal ordinates for each dimension for all points within the envelope). +The use of the properties "coordinates" and "pos" has been deprecated. The explicitly named properties "lowerCorner" and "upperCorner" shall be used instead. + + + + + gml:AbstractGeometricPrimitiveType is the abstract root type of the geometric primitives. A geometric primitive is a geometric object that is not decomposed further into other primitives in the system. All primitives are oriented in the direction implied by the sequence of their coordinate tuples. + + + + + + + + The AbstractGeometricPrimitive element is the abstract head of the substitution group for all (pre- and user-defined) geometric primitives. + + + + + A property that has a geometric primitive as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none. + + + + + + + + + + + + + + + + + + + + + + A Point is defined by a single coordinate tuple. The direct position of a point is specified by the pos element which is of type DirectPositionType. + + + + + A property that has a point as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none. + + + + + + + + + + This property element either references a point via the XLink-attributes or contains the point element. pointProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for Point. + + + + + gml:PointArrayPropertyType is a container for an array of points. The elements are always contained inline in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported. + + + + + + + + + gml:AbstractCurveType is an abstraction of a curve to support the different levels of complexity. The curve may always be viewed as a geometric primitive, i.e. is continuous. + + + + + + + + The AbstractCurve element is the abstract head of the substitution group for all (continuous) curve elements. + + + + + A property that has a curve as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none. + + + + + + + + + + This property element either references a curve via the XLink-attributes or contains the curve element. curveProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractCurve. + + + + + A container for an array of curves. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported. + + + + + + + + + + + + + + + + + + + + + + + + + + A LineString is a special curve that consists of a single segment with linear interpolation. It is defined by two or more coordinate tuples, with linear interpolation between them. The number of direct positions in the list shall be at least two. + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryBasic2d.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryBasic2d.xsd new file mode 100644 index 00000000..af084fa1 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryBasic2d.xsd @@ -0,0 +1,124 @@ + + + + geometryBasic2d.xsd + See ISO/DIS 19136 Clause 10. + + GML is an OGC Standard. + Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + gml:AbstractSurfaceType is an abstraction of a surface to support the different levels of complexity. A surface is always a continuous region of a plane. + + + + + + + + The AbstractSurface element is the abstract head of the substitution group for all (continuous) surface elements. + + + + + A property that has a surface as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none. + + + + + + + + + + This property element either references a surface via the XLink-attributes or contains the surface element. surfaceProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractSurface. + + + + + gml:SurfaceArrayPropertyType is a container for an array of surfaces. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported. + + + + + + + + + + + + + + + + + + + A Polygon is a special surface that is defined by a single surface patch (see D.3.6). The boundary of this patch is coplanar and the polygon uses planar interpolation in its interior. +The elements exterior and interior describe the surface boundary of the polygon. + + + + + A boundary of a surface consists of a number of rings. In the normal 2D case, one of these rings is distinguished as being the exterior boundary. In a general manifold this is not always possible, in which case all boundaries shall be listed as interior boundaries, and the exterior will be empty. + + + + + A boundary of a surface consists of a number of rings. The "interior" rings separate the surface / surface patch from the area enclosed by the rings. + + + + + + + + An abstraction of a ring to support surface boundaries of different complexity. +The AbstractRing element is the abstract head of the substituition group for all closed boundaries of a surface patch. + + + + + A property with the content model of gml:AbstractRingPropertyType encapsulates a ring to represent the surface boundary property of a surface. + + + + + + + + + + + + + + + + + + + + + + + + + A LinearRing is defined by four or more coordinate tuples, with linear interpolation between them; the first and last coordinates shall be coincident. The number of direct positions in the list shall be at least four. + + + + + A property with the content model of gml:LinearRingPropertyType encapsulates a linear ring to represent a component of a surface boundary. + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryComplexes.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryComplexes.xsd new file mode 100644 index 00000000..88457b6a --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryComplexes.xsd @@ -0,0 +1,95 @@ + + + + geometryComplexes.xsd + See ISO/DIS 19136 12.2. +Geometric complexes (i.e. instances of gml:GeometricComplexType) are closed collections of geometric primitives, i.e. they will contain their boundaries. +A geometric complex (gml:GeometricComplex) is defined by ISO 19107:2003, 6.6.1 as "a set of primitive geometric objects (in a common coordinate system) whose interiors are disjoint. Further, if a primitive is in a geometric complex, then there exists a set of primitives in that complex whose point-wise union is the boundary of this first primitive." +A geometric composite (gml:CompositeCurve, gml:CompositeSurface and gml:CompositeSolid) represents a geometric complex with an underlying core geometry that is isomorphic to a primitive, i.e. it can be viewed as a primitive and as a complex. See ISO 19107:2003, 6.1 and 6.6.3 for more details on the nature of composite geometries. +Geometric complexes and composites are intended to be used in application schemas where the sharing of geometry is important. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + + + + + + + A property that has a geometric complex as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none. + + + + + + + + + + + + + + + + + + + + + + + + + A gml:CompositeCurve is represented by a sequence of (orientable) curves such that each curve in the sequence terminates at the start point of the subsequent curve in the list. +curveMember references or contains inline one curve in the composite curve. +The curves are contiguous, the collection of curves is ordered. Therefore, if provided, the aggregationType attribute shall have the value "sequence". + + + + + + + + + + + + + + + A gml:CompositeSurface is represented by a set of orientable surfaces. It is geometry type with all the geometric properties of a (primitive) surface. Essentially, a composite surface is a collection of surfaces that join in pairs on common boundary curves and which, when considered as a whole, form a single surface. +surfaceMember references or contains inline one surface in the composite surface. +The surfaces are contiguous. + + + + + + + + + + + + + + + gml:CompositeSolid implements ISO 19107 GM_CompositeSolid (see ISO 19107:2003, 6.6.7) as specified in D.2.3.6. +A gml:CompositeSolid is represented by a set of orientable surfaces. It is a geometry type with all the geometric properties of a (primitive) solid. Essentially, a composite solid is a collection of solids that join in pairs on common boundary surfaces and which, when considered as a whole, form a single solid. +solidMember references or contains one solid in the composite solid. The solids are contiguous. + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryPrimitives.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryPrimitives.xsd new file mode 100644 index 00000000..ad8e46ff --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/geometryPrimitives.xsd @@ -0,0 +1,846 @@ + + + + geometryPrimitives.xsd + See ISO/DIS 19136 Clause 11. +Beside the "simple" geometric primitives specified in the previous Clause, this Clause specifies additional primitives to describe real world situations which require a more expressive geometry model. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + + + + + A curve is a 1-dimensional primitive. Curves are continuous, connected, and have a measurable length in terms of the coordinate system. +A curve is composed of one or more curve segments. Each curve segment within a curve may be defined using a different interpolation method. The curve segments are connected to one another, with the end point of each segment except the last being the start point of the next segment in the segment list. +The orientation of the curve is positive. +The element segments encapsulates the segments of the curve. + + + + + + + + + + + + + + + The property baseCurve references or contains the base curve, i.e. it either references the base curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for AbstractCurve. The base curve has positive orientation. + + + + + OrientableCurve consists of a curve and an orientation. If the orientation is "+", then the OrientableCurve is identical to the baseCurve. If the orientation is "-", then the OrientableCurve is related to another AbstractCurve with a parameterization that reverses the sense of the curve traversal. + + + + + + + + + + A curve segment defines a homogeneous segment of a curve. +The attributes numDerivativesAtStart, numDerivativesAtEnd and numDerivativesInterior specify the type of continuity as specified in ISO 19107:2003, 6.4.9.3. +The AbstractCurveSegment element is the abstract head of the substituition group for all curve segment elements, i.e. continuous segments of the same interpolation mechanism. +All curve segments shall have an attribute interpolation with type gml:CurveInterpolationType specifying the curve interpolation mechanism used for this segment. This mechanism uses the control points and control parameters to determine the position of this curve segment. + + + + + gml:CurveSegmentArrayPropertyType is a container for an array of curve segments. + + + + + + + + This property element contains a list of curve segments. The order of the elements is significant and shall be preserved when processing the array. + + + + + gml:CurveInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A LineStringSegment is a curve segment that is defined by two or more control points including the start and end point, with linear interpolation between them. +The content model follows the general pattern for the encoding of curve segments. + + + + + + + + + + + + + + + + + + + + + + + + An ArcString is a curve segment that uses three-point circular arc interpolation ("circularArc3Points"). The number of arcs in the arc string may be explicitly stated in the attribute numArc. The number of control points in the arc string shall be 2 * numArc + 1. +The content model follows the general pattern for the encoding of curve segments. + + + + + + + + + + + + + + + + + + + + + + + An Arc is an arc string with only one arc unit, i.e. three control points including the start and end point. As arc is an arc string consisting of a single arc, the attribute "numArc" is fixed to "1". + + + + + + + + + + A Circle is an arc whose ends coincide to form a simple closed loop. The three control points shall be distinct non-co-linear points for the circle to be unambiguously defined. The arc is simply extended past the third control point until the first control point is encountered. + + + + + + + + + + + + + + + + + + + + + + + + + + This variant of the arc computes the mid points of the arcs instead of storing the coordinates directly. The control point sequence consists of the start and end points of each arc plus the bulge (see ISO 19107:2003, 6.4.17.2). The normal is a vector normal (perpendicular) to the chord of the arc (see ISO 19107:2003, 6.4.17.4). +The interpolation is fixed as "circularArc2PointWithBulge". +The number of arcs in the arc string may be explicitly stated in the attribute numArc. The number of control points in the arc string shall be numArc + 1. +The content model follows the general pattern for the encoding of curve segments. + + + + + + + + + + + + + + + + + + + + + + + + + An ArcByBulge is an arc string with only one arc unit, i.e. two control points, one bulge and one normal vector. +As arc is an arc string consisting of a single arc, the attribute "numArc" is fixed to "1". + + + + + + + + + + + + + + + + + + + + + + + + + + + This variant of the arc requires that the points on the arc shall be computed instead of storing the coordinates directly. The single control point is the center point of the arc plus the radius and the bearing at start and end. This representation can be used only in 2D. +The element radius specifies the radius of the arc. +The element startAngle specifies the bearing of the arc at the start. +The element endAngle specifies the bearing of the arc at the end. +The interpolation is fixed as "circularArcCenterPointWithRadius". +Since this type describes always a single arc, the attribute "numArc" is fixed to "1". +The content model follows the general pattern for the encoding of curve segments. + + + + + + + + + + + + + + + + + + + + + + + A gml:CircleByCenterPoint is an gml:ArcByCenterPoint with identical start and end angle to form a full circle. Again, this representation can be used only in 2D. + + + + + + + + + + + + + + + + + + + + + + + + + + The number of control points shall be at least three. +vectorAtStart is the unit tangent vector at the start point of the spline. vectorAtEnd is the unit tangent vector at the end point of the spline. Only the direction of the vectors shall be used to determine the shape of the cubic spline, not their length. +interpolation is fixed as "cubicSpline". +degree shall be the degree of the polynomial used for the interpolation in this spline. Therefore the degree for a cubic spline is fixed to "3". +The content model follows the general pattern for the encoding of curve segments. + + + + + + + + + + + + + + + + + + + + + + + + + + + A B-Spline is a piecewise parametric polynomial or rational curve described in terms of control points and basis functions as specified in ISO 19107:2003, 6.4.30. Therefore, interpolation may be either "polynomialSpline" or "rationalSpline" depending on the interpolation type; default is "polynomialSpline". +degree shall be the degree of the polynomial used for interpolation in this spline. +knot shall be the sequence of distinct knots used to define the spline basis functions (see ISO 19107:2003, 6.4.26.2). +The attribute isPolynomial shall be set to "true" if this is a polynomial spline (see ISO 19107:2003, 6.4.30.5). +The attribute knotType shall provide the type of knot distribution used in defining this spline (see ISO 19107:2003, 6.4.30.4). +The content model follows the general pattern for the encoding of curve segments. + + + + + + + + + + + + gml:KnotPropertyType encapsulates a knot to use it in a geometric type. + + + + + A knot is a breakpoint on a piecewise spline curve. +value is the value of the parameter at the knot of the spline (see ISO 19107:2003, 6.4.24.2). +multiplicity is the multiplicity of this knot used in the definition of the spline (with the same weight). +weight is the value of the averaging weight used for this knot of the spline. + + + + + + + This enumeration type specifies values for the knots' type (see ISO 19107:2003, 6.4.25). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bezier curves are polynomial splines that use Bezier or Bernstein polynomials for interpolation purposes. It is a special case of the B-Spline curve with two knots. +degree shall be the degree of the polynomial used for interpolation in this spline. +knot shall be the sequence of distinct knots used to define the spline basis functions. +interpolation is fixed as "polynomialSpline". +isPolynomial is fixed as "true". +knotType is not relevant for Bezier curve segments. + + + + + + + + + + + + + + + + + An offset curve is a curve at a constant distance from the basis curve. offsetBase is the base curve from which this curve is defined as an offset. distance and refDirection have the same meaning as specified in ISO 19107:2003, 6.4.23. +The content model follows the general pattern for the encoding of curve segments. + + + + + + + + + + + + + location, refDirection, inDimension and outDimension have the same meaning as specified in ISO 19107:2003, 6.4.21. + + + + + + + + + + + + + + + + + + + + + + + + A clothoid, or Cornu's spiral, is plane curve whose curvature is a fixed function of its length. +refLocation, startParameter, endParameter and scaleFactor have the same meaning as specified in ISO 19107:2003, 6.4.22. +interpolation is fixed as "clothoid". +The content model follows the general pattern for the encoding of curve segments. + + + + + + + + + + + + + + + + A sequence of geodesic segments. +The number of control points shall be at least two. +interpolation is fixed as "geodesic". +The content model follows the general pattern for the encoding of curve segments. + + + + + + + + + + + + + + + + + + + + A Surface is a 2-dimensional primitive and is composed of one or more surface patches as specified in ISO 19107:2003, 6.3.17.1. The surface patches are connected to one another. +patches encapsulates the patches of the surface. + + + + + + + + + + + + + + + The property baseSurface references or contains the base surface. The property baseSurface either references the base surface via the XLink-attributes or contains the surface element. A surface element is any element which is substitutable for gml:AbstractSurface. The base surface has positive orientation. + + + + + OrientableSurface consists of a surface and an orientation. If the orientation is "+", then the OrientableSurface is identical to the baseSurface. If the orientation is "-", then the OrientableSurface is a reference to a gml:AbstractSurface with an up-normal that reverses the direction for this OrientableSurface, the sense of "the top of the surface". + + + + + + A surface patch defines a homogenuous portion of a surface. +The AbstractSurfacePatch element is the abstract head of the substituition group for all surface patch elements describing a continuous portion of a surface. +All surface patches shall have an attribute interpolation (declared in the types derived from gml:AbstractSurfacePatchType) specifying the interpolation mechanism used for the patch using gml:SurfaceInterpolationType. + + + + + gml:SurfacePatchArrayPropertyType is a container for a sequence of surface patches. + + + + + + + + The patches property element contains the sequence of surface patches. The order of the elements is significant and shall be preserved when processing the array. + + + + + gml:SurfaceInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + A gml:PolygonPatch is a surface patch that is defined by a set of boundary curves and an underlying surface to which these curves adhere. The curves shall be coplanar and the polygon uses planar interpolation in its interior. +interpolation is fixed to "planar", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane. + + + + + + + + + + + + + + + gml:Triangle represents a triangle as a surface patch with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring shall be four. +The ring (element exterior) shall be a gml:LinearRing and shall form a triangle, the first and the last position shall be coincident. +interpolation is fixed to "planar", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane. + + + + + + + + + + + + + + + gml:Rectangle represents a rectangle as a surface patch with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring shall be five. +The ring (element exterior) shall be a gml:LinearRing and shall form a rectangle; the first and the last position shall be coincident. +interpolation is fixed to "planar", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane. + + + + + + + + + + + + + + + A ring is used to represent a single connected component of a surface boundary as specified in ISO 19107:2003, 6.3.6. +Every gml:curveMember references or contains one curve, i.e. any element which is substitutable for gml:AbstractCurve. In the context of a ring, the curves describe the boundary of the surface. The sequence of curves shall be contiguous and connected in a cycle. +If provided, the aggregationType attribute shall have the value "sequence". + + + + + + A property with the content model of gml:RingPropertyType encapsulates a ring to represent a component of a surface boundary. + + + + + + + + A gml:PointGrid group contains or references points or positions which are organised into sequences or grids. All rows shall have the same number of positions (columns). + + + + + + + + + + + + + + + + + + + + + + + + + The element provides a substitution group head for the surface patches based on parametric curves. All properties are specified in the derived subtypes. All derived subtypes shall conform to the constraints specified in ISO 19107:2003, 6.4.40. +If provided, the aggregationType attribute shall have the value "set". + + + + + + + + + + + + + + + + if provided, rows gives the number of rows, columns the number of columns in the parameter grid. The parameter grid is represented by an instance of the gml:PointGrid group. +The element provides a substitution group head for the surface patches based on a grid. All derived subtypes shall conform to the constraints specified in ISO 19107:2003, 6.4.41. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A polyhedral surface is a surface composed of polygon patches connected along their common boundary curves. This differs from the surface type only in the restriction on the types of surface patches acceptable. +polygonPatches encapsulates the polygon patches of the polyhedral surface. + + + + + A triangulated surface is a polyhedral surface that is composed only of triangles. There is no restriction on how the triangulation is derived. +trianglePatches encapsulates the triangles of the triangulated surface. + + + + + + + + + + + + + + + + + + + + + + + + A tin is a triangulated surface that uses the Delauny algorithm or a similar algorithm complemented with consideration of stoplines (stopLines), breaklines (breakLines), and maximum length of triangle sides (maxLength). controlPoint shall contain a set of the positions (three or more) used as posts for this TIN (corners of the triangles in the TIN). See ISO 19107:2003, 6.4.39 for details. + + + + + gml:LineStringSegmentArrayPropertyType provides a container for line strings. + + + + + + + + gml:AbstractSolidType is an abstraction of a solid to support the different levels of complexity. The solid may always be viewed as a geometric primitive, i.e. is contiguous. + + + + + + + + The AbstractSolid element is the abstract head of the substituition group for all (continuous) solid elements. + + + + + A property that has a solid as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none. + + + + + + + + + + This property element either references a solid via the XLink-attributes or contains the solid element. solidProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractSolid. + + + + + gml:SolidArrayPropertyType is a container for an array of solids. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements is not supported. + + + + + + + + + + + + + + + + + + + A solid is the basis for 3-dimensional geometry. The extent of a solid is defined by the boundary surfaces as specified in ISO 19107:2003, 6.3.18. exterior specifies the outer boundary, interior the inner boundary of the solid. + + + + + + + + + + + A shell is used to represent a single connected component of a solid boundary as specified in ISO 19107:2003, 6.3.8. +Every gml:surfaceMember references or contains one surface, i.e. any element which is substitutable for gml:AbstractSurface. In the context of a shell, the surfaces describe the boundary of the solid. +If provided, the aggregationType attribute shall have the value "set". + + + + + + This property element either references a surface via the XLink-attributes or contains the surface element. A surface element is any element, which is substitutable for gml:AbstractSurface. + + + + + A property with the content model of gml:ShellPropertyType encapsulates a shell to represent a component of a solid boundary. + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/gml.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/gml.xsd new file mode 100644 index 00000000..f1fbf51a --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/gml.xsd @@ -0,0 +1,20 @@ + + + + gml.xsd + + GML is an OGC Standard. + Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/gmlBase.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/gmlBase.xsd new file mode 100644 index 00000000..7d769897 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/gmlBase.xsd @@ -0,0 +1,185 @@ + + + + gmlBase.xsd + See ISO/DIS 19136 7.2. +The gmlBase schema components establish the GML model and syntax, in particular +- a root XML type from which XML types for all GML objects should be derived, +- a pattern and components for GML properties, +- patterns for collections and arrays, and components for generic collections and arrays, +- components for associating metadata with GML objects, +- components for constructing definitions and dictionaries. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + This element has no type defined, and is therefore implicitly (according to the rules of W3C XML Schema) an XML Schema anyType. It is used as the head of an XML Schema substitution group which unifies complex content and certain simple content elements used for datatypes in GML, including the gml:AbstractGML substitution group. + + + + + The abstract element gml:AbstractGML is "any GML object having identity". It acts as the head of an XML Schema substitution group, which may include any element which is a GML feature, or other object, with identity. This is used as a variable in content models in GML core and application schemas. It is effectively an abstract superclass for all GML objects. + + + + + + + + + + + + + + + + + + + + XLink components are the standard method to support hypertext referencing in XML. An XML Schema attribute group, gml:AssociationAttributeGroup, is provided to support the use of Xlinks as the method for indicating the value of a property by reference in a uniform manner in GML. + + + + + + deprecated + + + + + + Applying this pattern shall restrict the multiplicity of objects in a property element using this content model to exactly one. An instance of this type shall contain an element representing an object, or serve as a pointer to a remote object. +Applying the pattern to define an application schema specific property type allows to restrict +- the inline object to specified object types, +- the encoding to "by-reference only" (see 7.2.3.7), +- the encoding to "inline only" (see 7.2.3.8). + + + + + + + + + + + + Encoding a GML property inline vs. by-reference shall not imply anything about the "ownership" of the contained or referenced GML Object, i.e. the encoding style shall not imply any "deep-copy" or "deep-delete" semantics. To express ownership over the contained or referenced GML Object, the gml:OwnershipAttributeGroup attribute group may be added to object-valued property elements. If the attribute group is not part of the content model of such a property element, then the value may not be "owned". +When the value of the owns attribute is "true", the existence of inline or referenced object(s) depends upon the existence of the parent object. + + + + + + This element shows how an element + declaration may include a Schematron constraint to limit the property to act + in either inline or by-reference mode, but not both. + + + + + gml:abstractReference may be used as the head of a subtitution group of more specific elements providing a value by-reference. + + + + + gml:ReferenceType is intended to be used in application schemas directly, if a property element shall use a "by-reference only" encoding. + + + + + + + + gml:abstractInlineProperty may be used as the head of a subtitution group of more specific elements providing a value inline. + + + + + + + + + + + If the value of an object property is another object and that object contains also a property for the association between the two objects, then this name of the reverse property may be encoded in a gml:reversePropertyName element in an appinfo annotation of the property element to document the constraint between the two properties. The value of the element shall contain the qualified name of the property element. + + + + + The value of this property is a text description of the object. gml:description uses gml:StringOrRefType as its content model, so it may contain a simple text string content, or carry a reference to an external description. The use of gml:description to reference an external description has been deprecated and replaced by the gml:descriptionReference property. + + + + + The value of this property is a remote text description of the object. The xlink:href attribute of the gml:descriptionReference property references the external description. + + + + + The gml:name property provides a label or identifier for the object, commonly a descriptive name. An object may have several names, typically assigned by different authorities. gml:name uses the gml:CodeType content model. The authority for a name is indicated by the value of its (optional) codeSpace attribute. The name may or may not be unique, as determined by the rules of the organization responsible for the codeSpace. In common usage there will be one name per authority, so a processing application may select the name from its preferred codeSpace. + + + + + Often, a special identifier is assigned to an object by the maintaining authority with the intention that it is used in references to the object For such cases, the codeSpace shall be provided. That identifier is usually unique either globally or within an application domain. gml:identifier is a pre-defined property for such identifiers. + + + + + The attribute gml:id supports provision of a handle for the XML element representing a GML Object. Its use is mandatory for all GML objects. It is of XML type ID, so is constrained to be unique in the XML document within which it occurs. + + + + + To create a collection of GML Objects that are not all features, a property type shall be derived by extension from gml:AbstractMemberType. +This abstract property type is intended to be used only in object types where software shall be able to identify that an instance of such an object type is to be interpreted as a collection of objects. +By default, this abstract property type does not imply any ownership of the objects in the collection. The owns attribute of gml:OwnershipAttributeGroup may be used on a property element instance to assert ownership of an object in the collection. A collection shall not own an object already owned by another object. + + + + + + + + A GML Object Collection is any GML Object with a property element in its content model whose content model is derived by extension from gml:AbstractMemberType. +In addition, the complex type describing the content model of the GML Object Collection may also include a reference to the attribute group gml:AggregationAttributeGroup to provide additional information about the semantics of the object collection. This information may be used by applications to group GML objects, and optionally to order and index them. +The allowed values for the aggregationType attribute are defined by gml:AggregationType. See 8.4 of ISO/IEC 11404:1996 for the meaning of the values in the enumeration. + + + + + + + + + + + + + + + + To associate metadata described by any XML Schema with a GML object, a property element shall be defined whose content model is derived by extension from gml:AbstractMetadataPropertyType. +The value of such a property shall be metadata. The content model of such a property type, i.e. the metadata application schema shall be specified by the GML Application Schema. +By default, this abstract property type does not imply any ownership of the metadata. The owns attribute of gml:OwnershipAttributeGroup may be used on a metadata property element instance to assert ownership of the metadata. +If metadata following the conceptual model of ISO 19115 is to be encoded in a GML document, the corresponding Implementation Specification specified in ISO/TS 19139 shall be used to encode the metadata information. + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/gml_3_2_1-ReadMe.txt b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/gml_3_2_1-ReadMe.txt new file mode 100644 index 00000000..7136c1e4 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/gml_3_2_1-ReadMe.txt @@ -0,0 +1,62 @@ +OpenGIS(r) GML schema version 3.2.1 / ISO 19136 - ReadMe.txt + +The schema has been validated with Xerces-J, Xerces C++ and XSV. + +------------------------------------------------------------------- +2012-07-13 Nicolas Lesage + + * For ISO ITTF Repository, schema location for ISO 19139 is + http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/ + +2012-07-10 Kevin Stegemoller + + * v2.0.0 - v3.2.1 WARNING XLink change is NOT BACKWARD COMPATIBLE. + * changed OGC XLink (xlink:simpleLink) to W3C XLink (xlink:simpleAttrs) + per an approved TC and PC motion during the Dec. 2011 Brussels meeting. + see http://www.opengeospatial.org/blog/1597 + * implement 11-025: retroactively require/add all leaf documents of an + XML namespace shall explicitly the all-components schema + * v3.2.1: updated xsd:schema:@version to 3.2.1.2 (06-135r7 s#13.4) + +2007-09-06 Kevin Stegemoller + + GML 3.2.1 (ISO 19136) + * Published GML 3.2.1 schemas from OGC 07-036 + * validated with oXygen 8.2 (xerces-J 2.9.0) - Kevin Stegemoller + * validated with Xerces-J, Xerces-C++ and XSV - Clemens Portele + +2007-08-17 Kevin Stegemoller + + Changes made to these GML 3.2.1 / ISO 19136 schemas: + * added ReadMe.txt + * changed gmd.xsd references to "../../iso/19139/20070417/gmd/gmd.xsd" + * changed xlink references to be relative to /xlink/1.0.0/xlinks.xsd + available from schemas.opengis.net/xlink/1.0.0/xlinks.xsd (REMOVED 2012-07-21). + * removed xlinks schema and directory + + Changes made to these ISO 19139 schemas by OGC: + * added ReadMe.txt + * changed ISO_19136 path to /gml/3.2.1/ + * changed xlink references to be relative to /xlink/1.0.0/xlinks.xsd + available from schemas.opengis.net/xlink/1.0.0/xlinks.xsd (REMOVED 2012-07-21). + * removed xlinks schema and directory + +OGC GML 3.2.1 / ISO 19136 schemas files will be published at: +- http://schemas.opengis.net/gml/3.2.1/ +- http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19136_Schemas/ + +Files in the folder "ISO/19139/20070417" are also published at +- http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/ + +------------------------------------------------------------------- + +The Open Geospatial Consortium, Inc. official schema repository is at + http://schemas.opengis.net/ . +Policies, Procedures, Terms, and Conditions of OGC(r) are available + http://www.opengeospatial.org/ogc/policies/ . +Additional rights of use are described at + http://www.opengeospatial.org/legal/ . + +Copyright (c) 2007 Open Geospatial Consortium, Inc. All Rights Reserved. + +------------------------------------------------------------------- diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/grids.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/grids.xsd new file mode 100644 index 00000000..24ccf2d6 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/grids.xsd @@ -0,0 +1,64 @@ + + + + grids.xsd + See ISO/DIS 19136 20.2. +An implicit description of geometry is one in which the items of the geometry do not explicitly appear in the encoding. Instead, a compact notation records a set of parameters, and a set of objects may be generated using a rule with these parameters. This Clause provides grid geometries that are used in the description of gridded coverages and other applications. +In GML two grid structures are defined, namely gml:Grid and gml:RectifiedGrid. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + The gml:Grid implicitly defines an unrectified grid, which is a network composed of two or more sets of curves in which the members of each set intersect the members of the other sets in an algorithmic way. The region of interest within the grid is given in terms of its gml:limits, being the grid coordinates of diagonally opposed corners of a rectangular region. gml:axisLabels is provided with a list of labels of the axes of the grid (gml:axisName has been deprecated). gml:dimension specifies the dimension of the grid. +The gml:limits element contains a single gml:GridEnvelope. The gml:low and gml:high property elements of the envelope are each integerLists, which are coordinate tuples, the coordinates being measured as offsets from the origin of the grid along each axis, of the diagonally opposing corners of a "rectangular" region of interest. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A rectified grid is a grid for which there is an affine transformation between the grid coordinates and the coordinates of an external coordinate reference system. It is defined by specifying the position (in some geometric space) of the grid "origin" and of the vectors that specify the post locations. +Note that the grid limits (post indexes) and axis name properties are inherited from gml:GridType and that gml:RectifiedGrid adds a gml:origin property (contains or references a gml:Point) and a set of gml:offsetVector properties. + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/measures.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/measures.xsd new file mode 100644 index 00000000..ea7044b6 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/measures.xsd @@ -0,0 +1,68 @@ + + + + measures.xsd + See ISO/DIS 19136 17.3. +gml:MeasureType is defined in the basicTypes schema. The measure types defined here correspond with a set of convenience measure types described in ISO/TS 19103. The XML implementation is based on the XML Schema simple type "double" which supports both decimal and scientific notation, and includes an XML attribute "uom" which refers to the units of measure for the value. Note that, there is no requirement to store values using any particular format, and applications receiving elements of this type may choose to coerce the data to any other type as convenient. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + The value of a physical quantity, together with its unit. + + + + + This is a prototypical definition for a specific measure type defined as a vacuous extension (i.e. aliases) of gml:MeasureType. In this case, the content model supports the description of a length (or distance) quantity, with its units. The unit of measure referenced by uom shall be suitable for a length, such as metres or feet. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The gml:angle property element is used to record the value of an angle quantity as a single number, with its units. + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/observation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/observation.xsd new file mode 100644 index 00000000..6c82778f --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/observation.xsd @@ -0,0 +1,95 @@ + + + + observation.xsd + See ISO/DIS 19136 Clause 19. +A GML observation models the act of observing, often with a camera, a person or some form of instrument. An observation feature describes the "metadata" associated with an information capture event, together with a value for the result of the observation. This covers a broad range of cases, from a tourist photo (not the photo but the act of taking the photo), to images acquired by space borne sensors or the measurement of a temperature 5 meters below the surfaces of a lake. +The basic structures introduced in this schema are intended to serve as the foundation for more comprehensive schemas for scientific, technical and engineering measurement schemas. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + The content model is a straightforward extension of gml:AbstractFeatureType; it automatically has the gml:identifier, gml:description, gml:descriptionReference, gml:name, and gml:boundedBy properties. +The gml:validTime element describes the time of the observation. Note that this may be a time instant or a time period. +The gml:using property contains or references a description of a sensor, instrument or procedure used for the observation. +The gml:target property contains or references the specimen, region or station which is the object of the observation. This property is particularly useful for remote observations, such as photographs, where a generic location property might apply to the location of the camera or the location of the field of view, and thus may be ambiguous. +The gml:subject element is provided as a convenient synonym for gml:target. This is the term commonly used in phtotography. +The gml:resultOf property indicates the result of the observation. The value may be inline, or a reference to a value elsewhere. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A gml:DirectedObservation is the same as an observation except that it adds an additional gml:direction property. This is the direction in which the observation was acquired. Clearly this applies only to certain types of observations such as visual observations by people, or observations obtained from terrestrial cameras. + + + + + + + + + + + + + + gml:DirectedObservationAtDistance adds an additional distance property. This is the distance from the observer to the subject of the observation. Clearly this applies only to certain types of observations such as visual observations by people, or observations obtained from terrestrial cameras. + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/referenceSystems.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/referenceSystems.xsd new file mode 100644 index 00000000..2d1bf364 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/referenceSystems.xsd @@ -0,0 +1,70 @@ + + + + referenceSystems.xsd + See ISO/DIS 19136 13.2. +The reference systems schema components have two logical parts, which define elements and types for XML encoding of the definitions of: +- Identified Object, inherited by the ten types of GML objects used for coordinate reference systems and coordinate operations +- High-level part of the definitions of coordinate reference systems +This schema encodes the Identified Object and Reference System packages of the UML Model for ISO 19111. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + gml:IdentifiedObjectType provides identification properties of a CRS-related object. In gml:DefinitionType, the gml:identifier element shall be the primary name by which this object is identified, encoding the "name" attribute in the UML model. +Zero or more of the gml:name elements can be an unordered set of "identifiers", encoding the "identifier" attribute in the UML model. Each of these gml:name elements can reference elsewhere the object's defining information or be an identifier by which this object can be referenced. +Zero or more other gml:name elements can be an unordered set of "alias" alternative names by which this CRS related object is identified, encoding the "alias" attributes in the UML model. An object may have several aliases, typically used in different contexts. The context for an alias is indicated by the value of its (optional) codeSpace attribute. +Any needed version information shall be included in the codeSpace attribute of a gml:identifier and gml:name elements. In this use, the gml:remarks element in the gml:DefinitionType shall contain comments on or information about this object, including data source information. + + + + + + + + gml:AbstractCRS specifies a coordinate reference system which is usually single but may be compound. This abstract complex type shall not be used, extended, or restricted, in a GML Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document. + + + + + + + + + + + + + + + The gml:domainOfValidity property implements an association role to an EX_Extent object as encoded in ISO/TS 19139, either referencing or containing the definition of that extent. + + + + + + + + + + + The gml:scope property provides a description of the usage, or limitations of usage, for which this CRS-related object is valid. If unknown, enter "not known". + + + + + gml:CRSPropertyType is a property type for association roles to a CRS abstract coordinate reference system, either referencing or containing the definition of that CRS. + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/temporal.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/temporal.xsd new file mode 100644 index 00000000..5135d798 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/temporal.xsd @@ -0,0 +1,269 @@ + + + + temporal.xsd + See ISO/DIS 19136 15.2. +The GML temporal schemas include components for describing temporal geometry and topology, temporal reference systems, and the temporal characteristics of geographic data. The model underlying the representation constitutes a profile of the conceptual schema described in ISO 19108. The underlying spatiotemporal model strives to accommodate both feature-level and attribute-level time stamping; basic support for tracking moving objects is also included. +Time is measured on two types of scales: interval and ordinal. An interval scale offers a basis for measuring duration, an ordinal scale provides information only about relative position in time. +Two other ISO standards are relevant to describing temporal objects: ISO 8601 describes encodings for time instants and time periods, as text strings with particular structure and punctuation; ISO 11404 provides a detailed description of time intervals as part of a general discussion of language independent datatypes. +The temporal schemas cover two interrelated topics and provide basic schema components for representing temporal instants and periods, temporal topology, and reference systems; more specialized schema components defines components used for dynamic features. Instances of temporal geometric types are used as values for the temporal properties of geographic features. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + gml:AbstractTimeObject acts as the head of a substitution group for all temporal primitives and complexes. + + + + + + + + + + gml:AbstractTimePrimitive acts as the head of a substitution group for geometric and topological temporal primitives. + + + + + + + + + + + + + + gml:TimePrimitivePropertyType provides a standard content model for associations between an arbitrary member of the substitution group whose head is gml:AbstractTimePrimitive and another object. + + + + + + + + + + gml:validTime is a convenience property element. + + + + + gml:RelatedTimeType provides a content model for indicating the relative position of an arbitrary member of the substitution group whose head is gml:AbstractTimePrimitive. It extends the generic gml:TimePrimitivePropertyType with an XML attribute relativePosition, whose value is selected from the set of 13 temporal relationships identified by Allen (1983) + + + + + + + + + + + + + + + + + + + + + + + + + + + + gml:AbstractTimeComplex is an aggregation of temporal primitives and acts as the head of a substitution group for temporal complexes. + + + + + + + + + + gml:TimeGeometricPrimitive acts as the head of a substitution group for geometric temporal primitives. +A temporal geometry shall be associated with a temporal reference system through the frame attribute that provides a URI reference that identifies a description of the reference system. Following ISO 19108, the Gregorian calendar with UTC is the default reference system, but others may also be used. The GPS calendar is an alternative reference systems in common use. +The two geometric primitives in the temporal dimension are the instant and the period. GML components are defined to support these as follows. + + + + + + + + + + + + gml:TimeInstant acts as a zero-dimensional geometric primitive that represents an identifiable position in time. + + + + + + + + + + + + + + gml:TimeInstantPropertyType provides for associating a gml:TimeInstant with an object. + + + + + + + + + + gml:TimePeriod acts as a one-dimensional geometric primitive that represents an identifiable extent in time. +The location in of a gml:TimePeriod is described by the temporal positions of the instants at which it begins and ends. The length of the period is equal to the temporal distance between the two bounding temporal positions. +Both beginning and end may be described in terms of their direct position using gml:TimePositionType which is an XML Schema simple content type, or by reference to an indentifiable time instant using gml:TimeInstantPropertyType. +Alternatively a limit of a gml:TimePeriod may use the conventional GML property model to make a reference to a time instant described elsewhere, or a limit may be indicated as a direct position. + + + + + + + + + + + + + + + + + + + + + + gml:TimePeriodPropertyType provides for associating a gml:TimePeriod with an object. + + + + + + + + + + The method for identifying a temporal position is specific to each temporal reference system. gml:TimePositionType supports the description of temporal position according to the subtypes described in ISO 19108. +Values based on calendars and clocks use lexical formats that are based on ISO 8601, as described in XML Schema Part 2:2001. A decimal value may be used with coordinate systems such as GPS time or UNIX time. A URI may be used to provide a reference to some era in an ordinal reference system . +In common with many of the components modelled as data types in the ISO 19100 series of International Standards, the corresponding GML component has simple content. However, the content model gml:TimePositionType is defined in several steps. +Three XML attributes appear on gml:TimePositionType: +A time value shall be associated with a temporal reference system through the frame attribute that provides a URI reference that identifies a description of the reference system. Following ISO 19108, the Gregorian calendar with UTC is the default reference system, but others may also be used. Components for describing temporal reference systems are described in 14.4, but it is not required that the reference system be described in this, as the reference may refer to anything that may be indentified with a URI. +For time values using a calendar containing more than one era, the (optional) calendarEraName attribute provides the name of the calendar era. +Inexact temporal positions may be expressed using the optional indeterminatePosition attribute. This takes a value from an enumeration. + + + + + + + + + + + + These values are interpreted as follows: +- "unknown" indicates that no specific value for temporal position is provided. +- "now" indicates that the specified value shall be replaced with the current temporal position whenever the value is accessed. +- "before" indicates that the actual temporal position is unknown, but it is known to be before the specified value. +- "after" indicates that the actual temporal position is unknown, but it is known to be after the specified value. +A value for indeterminatePosition may +- be used either alone, or +- qualify a specific value for temporal position. + + + + + + + + + + + The simple type gml:TimePositionUnion is a union of XML Schema simple types which instantiate the subtypes for temporal position described in ISO 19108. + An ordinal era may be referenced via URI. A decimal value may be used to indicate the distance from the scale origin . time is used for a position that recurs daily (see ISO 19108:2002 5.4.4.2). + Finally, calendar and clock forms that support the representation of time in systems based on years, months, days, hours, minutes and seconds, in a notation following ISO 8601, are assembled by gml:CalDate + + + + + + + + + This element is used directly as a property of gml:TimeInstant (see 15.2.2.3), and may also be used in application schemas. + + + + + The length of a time period. + + + + + + + + + gml:duration conforms to the ISO 8601 syntax for temporal length as implemented by the XML Schema duration type. + + + + + gml:timeInterval conforms to ISO 11404 which is based on floating point values for temporal length. +ISO 11404 syntax specifies the use of a positiveInteger together with appropriate values for radix and factor. The resolution of the time interval is to one radix ^(-factor) of the specified time unit. +The value of the unit is either selected from the units for time intervals from ISO 31-1:1992, or is another suitable unit. The encoding is defined for GML in gml:TimeUnitType. The second component of this union type provides a method for indicating time units other than the six standard units given in the enumeration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/temporalReferenceSystems.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/temporalReferenceSystems.xsd new file mode 100644 index 00000000..ad6faf1e --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/temporalReferenceSystems.xsd @@ -0,0 +1,189 @@ + + + + temporalReferenceSystems.xsd + See ISO/DIS 19136 15.5. +A value in the time domain is measured relative to a temporal reference system. Common types of reference systems include calendars, ordinal temporal reference systems, and temporal coordinate systems (time elapsed since some epoch). The primary temporal reference system for use with geographic information is the Gregorian Calendar and 24 hour local or Coordinated Universal Time (UTC), but special applications may entail the use of alternative reference systems. The Julian day numbering system is a temporal coordinate system that has an origin earlier than any known calendar, at noon on 1 January 4713 BC in the Julian proleptic calendar, and is useful in transformations between dates in different calendars. +In GML seven concrete elements are used to describe temporal reference systems: gml:TimeReferenceSystem, gml:TimeCoordinateSystem, gml:TimeCalendar, gml:TimeCalendarEra, gml:TimeClock, gml:TimeOrdinalReferenceSystem, and gml:TimeOrdinalEra. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + A reference system is characterized in terms of its domain of validity: the spatial and temporal extent over which it is applicable. The basic GML element for temporal reference systems is gml:TimeReferenceSystem. Its content model extends gml:DefinitionType with one additional property, gml:domainOfValidity. + + + + + + + + + + + + + + A temporal coordinate system shall be based on a continuous interval scale defined in terms of a single time interval. +The differences to ISO 19108 TM_CoordinateSystem are: +- the origin is specified either using the property gml:originPosition whose value is a direct time position, or using the property gml:origin whose model is gml:TimeInstantPropertyType; this permits more flexibility in representation and also supports referring to a value fixed elsewhere; +- the interval uses gml:TimeIntervalLengthType. + + + + + + + + + + + + + + + + + + + A calendar is a discrete temporal reference system that provides a basis for defining temporal position to a resolution of one day. +gml:TimeCalendar adds one property to those inherited from gml:TimeReferenceSystem. A gml:referenceFrame provides a link to a gml:TimeCalendarEra that it uses. A gml:TimeCalendar may reference more than one calendar era. +The referenceFrame element follows the standard GML property model, allowing the association to be instantiated either using an inline description using the gml:TimeCalendarEra element, or a link to a gml:TimeCalendarEra which is explicit elsewhere. + + + + + + + + + + + + + + gml:TimeCalendarEra inherits basic properties from gml:DefinitionType and has the following additional properties: +- gml:referenceEvent is the name or description of a mythical or historic event which fixes the position of the base scale of the calendar era. This is given as text or using a link to description held elsewhere. +- gml:referenceDate specifies the date of the referenceEvent expressed as a date in the given calendar. In most calendars, this date is the origin (i.e., the first day) of the scale, but this is not always true. +- gml:julianReference specifies the Julian date that corresponds to the reference date. The Julian day number is an integer value; the Julian date is a decimal value that allows greater resolution. Transforming calendar dates to and from Julian dates provides a relatively simple basis for transforming dates from one calendar to another. +- gml:epochOfUse is the period for which the calendar era was used as a basis for dating. + + + + + + + + + + + + + + + + + gml:TimeCalendarPropertyType provides for associating a gml:TimeCalendar with an object. + + + + + + + + + + gml:TimeCalendarEraPropertyType provides for associating a gml:TimeCalendarEra with an object. + + + + + + + + + + A clock provides a basis for defining temporal position within a day. A clock shall be used with a calendar in order to provide a complete description of a temporal position within a specific day. +gml:TimeClock adds the following properties to those inherited from gml:TimeReferenceSystemType: +- gml:referenceEvent is the name or description of an event, such as solar noon or sunrise, which fixes the position of the base scale of the clock. +- gml:referenceTime specifies the time of day associated with the reference event expressed as a time of day in the given clock. The reference time is usually the origin of the clock scale. +- gml:utcReference specifies the 24 hour local or UTC time that corresponds to the reference time. +- gml:dateBasis contains or references the calendars that use this clock. + + + + + + + + + + + + + + + + + gml:TimeClockPropertyType provides for associating a gml:TimeClock with an object. + + + + + + + + + + In some applications of geographic information — such as geology and archaeology — relative position in time is known more precisely than absolute time or duration. The order of events in time can be well established, but the magnitude of the intervals between them cannot be accurately determined; in such cases, the use of an ordinal temporal reference system is appropriate. An ordinal temporal reference system is composed of a sequence of named coterminous eras, which may in turn be composed of sequences of member eras at a finer scale, giving the whole a hierarchical structure of eras of verying resolution. +An ordinal temporal reference system whose component eras are not further subdivided is effectively a temporal topological complex constrained to be a linear graph. An ordinal temporal reference system some or all of whose component eras are subdivided is effectively a temporal topological complex with the constraint that parallel branches may only be constructed in pairs where one is a single temporal ordinal era and the other is a sequence of temporal ordinal eras that are called "members" of the "group". This constraint means that within a single temporal ordinal reference system, the relative position of all temporal ordinal eras is unambiguous. +The positions of the beginning and end of a given era may calibrate the relative time scale. +gml:TimeOrdinalReferenceSystem adds one or more gml:component properties to the generic temporal reference system model. + + + + + + + + + + + + + + Its content model follows the pattern of gml:TimeEdge, inheriting standard properties from gml:DefinitionType, and adding gml:start, gml:end and gml:extent properties, a set of gml:member properties which indicate ordered gml:TimeOrdinalEra elements, and a gml:group property which points to the parent era. +The recursive inclusion of gml:TimeOrdinalEra elements allow the construction of an arbitrary depth hierarchical ordinal reference schema, such that an ordinal era at a given level of the hierarchy includes a sequence of shorter, coterminous ordinal eras. + + + + + + + + + + + + + + + + + + + gml:TimeOrdinalEraPropertyType provides for associating a gml:TimeOrdinalEra with an object. + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/temporalTopology.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/temporalTopology.xsd new file mode 100644 index 00000000..cba77883 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/temporalTopology.xsd @@ -0,0 +1,119 @@ + + + + temporalTopology.xsd + See ISO/DIS 19136 15.3. +Temporal topology is described in terms of time complexes, nodes, and edges, and the connectivity between these. Temporal topology does not directly provide information about temporal position. It is used in the case of describing a lineage or a history (e.g. a family tree expressing evolution of species, an ecological cycle, a lineage of lands or buildings, or a history of separation and merger of administrative boundaries). The following Subclauses specifies the temporal topology as temporal characteristics of features in compliance with ISO 19108. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + gml:TimeTopologyPrimitive acts as the head of a substitution group for topological temporal primitives. +Temporal topology primitives shall imply the ordering information between features or feature properties. The temporal connection of features can be examined if they have temporal topology primitives as values of their properties. Usually, an instantaneous feature associates with a time node, and a static feature associates with a time edge. A feature with both modes associates with the temporal topology primitive: a supertype of time nodes and time edges. +A topological primitive is always connected to one or more other topological primitives, and is, therefore, always a member of a topological complex. In a GML instance, this will often be indicated by the primitives being described by elements that are descendents of an element describing a complex. However, in order to support the case where a temporal topological primitive is described in another context, the optional complex property is provided, which carries a reference to the parent temporal topological complex. + + + + + + + + + + + + + + gml:TimeTopologyPrimitivePropertyType provides for associating a gml:AbstractTimeTopologyPrimitive with an object. + + + + + + + + + + A temporal topology complex shall be the connected acyclic directed graph composed of temporal topological primitives, i.e. time nodes and time edges. Because a time edge may not exist without two time nodes on its boundaries, static features have time edges from a temporal topology complex as the values of their temporal properties, regardless of explicit declarations. +A temporal topology complex expresses a linear or a non-linear graph. A temporal linear graph, composed of a sequence of time edges, provides a lineage described only by "substitution" of feature instances or feature element values. A time node as the start or the end of the graph connects with at least one time edge. A time node other than the start and the end shall connect to at least two time edges: one of starting from the node, and another ending at the node. +A temporal topological complex is a set of connected temporal topological primitives. The member primtives are indicated, either by reference or by value, using the primitive property. + + + + + + + + + + + + + + gml:TimeTopologyComplexPropertyType provides for associating a gml:TimeTopologyComplex with an object. + + + + + + + + + + A time node is a zero-dimensional topological primitive that represents an identifiable node in time (it is equivalent to a point in space). A node may act as the termination or initiation of any number of time edges. A time node may be realised as a geometry, its position, whose value is a time instant. + + + + + + + + + + + + + + + + gml:TimeNodePropertyType provides for associating a gml:TimeNode with an object + + + + + + + + + + A time edge is a one-dimensional topological primitive. It is an open interval that starts and ends at a node. The edge may be realised as a geometry whose value is a time period. + + + + + + + + + + + + + + + + gml:TimeEdgePropertyType provides for associating a gml:TimeEdge with an object. + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/topology.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/topology.xsd new file mode 100644 index 00000000..ae1bc011 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/topology.xsd @@ -0,0 +1,386 @@ + + + + topology.xsd + See ISO/DIS 19136 Clause 14. +Topology is the branch of mathematics describing the properties of objects which are invariant under continuous deformation. For example, a circle is topologically equivalent to an ellipse because one can be transformed into the other by stretching. In geographic modelling, the foremost use of topology is in accelerating computational geometry. The constructs of topology allow characterisation of the spatial relationships between objects using simple combinatorial or algebraic algorithms. Topology, realised by the appropriate geometry, also allows a compact and unambiguous mechanism for expressing shared geometry among geographic features. +There are four instantiable classes of primitive topology objects, one for each dimension up to 3D. In addition, topological complexes are supported, too. +There is strong symmetry in the (topological boundary and coboundary) relationships between topology primitives of adjacent dimensions. Topology primitives are bounded by directed primitives of one lower dimension. The coboundary of each topology primitive is formed from directed topology primitives of one higher dimension. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + This abstract type supplies the root or base type for all topological elements including primitives and complexes. It inherits AbstractGMLType and hence can be identified using the gml:id attribute. + + + + + + + + + + + + + + gml:AbstractTopoPrimitive acts as the base type for all topological primitives. Topology primitives are the atomic (smallest possible) units of a topology complex. +Each topology primitive may contain references to other topology primitives of codimension 2 or more (gml:isolated). Conversely, nodes may have faces as containers and nodes and edges may have solids as containers (gml:container). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + In the case of planar topology, a gml:Node must have a clockwise sequence of gml:directedEdge properties, to ensure a lossless topology representation as defined by Kuijpers, et. al. (see OGC 05-102 Topology IPR). + + + + + + + + + + + gml:Node represents the 0-dimensional primitive. +The optional coboundary of a node (gml:directedEdge) is a sequence of directed edges which are incident on this node. Edges emanating from this node appear in the node coboundary with a negative orientation. +If provided, the aggregationType attribute shall have the value "sequence". +A node may optionally be realised by a 0-dimensional geometric primitive (gml:pointProperty). + + + + + A gml:directedNode property element describes the boundary of topology edges and is used in the support of topological point features via the gml:TopoPoint expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included node is used: start ("-") or end ("+") node. + + + + + + + + + + + + + + + + + + + + + + + + + + gml:Edge represents the 1-dimensional primitive. +The topological boundary of an Edge (gml:directedNode) consists of a negatively directed start Node and a positively directed end Node. +The optional coboundary of an edge (gml:directedFace) is a circular sequence of directed faces which are incident on this edge in document order. In the 2D case, the orientation of the face on the left of the edge is "+"; the orientation of the face on the right on its right is "-". +If provided, the aggregationType attribute shall have the value "sequence". +An edge may optionally be realised by a 1-dimensional geometric primitive (gml:curveProperty). + + + + + A gml:directedEdge property element describes the boundary of topology faces, the coBoundary of topology nodes and is used in the support of topological line features via the gml:TopoCurve expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included edge is used, i.e. forward or reverse. + + + + + + + + + + + + + + + + + + + + + + + If the topological representation exists an unbounded manifold (e.g. Euclidean plane), a gml:Face must indicate whether it is a universal face or not, to ensure a lossless topology representation as defined by Kuijpers, et. al. (see OGC 05-102 Topology IPR). The optional universal attribute of type boolean is used to indicate this. NOTE The universal face is normally not part of any feature, and is used to represent the unbounded portion of the data set. Its interior boundary (it has no exterior boundary) would normally be considered the exterior boundary of the map represented by the data set. + + + + + + + + gml:Face represents the 2-dimensional topology primitive. +The topological boundary of a face (gml:directedEdge) consists of a sequence of directed edges. If provided, the aggregationType attribute shall have the value "sequence". +The optional coboundary of a face (gml:directedTopoSolid) is a pair of directed solids which are bounded by this face. A positively directed solid corresponds to a solid which lies in the direction of the negatively directed normal to the face in any geometric realisation. +A face may optionally be realised by a 2-dimensional geometric primitive (gml:surfaceProperty). + + + + + The gml:directedFace property element describes the boundary of topology solids, in the coBoundary of topology edges and is used in the support of surface features via the gml:TopoSurface expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included face is used i.e. inward or outward with respect to the surface normal in any geometric realisation. + + + + + + + + + + + + + + + + + + + + + + A gml:TopoSolid must indicate whether it is a universal topo-solid or not, to ensure a lossless topology representation as defined by Kuijpers, et. al. (see OGC 05-102 Topology IPR). The optional universal attribute of type boolean is used to indicate this and the default is fault. NOTE The universal topo-solid is normally not part of any feature, and is used to represent the unbounded portion of the data set. Its interior boundary (it has no exterior boundary) would normally be considered the exterior boundary of the data set. + + + + + + + + gml:TopoSolid represents the 3-dimensional topology primitive. +The topological boundary of a solid (gml:directedFace) consists of a set of directed faces. +A solid may optionally be realised by a 3-dimensional geometric primitive (gml:solidProperty). + + + + + The gml:directedSolid property element describes the coBoundary of topology faces and is used in the support of volume features via the gml:TopoVolume expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included solid appears in the face coboundary. In the context of a gml:TopoVolume the orientation attribute has no meaning. + + + + + + + + + + + + + + + + + + + + + + The intended use of gml:TopoPoint is to appear within a point feature to express the structural and possibly geometric relationships of this feature to other features via shared node definitions. + + + + + + + + + + + The gml:topoPointProperty property element may be used in features to express their relationship to the referenced topology node. + + + + + + + + + + + + + + + gml:TopoCurve represents a homogeneous topological expression, a sequence of directed edges, which if realised are isomorphic to a geometric curve primitive. The intended use of gml:TopoCurve is to appear within a line feature to express the structural and geometric relationships of this feature to other features via the shared edge definitions. +If provided, the aggregationType attribute shall have the value "sequence". + + + + + + + + + + + The gml:topoCurveProperty property element may be used in features to express their relationship to the referenced topology edges. + + + + + + + + + + + + + + + gml:TopoSurface represents a homogeneous topological expression, a set of directed faces, which if realised are isomorphic to a geometric surface primitive. The intended use of gml:TopoSurface is to appear within a surface feature to express the structural and possibly geometric relationships of this surface feature to other features via the shared face definitions. + + + + + + + + + + + The gml:topoSurfaceProperty property element may be used in features to express their relationship to the referenced topology faces. + + + + + + + + + + + + + + + gml:TopoVolume represents a homogeneous topological expression, a set of directed topologic solids, which if realised are isomorphic to a geometric solid primitive. The intended use of gml:TopoVolume is to appear within a solid feature to express the structural and geometric relationships of this solid feature to other features via the shared solid definitions. + + + + + + + + + + + The gml:topoVolumeProperty element may be used in features to express their relationship to the referenced topology volume. + + + + + + + + + + + + + + + + + + + + gml:TopoComplex is a collection of topological primitives. +Each complex holds a reference to its maximal complex (gml:maximalComplex) and optionally to sub- or super-complexes (gml:subComplex, gml:superComplex). +A topology complex contains its primitive and sub-complex members. + + + + + + The property elements gml:subComplex, gml:superComplex and gml:maximalComplex provide an encoding for relationships between topology complexes as described for gml:TopoComplex above. + + + + + The property elements gml:subComplex, gml:superComplex and gml:maximalComplex provide an encoding for relationships between topology complexes as described for gml:TopoComplex above. + + + + + The property elements gml:subComplex, gml:superComplex and gml:maximalComplex provide an encoding for relationships between topology complexes as described for gml:TopoComplex above. + + + + + The gml:topoPrimitiveMember property element encodes for the relationship between a topology complex and a single topology primitive. + + + + + + + + + + + + The gml:topoPrimitiveMembers property element encodes the relationship between a topology complex and an arbitrary number of topology primitives. + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/units.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/units.xsd new file mode 100644 index 00000000..7bad4aa5 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/units.xsd @@ -0,0 +1,162 @@ + + + + units.xsd + See ISO/DIS 17.2. +Several GML Schema components concern or require a reference scale or units of measure. Units are required for quantities that may occur as values of properties of feature types, as the results of observations, in the range parameters of a coverage, and for measures used in Coordinate Reference System definitions. +The basic unit definition is an extension of the general gml:Definition element defined in 16.2.1. Three specialized elements for unit definition are further derived from this. +This model is based on the SI system of units [ISO 1000], which distinguishes between Base Units and Derived Units. +- Base Units are the preferred units for a set of orthogonal fundamental quantities which define the particular system of units, which may not be derived by combination of other base units. +- Derived Units are the preferred units for other quantities in the system, which may be defined by algebraic combination of the base units. +In some application areas Conventional units are used, which may be converted to the preferred units using a scaling factor or a formula which defines a re-scaling and offset. The set of preferred units for all physical quantity types in a particular system of units is composed of the union of its base units and derived units. +Unit definitions are substitutable for the gml:Definition element declared as part of the dictionary model. A dictionary that contains only unit definitions and references to unit definitions is a units dictionary. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + The element gml:unitOfMeasure is a property element to refer to a unit of measure. This is an empty element which carries a reference to a unit of measure definition. + + + + + + + + + A gml:UnitDefinition is a general definition of a unit of measure. This generic element is used only for units for which no relationship with other units or units systems is known. +The content model of gml:UnitDefinition adds three additional properties to gml:Definition, gml:quantityType, gml:quantityTypeReference and gml:catalogSymbol. +The gml:catalogSymbol property optionally gives the short symbol used for this unit. This element is usually used when the relationship of this unit to other units or units systems is unknown. + + + + + + + + + + + + + + + + The gml:quantityType property indicates the phenomenon to which the units apply. This element contains an informal description of the phenomenon or type of physical quantity that is measured or observed. When the physical quantity is the result of an observation or measurement, this term is known as observable type or measurand. +The use of gml:quantityType for references to remote values is deprecated. + + + + + The gml:quantityTypeReference property indicates the phenomenon to which the units apply. The content is a reference to a remote value. + + + + + The catalogSymbol is the preferred lexical symbol used for this unit of measure. +The codeSpace attribute in gml:CodeType identifies a namespace for the catalog symbol value, and might reference the external catalog. The string value in gml:CodeType contains the value of a symbol that should be unique within this catalog namespace. This symbol often appears explicitly in the catalog, but it could be a combination of symbols using a specified algebra of units. + + + + + A base unit is a unit of measure that cannot be derived by combination of other base units within a particular system of units. For example, in the SI system of units, the base units are metre, kilogram, second, Ampere, Kelvin, mole, and candela, for the physical quantity types length, mass, time interval, electric current, thermodynamic temperature, amount of substance and luminous intensity, respectively. +gml:BaseUnit extends generic gml:UnitDefinition with the property gml:unitsSystem, which carries a reference to the units system to which this base unit is asserted to belong. + + + + + + + + + + + + + + Derived units are defined by combination of other units. Derived units are used for quantities other than those corresponding to the base units, such as hertz (s-1) for frequency, Newton (kg.m/s2) for force. Derived units based directly on base units are usually preferred for quantities other than the fundamental quantities within a system. If a derived unit is not the preferred unit, the gml:ConventionalUnit element should be used instead. +The gml:DerivedUnit extends gml:UnitDefinition with the property gml:derivationUnitTerms. + + + + + + + + + + + + + + A set of gml:derivationUnitTerm elements describes a derived unit of measure. Each element carries an integer exponent. The terms are combined by raising each referenced unit to the power of its exponent and forming the product. +This unit term references another unit of measure (uom) and provides an integer exponent applied to that unit in defining the compound unit. The exponent may be positive or negative, but not zero. + + + + + + + + + + + + Conventional units that are neither base units nor defined by direct combination of base units are used in many application domains. For example electronVolt for energy, feet and nautical miles for length. In most cases there is a known, usually linear, conversion to a preferred unit which is either a base unit or derived by direct combination of base units. +The gml:ConventionalUnit extends gml:UnitDefinition with a property that describes a conversion to a preferred unit for this physical quantity. When the conversion is exact, the element gml:conversionToPreferredUnit should be used, or when the conversion is not exact the element gml:roughConversionToPreferredUnit is available. Both of these elements have the same content model. The gml:derivationUnitTerm property defined above is included to allow a user to optionally record how this unit may be derived from other ("more primitive") units. + + + + + + + + + + + + + + + + + + The elements gml:conversionToPreferredUnit and gml:roughConversionToPreferredUnit represent parameters used to convert conventional units to preferred units for this physical quantity type. A preferred unit is either a Base Unit or a Derived Unit that is selected for all values of one physical quantity type. + + + + + The elements gml:conversionToPreferredUnit and gml:roughConversionToPreferredUnit represent parameters used to convert conventional units to preferred units for this physical quantity type. A preferred unit is either a Base Unit or a Derived Unit that is selected for all values of one physical quantity type. + + + + + The inherited attribute uom references the preferred unit that this conversion applies to. The conversion of a unit to the preferred unit for this physical quantity type is specified by an arithmetic conversion (scaling and/or offset). The content model extends gml:UnitOfMeasureType, which has a mandatory attribute uom which identifies the preferred unit for the physical quantity type that this conversion applies to. The conversion is specified by a choice of +- gml:factor, which defines the scale factor, or +- gml:formula, which defines a formula +by which a value using the conventional unit of measure can be converted to obtain the corresponding value using the preferred unit of measure. +The formula defines the parameters of a simple formula by which a value using the conventional unit of measure can be converted to the corresponding value using the preferred unit of measure. The formula element contains elements a, b, c and d, whose values use the XML Schema type double. These values are used in the formula y = (a + bx) / (c + dx), where x is a value using this unit, and y is the corresponding value using the base unit. The elements a and d are optional, and if values are not provided, those parameters are considered to be zero. If values are not provided for both a and d, the formula is equivalent to a fraction with numerator and denominator parameters. + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/valueObjects.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/valueObjects.xsd new file mode 100644 index 00000000..fb9f5a7b --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/ISO19136/valueObjects.xsd @@ -0,0 +1,205 @@ + + + + valueObjects.xsd + See ISO/DIS 19136 17.5. +The elements declared in this Clause build on other GML schema components, in particular gml:AbstractTimeObject, gml:AbstractGeometry, and the following types: gml:MeasureType, gml:MeasureListType, gml:CodeType, gml:CodeOrNilReasonListType, gml:BooleanOrNilReasonListType, gml:IntegerOrNilReasonList. +Of particular interest are elements that are the heads of substitution groups, and one named choice group. These are the primary reasons for the value objects schema, since they may act as variables in the definition of content models, such as Observations, when it is desired to permit alternative value types to occur some of which may have complex content such as arrays, geometry and time objects, and where it is useful not to prescribe the actual value type in advance. The members of the groups include quantities, category classifications, boolean, count, temporal and spatial values, and aggregates of these. +The value objects are defined in a hierarchy. The following relationships are defined: +- Concrete elements gml:Quantity, gml:Category, gml:Count and gml:Boolean are substitutable for the abstract element gml:AbstractScalarValue. +- Concrete elements gml:QuantityList, gml:CategoryList, gml:CountList and gml:BooleanList are substitutable for the abstract element gml:AbstractScalarValueList. +- Concrete element gml:ValueArray is substitutable for the concrete element gml:CompositeValue. +- Abstract elements gml:AbstractScalarValue and gml:AbstractScalarValueList, and concrete elements gml:CompositeValue, gml:ValueExtent, gml:CategoryExtent, gml:CountExtent and gml:QuantityExtent are substitutable for abstract element gml:AbstractValue. +- Abstract elements gml:AbstractValue, gml:AbstractTimeObject and gml:AbstractGeometry are all in a choice group named gml:Value, which is used for compositing in gml:CompositeValue and gml:ValueExtent. +- Schemas which need values may use the abstract element gml:AbstractValue in a content model in order to permit any of the gml:AbstractScalarValues, gml:AbstractScalarValueLists, gml:CompositeValue or gml:ValueExtent to occur in an instance, or the named group gml:Value to also permit gml:AbstractTimeObjects, gml:AbstractGeometrys. + +GML is an OGC Standard. +Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. +To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + + + + + + + A gml:Category has an optional XML attribute codeSpace, whose value is a URI which identifies a dictionary, codelist or authority for the term. + + + + + + + + + + + + + + + + + + + + + + + An XML attribute uom ("unit of measure") is required, whose value is a URI which identifies the definition of a ratio scale or units by which the numeric value shall be multiplied, or an interval or position scale on which the value occurs. + + + + + + + + + + + + + gml:AbstractValue is an abstract element which acts as the head of a substitution group which contains gml:AbstractScalarValue, gml:AbstractScalarValueList, gml:CompositeValue and gml:ValueExtent, and (transitively) the elements in their substitution groups. +These elements may be used in an application schema as variables, so that in an XML instance document any member of its substitution group may occur. + + + + + gml:AbstractScalarValue is an abstract element which acts as the head of a substitution group which contains gml:Boolean, gml:Category, gml:Count and gml:Quantity, and (transitively) the elements in their substitution groups. + + + + + gml:AbstractScalarValueList is an abstract element which acts as the head of a substitution group which contains gml:BooleanList, gml:CategoryList, gml:CountList and gml:QuantityList, and (transitively) the elements in their substitution groups. + + + + + This is a convenience choice group which unifies generic values defined in this Clause with spatial and temporal objects and the measures described above, so that any of these may be used within aggregate values. + + + + + + + + + + + Property that refers to, or contains, a Value. Convenience element for general use. + + + + + Property that refers to, or contains, a Value. + + + + + + + + + + + + Property that contains Values. + + + + + + + + + + + gml:CompositeValue is an aggregate value built from other values . It contains zero or an arbitrary number of gml:valueComponent elements, and zero or one gml:valueComponents property elements. It may be used for strongly coupled aggregates (vectors, tensors) or for arbitrary collections of values. + + + + + + + + + + + + + + + + A Value Array is used for homogeneous arrays of primitive and aggregate values. +The member values may be scalars, composites, arrays or lists. +ValueArray has the same content model as CompositeValue, but the member values shall be homogeneous. The element declaration contains a Schematron constraint which expresses this restriction precisely. Since the members are homogeneous, the gml:referenceSystem (uom, codeSpace) may be specified on the gml:ValueArray itself and inherited by all the members if desired. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/xlink/xlink.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/xlink/xlink.xsd new file mode 100644 index 00000000..f6e909e0 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/xlink/xlink.xsd @@ -0,0 +1,270 @@ + + + + + This schema document provides attribute declarations and +attribute group, complex type and simple type definitions which can be used in +the construction of user schemas to define the structure of particular linking +constructs, e.g. + + + + + + + ... + + ... + + + ... +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Intended for use as the type of user-declared elements to make them + simple links. + + + + + + + + + + + + + + + + + + + + + + + + + Intended for use as the type of user-declared elements to make them + extended links. + Note that the elements referenced in the content model are all abstract. + The intention is that by simply declaring elements with these as their + substitutionGroup, all the right things will happen. + + + + + + + + + + + + + + xml:lang is not required, but provides much of the + motivation for title elements in addition to attributes, and so + is provided here for convenience. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + label is not required, but locators have no particular + XLink function if they are not labeled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from and to have default behavior when values are missing + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/others/xlink/xml.xsd b/ckanext/spatial/harvesters/iso19115/schemas/others/xlink/xml.xsd new file mode 100644 index 00000000..0574bb34 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/others/xlink/xml.xsd @@ -0,0 +1,146 @@ + + + + + + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + id (as an attribute name): denotes an attribute whose value + should be interpreted as if declared to be of type ID. + This name is reserved by virtue of its definition in the + xml:id specification. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + + + + + This schema defines attributes and an attribute group + suitable for use by + schemas wishing to allow xml:base, xml:lang, xml:space or xml:id + attributes on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes + + + + In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + http://www.w3.org/2007/08/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself, or with the XML namespace itself. In other words, if the XML + Schema or XML namespaces change, the version of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2007/08/xml.xsd will not change. + + + + + + Attempting to install the relevant ISO 2- and 3-letter + codes as the enumerated possible values is probably never + going to be a realistic possibility. See + RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry + at http://www.iana.org/assignments/lang-tag-apps.htm for + further information. + + The union allows for the 'un-declaration' of xml:lang with + the empty string. + + + + + + + + + + + + + + + + + + + + + + + + See http://www.w3.org/TR/xmlbase/ for + information about this attribute. + + + + + + See http://www.w3.org/TR/xml-id/ for + information about this attribute. + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/fcc/1.0/abstract.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/fcc/1.0/abstract.xsd new file mode 100644 index 00000000..7fb422b3 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/fcc/1.0/abstract.xsd @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/fcc/1.0/fcc.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/fcc/1.0/fcc.xsd new file mode 100644 index 00000000..418dd872 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/fcc/1.0/fcc.xsd @@ -0,0 +1,5 @@ + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/gfc/1.1/featureCatalogue.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/gfc/1.1/featureCatalogue.xsd new file mode 100644 index 00000000..a5d565f9 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/gfc/1.1/featureCatalogue.xsd @@ -0,0 +1,666 @@ + + + + + + + + + + + + + + + + A role of the association FC_AssociationRole::relation. <ocl> roleName = FC_Member::memberName; FC_PropertyType::cardinality realizes GF_AssociationRole::cardinality </ocl> + + + + + + + + + Type of association role, indicating whether this role acts as a "is part of" or "is a member of" semantics. + + + + + Indicates if the instances of this association role within the containing feature instance are ordered or not, with FALSE = "not ordered" and TRUE = "ordered". If TRUE, the the FC_PropertyType::definition shall contain an explanation of the meaning of the order. + + + + + Indicates whether this role is navigable from the source feature to the target feature of the association. + + + + + type of the target value of this association role + + + + + Relation of which this association role is a part. + + + + + + + + + + + + + + + + Class that is used to describe the specifics of how a property type is bound to a particular feature type. Used as an association class for the association MemberOf between feature type and property type. + + + + + + + + + The description of how a property type is bound to a particular feature type. + + + + + Role that links to the bound global property + + + + + + + + + + + + + + + + Class that is used to describe the specifics of how a global association role is bound to a particular feature type. + + + + + + + + + target feature type of this association role + + + + + + + + + + + + + + + + Class that is used to describe the specifics of how a global feature attribute is bound to a particular feature type. + + + + + + + + + type of the value of this feature attribute; a name from some namespace <c> Mandatory if the value type of the feature attribute is not defined globally </c> + + + + + + + + + + + + + + + + Abstract class for local feature properties and bound global properties of a feature type + + + + + + + + + + Role that links this property type to the constraints placed upon it. + + + + + + + + + + + + + + + + A class for defining constraints for types. + + + + + + + + + A description of the constraint that is being applied. + + + + + + + + + + + + + + + + Class that links a data instance to the source of its definition. + + + + + + + + + Additional information to help locate the definition in the source document. The format of this information is specific to the structure of the source document. + + + + + + Role that links this definition reference to the citation for the source document. + + + + + + + + + + + + + + + + Class that specifies the source of a definition. + + + + + + + + + The actual citation of the source, sufficient to identify the document and how to obtain it. + + + + + + + + + + + + + + + + Relationship that links instances of this feature type with instances of the same or of a different feature type. The memberOf-linkBetween association in the General Feature Model is not directly implemented here since it can be easily derived from combining the Role and MemberOf associations. + + + + + + + + + Roles that are a part of this association. + + + + + + + + + + + + + + + + Characteristic of a feature type. + + + + + + + + + The numeric or alphanumeric code that uniquely identifies the feature attribute within the feature catalogue. + + + + + + Unit of measure used for this feature attribute. + + + + + The type of the value of this feature attribute; a name from some namespace. Implementations of this International Standard shall specify which namespace implementation is to be used. One possibility is the URI (RFC2396). <c>Mandatory for local feature attribute</c> + + + + + If present, it defines the permissible values of this feature attribute as a restriction of the attribute valueType. If not present, there is no restriction on the valueType + + + + + + + + + + + + + + + + A feature catalogue contains the definition of some number feature types with other information necessary for those definitions. + + + + + + + + + Name, address, country, and telecommunications address of person or organization having primary responsibility for the intellectual content of this feature catalogue. + + + + + The formal functional language in which the feature operation formal definition occurs in this feature catalogue. <c> Mandatory if feature operation formal definition occurs in feature catalogue. </c> + + + + + identifier of the feature catalogue + + + + + The role that links this feature catalogue to the feature types that it contains. + + + + + role that links this feature catalogue to the inheritance relationships that it contains + + + + + Role that links this feature catalogue to the global feature properties, i.e. the feature properties which may bound to many feature types. + + + + + The role that links this feature catalogue to the sources of definitions of feature types, property types, and listed values that it contains. + + + + + + + + + + + + + + + + Operation that every instance of an associated feature type must implement. <ocl> triggeredByValuesOf realizes GF_Operation::triggeredByValuesOf; observesValuesOf realizes GF_Operation::observesValuesOf; affectsValuesOf realizes GF_Operation::affectsValuesOf </ocl> + + + + + + + + + The name and parameters for this operation. It may contain optional returned parameters. This signature is usually derived from the formalDefinition. The signature of an operation must be unique. This is the equivalent of the UML signature. + + + + + Formal description of the behaviour of the member, expressed in the symbol set defined by FC_FeatureCatalogue::functionalLanguage. Involves operational parameters, and interactions with other members of the feature type. + + + + + specifies attribute that may be used as input to perform an operation + + + + + specifies attribute that will be affected by an operation + + + + + specifies attribute which may trigger an operation + + + + + + + + + + + + + + + + Class of real world phenomena with common properties <ocl> typeName realizes GF_FeatureType::typeName; isAbstract realizes GF_FeatureType::isAbstract; constrainedBy realizes GF_FeatureType::constrainedBy </ocl> + + + + + + + + + Text string that uniquely identifies this feature type within the feature catalogue that contains this feature type. + + + + + Definition of the feature type in a natural language. This attribute is required if the definition is not provided by FC_FeatureCatalogue::definitionSource. If not provided, the definitionReference should specify a citation where the definition may be found, and any additional information as to which definition is to be used. <c>Mandatory if definition not provided by definition source.</c> + + + + + Code that uniquely identifies this feature type within the feature catalogue that contains this feature type. + + + + + Indicates if the feature type is abstract or not. + + + + + Equivalent name(s) of this feature type. + + + + + designation of the feature type in a natural language + + + + + Role that links this feature type to the property types that it contains. + + + + + The role that links this feature type to a set of superclasses from which it inherits operations, associations and properties. + + + + + The role that links this feature type to a set of subclasses which inherit its operations, associations and properties. + + + + + Role that links this feature type to the constraints placed upon it. + + + + + Role that links this feature type to the source of its definition. + + + + + The role that links this feature type to the feature catalogue that contains it. + + + + + + + + + + + + + + + + FC_InheritanceRelation realizes GF_InheritanceRelation. <ocl> FC_InheritanceRelation always assumes that its GF_InheritanceRelation::uniqueInstance is TRUE. </ocl> + + + + + + + + + Text string that uniquely identifies this inheritance relation within the feature catalogue that contains this inheritance relation. + + + + + A natural language description of this inheritance relation. + + + + + Indicates if an instance of the supertype can be an instance of at most one of its subtypes. + + + + + designation of the inheritance relation in a natural language + + + + + Identifies one feature type to which the associated superclass feature type supplies inherited properties, associations and operations. + + + + + Identifies one feature type from which the associated subtype class inherits properties, associations and operations. + + + + + + + + + + + + + + + + Value for an enumerated feature attribute domain, including its codes and interpretation. + + + + + + + + + Descriptive label that uniquely identifies one value of the feature attribute. + + + + + Numeric or alphanumeric code (such as a country code) that uniquely identifies this value of the feature attribute. + + + + + Definition of the attribute value in a natural language. If not provided, the definitionReference may specify a citation where the definition may be found, and any additional information as to which definition is to be used. + + + + + + Role that links this instance to the source of its definition. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Abstract class for local and global feature properties. + + + + + + + + + member name that locates this member within a feature type for a local property or within the feature catalogue for a global property + + + + + Definition of the member in a natural language. This attribute is required if the definition is not provided by FC_FeatureCatalogue::definitionSource. If not provided, the definitionReference should specify a citation where the definition may be found, and any additional information as to which definition is to be used. <c>Mandatory if definition not provided by definition source.</c> + + + + + Cardinality of the member in the feature class. If this is an attribute or operation, the default cardinality is 1. If this is an association role, then the default cardinality is 0..*. For operations, this is the number of return values possible. This is an elaboration of the GFM to allow for complete specifications for various programming and data defintion languages. + + + + + designation of the feature property in a natural language + + + + + Role that links this instance to the source of its definition. + + + + + feature catalogue to which a global property pertains + + + + + + + + + + + + + + + + Code list for the classifications of roles. + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/gfc/1.1/gfc.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/gfc/1.1/gfc.xsd new file mode 100644 index 00000000..0e906578 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19110/gfc/1.1/gfc.xsd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/acquisitionInformation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/acquisitionInformation.xsd new file mode 100644 index 00000000..b81fed1b --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/acquisitionInformation.xsd @@ -0,0 +1,410 @@ + + + + + This file was created by Ted Habermann during May 2015 to correct omissions (gmx, MI_EnvironmentalRecord) in existing gmi schema ====== + + + + + + + + + + + Description: Designations for the measuring instruments - FGDC: Platform_and_Instrument_Identification - shortName: PltfrmInstId + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: Designations for the operation used to acquire the dataset - shortName: MssnId + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: Designations for the platform used to acquire the dataset - shortName: PltfrmId + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: Designations for the measuring instruments and their bands, the platform carrying them, and the mission to which the data contributes - FGDC: Platform_and_Instrument_Identification, Mission_Information - shortName: PltfrmInstId + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: identification of a significant collection point within an operation - shortName: Event + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: requirement to be satisfied by the planned data acquisition - shortName: Requirement + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: identification of collection coverage - shortName: PlatformPass + + + + + + + + + + + + + + + + + + + + + + + + + Description: Describes the characteristics, spatial and temportal extent of the intended object to be observed - shortName: TargetId + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: Designations for the planning information related to meeting requirements - shortName: PlanId + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: range of date validity - shortName: ReqstDate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/contentInformation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/contentInformation.xsd new file mode 100644 index 00000000..de58b6b5 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/contentInformation.xsd @@ -0,0 +1,143 @@ + + + + + This file was created by Ted Habermann during May 2015 to correct omissions (gmx, MI_EnvironmentalRecord) in existing gmi schema ====== + + + + + + + + + + Description: extensions to electromagnetic spectrum wavelength description - shortName: BandExt + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: information about the content of a coverage, including the description of specific range elements - shortName: CCovDesc + + + + + + + + + + + + + + + + + + + + + + + Description: information about the content of an image, including the description of specific range elements - shortName: ICovDesc + + + + + + + + + + + + + + + + + + + + + + + Description: description of specific range elements - shortName: RgEltDesc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/dataQualityInformation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/dataQualityInformation.xsd new file mode 100644 index 00000000..3ee22494 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/dataQualityInformation.xsd @@ -0,0 +1,210 @@ + + + + + This file was generated from ISO TC/211 UML class diagrams == 04-04-2008 17:12:48 ====== Name: Lineage - Position: 2 + + + + + + + + + + + + + Description: Details of the methodology by which geographic information was derived from the instrument readings - FGDC: Algorithm_Information - shortName: Algorithm + + + + + + + + + + + + + + + + + + + + + + + + Description: Comprehensive information about the procedure(s), process(es) and algorithm(s) applied in the process step - shortName: Procsg + + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: information on source of data sets for processing step - shortName: SrcDataset + + + + + + + + + + + + + + + + + + + + + + + + Description: Information about an event or transformation in the life of the dataset including details of the algorithm and software used for processing - FGDC: - shortName: DetailProcStep + + + + + + + + + + + + + + + + + + + + + + + + + Description: Report of what occured during the process step - shortName: ProcStepRep + + + + + + + + + + + + + + + + + + + + + + + + + Description: Result of a data quality measure organising the measured values as a coverage - shortName: CoverageResult + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: to: degree of adherence of a dataset to a specific set of user requirements - shortName: Usability + + + + + + + + + + + + + + + + + + + Description: Distance between adjacent pixels - shortName: nomRes + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/gmi.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/gmi.xsd new file mode 100644 index 00000000..d8543bfb --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/gmi.xsd @@ -0,0 +1,16 @@ + + + + + This file was created by Ted Habermann during May 2015 to correct omissions (gmx, MI_EnvironmentalRecord) in existing gmi schema ====== + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/metadataEntitySet.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/metadataEntitySet.xsd new file mode 100644 index 00000000..45bef1dc --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/metadataEntitySet.xsd @@ -0,0 +1,38 @@ + + + + This file was created by Ted Habermann during May 2015 to correct omissions (gmx, MI_EnvironmentalRecord) in existing gmi schema ====== + + + + + + + + + + + Description: Root entity that defines information about imagery or gridded data - shortName: IMetadata + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/spatialRepresentationInformation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/spatialRepresentationInformation.xsd new file mode 100644 index 00000000..7fc1b7b4 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-2/gmi/1.0/spatialRepresentationInformation.xsd @@ -0,0 +1,133 @@ + + + + + This file was created by Ted Habermann during May 2015 to correct omissions (gmx, MI_EnvironmentalRecord) in existing gmi schema ====== + + + + + + + + + + + + Description: Description of information provided in metadata that allows the geographic or map location raster points to be located - FGDC: Georeferencing_Description - shortName: IGeoref + + + + + + + + + + + + + + + + + + + + + + + Description: extends georectified grid description to include associated checkpoints - shortName: IGeorect + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/cat.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/cat.xsd new file mode 100644 index 00000000..0bf1b2cb --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/cat.xsd @@ -0,0 +1,13 @@ + + + + catalogue is a collection of information items (CT_Items) that are managed using a registry (CT_Catalogue). The abstract concept of catalogue was defined in ISO19139 to harmonise the different ISO 19100 series catalogue concepts, such as PF_PortrayalCatalogue (ISO 19117) and FC_FeatureCatalogue (ISO 19110). + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/catalogues.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/catalogues.xsd new file mode 100644 index 00000000..e88a8026 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/catalogues.xsd @@ -0,0 +1,53 @@ + + + Handcrafted + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/codelistItem.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/codelistItem.xsd new file mode 100644 index 00000000..9cdaf789 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/codelistItem.xsd @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/crsItem.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/crsItem.xsd new file mode 100644 index 00000000..1e08ea70 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/crsItem.xsd @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/uomItem.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/uomItem.xsd new file mode 100644 index 00000000..0a97cde0 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cat/1.0/uomItem.xsd @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/1.0/cit.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/1.0/cit.sch new file mode 100644 index 00000000..97e17eaa --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/1.0/cit.sch @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + The individual does not have a name or a position. + Une personne n'a pas de nom ou de fonction. + + Individual name is + "" + and position + "" + . + Le nom de la personne est + "" + ,sa fonction + "" + . + + + + Individual MUST have a name or a position + Une personne DOIT avoir un nom ou une fonction + + + + + + + + + + + + + + + + + + + + The organisation does not have a name or a logo. + Une organisation n'a pas de nom ou de logo. + + Organisation name is + "" + and logo filename is + "" + . + Le nom de l'organisation est + "" + , son logo + "" + . + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/1.0/cit.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/1.0/cit.xsd new file mode 100644 index 00000000..27c30610 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/1.0/cit.xsd @@ -0,0 +1,7 @@ + + + Namespace for XML elements <font color="#1f497d">for constructing citations to resources</font>. + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/1.0/citation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/1.0/citation.xsd new file mode 100644 index 00000000..0a70d6d9 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/1.0/citation.xsd @@ -0,0 +1,514 @@ + + + + + + + + location of the responsible individual or organisation + + + + + + + + + address line for the location (as described in ISO 11180, Annex A) + + + + + city of the location + + + + + state, province of the location + + + + + ZIP or other postal code + + + + + country of the physical address + + + + + address of the electronic mailbox of the responsible organisation or individual + + + + + + + + + + + + + + + + standardized resource reference + + + + + + + + + name by which the cited resource is known + + + + + short name or other language name by which the cited information is known. Example: DCW as an alternative title for Digital Chart of the World + + + + + reference date for the cited resource + + + + + version of the cited resource + + + + + date of the edition + + + + + value uniquely identifying an object within a namespace + + + + + name and position information for an individual or organisation that is responsible for the resource + + + + + mode in which the resource is represented + + + + + information about the series, or aggregate resource, of which the resource is a part + + + + + other information required to complete the citation that is not recorded elsewhere + + + + + international Standard Book Number + + + + + international Standard Serial Number + + + + + online reference to the cited resource + + + + + citation graphic or logo for cited party + + + + + + + + + + + + + + + + information required to enable contact with the responsible person and/or organisation + + + + + + + + + telephone numbers at which the organisation or individual may be contacted + + + + + physical and email address at which the organisation or individual may be contacted + + + + + on-line information that can be used to contact the individual or organisation + + + + + time period (including time zone) when individuals can contact the organisation or individual + + + + + supplemental instructions on how or when to contact the individual or organisation + + + + + + + + + + + + + + + + + reference date and event used to describe it + + + + + + + + + + + reference date for the cited resource + + + + + event used for reference date + + + + + + + + + + + + + + + + identification of when a given event occurred + + + + + + + + + + + information about the party if the party is an individual + + + + + + + + + position of the individual in an organisation + + + + + + + + + + + + + + + + function performed by the resource + + + + + + + + + + + information about on-line sources from which the resource, specification, or community profile name and extended metadata elements can be obtained + + + + + + + + + location (address) for on-line access using a Uniform Resource Locator/Uniform Resource Identifier address or similar addressing scheme such as http://www.statkart.no/isotc211 + + + + + connection protocol to be used e.g. http, ftp, file + + + + + name of an application profile that can be used with the online resource + + + + + name of the online resource + + + + + detailed text description of what the online resource is/does + + + + + code for function performed by the online resource + + + + + protocol used by the accessed resource + + + + + + + + + + + + + + + + information about the party if the party is an organisation + + + + + + + + + Graphic identifying organization + + + + + + + + + + + + + + + + + information about the individual and/or organisation of the party + + + + + + + + + name of the party + + + + + contact information for the party + + + + + + + + + + + + + + + + mode in which the data is represented + + + + + + + + + + + information about the party and their role + + + + + + + + + function performed by the responsible party + + + + + spatial or temporal extent of the role + + + + + + + + + + + + + + + + + function performed by the responsible party + + + + + + + + + + + information about the series, or aggregate resource, to which a resource belongs + + + + + + + + + name of the series, or aggregate resource, of which the resource is a part + + + + + information identifying the issue of the series + + + + + details on which pages of the publication the article was published + + + + + + + + + + + + + + + + telephone numbers for contacting the responsible individual or organisation + + + + + + + + + telephone number by which individuals can contact responsible organisation or individual + + + + + type of telephone responsible organisation or individual + + + + + + + + + + + + + + + + type of telephone + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/2.0/cit.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/2.0/cit.xsd new file mode 100644 index 00000000..2e8e46a8 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/2.0/cit.xsd @@ -0,0 +1,10 @@ + + + + Namespace for XML elements for constructing citations to resources. + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/2.0/citation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/2.0/citation.xsd new file mode 100644 index 00000000..8e56555a --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/cit/2.0/citation.xsd @@ -0,0 +1,523 @@ + + + + + + + + + location of the responsible individual or organisation + + + + + + + + + address line for the location (as described in ISO 11180, Annex A) + + + + + city of the location + + + + + state, province of the location + + + + + ZIP or other postal code + + + + + country of the physical address + + + + + address of the electronic mailbox of the responsible organisation or individual + + + + + + + + + + + + + + + + standardized resource reference + + + + + + + + + name by which the cited resource is known + + + + + short name or other language name by which the cited information is known. Example: DCW as an alternative title for Digital Chart of the World + + + + + reference date for the cited resource + + + + + version of the cited resource + + + + + date of the edition + + + + + value uniquely identifying an object within a namespace + + + + + name and position information for an individual or organisation that is responsible for the resource + + + + + mode in which the resource is represented + + + + + information about the series, or aggregate resource, of which the resource is a part + + + + + other information required to complete the citation that is not recorded elsewhere + + + + + international Standard Book Number + + + + + international Standard Serial Number + + + + + online reference to the cited resource + + + + + citation graphic or logo for cited party + + + + + + + + + + + + + + + + information required to enable contact with the responsible person and/or organisation + + + + + + + + + telephone numbers at which the organisation or individual may be contacted + + + + + physical and email address at which the organisation or individual may be contacted + + + + + on-line information that can be used to contact the individual or organisation + + + + + time period (including time zone) when individuals can contact the organisation or individual + + + + + supplemental instructions on how or when to contact the individual or organisation + + + + + + + + + + + + + + + + + reference date and event used to describe it + + + + + + + + + + + reference date for the cited resource + + + + + event used for reference date + + + + + + + + + + + + + + + + identification of when a given event occurred + + + + + + + + + + + information about the party if the party is an individual + + + + + + + + + position of the individual in an organisation + + + + + + + + + + + + + + + + function performed by the resource + + + + + + + + + + + information about on-line sources from which the resource, specification, or community profile name and extended metadata elements can be obtained + + + + + + + + + location (address) for on-line access using a Uniform Resource Locator/Uniform Resource Identifier address or similar addressing scheme such as http://www.statkart.no/isotc211 + + + + + connection protocol to be used e.g. http, ftp, file + + + + + name of an application profile that can be used with the online resource + + + + + name of the online resource + + + + + detailed text description of what the online resource is/does + + + + + code for function performed by the online resource + + + + + protocol used by the accessed resource + + + + + + + + + + + + + + + + information about the party if the party is an organisation + + + + + + + + + Graphic identifying organization + + + + + + + + + + + + + + + + + information about the individual and/or organisation of the party + + + + + + + + + name of the party + + + + + contact information for the party + + + + + value uniquely identifying a party (individual or organization) + + + + + + + + + + + + + + + mode in which the data is represented + + + + + + + + + + + information about the party and their role + + + + + + + + + function performed by the responsible party + + + + + spatial or temporal extent of the role + + + + + + + + + + + + + + + + + function performed by the responsible party + + + + + + + + + + + information about the series, or aggregate resource, to which a resource belongs + + + + + + + + + name of the series, or aggregate resource, of which the resource is a part + + + + + information identifying the issue of the series + + + + + details on which pages of the publication the article was published + + + + + + + + + + + + + + + + telephone numbers for contacting the responsible individual or organisation + + + + + + + + + telephone number by which individuals can contact responsible organisation or individual + + + + + type of telephone responsible organisation or individual + + + + + + + + + + + + + + + + type of telephone + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gco/1.0/baseTypes2014.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gco/1.0/baseTypes2014.xsd new file mode 100644 index 00000000..6285a307 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gco/1.0/baseTypes2014.xsd @@ -0,0 +1,530 @@ + + + + + Geographic COmmon (GCO) extensible markup language is a component of the XML Schema Implementation of Geographic +Information Metadata documented in ISO/TS 19115-3, based on the implementation patterns defined and utilized in ISO19139. +This gcoBase.xsd schema provides: + 1. tools to handle specific objects like "code lists" and "record"; + 2. Some XML types that do not follow the general encoding rules specified in ISO19139. + *** SMR 2014-12-22. Refactor gco, gts, gsr, gss to separate gml dependencies. + All element or attribute types in this schema are either types defined by this schema, or are datatypes defined by + the XML schema namespace (http://www.w3.org/2001/XMLSchema) + To remove the dependency between gml and the base datatypes in ISO19115-3: + 1. The nilReason attribute is defined here instead of extending the gml type. + 2. The definition of MeasureType is copied here from gml 3.2 basic Types. The only + difference this will introduce in instance documents is that the uom attribute on a measure value + (or one of its substitutions) will be gco:uom, not gml:uom. + + + + + + + + + + + + + + + + + + + + + + + + + + + + copied from gml32:NilReasonType. This Type defines a content model that allows recording of an + explanation for a void value or other exception. + gml:NilReasonType is a union of the following enumerated values: + - inapplicable- there is no value + - missing- the correct value is not readily available to the sender of this data. Furthermore, a correct value may not exist + - template- the value will be available later + - unknown- the correct value is not known to, and not computable by, the sender of this data. However, a correct value probably exists + - withheld- the value is not divulged + - other:text - other brief explanation, where text is a string of two or more characters with no included spaces + and + - xs:anyURI which should refer to a resource which describes the reason for the exception + A particular community may choose to assign more detailed semantics to the standard values provided. Alternatively, the URI method enables a specific or more complete explanation for the absence of a value to be provided elsewhere and indicated by-reference in an instance document. + gml:NilReasonType is used as a member of a union in a number of simple content types where it is necessary to permit a value from the NilReasonType union as an alternative to the primary type. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A TypeName is a LocalName that references either a recordType or object type in some form of schema. The stored value "aName" is the returned value for the "aName()" operation. This is the types name. - For parsing from types (or objects) the parsible name normally uses a "." navigation separator, so that it is of the form [class].[member].[memberOfMember]. ...) + + + + + + + + + + + + + + + + + + + + + + + A MemberName is a LocalName that references either an attribute slot in a record or recordType or an attribute, operation, or association role in an object instance or type description in some form of schema. The stored value "aName" is the returned value for the "aName()" operation. + + + + + + + + + + + + + + + + + + + + + + + + Use to represent the possible cardinality of a relation. Represented by a set of simple multiplicity ranges. + + + + + + + + + + + + + + + + + + + + + + + A component of a multiplicity, consisting of an non-negative lower bound, and a potentially infinite upper bound. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copied from gml32:MeasureType, which supports recording an amount encoded as a value of XML Schema double, together with a units of measure indicated by an attribute uom, short for "units Of measure". The value of the uom attribute identifies a reference system for the amount, usually a ratio or interval scale. Namespace changed to gco + + + + + + + + + + + + + + The simple type gml:UomIdentifer defines the syntax and value space of the unit of measure identifier. + + + + + + This type specifies a character string of length at least one, and restricted such that it must not contain any of the following characters: ":" (colon), " " (space), (newline), (carriage return), (tab). This allows values corresponding to familiar abbreviations, such as "kg", "m/s", etc. + It is recommended that the symbol be an identifier for a unit of measure as specified in the "Unified Code of Units of Measure" (UCUM) (http://aurora.regenstrief.org/UCUM). This provides a set of symbols and a grammar for constructing identifiers for units of measure that are unique, and may be easily entered with a keyboard supporting the limited character set known as 7-bit ASCII. ISO 2955 formerly provided a specification with this scope, but was withdrawn in 2001. UCUM largely follows ISO 2955 with modifications to remove ambiguities and other problems. + + + + + + + + This type specifies a URI, restricted such that it must start with one of the following sequences: "#", "./", "../", or a string of characters followed by a ":". These patterns ensure that the most common URI forms are supported, including absolute and relative URIs and URIs that are simple fragment identifiers, but prohibits certain forms of relative URI that could be mistaken for unit of measure symbol . + NOTE It is possible to re-write such a relative URI to conform to the restriction (e.g. "./m/s"). + In an instance document, on elements of type gml:MeasureType the mandatory uom attribute shall carry a value corresponding to either + - a conventional unit of measure symbol, + - a link to a definition of a unit of measure that does not have a conventional symbol, or when it is desired to indicate a precise or variant definition. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gml:CodeType is a generalized type to be used for a term, keyword or name. It adds a XML attribute codeSpace to a term, where the value of the codeSpace attribute (if present) shall indicate a dictionary, thesaurus, classification scheme, authority, or pattern for the term. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gco/1.0/gco.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gco/1.0/gco.xsd new file mode 100644 index 00000000..7db0f214 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gco/1.0/gco.xsd @@ -0,0 +1,16 @@ + + + + + This is the root document of the The Geographic COmmon (GCO) http://standards.iso.org/iso/19115/-3/gco/1.0 namespace, a component of the XML Schema Implementation of Geographic Information Metadata (ISO19115-1). Original implementation documented in ISO/TS 19139:2007 is refactored in this implementation for ISO19115-3 to remove dependency of base data types on GML (the only gml element used was the enumeration of nilReasons). GCO includes all the definitions of http://standards.iso.org/iso/19115/-3/gco/1.0 namespace. Elements that are extensions of GML elements are defined in the gmw namespace in ISO19115-3. + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gcx/1.0/extendedTypes.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gcx/1.0/extendedTypes.xsd new file mode 100644 index 00000000..0065598c --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gcx/1.0/extendedTypes.xsd @@ -0,0 +1,92 @@ + + + + + This file was generated from ISO TC/211 UML class diagrams == 03-14-2005 12:00:20 ====== Handcrafted + 20130614 SMR updates: + 1. schema locations for gco and xlink. + 2. change namespace prefix from gmx to gcx, to use for ISO19115-3. + 3. change attribute group for gcx:anchor from xlink:simpleLink (old) to xlink:simpleAttrs (new). + + 20130327 - Ted changed targetNamespace and gcx namespace to http://www.isotc211.org/2005/gcx/1.0/2013-03-28 + 20130624 SMR update namespace version date + 20140729 SMR update namespace for 07-11 build. The schema generated by ShapeChange from the UML does not work for gcx namespace. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gcx/1.0/extendedTypes_autoFromShapeChange.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gcx/1.0/extendedTypes_autoFromShapeChange.xsd new file mode 100644 index 00000000..1430497b --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gcx/1.0/extendedTypes_autoFromShapeChange.xsd @@ -0,0 +1,60 @@ + + + Handcrafted + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gcx/1.0/gcx.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gcx/1.0/gcx.xsd new file mode 100644 index 00000000..6fa5787d --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gcx/1.0/gcx.xsd @@ -0,0 +1,8 @@ + + + Elements for xml implementation, from ISO 19139 updated for compatibility with new schema. Anchor, FileName, MimeFileType; all in substitution group for CharacterString to support Web environments. + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gex/1.0/extent.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gex/1.0/extent.xsd new file mode 100644 index 00000000..8d5bff2c --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gex/1.0/extent.xsd @@ -0,0 +1,241 @@ + + + + + + + + + + + + enclosing geometric object which locates the resource, expressed as a set of (x,y) coordinate (s) NOTE: If a polygon is used it should be closed (last point replicates first point) + + + + + + + + + sets of points defining the bounding polygon or any other GM_Object geometry (point, line or polygon) + + + + + + + + + + + + + + + + extent of the resource + + + + + + + + + sets of points defining the bounding polygon or any other GM_Object geometry (point, line or polygon) + + + + + + + + + + + + + + + + + + + geographic position of the resource NOTE: This is only an approximate reference so specifying the coordinate reference system is unnecessary and need only be provided with a precision of up to two decimal places + + + + + + + + + western-most coordinate of the limit of the resource extent, expressed in longitude in decimal degrees (positive east) + + + + + eastern-most coordinate of the limit of the resource extent, expressed in longitude in decimal degrees (positive east) + + + + + southern-most coordinate of the limit of the resource extent, expressed in latitude in decimal degrees (positive north) + + + + + northern-most, coordinate of the limit of the resource extent expressed in latitude in decimal degrees (positive north) + + + + + + + + + + + + + + + + description of the geographic area using identifiers + + + + + + + + + identifier used to represent a geographic area e.g. a geographic identifier as described in ISO 19112 + + + + + + + + + + + + + + + + spatial area of the resource + + + + + + + + + indication of whether the geographic element encompasses an area covered by the data or an area where data is not present + + + + + + + + + + + + + + + + extent with respect to date/time and spatial boundaries + + + + + + + + + vertical extent component + + + + + + + + + + + + + + + + + time period covered by the content of the resource + + + + + + + + + period for the content of the resource + + + + + + + + + + + + + + + + vertical domain of resource + + + + + + + + + lowest vertical extent contained in the resource + + + + + highest vertical extent contained in the resource + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gex/1.0/gex.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gex/1.0/gex.sch new file mode 100644 index 00000000..55d22b43 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gex/1.0/gex.sch @@ -0,0 +1,163 @@ + + + + + + + + + + The extent does not contain a description or a geographicElement. + L'étendue ne contient aucun élement. + + The extent contains a description. + L'étendue contient une description. + + The extent contains a geographic identifier. + L'étendue contient un identifiant géographique. + + The extent contains a bounding box element. + L'étendue contient une emprise géographique. + + The extent contains a bounding polygon. + L'étendue contient un polygone englobant. + + The extent contains a vertical element. + L'étendue contient une étendue verticale. + + The extent contains a temporal element. + L'étendue contient une étendue temporelle. + + + + + Extent MUST have one description or one geographic, temporal or vertical element + Une étendue DOIT avoir une description ou un élément géographique, temporel ou vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The vertical extent does not contains CRS or CRS identifier. + L'étendue verticale ne contient pas de CRS ou d'identifiant de CRS. + + The vertical extent contains CRS information. + L'étendue verticale contient les informations sur le CRS. + + + + Vertical element MUST contains a CRS or CRS identifier + Une étendue verticale DOIT contenir un CRS ou un identifiant de CRS + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gex/1.0/gex.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gex/1.0/gex.xsd new file mode 100644 index 00000000..034f42df --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gex/1.0/gex.xsd @@ -0,0 +1,9 @@ + + + Namespace for XML elements used to specify spatial and temporal extents. + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gmw/1.0/gmlWrapperTypes2014.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gmw/1.0/gmlWrapperTypes2014.xsd new file mode 100644 index 00000000..22915b64 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gmw/1.0/gmlWrapperTypes2014.xsd @@ -0,0 +1,159 @@ + + + + + + + Geographic COmmon (GCO) extensible markup language is a component of the XML Schema Implementation of Geographic +Information Metadata documented in ISO/TS 19139:2007. GCO includes all the definitions of http://standards.iso.org/iso/19115/-3/gco/1.0" namespace. The root document of this namespace is the file gco.xsd. This basicTypes.xsd schema implements concepts from the "basic types" package of ISO/TS 19103. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gmw/1.0/gmw.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gmw/1.0/gmw.xsd new file mode 100644 index 00000000..9cb45976 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/gmw/1.0/gmw.xsd @@ -0,0 +1,14 @@ + + + + + This is the root document of the The GMl Wrapper type (GMW) http://standards.iso.org/iso/19115/-3/gmw/1.0 namespace, a component of the XML Schema Implementation of Geographic Information Metadata (ISO19115-1). Original implementation documented in ISO/TS 19139:2007 is refactored in this implementation for ISO19115-3 to put type definitions that wrap GML elements in property types with optional gco:ObjectProperties and gco:nilReason attributes as originally specified in ISO19139 in the gco, gss, gsr and gts namespaces. Elements from the ISO19139 gco namespace that do not have dependencies on gml are specified in the http://standards.iso.org/iso/19115/-3/gco/1.0 namespace in the ISO19115-3 implementation + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/lan/1.0/lan.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/lan/1.0/lan.xsd new file mode 100644 index 00000000..1238f5a3 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/lan/1.0/lan.xsd @@ -0,0 +1,8 @@ + + + Namespace for XML elements used to implement cultural and linguistic adaptability, i.e. different character set and language encoding of metadata content. Originally defined in ISO 19139. + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/lan/1.0/language.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/lan/1.0/language.xsd new file mode 100644 index 00000000..9757375a --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/lan/1.0/language.xsd @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/1.0/acquisitionInformationImagery.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/1.0/acquisitionInformationImagery.xsd new file mode 100644 index 00000000..0b0f740d --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/1.0/acquisitionInformationImagery.xsd @@ -0,0 +1,622 @@ + + + + + + + + + Description: Designations for the measuring instruments and their bands, the platform carrying them, and the mission to which the data contributes +FGDC: Platform_and_Instrument_Identification, Mission_Information +shortName: PltfrmInstId + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: context of activation +shortName: CntxtCode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: identification of a significant collection point within an operation +shortName: Event + + + + + + + + + Description: Event name or number +shortName: evtId + + + + + Description: Initiator of the event +shortName: evtTrig + + + + + Description: Meaning of the event +shortName: evtCntxt + + + + + Description: Relative time ordering of the event +shortName: evtSeq + + + + + Description: Time the event occured +shortName: evtTime + + + + + + + + + + + + + + + + + + + Description: geometric description of collection +shortName: GeoTypeCode + + + + + + + + + + + Description: Designations for the measuring instruments +FGDC: Platform_and_Instrument_Identification +shortName: PltfrmInstId + + + + + + + + + Description: complete citation of the instrument +FGDC: Instrument_Full_Name +Position: 1 +shortName: instNam +Conditional: if shortName not specified + + + + + Description: complete citation of the instrument +FGDC: Instrument_Full_Name +Position: 1 +shortName: instNam +Conditional: if shortName not specified + + + + + Description: Code describing the type of instrument +shortName: instType + + + + + Description: Textual description of the instrument +shortName: instDesc + + + + + + + + + + + + + + + + + Description: Describes the characteristics, spatial and temportal extent of the intended object to be observed +shortName: TargetId + + + + + + + + + Description: Registered code used to identify the objective +Postion: 1 +shortName: targetId + + + + + Description: priority applied to the target +Position: 3 +shortName: trgtPriority + + + + + Description: collection technique for the objective +Position: 4 +shortName: trgtType + + + + + Description: function performed by or at the objective +Position: 5 +shortName: trgtFunct + + + + + Description: extent information including the bounding box, bounding polygon, vertical and temporal extent of the objective +Position: 6 +shortName: trgtExtent + + + + + + + + + + + + + + + + + + + Description: temporal persistence of collection objective +shortName: ObjTypeCode + + + + + + + + + + + Description: Designations for the operation used to acquire the dataset +shortName: MssnId + + + + + + + + + Description: Description of the mission on which the platform observations are part and the objectives of that mission +FGDC: Mission_Description +Position: 3 +shortName: mssnDesc + + + + + Description: character string by which the mission is known +FGDC: Mission_Name +Position: 1 +shortName: pltMssnNam +NITF_ACFTA:AC_MSN_ID + + + + + Description: character string by which the mission is known +FGDC: Mission_Name +Position: 1 +shortName: pltMssnNam +NITF_ACFTA:AC_MSN_ID + + + + + Description: status of the data acquisition +FGDC: Mission_Start_Date +Position: 4 +shortName: mssnStatus + + + + + Description: status of the data acquisition +FGDC: Mission_Start_Date +Position: 4 +shortName: mssnStatus + + + + + + + Description: Platform (or platforms) used in the operation. + + + + + + + + + + + + + + + + + + + + + + + + + + Description: Designations for the planning information related to meeting requirements +shortName: PlanId + + + + + + + + + Description: manner of sampling geometry the planner expects for collection of the objective data +Postion: 2 +shortName: planType + + + + + Description: current status of the plan (pending, completed, etc.) +shortName: planStatus + + + + + Description: Identification of authority requesting target collection +Postion: 1 +shortName: planReqId + + + + + + + + + + + + + + + + + + Description: Designations for the platform used to acquire the dataset +shortName: PltfrmId + + + + + + + + + Description: complete citation of the platform +FGDC: Platform_Full_Name +Position: 3 +shortName: pltNam +Conditional: if shortName not specified + + + + + Description: Unique identification of the platform +shortName: pltId + + + + + Description: Narrative description of the platform supporting the instrument +FGDC: Platform_Description +Position: 2 +shortName: pltfrmDesc + + + + + Description: organization responsible for building, launch, or operation of the platform +FGDC: Platform_Sponsor +Position: 6 +shortName: pltfrmSpnsr + + + + + + + + + + + + + + + + + Description: identification of collection coverage +shortName: PlatformPass + + + + + + + + + Description: unique name of the pass +shortName: passId + + + + + Description: Area covered by the pass +shortName: passExt + + + + + + + + + + + + + + + + + Description: ordered list of priorities +shortName: PriCode + + + + + + + + + + + Description: range of date validity +shortName: ReqstDate + + + + + + + + + Description: preferred date and time of collection +shortName: collectDate + + + + + Description: latest date and time collection must be completed +shortName: latestDate + + + + + + + + + + + + + + + + Description: requirement to be satisfied by the planned data acquisition +shortName: Requirement + + + + + + + + + Description: identification of reference or guidance material for the requirement +shortName: reqRef + + + + + Description: unique name, or code, for the requirement +shortName: reqId + + + + + Description: origin of requirement +shortName: requestor + + + + + Description: person(s), or body(ies), to recieve results of requirement +shortName: recipient + + + + + Description: relative ordered importance, or urgency, of the requirement +shortName: reqPri + + + + + Description: required or preferred acquisition date and time +shortName: reqDate + + + + + Description: date and time after which collection is no longer valid +shortName: reqExpire + + + + + + + + + + + + + + + + + <UsedBy> +<NameSpace>ISO 19115-2 Metadata - Imagery</NameSpace> +<Class>MI_Instrument</Class> +<Package>Acquisition information - Imagery</Package> +<Attribute>type</Attribute> +<Type>MI_SensorTypeCode</Type> +<UsedBy> + + + + + + + + + + + Description: temporal relation of activation +shortName: SeqCode + + + + + + + + + + + Description: mechanism of activation +shortName: TriggerCode + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/1.0/mac.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/1.0/mac.xsd new file mode 100644 index 00000000..16ba2f19 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/1.0/mac.xsd @@ -0,0 +1,11 @@ + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/2.0/acquisitionInformationImagery.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/2.0/acquisitionInformationImagery.xsd new file mode 100644 index 00000000..ad0eee64 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/2.0/acquisitionInformationImagery.xsd @@ -0,0 +1,590 @@ + + + + + + + + + Description: Designations for the measuring instruments and their bands, the platform carrying them, and the mission to which the data contributes FGDC: Platform_and_Instrument_Identification, Mission_Information shortName: PltfrmInstId + + + + + + + + + the specific data to which the acquisition information applies + + + + + + + + + + + + + + + + + + + + + + + Description: context of activation shortName: CntxtCode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: identification of a significant collection point within an operation shortName: Event + + + + + + + + + Description: Event name or number shortName: evtId + + + + + Description: Initiator of the event shortName: evtTrig + + + + + Description: Meaning of the event shortName: evtCntxt + + + + + Description: Relative time ordering of the event shortName: evtSeq + + + + + Description: Time the event occured shortName: evtTime + + + + + + + + + + + + + + + + + + + Description: geometric description of collection shortName: GeoTypeCode + + + + + + + + + + + Description: Designations for the measuring instruments FGDC: Platform_and_Instrument_Identification shortName: PltfrmInstId + + + + + + + + + Description: complete citation of the instrument FGDC: Instrument_Full_Name Position: 1 shortName: instNam Conditional: if shortName not specified + + + + + Description: complete citation of the instrument FGDC: Instrument_Full_Name Position: 1 shortName: instNam Conditional: if shortName not specified + + + + + Description: Code describing the type of instrument shortName: instType + + + + + Description: Textual description of the instrument shortName: instDesc + + + + + + type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO) + + + + + instance of otherPropertyType that defines attributes not explicitly included in MI_Platform + + + + + + + + + + + + + + + + + + + + Sensor Description + + + + + + + + + + + + + + + + + + + + + + Description: Describes the characteristics, spatial and temportal extent of the intended object to be observed shortName: TargetId + + + + + + + + + Description: Registered code used to identify the objective Postion: 1 shortName: targetId + + + + + Description: priority applied to the target Position: 3 shortName: trgtPriority + + + + + Description: collection technique for the objective Position: 4 shortName: trgtType + + + + + Description: function performed by or at the objective Position: 5 shortName: trgtFunct + + + + + Description: extent information including the bounding box, bounding polygon, vertical and temporal extent of the objective Position: 6 shortName: trgtExtent + + + + + + + + + + + + + + + + + + + Description: temporal persistence of collection objective shortName: ObjTypeCode + + + + + + + + + + + Description: Designations for the operation used to acquire the dataset shortName: MssnId + + + + + + + + + Description: Description of the mission on which the platform observations are part and the objectives of that mission FGDC: Mission_Description Position: 3 shortName: mssnDesc + + + + + Description: character string by which the mission is known FGDC: Mission_Name Position: 1 shortName: pltMssnNam NITF_ACFTA:AC_MSN_ID + + + + + Description: character string by which the mission is known FGDC: Mission_Name Position: 1 shortName: pltMssnNam NITF_ACFTA:AC_MSN_ID + + + + + Description: status of the data acquisition FGDC: Mission_Start_Date Position: 4 shortName: mssnStatus + + + + + Description: status of the data acquisition FGDC: Mission_Start_Date Position: 4 shortName: mssnStatus + + + + + + + Description: Platform (or platforms) used in the operation. + + + + + + + + type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO) + + + + + instance of otherPropertyType that defines attributes not explicitly included in MI_Operation + + + + + + + + + + + + + + + + + + + + + + + + Description: Designations for the planning information related to meeting requirements shortName: PlanId + + + + + + + + + Description: manner of sampling geometry the planner expects for collection of the objective data Postion: 2 shortName: planType + + + + + Description: current status of the plan (pending, completed, etc.) shortName: planStatus + + + + + Description: Identification of authority requesting target collection Postion: 1 shortName: planReqId + + + + + + + + + + + + + + + + + + Description: Designations for the platform used to acquire the dataset shortName: PltfrmId + + + + + + + + + Description: complete citation of the platform FGDC: Platform_Full_Name Position: 3 shortName: pltNam Conditional: if shortName not specified + + + + + Unique identification of the platform + + + + + Description: Narrative description of the platform supporting the instrument FGDC: Platform_Description Position: 2 shortName: pltfrmDesc + + + + + Description: organization responsible for building, launch, or operation of the platform FGDC: Platform_Sponsor Position: 6 shortName: pltfrmSpnsr + + + + + + type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO) + + + + + instance of otherPropertyType that defines attributes not explicitly included in MI_Platform + + + + + + + + + + + + + + + + + Description: identification of collection coverage shortName: PlatformPass + + + + + + + + + Description: unique name of the pass shortName: passId + + + + + Description: Area covered by the pass shortName: passExt + + + + + + + + + + + + + + + + + Description: ordered list of priorities shortName: PriCode + + + + + + + + + + + Description: range of date validity shortName: ReqstDate + + + + + + + + + Description: preferred date and time of collection shortName: collectDate + + + + + Description: latest date and time collection must be completed shortName: latestDate + + + + + + + + + + + + + + + + Description: requirement to be satisfied by the planned data acquisition shortName: Requirement + + + + + + + + + Description: identification of reference or guidance material for the requirement shortName: reqRef + + + + + Description: unique name, or code, for the requirement shortName: reqId + + + + + Description: origin of requirement shortName: requestor + + + + + Description: person(s), or body(ies), to recieve results of requirement shortName: recipient + + + + + Description: relative ordered importance, or urgency, of the requirement shortName: reqPri + + + + + Description: required or preferred acquisition date and time shortName: reqDate + + + + + Description: date and time after which collection is no longer valid shortName: reqExpire + + + + + + + + + + + + + + + + + <UsedBy> <NameSpace>ISO 19115-2 Metadata - Imagery</NameSpace> <Class>MI_Instrument</Class> <Package>Acquisition information - Imagery</Package> <Attribute>type</Attribute> <Type>MI_SensorTypeCode</Type> <UsedBy> + + + + + + + + + + + Description: temporal relation of activation shortName: SeqCode + + + + + + + + + + + Description: mechanism of activation shortName: TriggerCode + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/2.0/event.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/2.0/event.xsd new file mode 100644 index 00000000..5eb6ffe1 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/2.0/event.xsd @@ -0,0 +1,108 @@ + + + + event.xsd Version 1.0 thabermann@hdfgroup.org + Created 2017-01-18 + + + + + + + + + + + + Instrumentation EventList Description + + + + + + + + + + + + + + + + + + + + + + + + + + + Instrumentation Event Description + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: NASA Revision Description + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/2.0/mac.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/2.0/mac.xsd new file mode 100644 index 00000000..88e233e9 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mac/2.0/mac.xsd @@ -0,0 +1,10 @@ + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mas/1.0/applicationSchema.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mas/1.0/applicationSchema.xsd new file mode 100644 index 00000000..c674a560 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mas/1.0/applicationSchema.xsd @@ -0,0 +1,61 @@ + + + + + + + + information about the application schema used to build the dataset + + + + + + + + + name of the application schema used + + + + + identification of the schema language used + + + + + formal language used in Application Schema + + + + + full application schema given as an ASCII file + + + + + full application schema given as a graphics file + + + + + full application schema given as a software development file + + + + + software dependent format used for the application schema software dependent file + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mas/1.0/mas.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mas/1.0/mas.xsd new file mode 100644 index 00000000..9ba0d4ce --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mas/1.0/mas.xsd @@ -0,0 +1,9 @@ + + + Namespace for XML elements <font color="#1f497d">to specify the application schema associated with a resource</font> + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mcc/1.0/AbstractCommonClasses.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mcc/1.0/AbstractCommonClasses.xsd new file mode 100644 index 00000000..8719a3d0 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mcc/1.0/AbstractCommonClasses.xsd @@ -0,0 +1,358 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <ul> <li></li> </ul> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mcc/1.0/commonClasses.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mcc/1.0/commonClasses.xsd new file mode 100644 index 00000000..4b6bbc81 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mcc/1.0/commonClasses.xsd @@ -0,0 +1,220 @@ + + + + + + + graphic that provides an illustration of the dataset (should include a legend for the graphic, if applicable) + + + + + + + + + name of the file that contains a graphic that provides an illustration of the dataset + + + + + text description of the illustration + + + + + + restriction on access and/or use of browse graphic + + + + + link to browse graphic + + + + + + + + + + + + + + + + value uniquely identifying an object within a namespace + + + + + + + + + Citation for the code namespace and optionally the person or party responsible for maintenance of that namespace + + + + + alphanumeric value identifying an instance in the namespace e.g. EPSG::4326 + + + + + Identifier or namespace in which the code is valid + + + + + version identifier for the namespace + + + + + natural language description of the meaning of the code value E.G for codeSpace = EPSG, code = 4326: description = WGS-84" to "for codeSpace = EPSG, code = EPSG::4326: description = WGS-84 + + + + + + + + + + + + + + + + status of the resource + + + + + + + + + + + new: information about the scope of the resource + + + + + + + + + description of the scope + + + + + + + + + + + + + + + + + + class of information to which the referencing entity applies + + + + + + + + + + + description of the class of information covered by the information + + + + + + + + + instances of attribute types to which the information applies + + + + + instances of feature types to which the information applies + + + + + feature instances to which the information applies + + + + + attribute instances to which the information applies + + + + + dataset to which the information applies + + + + + class of information that does not fall into the other categories to which the information applies + + + + + + + + + + + + + + + + method used to represent geographic information in the resource + + + + + + + + + + + Uniform Resource Identifier (URI), is a compact string of characters used to identify or name a resource + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mcc/1.0/mcc.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mcc/1.0/mcc.xsd new file mode 100644 index 00000000..3da89684 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mcc/1.0/mcc.xsd @@ -0,0 +1,8 @@ + + + Abstract classes for linking to elements in the metadata implementation from external schema to loosely couple the external schema for smoother handling of version changes in components. Classes used by all components in ISO19115 metadata application. + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mco/1.0/constraints.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mco/1.0/constraints.xsd new file mode 100644 index 00000000..f23c5cb6 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mco/1.0/constraints.xsd @@ -0,0 +1,188 @@ + + + + + + + + name of the handling restrictions on the resource + + + + + + + + + + + restrictions on the access and use of a resource or metadata + + + + + + + + + limitation affecting the fitness for use of the resource or metadata. Example, "not to be used for navigation" + + + + + Spatial and temporal extent of the application of the constraint restrictions + + + + + graphic /symbol indicating the constraint Eg. + + + + + citation/URL for the limitation or constraint, e.g. copyright statement, license agreement, etc + + + + + information concerning the parties to whom the resource can or cannot be released and the party responsible for determining the releasibility + + + + + party responsible for the resource constraints + + + + + + + + + + + + + + + + restrictions and legal prerequisites for accessing and using the resource or metadata + + + + + + + + + access constraints applied to assure the protection of privacy or intellectual property, and any special restrictions or limitations on obtaining the resource or metadata + + + + + constraints applied to assure the protection of privacy or intellectual property, and any special restrictions or limitations or warnings on using the resource or metadata + + + + + other restrictions and legal prerequisites for accessing and using the resource or metadata + + + + + + + + + + + + + + + + state, nation or organization to which resource can be released to e.g. NATO unclassified releasable to PfP + + + + + + + + + party responsible for the Release statement + + + + + release statement + + + + + component in determining releasability + + + + + + + + + + + + + + + + limitation(s) placed upon the access or use of the data + + + + + + + + + + + handling restrictions imposed on the resource or metadata for national security or similar security concerns + + + + + + + + + name of the handling restrictions on the resource or metadata + + + + + explanation of the application of the legal constraints or other restrictions and legal prerequisites for obtaining and using the resource or metadata + + + + + name of the classification system + + + + + additional information about the restrictions on handling the resource or metadata + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mco/1.0/mco.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mco/1.0/mco.sch new file mode 100644 index 00000000..26f5720c --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mco/1.0/mco.sch @@ -0,0 +1,221 @@ + + + + + + + + + The releasabilty does not define addresse or statement. + + La possibilité de divulgation ne définit pas de + destinataire ou d'indication. + + + The releasability addressee is defined: + "". + + + Le destinataire dans le cas de possibilité de divulgation + est défini "". + + + + The releasability statement is + "". + + + L'indication concernant la possibilité de divulgation est + "". + + + + + Releasability MUST + specified an addresse or a statement + La possibilité de divulgation + DOIT définir un destinataire ou une indication + + + + + + + + + + + + + + + + + + + + + + + The legal constraint is incomplete. + + La contrainte légale est incomplète. + + + The legal constraint is complete. + + + La contrainte légale est complète. + + + + + + Legal constraint MUST + specified an access, use or other constraint or + use limitation or releasability + Une contrainte légale DOIT + définir un type de contrainte (d'accès, d'utilisation ou autre) + ou bien une limite d'utilisation ou une possibilité de divulgation + + + + + + + + + + + + + + + + + + + + + + + + + + The legal constraint does not specified other constraints + while access and use constraint is set to other restriction. + + La contrainte légale ne précise pas les autres contraintes + bien que les contraintes d'accès ou d'usage indiquent + que d'autres restrictions s'appliquent. + + + The legal constraint other constraints is + "". + + + Les autres contraintes de la contrainte légale sont + "". + + + + + + Legal constraint defining + other restrictions for access or use constraint MUST + specified other constraint. + Une contrainte légale indiquant + d'autres restrictions d'utilisation ou d'accès DOIT + préciser ces autres restrictions + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mco/1.0/mco.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mco/1.0/mco.xsd new file mode 100644 index 00000000..52404d25 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mco/1.0/mco.xsd @@ -0,0 +1,8 @@ + + + Namespace for XML elements <font color="#1f497d">to specify constraints on access to or usage of a resource</font> + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md1/1.0/md1.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md1/1.0/md1.xsd new file mode 100644 index 00000000..8ea3d60d --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md1/1.0/md1.xsd @@ -0,0 +1,9 @@ + + + Namespace <font color="#1f497d">that identifies conformance class that allows extended types (gcx) in metadata records</font> + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md1/1.0/metadataWExtendedType.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md1/1.0/metadataWExtendedType.xsd new file mode 100644 index 00000000..8c0468d7 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md1/1.0/metadataWExtendedType.xsd @@ -0,0 +1,4 @@ + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md2/1.0/md2.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md2/1.0/md2.xsd new file mode 100644 index 00000000..e6673e9f --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md2/1.0/md2.xsd @@ -0,0 +1,15 @@ + + + Namespace <font color="#1f497d">that identifies conformance class that includes user-defined metadata extensions in metadata records</font> + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md2/1.0/metadataWithExtensions.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md2/1.0/metadataWithExtensions.xsd new file mode 100644 index 00000000..cf955fb0 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/md2/1.0/metadataWithExtensions.xsd @@ -0,0 +1,4 @@ + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mda/1.0/mda.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mda/1.0/mda.xsd new file mode 100644 index 00000000..b133837b --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mda/1.0/mda.xsd @@ -0,0 +1,8 @@ + + + Namespace for XML elements <font color="#1f497d">for metadata applications describing aggregated resources with linked metadata records</font> + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mda/1.0/metadataApplication.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mda/1.0/metadataApplication.xsd new file mode 100644 index 00000000..ae523e17 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mda/1.0/metadataApplication.xsd @@ -0,0 +1,200 @@ + + + + + + + + collection of resources + + + + + + + + + + + + + + + + + + + + + identifiable collection of data + + + + + + + + + + + + + + + + + + + collection of associated resources related by their participation in a common initiative + + + + + + + + + + + + + + + + + + + collection of resource associated through inspecified means + + + + + + + + + + + + + + + + + + + collection of associated resources produced from the same sensor platform + + + + + + + + + + + + + + + + + + + collection of associated resources produced to the same production specification + + + + + + + + + + + + + + + + + + + an identifiable asset or means that fulfils a requirement + + + + + + + + + + + + + + + + + + + + + collection of associated resources produced by the same sensor + + + + + + + + + + + + + + + + + + + collection of resource related by a common heritage adhering to a common specification + + + + + + + + + + + + + + + + + + + resource is a service + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/1.0/mdb.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/1.0/mdb.sch new file mode 100644 index 00000000..84921d17 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/1.0/mdb.sch @@ -0,0 +1,264 @@ + + + + + + + + + + + + + The root element must be MD_Metadata. + Modifier l'élément racine du document pour que ce + soit un élément MD_Metadata. + + Root element MD_Metadata found. + Élément racine MD_Metadata défini. + + + + Metadata document root element + Élément racine du document + + A metadata instance document conforming to + this specification SHALL have a root MD_Metadata element + defined in the http://standards.iso.org/iso/19115/-3/mdb/1.0 namespace. + Une fiche de métadonnées conforme au standard + ISO19115-1 DOIT avoir un élément racine MD_Metadata (défini dans l'espace + de nommage http://standards.iso.org/iso/19115/-3/mdb/1.0). + + + + + + + + + + + + + + + + The default locale character encoding is "UTF-8". Current value is + "". + L'encodage ne doit pas être vide. La valeur par défaut est + "UTF-8". La valeur actuelle est "". + + + The characeter encoding is ". + + L'encodage est ". + + + + + Default locale + Langue du document + + The default locale MUST be documented if + not defined by the encoding. The default value for the character + encoding is "UTF-8". + La langue doit être documentée + si non définie par l'encodage. L'encodage par défaut doit être "UTF-8". + + + + + + + + + + + + + + + + + + + + + Specify a name for the metadata scope + (required if the scope code is not "dataset", in that case + ""). + Préciser la description du domaine d'application + (car le document décrit une ressource qui n'est pas un "jeu de données", + la ressource est de type ""). + + + Scope name + "" + is defined for resource with type "". + + La description du domaine d'application + "" + est renseignée pour la ressource de type "". + + + + + Metadata scope Name + Description du domaine d'application + + If a MD_MetadataScope element is present, + the name property MUST have a value if resourceScope is not equal to "dataset" + Si un élément domaine d'application (MD_MetadataScope) + est défini, sa description (name) DOIT avoir une valeur + si ce domaine n'est pas "jeu de données" (ie. "dataset"). + + + + + + + + + + + + + + + + + + + + + Specify a creation date for the metadata record + in the metadata section. + Définir une date de création pour le document + dans la section sur les métadonnées. + + + Metadata creation date: . + + + Date de création du document : . + + + + + Metadata create date + Date de création du document + + A dateInfo property value with data type = "creation" + MUST be present in every MD_Metadata instance. + Tout document DOIT avoir une date de création + définie (en utilisant un élément dateInfo avec un type de date "creation"). + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/1.0/mdb.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/1.0/mdb.xsd new file mode 100644 index 00000000..b38a9aab --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/1.0/mdb.xsd @@ -0,0 +1,14 @@ + + + Wrapper namespace to support Catalog Service implementations + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/1.0/metadataBase.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/1.0/metadataBase.xsd new file mode 100644 index 00000000..024e52e2 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/1.0/metadataBase.xsd @@ -0,0 +1,98 @@ + + + + + + + + + + root entity which defines metadata about a resource or resources + + + + + + + + + + Provides information about an alternatively used localized character string for a linguistic extension + + + + + Identifier and onlineResource for a parent metadata record + + + + + + party responsible for the metadata information + + + + + Date(s) other than creation dateEG: expiry date + + + + + Citation for the standards to which the metadata conforms + + + + + + unique Identifier and onlineResource for alternative metadata + + + + + + online location where the metadata is available + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/2.0/mdb.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/2.0/mdb.sch new file mode 100644 index 00000000..93e41e15 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/2.0/mdb.sch @@ -0,0 +1,264 @@ + + + + + + + + + + + + + The root element must be MD_Metadata. + Modifier l'élément racine du document pour que ce + soit un élément MD_Metadata. + + Root element MD_Metadata found. + Élément racine MD_Metadata défini. + + + + Metadata document root element + Élément racine du document + + A metadata instance document conforming to + this specification SHALL have a root MD_Metadata element + defined in the http://standards.iso.org/iso/19115/-3/mdb/1.0 namespace. + Une fiche de métadonnées conforme au standard + ISO19115-1 DOIT avoir un élément racine MD_Metadata (défini dans l'espace + de nommage http://standards.iso.org/iso/19115/-3/mdb/1.0). + + + + + + + + + + + + + + + + The default locale character encoding is "UTF-8". Current value is + "". + L'encodage ne doit pas être vide. La valeur par défaut est + "UTF-8". La valeur actuelle est "". + + + The characeter encoding is ". + + L'encodage est ". + + + + + Default locale + Langue du document + + The default locale MUST be documented if + not defined by the encoding. The default value for the character + encoding is "UTF-8". + La langue doit être documentée + si non définie par l'encodage. L'encodage par défaut doit être "UTF-8". + + + + + + + + + + + + + + + + + + + + + Specify a name for the metadata scope + (required if the scope code is not "dataset", in that case + ""). + Préciser la description du domaine d'application + (car le document décrit une ressource qui n'est pas un "jeu de données", + la ressource est de type ""). + + + Scope name + "" + is defined for resource with type "". + + La description du domaine d'application + "" + est renseignée pour la ressource de type "". + + + + + Metadata scope Name + Description du domaine d'application + + If a MD_MetadataScope element is present, + the name property MUST have a value if resourceScope is not equal to "dataset" + Si un élément domaine d'application (MD_MetadataScope) + est défini, sa description (name) DOIT avoir une valeur + si ce domaine n'est pas "jeu de données" (ie. "dataset"). + + + + + + + + + + + + + + + + + + + + + Specify a creation date for the metadata record + in the metadata section. + Définir une date de création pour le document + dans la section sur les métadonnées. + + + Metadata creation date: . + + + Date de création du document : . + + + + + Metadata create date + Date de création du document + + A dateInfo property value with data type = "creation" + MUST be present in every MD_Metadata instance. + Tout document DOIT avoir une date de création + définie (en utilisant un élément dateInfo avec un type de date "creation"). + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/2.0/mdb.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/2.0/mdb.xsd new file mode 100644 index 00000000..c8a55883 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/2.0/mdb.xsd @@ -0,0 +1,20 @@ + + + + Wrapper namespace to support Catalog Service implementations + + + + + + + + + + + \ No newline at end of file diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/2.0/metadataBase.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/2.0/metadataBase.xsd new file mode 100644 index 00000000..b934b5b8 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdb/2.0/metadataBase.xsd @@ -0,0 +1,102 @@ + + + + + + + + + + + root entity which defines metadata about a resource or resources + + + + + + + + + + Provides information about an alternatively used localized character string for a linguistic extension + + + + + Identifier and onlineResource for a parent metadata record + + + + + + party responsible for the metadata information + + + + + Date(s) other than creation dateEG: expiry date + + + + + Citation for the standards to which the metadata conforms + + + + + + unique Identifier and onlineResource for alternative metadata + + + + + + online location where the metadata is available + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mds/1.0/mds.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mds/1.0/mds.xsd new file mode 100644 index 00000000..f0e2d406 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mds/1.0/mds.xsd @@ -0,0 +1,22 @@ + + + Namespace <font color="#1f497d">that imports all necessary namespaces to implement a complete metadata record for a dataset or service, not including extended data types or user-defined extensions. </font>Wrapper namespace to support Catalog Service implementations. + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mds/1.0/metadataDataServices.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mds/1.0/metadataDataServices.xsd new file mode 100644 index 00000000..e4de87d8 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mds/1.0/metadataDataServices.xsd @@ -0,0 +1,4 @@ + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdt/1.0/mdt.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdt/1.0/mdt.xsd new file mode 100644 index 00000000..25f2c47e --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdt/1.0/mdt.xsd @@ -0,0 +1,13 @@ + + + + Namespace for XML elements <font color="#1f497d">required to implement data transfer packages with bundled metadata, data files, and registries defining package content</font>. + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdt/1.0/metadataTransfer.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdt/1.0/metadataTransfer.xsd new file mode 100644 index 00000000..2990701f --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mdt/1.0/metadataTransfer.xsd @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mex/1.0/metadataExtension.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mex/1.0/metadataExtension.xsd new file mode 100644 index 00000000..76cbb910 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mex/1.0/metadataExtension.xsd @@ -0,0 +1,156 @@ + + + Method used to represent geographic information in the dataset + + + + + + + + datatype of element or entity + + + + + + + + + + + new metadata element, not found in ISO 19115, which is required to describe geographic data + + + + + + + + + name of the extended metadata element + + + + + definition of the extended element + + + + + obligation of the extended element + + + + + condition under which the extended element is mandatory + + + + + code which identifies the kind of value provided in the extended element + + + + + maximum occurrence of the extended element + + + + + valid values that can be assigned to the extended element + + + + + name of the metadata entity(s) under which this extended metadata element may appear. The name(s) may be standard metadata element(s) or other extended metadata element(s) + + + + + specifies how the extended element relates to other existing elements and entities + + + + + reason for creating the extended element + + + + + name of the person or organisation creating the extended element + + + + + + + + + + + + + + + + + + information describing metadata extensions + + + + + + + + + information about on-line sources containing the community profile name and the extended metadata elements. Information for all new metadata elements + + + + + + + + + + + + + + + + + obligation of the element or entity + + + + + obligation of the element or entity + + + + + element is always required + + + + + element is not required + + + + + element is required when a specific condition is met + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mex/1.0/mex.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mex/1.0/mex.sch new file mode 100644 index 00000000..26a5b478 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mex/1.0/mex.sch @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + Extended element information "" + of type "" + does not specified max occurence. + + L'élément d'extension "" + de type "" + ne précise pas le nombre d'occurences maximum. + + + Extended element information "" + of type "" + has max occurence: "". + + + L'élément d'extension "" + de type "" + a pour nombre d'occurences maximum : "". + + + + + + Extended element information "" + of type "" + does not specified domain value. + + L'élément d'extension "" + de type "" + ne précise pas la valeur du domaine. + + + Extended element information "" + of type "" + has domain value: "". + + + L'élément d'extension "" + de type "" + a pour valeur du domaine : "". + + + + + Extended element information + which are not codelist, enumeration or codelistElement + MUST specified max occurence and domain value + Un élément d'extension qui n'est + ni une codelist, ni une énumération, ni un élément de codelist + DOIT préciser le nombre maximum d'occurences + ainsi que la valeur du domaine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The conditional extended element "" + does not specified the condition. + + L'élément d'extension conditionnel "" + ne précise pas les termes de la condition. + + + The conditional extended element "" + has for condition: "". + + + L'élément d'extension conditionnel "" + a pour condition : "". + + + + + + Extended element information + which are conditional MUST explained the condition + Un élément d'extension conditionnel + DOIT préciser les termes de la condition + + + + + + + + + + + + + + + + + + + + + + + + The extended element "" + of type "" + does not specified a code. + + L'élément d'extension "" + de type "" + ne précise pas de code. + + + The extended element "" + of type "" + has for code: "". + + + L'élément d'extension "" + de type "" + a pour code : "". + + + + + + + + The extended element "" + of type "" + does not specified a concept name. + + L'élément d'extension "" + de type "" + ne précise pas de nom de concept. + + + The extended element "" + of type "" + has for concept name: "". + + + L'élément d'extension "" + de type "" + a pour nom de concept : "". + + + + + + Extended element information + which are codelist, enumeration or codelistElement + MUST specified a code and a concept name + Un élément d'extension qui est + une codelist, une énumération, un élément de codelist + DOIT préciser un code et un nom de concept + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mex/1.0/mex.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mex/1.0/mex.xsd new file mode 100644 index 00000000..6ae71187 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mex/1.0/mex.xsd @@ -0,0 +1,8 @@ + + + Namespace for XML elements <font color="#1f497d">used to document user-defined metadata extensions</font>. + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mmi/1.0/maintenance.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mmi/1.0/maintenance.xsd new file mode 100644 index 00000000..8aa74c00 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mmi/1.0/maintenance.xsd @@ -0,0 +1,76 @@ + + + Status of the dataset or progress of a review + + + + + + + + + frequency with which modifications and deletions are made to the data after it is first produced + + + + + + + + + + + information about the scope and frequency of updating + + + + + + + + + frequency with which changes and additions are made to the resource after the initial resource is completed + + + + + date information associated with maintenance of resource + + + + + maintenance period other than those defined + + + + + information about the scope and extent of maintenance + + + + + information regarding specific requirements for maintaining the resource + + + + + identification of, and means of communicating with, person(s) and organisation(s) with responsibility for maintaining the metadata + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mmi/1.0/mmi.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mmi/1.0/mmi.sch new file mode 100644 index 00000000..cebf4807 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mmi/1.0/mmi.sch @@ -0,0 +1,80 @@ + + + + + + + + + + The maintenance information does not define update frequency. + + L'information sur la maintenance ne définit pas de fréquence de mise à jour. + + + The update frequency is "". + + + La fréquence de mise à jour est "". + + + + The user defined update frequency is + "". + + + La fréquence de mise à jour définie par l'utilisateur est + "". + + + + + Maintenance information MUST + specified an update frequency + L'information sur la maintenance + DOIT définir une fréquence de mise à jour + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mmi/1.0/mmi.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mmi/1.0/mmi.xsd new file mode 100644 index 00000000..3bd492f9 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mmi/1.0/mmi.xsd @@ -0,0 +1,8 @@ + + + Namespace for XML elements <font color="#1f497d">used to document the maintenance history and scheduling for a resource</font>. + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mpc/1.0/mpc.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mpc/1.0/mpc.xsd new file mode 100644 index 00000000..3d108f0e --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mpc/1.0/mpc.xsd @@ -0,0 +1,8 @@ + + + Namespace for XML elements <font color="#1f497d">used to document a portrayal catalogue associated with a resource that specifies how to visualize the resource content.</font> + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mpc/1.0/portrayalCatalogue.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mpc/1.0/portrayalCatalogue.xsd new file mode 100644 index 00000000..3983c156 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mpc/1.0/portrayalCatalogue.xsd @@ -0,0 +1,31 @@ + + + + + + + + information identifying the portrayal catalogue used + + + + + + + + + bibliographic reference to the portrayal catalogue cited + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/content.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/content.xsd new file mode 100644 index 00000000..7b8c049a --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/content.xsd @@ -0,0 +1,416 @@ + + + + + + + + + + + + + + + + type of information represented by the value + + + + + + + + + + + + + + + + + range of wavelengths in the electromagnetic spectrum + + + + + + + + + + + + wavelength at which the response is the highest + + + + + number of discrete numerical values in the grid data + + + + + + + + + + + + + + + + description of the content of a resource. + +Note in 19115-3 implementation, this class is implemented by abstract class _ContentInformation in the Abstract Common Classes package + + + + + + + + + + + + + + + + + + + specific type of information represented in the cell + + + + + + + + + + + details about the content of a resource + + + + + + + + + description of the attribute described by the measurement value + + + + + Code and codespace that identifies the level of processing that has been applied to the resource + + + + + + + + + + + + + + + + + a catalogue of feature types + + + + + + + + + the catalogue of feature types, attribution, operations, and relationships used by the resource + + + + + + + + + + + + + + + + information identifying the feature catalogue or the conceptual schema + + + + + + + + + indication of whether or not the cited feature catalogue complies with ISO 19110 + + + + + language(s) used within the catalogue + + + + + indication of whether or not the feature catalogue is included with the resource + + + + + subset of feature types from cited feature catalogue occurring in dataset + + + + + complete bibliographic reference to one or more external feature catalogues + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + information about an image's suitability for use + + + + + + + + + illumination elevation measured in degrees clockwise from the target plane at intersection of the optical line of sight with the Earth's surface. For images from a scanning device, refer to the centre pixel of the image + + + + + illumination azimuth measured in degrees clockwise from true north at the time the image is taken. For images from a scanning device, refer to the centre pixel of the image + + + + + conditions affected the image + + + + + code in producers code space that specifies the image quality + + + + + area of the dataset obscured by clouds, expressed as a percentage of the spatial extent + + + + + count of the number of lossy compression cycles performed on the image + + + + + indication of whether or not triangulation has been performed upon the image + + + + + indication of whether or not the radiometric calibration information for generating the radiometrically calibrated standard data product is available + + + + + indication of whether or not constants are available which allow for camera calibration corrections + + + + + indication of whether or not Calibration Reseau information is available + + + + + indication of whether or not lens aberration correction information is available + + + + + + + + + + + + + + + + code which indicates conditions which may affect the image + + + + + + + + + + + information on the range of attribute values + + + + + + + + + number that uniquely identifies instances of bands of wavelengths on which a sensor operates + + + + + description of the range of a cell measurement value + + + + + identifiers for each attribute included in the resource. These identifiers can be used to provide names for the resource's attribute from a standard set of names + + + + + + + + + + + + + + + + the characteristics of each dimension (layer) included in the resource + + + + + + + + + maximum value of data values in each dimension included in the resource. Restricted to UomLength in the MD_Band class. + + + + + minimum value of data values in each dimension included in the resource. Restricted to UomLength in the MD_Band class. + + + + + units of data in each dimension included in the resource. Note that the type of this is UnitOfMeasure and that it is restricted to UomLength in the MD_Band class. + + + + + scale factor which has been applied to the cell value + + + + + the physical value corresponding to a cell value of zero + + + + + mean value of data values in each dimension included in the resource + + + + + this gives the number of values used in a thematicClassification resource EX:. the number of classes in a Land Cover Type coverage or the number of cells with data in other types of coverages + + + + + standard deviation of data values in each dimension included in the resource + + + + + type of other attribute description (i.e. netcdf/variable in ncml.xsd) + + + + + instance of otherAttributeType that defines attributes not explicitly included in MD_CoverageType + + + + + maximum number of significant bits in the uncompressed representation for the value in each band of each pixel + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/contentInformationImagery.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/contentInformationImagery.xsd new file mode 100644 index 00000000..9432f71b --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/contentInformationImagery.xsd @@ -0,0 +1,185 @@ + + + Name: Content +Position: 5 + + + + + + + + Description: extensions to electromagnetic spectrum wavelength description +shortName: BandExt + + + + + + + + + Description: Designation of criterion for defining maximum and minimum wavelengths for a spectral band +FGDC: Band_Boundry_Definition +Position: 1 +shortName: bBndDef + + + + + Description: Smallest distance between which separate points can be distinguished, as specified in instrument design +FGDC: Nominal_Spatial_Resolution +Position: 4 +shortName: bndRes + + + + + Description: transform function to be used when scaling a physical value for a given element +shortName: scalXfrFunc + + + + + Description: polarisation of the transmitter or detector +shortName: polarisation + + + + + Description: polarisation of the transmitter or detector +shortName: polarisation + + + + + + + + + + + + + + + + Description: Designation of criterion for defining maximum and minimum wavelengths for a spectral band +FGDC: Band_Boundry_Definition +shortName: BndDef + + + + + + + + + + + Description: information about the content of a coverage, including the description of specific range elements +shortName: CCovDesc + + + + + + + + + + + + + + + + + + + + + Description: information about the content of an image, including the description of specific range elements +shortName: ICovDesc + + + + + + + + + + + + + + + + + + + + + Description: polarisation of the antenna relative to the waveform +shortName: PolarOrienCode + + + + + + + + + + + Description: description of specific range elements +shortName: RgEltDesc + + + + + + + + + Description: designation associated with a set of range elements +shortName: rgEltName + + + + + Description: description of a set of specific range elements +shortName: rgEltDef + + + + + Description: specific range elements, i.e. range elements associated with a name and definition defining their meaning +shortName: rgElt + + + + + + + + + + + + + + + + Description: transform function to be used when scaling a physical value for a given element +shortName: XfrFuncTypeCode + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/mrc.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/mrc.sch new file mode 100644 index 00000000..198bc950 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/mrc.sch @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + The sample dimension does not provide max, min or mean value. + La dimension ne précise pas de valeur maximum ou minimum ni de moyenne. + + + The sample dimension max value is + "". + + + La valeur maximum de la dimension de l'échantillon est + "". + + + + The sample dimension min value is + "". + + + La valeur minimum de la dimension de l'échantillon est + "". + + + + The sample dimension mean value is + "". + + + La valeur moyenne de la dimension de l'échantillon est + "". + + + + + Sample dimension MUST provide a max, + a min or a mean value + La dimension de l'échantillon DOIT préciser + une valeur maximum, une valeur minimum ou une moyenne + + + + + + + + + + + + + + + + + + + + + + + The band defined a bound without unit. + La bande définit une borne minimum et/ou maximum + sans préciser d'unité. + + + The band bound [-] unit is + "". + + + L'unité de la borne [-] est + "". + + + + + Band MUST specified bounds units + when a bound max or bound min is defined + Une bande DOIT préciser l'unité + lorsqu'une borne maximum ou minimum est définie + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/mrc.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/mrc.xsd new file mode 100644 index 00000000..c74e4ad2 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/1.0/mrc.xsd @@ -0,0 +1,11 @@ + + + Namespace for XML elements <font color="#1f497d">used to document schema and amount of content in a structured resource.</font> + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/2.0/content.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/2.0/content.xsd new file mode 100644 index 00000000..831b35c6 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/2.0/content.xsd @@ -0,0 +1,419 @@ + + + + + + + + + + + + + + + + + type of information represented by the value + + + + + + + + + + + + + + + + + range of wavelengths in the electromagnetic spectrum + + + + + + + + + + + + wavelength at which the response is the highest + + + + + number of discrete numerical values in the grid data + + + + + + + + + + + + + + + + description of the content of a resource. + +Note in 19115-3 implementation, this class is implemented by abstract class _ContentInformation in the Abstract Common Classes package + + + + + + + + + + + + + + + + + + + specific type of information represented in the cell + + + + + + + + + + + details about the content of a resource + + + + + + + + + description of the attribute described by the measurement value + + + + + Code and codespace that identifies the level of processing that has been applied to the resource + + + + + + + + + + + + + + + + + a catalogue of feature types + + + + + + + + + the catalogue of feature types, attribution, operations, and relationships used by the resource + + + + + + + + + + + + + + + + information identifying the feature catalogue or the conceptual schema + + + + + + + + + indication of whether or not the cited feature catalogue complies with ISO 19110 + + + + + language(s) used within the catalogue + + + + + indication of whether or not the feature catalogue is included with the resource + + + + + subset of feature types from cited feature catalogue occurring in dataset + + + + + complete bibliographic reference to one or more external feature catalogues + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + information about an image's suitability for use + + + + + + + + + illumination elevation measured in degrees clockwise from the target plane at intersection of the optical line of sight with the Earth's surface. For images from a scanning device, refer to the centre pixel of the image + + + + + illumination azimuth measured in degrees clockwise from true north at the time the image is taken. For images from a scanning device, refer to the centre pixel of the image + + + + + conditions affected the image + + + + + code in producers code space that specifies the image quality + + + + + area of the dataset obscured by clouds, expressed as a percentage of the spatial extent + + + + + count of the number of lossy compression cycles performed on the image + + + + + indication of whether or not triangulation has been performed upon the image + + + + + indication of whether or not the radiometric calibration information for generating the radiometrically calibrated standard data product is available + + + + + indication of whether or not constants are available which allow for camera calibration corrections + + + + + indication of whether or not Calibration Reseau information is available + + + + + indication of whether or not lens aberration correction information is available + + + + + + + + + + + + + + + + code which indicates conditions which may affect the image + + + + + + + + + + + information on the range of attribute values + + + + + + + + + number that uniquely identifies instances of bands of wavelengths on which a sensor operates + + + + + description of the range of a cell measurement value + + + + + identifiers for each attribute included in the resource. These identifiers can be used to provide names for the resource's attribute from a standard set of names + + + + + + + + + + + + + + + + the characteristics of each dimension (layer) included in the resource + + + + + + + + + maximum value of data values in each dimension included in the resource. Restricted to UomLength in the MD_Band class. + + + + + minimum value of data values in each dimension included in the resource. Restricted to UomLength in the MD_Band class. + + + + + units of data in each dimension included in the resource. Note that the type of this is UnitOfMeasure and that it is restricted to UomLength in the MD_Band class. + + + + + scale factor which has been applied to the cell value + + + + + the physical value corresponding to a cell value of zero + + + + + mean value of data values in each dimension included in the resource + + + + + this gives the number of values used in a thematicClassification resource EX:. the number of classes in a Land Cover Type coverage or the number of cells with data in other types of coverages + + + + + standard deviation of data values in each dimension included in the resource + + + + + type of other attribute description (i.e. netcdf/variable in ncml.xsd) + + + + + instance of otherAttributeType that defines attributes not explicitly included in MD_CoverageType + + + + + maximum number of significant bits in the uncompressed representation for the value in each band of each pixel + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/2.0/contentInformationImagery.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/2.0/contentInformationImagery.xsd new file mode 100644 index 00000000..9af6d006 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/2.0/contentInformationImagery.xsd @@ -0,0 +1,171 @@ + + + + + + + + + + Description: extensions to electromagnetic spectrum wavelength description shortName: BandExt + + + + + + + + + Description: Designation of criterion for defining maximum and minimum wavelengths for a spectral band FGDC: Band_Boundry_Definition Position: 1 shortName: bBndDef + + + + + Description: Smallest distance between which separate points can be distinguished, as specified in instrument design FGDC: Nominal_Spatial_Resolution Position: 4 shortName: bndRes + + + + + Description: transform function to be used when scaling a physical value for a given element shortName: scalXfrFunc + + + + + Description: polarisation of the transmitter or detector shortName: polarisation + + + + + Description: polarisation of the transmitter or detector shortName: polarisation + + + + + Description: polarisation of the transmitter or detector shortName: polarisation + + + + + + + + + + + + + + + + Description: Designation of criterion for defining maximum and minimum wavelengths for a spectral band FGDC: Band_Boundry_Definition shortName: BndDef + + + + + + + + + + + Description: information about the content of a coverage, including the description of specific range elements shortName: CCovDesc + + + + + + + + + + + + + + + + + + + + + Description: information about the content of an image, including the description of specific range elements shortName: ICovDesc + + + + + + + + + + + + + + + + + + + + + Description: polarisation of the antenna relative to the waveform shortName: PolarOrienCode + + + + + + + + + + + Description: description of specific range elements shortName: RgEltDesc + + + + + + + + + Description: designation associated with a set of range elements shortName: rgEltName + + + + + Description: description of a set of specific range elements shortName: rgEltDef + + + + + Description: specific range elements, i.e. range elements associated with a name and definition defining their meaning shortName: rgElt + + + + + + + + + + + + + + + + Description: transform function to be used when scaling a physical value for a given element shortName: XfrFuncTypeCode + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/2.0/mrc.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/2.0/mrc.xsd new file mode 100644 index 00000000..c50b59d1 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrc/2.0/mrc.xsd @@ -0,0 +1,11 @@ + + + Namespace for XML elements <font color="#1f497d">used to document schema and amount of content in a structured resource.</font> + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrd/1.0/distribution.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrd/1.0/distribution.xsd new file mode 100644 index 00000000..ddcf45b6 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrd/1.0/distribution.xsd @@ -0,0 +1,267 @@ + + + + + + + + + + technical means and media by which a resource is obtained from the distributor + + + + + + + + + tiles, layers, geographic areas, etc., in which data is available NOTE: unitsOfDistribution applies to both onLine and offLine distributions + + + + + estimated size of a unit in the specified transfer format, expressed in megabytes. The transfer size is > 0.0 + + + + + information about online sources from which the resource can be obtained + + + + + information about offline media on which the resource can be obtained + + + + + rate of occurrence of distribution + + + + + format of distribution + + + + + + + + + + + + + + + + information about the distributor of and options for obtaining the resource + + + + + + + + + + + + + + + + + + + + + + + + information about the distributor + + + + + + + + + party from whom the resource may be obtained. This list need not be exhaustive + + + + + + + + + + + + + + + + + + + description of the computer language construct that specifies the representation of data objects in a record, file, message, storage device or transmission channel + + + + + + + + + citation/URL of the specification for the format + + + + + amendment number of the format version + + + + + recommendations of algorithms or processes that can be applied to read or expand resources to which compression techniques have been applied + + + + + medium used by the format + + + + + + + + + + + + + + + + + information about the media on which the resource can be distributed + + + + + + + + + name of the medium on which the resource can be received + + + + + density at which the data is recorded + + + + + units of measure for the recording density + + + + + number of items in the media identified + + + + + method used to write to the medium + + + + + description of other limitations or requirements for using the medium + + + + + + + + + + + + + + + + + method used to write to the medium + + + + + + + + + + + common ways in which the resource may be obtained or received, and related instructions and fee information + + + + + + + + + fees and terms for retrieving the resource. Include monetary units (as specified in ISO 4217) + + + + + date and time when the resource will be available + + + + + general instructions, terms and services provided by the distributor + + + + + typical turnaround time for the filling of an order + + + + + description of the order options record + + + + + request/purchase choices + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrd/1.0/mrd.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrd/1.0/mrd.sch new file mode 100644 index 00000000..af6af8e6 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrd/1.0/mrd.sch @@ -0,0 +1,55 @@ + + + + + + + + The medium define a density without unit. + La densité du média est définie sans unité. + + + Medium density is "" (unit: + ""). + + + La densité du média est "" (unité : + ""). + + + + + Medium having density MUST specified density units + Un média précisant une densité DOIT préciser l'unité + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrd/1.0/mrd.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrd/1.0/mrd.xsd new file mode 100644 index 00000000..06ee7fe2 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrd/1.0/mrd.xsd @@ -0,0 +1,8 @@ + + + Namespace for XML elements <font color="#1f497d">used to specify how various representations(distributions) of a resource can be obtained</font>. + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mri/1.0/identification.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mri/1.0/identification.xsd new file mode 100644 index 00000000..b9d42e46 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mri/1.0/identification.xsd @@ -0,0 +1,517 @@ + + + + + + + + + + justification for the correlation of two resources + + + + + + + + + + + type of aggregation activity in which resources are related + + + + + + + + + + + associated resource information NOTE: An associated resource is a dataset composed of a collection of datasets + + + + + + + + + citation information about the associated resource + + + + + type of relation between the resources + + + + + type of initiative under which the associated resource was produced NOTE: the activity that resulted in the associated resource + + + + + reference to the metadata of the associated resource + + + + + + + + + + + + + + + + information required to identify a resource + + + + + + + + + + + description of the resource in the producer's processing environment, including items such as the software, the computer operating system, file name, and the dataset size + + + + + any other descriptive information about the resource + + + + + + + + + + + + + + + + basic information required to uniquely identify a resource or resources + + + + + + + + + citation for the resource(s) + + + + + brief narrative summary of the content of the resource(s) + + + + + summary of the intentions with which the resource(s) was developed + + + + + recognition of those who contributed to the resource(s) + + + + + status of the resource(s) + + + + + identification of, and means of communication with, person(s) and organisation(s) associated with the resource(s) + + + + + method used to spatially represent geographic information + + + + + factor which provides a general understanding of the density of spatial data in the resource + + + + + resolution of the resource with respect to time + + + + + main theme(s) of the resource + + + + + spatial and temporal extent of the resource + + + + + other documentation associated with the resource + + + + + code that identifies the level of processing in the producers coding system of a resource eg. NOAA level 1B + + + + + + + + + + + + + + + + + + + + + + + specification of a class to categorize keywords in a domain-specific vocabulary that has a binding to a formal ontology + + + + + + + + + character string to label the keyword category in natural language + + + + + URI of concept in ontology specified by the ontology attribute; this concept is labeled by the className: CharacterString. + + + + + a reference that binds the keyword class to a formal conceptualization of a knowledge domain for use in semantic processingNOTE: Keywords in the associated MD_Keywords keyword list must be within the scope of this ontology + + + + + + + + + + + + + + + + methods used to group similar keywords + + + + + + + + + + + keywords, their type and reference source NOTE: When the resource described is a service, one instance of MD_Keyword shall refer to the service taxonomy defined in ISO 19119, 8.3) + + + + + + + + + commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject + + + + + subject matter used to group similar keywords + + + + + name of the formally registered thesaurus or a similar authoritative source of keywords + + + + + + + + + + + + + + + + + derived from ISO 19103 Scale where MD_RepresentativeFraction.denominator = 1 / Scale.measure And Scale.targetUnits = Scale.sourceUnits + + + + + + + + + the number below the line in a vulgar fraction + + + + + + + + + + + + + + + + level of detail expressed as a scale factor, a distance or an angle + + + + + + + + + level of detail expressed as the scale of a comparable hardcopy map or chart + + + + + horizontal ground sample distance + + + + + Vertical sampling distance + + + + + Angular sampling measure + + + + + brief textual description of the spatial resolution of the resource + + + + + + + + + + + + + + + + high-level geographic data thematic classification to assist in the grouping and search of available geographic data sets. Can be used to group keywords as well. Listed examples are not exhaustive. NOTE: It is understood there are overlaps between general categories and the user is encouraged to select the one most appropriate. + + + + + high-level geographic data thematic classification to assist in the grouping and search of available geographic data sets. Can be used to group keywords as well. Listed examples are not exhaustive. NOTE: It is understood there are overlaps between general categories and the user is encouraged to select the one most appropriate. + + + + + rearing of animals and/or cultivation of plantsExamples: agriculture, irrigation, aquaculture, plantations, herding, pests and diseases affecting crops and livestock + + + + + flora and/or fauna in natural environment Examples: wildlife, vegetation, biological sciences, ecology, wilderness, sealife, wetlands, habitat + + + + + legal land descriptions Examples: political and administrative boundaries + + + + + processes and phenomena of the atmosphere Examples: cloud cover, weather, climate, atmospheric conditions, climate change, precipitation + + + + + economic activities, conditions and employment Examples: production, labour, revenue, commerce, industry, tourism and ecotourism, forestry, fisheries, commercial or subsistence hunting, exploration and exploitation of resources such as minerals, oil and gas + + + + + height above or below a vertical datumExamples: altitude, bathymetry, digital elevation models, slope, derived products + + + + + environmental resources, protection and conservation Examples: environmental pollution, waste storage and treatment, environmental impact assessment, monitoring environmental risk, nature reserves, landscape + + + + + information pertaining to earth sciences Examples: geophysical features and processes, geology, minerals, sciences dealing with the composition, structure and origin of the earth's rocks, risks of earthquakes, volcanic activity, landslides, gravity information, soils, permafrost, hydrogeology, erosion + + + + + health, health services, human ecology, and safety Examples: disease and illness, factors affecting health, hygiene, substance abuse, mental and physical health, health services + + + + + base maps Examples: land cover, topographic maps, imagery, unclassified images, annotations + + + + + military bases, structures, activities Examples: barracks, training grounds, military transportation, information collection + + + + + inland water features, drainage systems and their characteristics Examples: rivers and glaciers, salt lakes, water utilization plans, dams, currents, floods, water quality, hydrographic charts + + + + + positional information and services Examples: addresses, geodetic networks, control points, postal zones and services, place names + + + + + features and characteristics of salt water bodies (excluding inland waters) Examples: tides, tidal waves, coastal information, reefs + + + + + information used for appropriate actions for future use of the land Examples: land use maps, zoning maps, cadastral surveys, land ownership + + + + + characteristics of society and cultures Examples: settlements, anthropology, archaeology, education, traditional beliefs, manners and customs, demographic data, recreational areas and activities, social impact assessments, crime and justice, census information + + + + + man-made construction Examples: buildings, museums, churches, factories, housing, monuments, shops, towers + + + + + means and aids for conveying persons and/or goods Examples: roads, airports/airstrips, shipping routes, tunnels, nautical charts, vehicle or vessel location, aeronautical charts, railways + + + + + energy, water and waste systems and communications infrastructure and servicesExamples: hydroelectricity, geothermal, solar and nuclear sources of energy, water purification and distribution, sewage collection and disposal, electricity and gas distribution, data communication, telecommunication, radio, communication networks + + + + + region more than 100 km above the surface of the Earth + + + + + + + + + + + + + + brief description of ways in which the resource(s) is/are currently or has been used + + + + + + + + + brief description of the resource and/or resource series usage + + + + + date and time of the first use or range of uses of the resource and/or resource series + + + + + applications, determined by the user for which the resource and/or resource series is not suitable + + + + + identification of and means of communicating with person(s) and organisation(s) using the resource(s) + + + + + response to the user-determined limitationsE.G.. 'this has been fixed in version x' + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mri/1.0/mri.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mri/1.0/mri.sch new file mode 100644 index 00000000..2b0f0d90 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mri/1.0/mri.sch @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + + + + The dataset MUST provide a + geographic description or a bounding box. + Le jeu de données DOIT être décrit par + une description géographique ou une emprise. + + The dataset geographic description is: + "". + La description géographique du jeu de données est + "". + + + The dataset geographic bounding box is: + [W:, + S:], + [E:, + N:], + . + L'emprise géographique du jeu de données est + [W:, + S:], + [E:, + N:] + . + + + + Dataset extent + Emprise du jeu de données + + + + + + + + + + + + + + + + + + + + + + A topic category MUST be specified for + dataset or series. + Un thème principal (ISO) DOIT être défini quand + la ressource est un jeu de donnée ou une série. + + Number of topic category identified: + . + Nombre de thèmes : + . + + + + + Topic category for dataset and series + Thème principal d'un jeu de données ou d'une série + + + + + + + + + + + + + + + + + + When a resource is associated, a name or a metadata + reference MUST be specified. + Lorsqu'une resource est associée, un nom ou une + référence à une fiche DOIT être défini. + + The resource "" + is associated. + La ressource "" + est associée. + + + + Associated resource name + Nom ou référence à une ressource associée + + + + + + + + + + + + + + + + + + + + + + + + + + Resource language MUST be defined when the resource + includes textual information. + La langue de la resource DOIT être renseignée + lorsque la ressource contient des informations textuelles. + + Number of resource language: + . + Nombre de langues de la ressource : + . + + + + Resource language + Langue de la ressource + + + + + + + + + + + + + + + + + + + + + + A service metadata SHALL refer to the service + taxonomy defined in ISO19119 defining one or more value in the + keyword section. + Une métadonnée de service DEVRAIT référencer + un type de service tel que défini dans l'ISO19119 dans la + section mot clé. + + Number of service taxonomy specified: + . + Nombre de types de service : + . + + + + Service taxonomy + Taxonomie des services + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mri/1.0/mri.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mri/1.0/mri.xsd new file mode 100644 index 00000000..80564bd5 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mri/1.0/mri.xsd @@ -0,0 +1,9 @@ + + + Namespace for XML elements <font color="#1f497d">used to document basic metadata properties of a described resource</font> + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/1.0/lineage.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/1.0/lineage.xsd new file mode 100644 index 00000000..617d3e6f --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/1.0/lineage.xsd @@ -0,0 +1,147 @@ + + + + + + + + + information about the events or source data used in constructing the data specified by the scope or lack of knowledge about lineage + + + + + + + + + general explanation of the data producer's knowledge about the lineage of a resource + + + + + type of resource and/or extent to which the lineage information applies + + + + + + + + + + + + + + + + + + + information about an event or transformation in the life of a resource including the process used to maintain the resource + + + + + + + + + description of the event, including related parameters or tolerances + + + + + requirement or purpose for the process step + + + + + date, time, range or period of process step + + + + + identification of, and means of communication with, person(s) and organisation(s) associated with the process step + + + + + process step documentation + + + + + type of resource and/or extent to which the process step applies + + + + + + + + + + + + + + + + + information about the source resource used in creating the data specified by the scope + + + + + + + + + detailed description of the level of the source resource + + + + + level of detail expressed as a scale factor, a distance or an angle + + + + + spatial reference system used by the source resource + + + + + recommended reference to be used for the source resource + + + + + identifier and link to source metadata + + + + + type of resource and/or extent of the source + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/1.0/lineageImagery.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/1.0/lineageImagery.xsd new file mode 100644 index 00000000..e5b186e0 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/1.0/lineageImagery.xsd @@ -0,0 +1,236 @@ + + + + + + + + Description: Details of the methodology by which geographic information was derived from the instrument readings +FGDC: Algorithm_Information +shortName: Algorithm + + + + + + + + + Description: information identifying the algorithm and version or date +FGDC: Algorithm_Identifiers +Position: 1 +shortName: algId + + + + + Description: information describing the algorithm used to generate the data +FGDC: Algorithm_Description +Position: 2 +shortName: algDesc + + + + + + + + + + + + + + + + Description: Distance between adjacent pixels +shortName: nomRes + + + + + + + + + Description: Distance between adjacent pixels in the scan plane +shortName: scanRes + + + + + Description: Distance between adjacent pixels in the object space +shortName: groundRes + + + + + + + + + + + + + + + + Description: Information about an event or transformation in the life of the dataset including details of the algorithm and software used for processing +FGDC: +shortName: DetailProcStep + + + + + + + + + + + + + + + + + + + + + + + Description: Report of what occured during the process step +shortName: ProcStepRep + + + + + + + + + Description: Name of the processing report +shortName: procRepName + + + + + Description: Textual description of what occurred during the process step +shortName: procRepDesc + + + + + Description: Type of file that contains that processing report +shortName: procRepFilTyp + + + + + + + + + + + + + + + + Description: Comprehensive information about the procedure(s), process(es) and algorithm(s) applied in the process step +shortName: Procsg + + + + + + + + + + Description: Information to identify the processing package that produced the data +FGDC: Processing_Identifiers +Position: 1 +shortName: procInfoId + + + + + Description: Reference to document describing processing software +FGDC: Processing_Software_Reference +Position: 2 +shortName: procInfoSwRef + + + + + Description: Additional details about the processing procedures +FGDC: Processing_Procedure_Description +Position: 3 +shortName: procInfoDesc + + + + + Description: Reference to documentation describing the processing +FGDC: Processing_Documentation +Position: 4 +shortName: procInfoDoc + + + + + Description: Parameters to control the processing operations, entered at run time +FGDC: Command_Line_Processing_Parameter +Position: 5 +shortName: procInfoParam + + + + + + + + + + + + + + + + Description: information on source of data sets for processing step +shortName: SrcDataset + + + + + + + + + Description: Processing level of the source data +shortName: procLevel + + + + + Description: Distance between two adjacent pixels +shortName: procResol + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/1.0/mrl.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/1.0/mrl.xsd new file mode 100644 index 00000000..a174ebe7 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/1.0/mrl.xsd @@ -0,0 +1,9 @@ + + + Namespace for XML elements <font color="#1f497d">used to document the lineage (provenance) of a resource</font>. + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/2.0/lineage.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/2.0/lineage.xsd new file mode 100644 index 00000000..1a1cb3bc --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/2.0/lineage.xsd @@ -0,0 +1,147 @@ + + + + + + + + + information about the events or source data used in constructing the data specified by the scope or lack of knowledge about lineage + + + + + + + + + general explanation of the data producer's knowledge about the lineage of a resource + + + + + type of resource and/or extent to which the lineage information applies + + + + + + + + + + + + + + + + + + + information about an event or transformation in the life of a resource including the process used to maintain the resource + + + + + + + + + description of the event, including related parameters or tolerances + + + + + requirement or purpose for the process step + + + + + date, time, range or period of process step + + + + + identification of, and means of communication with, person(s) and organisation(s) associated with the process step + + + + + process step documentation + + + + + type of resource and/or extent to which the process step applies + + + + + + + + + + + + + + + + + information about the source resource used in creating the data specified by the scope + + + + + + + + + detailed description of the level of the source resource + + + + + level of detail expressed as a scale factor, a distance or an angle + + + + + spatial reference system used by the source resource + + + + + recommended reference to be used for the source resource + + + + + identifier and link to source metadata + + + + + type of resource and/or extent of the source + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/2.0/lineageImagery.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/2.0/lineageImagery.xsd new file mode 100644 index 00000000..9977d176 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/2.0/lineageImagery.xsd @@ -0,0 +1,312 @@ + + + + + + + + + + Description: Details of the methodology by which geographic information was derived from the instrument readings FGDC: Algorithm_Information shortName: Algorithm + + + + + + + + + Description: information identifying the algorithm and version or date FGDC: Algorithm_Identifiers Position: 1 shortName: algId + + + + + Description: information describing the algorithm used to generate the data FGDC: Algorithm_Description Position: 2 shortName: algDesc + + + + + + + + + + + + + + + + Description: Distance between adjacent pixels shortName: nomRes + + + + + + + + + Description: Distance between adjacent pixels in the scan plane shortName: scanRes + + + + + Description: Distance between adjacent pixels in the object space shortName: groundRes + + + + + + + + + + + + + + + + Description: Information about an event or transformation in the life of the dataset including details of the algorithm and software used for processing FGDC: shortName: DetailProcStep + + + + + + + + + + + + + + + + + + + + + + + Description: Report of what occured during the process step shortName: ProcStepRep + + + + + + + + + Description: Name of the processing report shortName: procRepName + + + + + Description: Textual description of what occurred during the process step shortName: procRepDesc + + + + + Description: Type of file that contains that processing report shortName: procRepFilTyp + + + + + + + + + + + + + + + + Description: Comprehensive information about the procedure(s), process(es) and algorithm(s) applied in the process step shortName: Procsg + + + + + + + + + + Description: Information to identify the processing package that produced the data FGDC: Processing_Identifiers Position: 1 shortName: procInfoId + + + + + Description: Reference to document describing processing software FGDC: Processing_Software_Reference Position: 2 shortName: procInfoSwRef + + + + + Description: Additional details about the processing procedures FGDC: Processing_Procedure_Description Position: 3 shortName: procInfoDesc + + + + + Description: Reference to documentation describing the processing FGDC: Processing_Documentation Position: 4 shortName: procInfoDoc + + + + + Description: Parameters to control the processing operations, entered at run time FGDC: Command_Line_Processing_Parameter Position: 5 shortName: procInfoParam + + + + + type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO) + + + + + type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO) + + + + + instance of otherPropertyType that defines attributes not explicitly included in LE_Processing + + + + + + + + + + + + + + + + Description: information on source of data sets for processing step shortName: SrcDataset + + + + + + + + + Description: Processing level of the source data shortName: procLevel + + + + + Description: Distance between two adjacent pixels shortName: procResol + + + + + + + + + + + + + + + + This was added as part of the 19115-2 Revision + + + + + + + + + the name, as used by the process for this parameter + + + + + indication if the parameter is an input to the service, an output or both + + + + + a narrative explanation of the role of the parameter + + + + + indication if the parameter is required + + + + + indication if more than one value of the parameter may be provided + + + + + type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO) + + + + + instance of otherPropertyType that defines attributes not explicitly included in LE_Processing + + + + + xxx + + + + + + + + + + + + + + + + + direction of parameter (in, out, in/out) + + + + + direction of parameter (in, out, in/out) + + + + + the parameter is an input parameter to the process + + + + + the parameter is an output parameter to the process + + + + + the parameter is both an input and output parameter to the process + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/2.0/mrl.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/2.0/mrl.xsd new file mode 100644 index 00000000..21f67123 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrl/2.0/mrl.xsd @@ -0,0 +1,11 @@ + + + + Namespace for XML elements <font color="#1f497d">used to document the lineage (provenance) of a resource</font>. + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrs/1.0/mrs.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrs/1.0/mrs.sch new file mode 100644 index 00000000..ec49bdaa --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrs/1.0/mrs.sch @@ -0,0 +1,16 @@ + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrs/1.0/mrs.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrs/1.0/mrs.xsd new file mode 100644 index 00000000..8ce0fef9 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrs/1.0/mrs.xsd @@ -0,0 +1,8 @@ + + + Namespace for XML elements <font color="#1f497d">used to document the spatial reference system used to geolocate information content of a resource</font> + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrs/1.0/referenceSystem.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrs/1.0/referenceSystem.xsd new file mode 100644 index 00000000..1126cade --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/mrs/1.0/referenceSystem.xsd @@ -0,0 +1,47 @@ + + + + + + + + information about the reference system + + + + + + + + + identifier and codespace for reference systeme.g. EPSG::4326 + + + + + type of reference system identifiede.g. geographic2D + + + + + + + + + + + + + + + + defines type of reference system used + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/1.0/msr.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/1.0/msr.xsd new file mode 100644 index 00000000..49f75f92 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/1.0/msr.xsd @@ -0,0 +1,10 @@ + + + Namespace for XML elements <font color="#1f497d">used to document the encoding scheme used to represent geolocation in the content of a resource</font>. + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/1.0/spatialRepresentation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/1.0/spatialRepresentation.xsd new file mode 100644 index 00000000..a91be9da --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/1.0/spatialRepresentation.xsd @@ -0,0 +1,375 @@ + + + Frequency with which modifications and deletions are made to the data after it is first produced + + + + + + + + + + digital mechanism used to represent spatial information + + + + + + + + + + + + + + + + + + + + + + code indicating the geometry represented by the grid cell value + + + + + + + + + + + axis properties + + + + + + + + + name of the axis + + + + + number of elements along the axis + + + + + + degree of detail in the grid dataset + + + + + enhancement/modifier of the dimension name EX for other time dimension 'runtime' or dimensionName = 'column' dimensionTitle = 'Longitude' + + + + + Description of the axis + + + + + + + + + + + + + + + + name of the dimension + + + + + + + + + + + name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset + + + + + + + + + + + number of objects, listed by geometric object type, used in the dataset + + + + + + + + + name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset + + + + + total number of the point or vector object type occurring in the dataset + + + + + + + + + + + + + + + + grid whose cells are regularly spaced in a geographic (i.e., lat / long) or map coordinate system defined in the Spatial Referencing System (SRS) so that any cell in the grid can be geolocated given its grid coordinate and the grid origin, cell spacing, and orientation + + + + + + + + + indication of whether or not geographic position points are available to test the accuracy of the georeferenced grid data + + + + + description of geographic position points used to test the accuracy of the georeferenced grid data + + + + + earth location in the coordinate system defined by the Spatial Reference System and the grid coordinate of the cells at opposite ends of grid coverage along two diagonals in the grid spatial dimensions. There are four corner points in a georectified grid; at least two corner points along one diagonal are required. The first corner point corresponds to the origin of the grid. + + + + + earth location in the coordinate system defined by the Spatial Reference System and the grid coordinate of the cell halfway between opposite ends of the grid in the spatial dimensions + + + + + point in a pixel corresponding to the Earth location of the pixel + + + + + general description of the transformation + + + + + information about which grid axes are the spatial (map) axes + + + + + + + + + + + + + + + + grid with cells irregularly spaced in any given geographic/map projection coordinate system, whose individual cells can be geolocated using geolocation information supplied with the data but cannot be geolocated from the grid properties alone + + + + + + + + + indication of whether or not control point(s) exists + + + + + indication of whether or not orientation parameters are available + + + + + description of parameters used to describe sensor orientation + + + + + terms which support grid data georeferencing + + + + + reference providing description of the parameters + + + + + + + + + + + + + + + + + information about grid spatial objects in the resource + + + + + + + + + number of independent spatial-temporal axes + + + + + information about spatial-temporal axis properties + + + + + identification of grid data as point or cell + + + + + indication of whether or not parameters for transformation between image coordinates and geographic or map coordinates exist (are available) + + + + + + + + + + + + + + + + point in a pixel corresponding to the Earth location of the pixel + + + + + point in a pixel corresponding to the Earth location of the pixel + + + + + point halfway between the lower left and the upper right of the pixel + + + + + the corner in the pixel closest to the origin of the SRS; if two are at the same distance from the origin, the one with the smallest x-value + + + + + next corner counterclockwise from the lower left + + + + + next corner counterclockwise from the lower right + + + + + next corner counterclockwise from the upper right + + + + + + + + + + + + + degree of complexity of the spatial relationships + + + + + + + + + + + + + information about the vector spatial objects in the resource + + + + + + + + + code which identifies the degree of complexity of the spatial relationships + + + + + information about the geometric objects used in the resource + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/1.0/spatialRepresentationImagery.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/1.0/spatialRepresentationImagery.xsd new file mode 100644 index 00000000..85d33983 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/1.0/spatialRepresentationImagery.xsd @@ -0,0 +1,119 @@ + + + + Name: SpatialRepresentation +Position: 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: extends georectified grid description to include associated checkpoints +shortName: IGeorect + + + + + + + + + + + + + + + + + + + + + Description: Description of information provided in metadata that allows the geographic or map location raster points to be located +FGDC: Georeferencing_Description +shortName: IGeoref + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/2.0/msr.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/2.0/msr.xsd new file mode 100644 index 00000000..7d976f78 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/2.0/msr.xsd @@ -0,0 +1,15 @@ + + + + Namespace for XML elements <font color="#1f497d">used to document the encoding scheme used to represent geolocation in the content of a resource</font>. + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/2.0/spatialRepresentation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/2.0/spatialRepresentation.xsd new file mode 100644 index 00000000..977e64d4 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/2.0/spatialRepresentation.xsd @@ -0,0 +1,381 @@ + + + Frequency with which modifications and deletions are made to the data after it is first produced + + + + + + + + + + digital mechanism used to represent spatial information + + + + + + + + + level and extent of the spatial representation + + + + + + + + + + + + + + + + + + + code indicating the geometry represented by the grid cell value + + + + + + + + + + + axis properties + + + + + + + + + name of the axis + + + + + number of elements along the axis + + + + + + degree of detail in the grid dataset + + + + + enhancement/modifier of the dimension name EX for other time dimension 'runtime' or dimensionName = 'column' dimensionTitle = 'Longitude' + + + + + Description of the axis + + + + + + + + + + + + + + + + name of the dimension + + + + + + + + + + + name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset + + + + + + + + + + + number of objects, listed by geometric object type, used in the dataset + + + + + + + + + name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset + + + + + total number of the point or vector object type occurring in the dataset + + + + + + + + + + + + + + + + grid whose cells are regularly spaced in a geographic (i.e., lat / long) or map coordinate system defined in the Spatial Referencing System (SRS) so that any cell in the grid can be geolocated given its grid coordinate and the grid origin, cell spacing, and orientation + + + + + + + + + indication of whether or not geographic position points are available to test the accuracy of the georeferenced grid data + + + + + description of geographic position points used to test the accuracy of the georeferenced grid data + + + + + earth location in the coordinate system defined by the Spatial Reference System and the grid coordinate of the cells at opposite ends of grid coverage along two diagonals in the grid spatial dimensions. There are four corner points in a georectified grid; at least two corner points along one diagonal are required. The first corner point corresponds to the origin of the grid. + + + + + earth location in the coordinate system defined by the Spatial Reference System and the grid coordinate of the cell halfway between opposite ends of the grid in the spatial dimensions + + + + + point in a pixel corresponding to the Earth location of the pixel + + + + + general description of the transformation + + + + + information about which grid axes are the spatial (map) axes + + + + + + + + + + + + + + + + grid with cells irregularly spaced in any given geographic/map projection coordinate system, whose individual cells can be geolocated using geolocation information supplied with the data but cannot be geolocated from the grid properties alone + + + + + + + + + indication of whether or not control point(s) exists + + + + + indication of whether or not orientation parameters are available + + + + + description of parameters used to describe sensor orientation + + + + + terms which support grid data georeferencing + + + + + reference providing description of the parameters + + + + + + + + + + + + + + + + + information about grid spatial objects in the resource + + + + + + + + + number of independent spatial-temporal axes + + + + + information about spatial-temporal axis properties + + + + + identification of grid data as point or cell + + + + + indication of whether or not parameters for transformation between image coordinates and geographic or map coordinates exist (are available) + + + + + + + + + + + + + + + + point in a pixel corresponding to the Earth location of the pixel + + + + + point in a pixel corresponding to the Earth location of the pixel + + + + + point halfway between the lower left and the upper right of the pixel + + + + + the corner in the pixel closest to the origin of the SRS; if two are at the same distance from the origin, the one with the smallest x-value + + + + + next corner counterclockwise from the lower left + + + + + next corner counterclockwise from the lower right + + + + + next corner counterclockwise from the upper right + + + + + + + + + + + + + degree of complexity of the spatial relationships + + + + + + + + + + + + + information about the vector spatial objects in the resource + + + + + + + + + code which identifies the degree of complexity of the spatial relationships + + + + + information about the geometric objects used in the resource + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/2.0/spatialRepresentationImagery.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/2.0/spatialRepresentationImagery.xsd new file mode 100644 index 00000000..1d1ec882 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/msr/2.0/spatialRepresentationImagery.xsd @@ -0,0 +1,120 @@ + + + + Name: SpatialRepresentation +Position: 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Description: extends georectified grid description to include associated checkpoints +shortName: IGeorect + + + + + + + + + + + + + + + + + + + + + Description: Description of information provided in metadata that allows the geographic or map location raster points to be located +FGDC: Georeferencing_Description +shortName: IGeoref + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.0/serviceInformation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.0/serviceInformation.xsd new file mode 100644 index 00000000..e15245dc --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.0/serviceInformation.xsd @@ -0,0 +1,272 @@ + + + + + + + + + class of information to which the referencing entity applies + + + + + + + + + + + links a given operationName (mandatory attribute of SV_OperationMetadata) with a data set identified by an 'identifier' + + + + + + + + + scoped identifier of the resource in the context of the given service instance NOTE: name of the resources (i.e. dataset) as it is used by a service instance (e.g. layer name or featureTypeName). + + + + + reference to the dataset on which the service operates + + + + + + + + + + + + + + + + + + class of information to which the referencing entity applies + + + + + + + + + + + Operation Chain Information + + + + + + + + + the name, as used by the service for this chain + + + + + a narrative explanation of the services in the chain and resulting output + + + + + + + + + + + + + + + + + describes the signature of one and only one method provided by the service + + + + + + + + + a unique identifier for this interface + + + + + distributed computing platforms on which the operation has been implemented + + + + + free text description of the intent of the operation and the results of the operation + + + + + the name used to invoke this interface within the context of the DCP. The name is identical for all DCPs. + + + + + handle for accessing the service interface + + + + + + + + + + + + + + + + + + parameter information + + + + + + + + + the name, as used by the service for this parameter + + + + + indication if the parameter is an input to the service, an output or both + + + + + a narrative explanation of the role of the parameter + + + + + indication if the parameter is required + + + + + indication if more than one value of the parameter may be provided + + + + + + + + + + + + + + + + class of information to which the referencing entity applies + + + + + class of information to which the referencing entity applies + + + + + the parameter is an input parameter to the service instance + + + + + the parameter is an output parameter to the service instance + + + + + the parameter is both an input and output parameter to the service instance + + + + + + + + + + + + + identification of capabilities which a service provider makes available to a service user through a set of interfaces that define a behaviour - See ISO 19119 for further information + + + + + + + + + a service type name, E.G. 'discovery', 'view', 'download', 'transformation', or 'invoke' + + + + + provide for searching based on the version of serviceType. For example, we may only be interested in OGC Catalogue V1.1 services. If version is maintained as a separate attribute, users can easily search for all services of a type regardless of the version + + + + + information about the availability of the service, including, 'fees' 'planned' 'available date and time' 'ordering instructions' 'turnaround' + + + + + type of coupling between service and associated data (if exists) + + + + + further description of the data coupling in the case of tightly coupled services + + + + + provides a reference to the dataset on which the service operates + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.0/srv.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.0/srv.sch new file mode 100644 index 00000000..2245073f --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.0/srv.sch @@ -0,0 +1,333 @@ + + + + + + + + The service identification does not contain chain or operation. + L'identification du service ne contient ni chaîne d'opérations, ni opération. + + + The service identification contains the following + number of chains: . + and number of operations: . + + L'identification du service contient + le nombre de chaînes d'opérations suivant : . + le nombre d'opérations : . + + + + Service identification MUST contains chain or operations + L'identification du service DOIT contenir des chaînes d'opérations + ou des opérations + + + + + + + + + + + + + + + + + + + + + The service identification MUST specify coupling type + when coupled resource exist + L'identification du service DOIT + définir un type de couplage lorsqu'une ressource est couplée. + + + Number of coupled resources: . + Coupling type: "". + + Nombre de ressources couplées : . + Type de couplage : "". + + + + Service identification MUST specify coupling type + when coupled resource exist + L'identification du service DOIT + définir un type de couplage lorsqu'une ressource est couplée + + + + + + + + + + + + + + + + + + The service identification define operatedDataset. + No operatesOn can be specified. + L'identification du service utilise operatedDataset. + OperatesOn ne peut être utilisé dans ce cas. + + Service identification only use operated dataset. + L'identification du service n'utilise que operatedDataset. + + + + Service identification MUST not use + both operatedDataset and operatesOn + L'identification du service NE DOIT PAS + utiliser en même temps operatedDataset et operatesOn + + + + + + + + + + + + + + + + + The service identification define operatesOn. + No operatedDataset can be specified. + L'identification du service utilise operatesOn. + OperatedDataset ne peut être utilisé dans ce cas. + + The service identification only use operates on. + L'identification du service n'utilise que + des éléments de type operatesOn. + + + + Service identification MUST not use + both operatesOn and operatedDataset + L'identification du service NE DOIT PAS + utiliser en même temps operatesOn et operatedDataset + + + + + + + + + + + + + + + + + + The coupled resource does not contains a resource + nor a resource reference. + La ressource couplée ne contient ni une ressource + ni une référence à une ressource. + + The coupled resource contains a resource or a resource reference. + La ressource couplée contient une ressource ou une référence + à une ressource. + + + + Coupled resource MUST contains + a resource or a resource reference + Une ressource couplée DOIT + définir une ressource ou une référence à une ressource + + + + + + + + + + + + + + + + + + + + + + The coupled resource contains both a resource + and a resource reference. + La ressource couplée utilise à la fois une ressource + et une référence à une ressource. + + The coupled resource contains only resources. + La ressource couplée contient uniquement des ressources. + + + + Coupled resource MUST not use + both resource and resource reference + Une ressource couplée NE DOIT PAS + utiliser en même temps une ressource et une référence + à une ressource + + + + + + + + + + + + + + + + + The coupled resource contains both a resource + and a resource reference. + La ressource couplée utilise à la fois une ressource + et une référence à une ressource. + + The coupled resource contains only resource references. + La ressource couplée contient uniquement des références à des ressources. + + + + Coupled resource MUST not use + both resource and resource reference + Une ressource couplée NE DOIT PAS + utiliser en même temps une ressource et une référence + à une ressource + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.0/srv.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.0/srv.xsd new file mode 100644 index 00000000..9f51fedb --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.0/srv.xsd @@ -0,0 +1,6 @@ + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.1/serviceInformation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.1/serviceInformation.xsd new file mode 100644 index 00000000..b753d40a --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.1/serviceInformation.xsd @@ -0,0 +1,278 @@ + + + + + + + + + + class of information to which the referencing entity applies + + + + + + + + + + + links a given operationName (mandatory attribute of SV_OperationMetadata) with a data set identified by an 'identifier' + + + + + + + + + scoped identifier of the resource in the context of the given service instance NOTE: name of the resources (i.e. dataset) as it is used by a service instance (e.g. layer name or featureTypeName). + + + + + reference to the dataset on which the service operates + + + + + + + + + + + + + + + + + + class of information to which the referencing entity applies + + + + + + + + + + + Operation Chain Information + + + + + + + + + the name, as used by the service for this chain + + + + + a narrative explanation of the services in the chain and resulting output + + + + + + + + + + + + + + + + + describes the signature of one and only one method provided by the service + + + + + + + + + a unique identifier for this interface + + + + + distributed computing platforms on which the operation has been implemented + + + + + free text description of the intent of the operation and the results of the operation + + + + + the name used to invoke this interface within the context of the DCP. The name is identical for all DCPs. + + + + + handle for accessing the service interface + + + + + + + + + + + + + + + + + + + parameter information + + + + + + + + + the name, as used by the service for this parameter + + + + + indication if the parameter is an input to the service, an output or both + + + + + a narrative explanation of the role of the parameter + + + + + indication if the parameter is required + + + + + indication if more than one value of the parameter may be provided + + + + + + + + + + + + + + + + class of information to which the referencing entity applies + + + + + class of information to which the referencing entity applies + + + + + the parameter is an input parameter to the service instance + + + + + the parameter is an output parameter to the service instance + + + + + the parameter is both an input and output parameter to the service instance + + + + + + + + + + + + + identification of capabilities which a service provider makes available to a service user through a set of interfaces that define a behaviour - See ISO 19119 for further information + + + + + + + + + a service type name, E.G. 'discovery', 'view', 'download', 'transformation', or 'invoke' + + + + + provide for searching based on the version of serviceType. For example, we may only be interested in OGC Catalogue V1.1 services. If version is maintained as a separate attribute, users can easily search for all services of a type regardless of the version + + + + + information about the availability of the service, including, 'fees' 'planned' 'available date and time' 'ordering instructions' 'turnaround' + + + + + type of coupling between service and associated data (if exists) + + + + + further description of the data coupling in the case of tightly coupled services + + + + + provides a reference to the dataset on which the service operates + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.1/srv.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.1/srv.xsd new file mode 100644 index 00000000..1283ec3c --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/-3/srv/2.1/srv.xsd @@ -0,0 +1,6 @@ + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/Codelists/gml/CodelistDictionary-v32.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/Codelists/gml/CodelistDictionary-v32.xsl new file mode 100644 index 00000000..6bbeba47 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/Codelists/gml/CodelistDictionary-v32.xsl @@ -0,0 +1,70 @@ + + + + + + + + + Codelist ' + <xsl:value-of select="/gml:Dictionary/gml:identifier"/> + ' + + + +

+ Codelist ' + + ' +

+ +

+ +

+
+ + + + + + + + + + + + + + +
+ Value + +
+
+ Documentation +
+ + +
+
+ + + +
+ NOTE: + +
+ + + +
+
+ + +
+
\ No newline at end of file diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/namespaceInformationAndTools/makeNamespaceTable.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/namespaceInformationAndTools/makeNamespaceTable.xsl new file mode 100644 index 00000000..2f7f4ff0 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/namespaceInformationAndTools/makeNamespaceTable.xsl @@ -0,0 +1,228 @@ + + + + + + Title: Write Standard ISO Namespace Table + + Version:1.0 + Created on:February 27, 2013 + Revised on:August 4, 2014 + Revised on:February 28, 2018 + Revised on:March 10, 2018 - added header information + Revised on:January 3, 2019 - changed standards.iso.org/iso to schemas.isotc211.org + Author:ted.habermann@gmail.com + This stylesheets reads ISOSchema.xml and uses writes standard namespace description files. + It assumes a schema directory hierarchy like schemaRootDirectory/standard/version/namespace/version/workingVersionDate/namespace.xsd + The output is written into ../namespaceSummary.html (this location is specified externally in the transform command or Oxygen Project file) + + + + + + + + + + + + + + + + + + + ISO Namespaces + + +

ISO TC211 Namespace Summary

+

This table summarizes the namespaces used in the XML implementation of ISO TC211 Standards for Geospatial Metadata. The current official versions of these namespaces are located at schemas.isotc211.org. Working versions and information are at the ISO + TC211 Git Repository.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Standard PrefixTitleVersionScopeStandard, ParagraphRequirements NameNamespace URIThumbnailUML PackageXML SchemaXML Schema IncludedImported Namespaces
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

+ + + +

+ + +
+
diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/namespaceInformationAndTools/writeHTMLFiles.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/namespaceInformationAndTools/writeHTMLFiles.xsl new file mode 100644 index 00000000..f32cfd30 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/namespaceInformationAndTools/writeHTMLFiles.xsl @@ -0,0 +1,218 @@ + + + + + + Title: Write Standard ISO Namespace Description Files (namespace/index.html) + + Version:0.1 + Created on:February 27, 2013 + Modified on: January 4, 2014 + Modified on: January 4, 2019 for migration of schemas to schemas.isotc211.org + Author:ted.habermann@gmail.com + This stylesheets reads ISONamespaceInformation.xml and writes standard namespace description files into a filesystem with the ISO namespace structure. + It assumes a schema directory hierarchy like schemaRootDirectory/standard/version/namespace/version/namespace.xsd + and writes index.html files into the namespace directories (schemaRootDirectory/standard/version/namespace/version/index.html) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + <xsl:value-of select="concat(title,' (',$upperCasePrefix,') Version: ',version)"/> + + + +

+ +

+ + + +

Description

+

is an XML Schema implementation derived from ISO . It includes + The XML schema was encoded using the rules described in .

+ +

Sample XML files for

+ + + + + + + + + + +
+ +

CodeLists for

+ + + + + + + + +
+

XML Namespace for

+

The namespace URI for is .

+

XML Schema for

+

+ + + is the XML Schema document to be referenced by XML documents containing XML elements in the namespace or by XML Schema documents importing the namespace. This XML schema includes (indirectly) all the implemented concepts of the namespace, but it + does not contain the declaration of any types.

+

+ NOTE: The XML Schema for are available + here. A zip archive including all the XML Schema Implementations defined in ISO/TS 19115-3 and related standards is also + available. +

+ + + + + + +

Related XML Schema for

+ + +

+ + + implements the UML conceptual schema defined in . It was created using the encoding rules defined in ISO 19118, ISO + 19139, and the implementation approach described in ISO 19115-3 and contains the following classes (codeLists are bold): + + , + and + + + + + + + + +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Related XML Namespaces for

The namespace imports these other namespaces: + + + + + + + + + + + + + + +
NameStandard PrefixNamespace LocationSchema Location
+ + +
+
+ +

No Related XML Namespaces for

+
+
+ +

Schematron Validation Rules for

Schematron rules for validating instance documents of the namespace are in . Other schematron rule sets that are + required for a complete validation are: + + , + and + +
+

Working Versions

When revisions to these schema become necessary, they will be managed in the ISO TC211 Git Repository.
+

+ + +
+
+
+
diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/CT_CodelistCatalougue2HTML.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/CT_CodelistCatalougue2HTML.xsl new file mode 100644 index 00000000..07775343 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/CT_CodelistCatalougue2HTML.xsl @@ -0,0 +1,131 @@ + + + + + Created on: April 17, 2015 + Author: Ted Habermann + Updated on: September 10, 20175 + Added Catalog information and summary fields (counts of codelists and items), updated Version date + + + + + + + + +

Codelist Catalog

+

This report describes the ISO TC211 codelist catalogs, the codelists they contain, and the values and definitions of the codes.

+

+ Please contact Ted Habermann if you have questions or suggestions.

+

Catalog

+ Name:
+ Scope:
+ Field of application:
+ Version:
+ Date:
+ Number of CodeLists:
+ Number of items: +
+

Codelists

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Citation Information CodeLists +
CI_DateTypeCode | CI_OnLineFunctionCode | CI_PresentationFormCode | CI_RoleCode
+ Data Quality CodeLists +
+ DQ_EvaluationMethodTypeCode +
+ Dataset CodeLists +
DS_AssociationTypeCode | DS_InitiativeTypeCode
+ Metadata CodeLists +
MD_CellGeometryCode | MD_CharacterSetCode | MD_ClassificationCode | MD_CoverageContentTypeCode | MD_DatatypeCode | MD_DimensionNameTypeCode | MD_GeometricObjectTypeCode | MD_ImagingConditionCode | MD_KeywordTypeCode | MD_MaintenanceFrequencyCode | MD_MediumFormatCode | MD_MediumNameCode | MD_ObligationCode | MD_PixelOrientationCode | MD_ProgressCode | MD_RestrictionCode | MD_ScopeCode | MD_SpatialRepresentationTypeCode | MD_TopicCategoryCode | MD_TopologyLevelCode
+ Metadata for Grids and Images CodeLists +
MI_BandDefinition | MI_ContextCode | MI_GeometryTypeCode | MI_ObjectiveTypeCode | MI_OperationTypeCode | MI_PolarizationOrientationCode | MI_PriorityCode | MI_SequenceCode | MI_TransferFunctionTypeCode | MI_TriggerCode
+ Metadata Transfer CodeLists +
+ MX_ScopeCode +
+
+ + + + + + +

:

+ Description:
+ CodeSpace:
+ Number of items: + + + + + + + + + + + + + + +
EntryDefinition
+ + + +
+ top +
+
+ + +
+
diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/fromISO19139.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/fromISO19139.xsl new file mode 100644 index 00000000..53219c39 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/fromISO19139.xsl @@ -0,0 +1,143 @@ + + + + + + + + + + Created on:March 8, 2014 + Translates from ISO 19139 for ISO 19115 and ISO 19139-2 for 19115-2 to ISO 19139-1 for ISO 19115-1 + + Version June 13, 2014 + + Converged the 19115-2 transform into 19115-1 namespaces + + + + Version August 7, 2014 + + Changed namespace dates to 2014-07-11 + Fixed DistributedComputingPlatform element + + + + Version August 15, 2014 + + Add multilingual metadata support by converting gmd:locale and copying gmd:PT_FreeText and element attributes (eg. gco:nilReason, xsi:type) for gmd:CharacterString elements (Author: + fx.prunayre@gmail.com). + + + + Version September 4, 2014 + + Added transform for MD_FeatureCatalogueDescription (problem identified by Tobias Spears + + + + Version February 5, 2015 + + Update to 2014-12-25 version + + + Author:thabermann@hdfgroup.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/CI_Citation.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/CI_Citation.xsl new file mode 100644 index 00000000..d04ea655 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/CI_Citation.xsl @@ -0,0 +1,118 @@ + + + + + + + + Created on:December 5, 2014 + These templates transform ISO 19139 CI_Citation XML content into ISO 19115-3 CI_Citation. They are designed to be imported as a template library + Version December 5, 2014 + Author:thabermann@hdfgroup.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/CI_ResponsibleParty.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/CI_ResponsibleParty.xsl new file mode 100644 index 00000000..a71055fb --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/CI_ResponsibleParty.xsl @@ -0,0 +1,196 @@ + + + + + + + + + Created on:December 5, 2014 + These templates transform ISO 19139 CI_Responsibility XML content into ISO 19115-3 CI_Responsibility They are designed to be imported as a template library + + Version December 5, 2014 + + Initial Version + + + Author:thabermann@hdfgroup.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/DQ.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/DQ.xsl new file mode 100644 index 00000000..067d0bcf --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/DQ.xsl @@ -0,0 +1,283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/SRV.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/SRV.xsl new file mode 100644 index 00000000..73d07576 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/SRV.xsl @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/core.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/core.xsl new file mode 100644 index 00000000..5b68e50d --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/core.xsl @@ -0,0 +1,655 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/defaults.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/defaults.xsl new file mode 100644 index 00000000..0bbd0286 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/mapping/defaults.xsl @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mdb + + + gcx + + + gco + + + gml + + + gco + + + srv + + + lan + + + msr + + + mrl + + + mrc + + + mco + + + mcc + + + cit + + + mcc + + + mcc + + + + cit + + + mas + + + mac + + + mpc + + + mcc + + + mrs + + + mex + + + gex + + + msr + + + mcc + + + mrd + + + mri + + + mmi + + + + mri + + + mrc + + + mdq + + + mrl + + + mdq + + + mdb + + + mdb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/toISO19139.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/toISO19139.xsl new file mode 100644 index 00000000..4bc25ca8 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/toISO19139.xsl @@ -0,0 +1,862 @@ + + + + + More work required on: + + gmi:* not handled. + Filter all new elements (see last template). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gmx + + + gco + + + gml + + + gts + + + srv + + + gmd + + + gmd + + + gmd + + + gmd + + + gmd + + + + gmd + + + gmd + + + + gmd + + + gmd + + + gmd + + + gmd + + + gmd + + + gmd + + + gmd + + + gmd + + + gmd + + + srv + + + gmd + + + gmd + + + gmd + + + gmd + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/utility/create19115-3Namespaces.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/utility/create19115-3Namespaces.xsl new file mode 100644 index 00000000..220ab019 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/utility/create19115-3Namespaces.xsl @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/utility/dateTime.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/utility/dateTime.xsl new file mode 100644 index 00000000..87030ac2 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/utility/dateTime.xsl @@ -0,0 +1,60 @@ + + + + + + Created on:December 5, 2014 + These templates transform ISO 19139 DateTime XML content into ISO 19115-3 DateTime. + They are designed to be imported as a template library + Version December 5, 2014 + Author:thabermann@hdfgroup.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/utility/multiLingualCharacterStrings.xsl b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/utility/multiLingualCharacterStrings.xsl new file mode 100644 index 00000000..65194a5e --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19115/resources/transforms/ISO19139/utility/multiLingualCharacterStrings.xsl @@ -0,0 +1,91 @@ + + + + These utility templates transform CodeLists and CharacterStrings from ISO 19139 into ISO 19115-3. + Version August 8, 2015 + Author:thabermann@hdfgroup.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/pre/1.0/abstract.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/pre/1.0/abstract.xsd new file mode 100644 index 00000000..6ee1f142 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/pre/1.0/abstract.xsd @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/pre/1.0/pre.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/pre/1.0/pre.xsd new file mode 100644 index 00000000..91cb5d4b --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/pre/1.0/pre.xsd @@ -0,0 +1,4 @@ + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/reg/1.0/reg.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/reg/1.0/reg.xsd new file mode 100644 index 00000000..5995eef7 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/reg/1.0/reg.xsd @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/reg/1.0/registration.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/reg/1.0/registration.xsd new file mode 100644 index 00000000..8d7fa19e --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19135/-2/reg/1.0/registration.xsd @@ -0,0 +1,562 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + change cardinality from 0..1 to 0..* to implement the Set<RE_FieldOfApplication> type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_AmendmentInformation</Class> +<Attribute>amendmentType</Attribute> +<Type>RE_AmendmentType</Type> +<UsedBy> + + + + + <UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_AmendmentInformation</Class> +<Attribute>amendmentType</Attribute> +<Type>RE_AmendmentType</Type> +<UsedBy> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_ProposalManagementInformation</Class> +<Attribute>status</Attribute> +<Type>RE_DecisionStatus</Type> +<UsedBy> + + + + + <UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_ProposalManagementInformation</Class> +<Attribute>status</Attribute> +<Type>RE_DecisionStatus</Type> +<UsedBy> + + + + + + + + + + + + + + + + <UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_ProposalManagementInformation</Class> +<Attribute>disposition[0..1]</Attribute> +<Type>RE_Disposition</Type> +<UsedBy> + + + + + <UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_ProposalManagementInformation</Class> +<Attribute>disposition[0..1]</Attribute> +<Type>RE_Disposition</Type> +<UsedBy> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + change cardinality from 1..1 to 1..* to implement the Set<RE_AlternativeName> + + + + + + + + + + + + + + + + <UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_RegisterItem</Class> +<Attribute>status</Attribute> +<Type>RE_ItemStatus</Type> +<UsedBy> + + + + + <UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_RegisterItem</Class> +<Attribute>status</Attribute> +<Type>RE_ItemStatus</Type> +<UsedBy> + + + + + + + + + + + + + + + + + remove datatype stereotype SMR 2014-07-16 for XML build with Shapechange + +<UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_Register</Class> +<Attribute>operatingLanguage</Attribute> +<Type>RE_Locale</Type> +<UsedBy> + +<UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_SubregisterDescription</Class> +<Attribute>operatingLanguage</Attribute> +<Type>RE_Locale</Type> +<UsedBy> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Why does this class exist? it is simply a wrapper with no specific properties for a CI_Citation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + change cardinality from 1..1 to 1..* to implement Set<RE_Locale> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + change cardinality from 0..1 to 0..* to implement Set + + + + + Change cardinality from 0..1 to 0..* to implement Set + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_Reference</Class> +<Attribute>similarity</Attribute> +<Type>RE_SimilarityToSource</Type> +<UsedBy> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <UsedBy> +<NameSpace>ISO 19135 Procedures for registration</NameSpace> +<Class>RE_Register</Class> +<Attribute>version[0..1]</Attribute> +<Type>RE_Version</Type> +<UsedBy> + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19155/gpi/1.0/gpi.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19155/gpi/1.0/gpi.xsd new file mode 100644 index 00000000..39ecb492 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19155/gpi/1.0/gpi.xsd @@ -0,0 +1,13 @@ + + + + + gpi.xsd is the XML Schema document to be referenced by XML documents containing XML elements + in the gpi 1.0 namespace or by XML Schema documents importing the gpi 1.0 namespace. This XML schema + includes (indirectly) all the implemented concepts of the gpi namespace, but it does not contain + the declaration of any types. + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19155/gpi/1.0/placeIdentifier.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19155/gpi/1.0/placeIdentifier.xsd new file mode 100644 index 00000000..0c6abd93 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19155/gpi/1.0/placeIdentifier.xsd @@ -0,0 +1,70 @@ + + + + + + + + + the attribute "name" is mapped to "gml:identifier". + + + + + + + + + + + + + + + + + + + + + + gpi:PI + gpi:linkedPI + + This element is the extension in part2 + + + + + + + + + + + + + + + + + + + + + + + + + + gpi:PI + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19155/gpi/1.0/sampleGMLApplicationSchema.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19155/gpi/1.0/sampleGMLApplicationSchema.xsd new file mode 100644 index 00000000..f0a74fba --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19155/gpi/1.0/sampleGMLApplicationSchema.xsd @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gpi:PI + + + + + + + + + + + + + + + + + gpi:PI + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqc/1.0/abstract.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqc/1.0/abstract.xsd new file mode 100644 index 00000000..7c9f4f70 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqc/1.0/abstract.xsd @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqc/1.0/dqc.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqc/1.0/dqc.xsd new file mode 100644 index 00000000..cc1d2478 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqc/1.0/dqc.xsd @@ -0,0 +1,12 @@ + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqm/1.0/dqm.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqm/1.0/dqm.sch new file mode 100644 index 00000000..e0ce6735 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqm/1.0/dqm.sch @@ -0,0 +1,80 @@ + + + + + + + + + + + The DQM_Measure.elementName + shall be a TypeName of a data quality element. + + elementName is + "". + + + + DQM_Measure.elementName shall be a TypeName of a data quality element + + + + + + + + + + + + + + The valueType + shall be one of the data types defined in ISO/TS 19103. + + valueType is + "". + + + + DQM_Measure.valueType shall be one of the data types defined in ISO/TS 19103 + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqm/1.0/dqm.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqm/1.0/dqm.xsd new file mode 100644 index 00000000..9bec7cf6 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqm/1.0/dqm.xsd @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqm/1.0/qualityMeasures.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqm/1.0/qualityMeasures.xsd new file mode 100644 index 00000000..ea247f66 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/dqm/1.0/qualityMeasures.xsd @@ -0,0 +1,294 @@ + + + + + + + + + + data quality basic measure + + + + + + + + + name of the data quality basic measure applied to the data + + + + + definition of the data quality basic measure + + + + + illustration of the use of a data quality measure + + + + + value type for the result of the basic measure (shall be one of the data types defined in ISO/TS 19103:2005) + + + + + + + + + + + + + + + + data quality measure description + + + + + + + + + text description + + + + + illustration + + + + + + + + + + + + + + + + Data quality measure + + + + + + + + + value uniquely identifying the measure within a namespace + + + + + name of the data quality measure applied to the data + + + + + another recognized name, an abbreviation or a short name for the same data quality measure + + + + + name of the data quality element for which quality is reported + + + + + definition of the fundamental concept for the data quality measure + + + + + description of the data quality measure, including all formulae and/or illustrations needed to establish the result of applying the measure + + + + + value type for reporting a data quality result (shall be one of the data types defined in ISO/TS 19103:2005) + + + + + structure for reporting a complex data quality result + + + + + illustration of the use of a data quality measure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + data quality parameter + + + + + + + + + name of the data quality parameter + + + + + definition of the data quality parameter + + + + + description of the data quality parameter + + + + + value type of the data quality parameter (shall be one of the data types defined in ISO/TS 19103:2005) + + + + + structure of the data quality parameter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + reference to the source of the data quality measure + + + + + + + + + reference to the source + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityElement.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityElement.xsd new file mode 100644 index 00000000..7b2841b0 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityElement.xsd @@ -0,0 +1,545 @@ + + + + + + + + + + closeness of reported coordinate values to values accepted as or being true + + + + + + + + + + + + + + + + + + + correctness of the temporal references of an item (reporting of error in time measurement) + + + + + + + + + + + + + + + + + + + presence and absence of features, their attributes and their relationships + + + + + + + + + + + + + + + + + + + excess data present in the dataset, as described by the scope + + + + + + + + + + + + + + + + + + + data absent from the dataset, as described by the scope + + + + + + + + + + + + + + + + + + + adherence to rules of the conceptual schema + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + quality information for the data specified by a data quality scope + + + + + + + + + the specific data to which the data quality information applies + + + + + + + + + + + + + + + + + + adherence of values to the value domains + + + + + + + + + + + + + + + + + + + aspect of quantitative quality information + + + + + + + + + Clause in the standaloneQualityReport where this data quality element or any related data quality element (original results in case of derivation or aggregation) is described + + + + + + + + + + + + + + + + + + + + + degree to which data is stored in accordance with the physical structure of the dataset, as described by the scope + + + + + + + + + + + + + + + + + + + closeness of gridded data position values to values accepted as or being true + + + + + + + + + + + + + + + + + + + degree of adherence to logical rules of data structure, attribution and relationships (data structure can be conceptual, logical or physical) + + + + + + + + + + + + + + + + + + + reference to the measure used + + + + + + + + + Identifier of the measure, value uniquely identifying the measure within a namespace + + + + + name of the test applied to the data + + + + + description of the measure + + + + + + + + + + + + + + + + correctness of non-quantitative attributes + + + + + + + + + + + + + + + + + + + accuracy of the position of features + + + + + + + + + + + + + + + + + + + accuracy of quantitative attributes + + + + + + + + + + + + + + + + + + + closeness of the relative positions of features in the scope to their respective relative positions accepted as or being true + + + + + + + + + + + + + + + + + + + reference to an external standalone quality report + + + + + + + + + reference to the associated standalone quality report + + + + + abstract for the associated standalone quality report + + + + + + + + + + + + + + + + + correctness of ordered events or sequences, if reported + + + + + + + + + + + + + + + + + + + accuracy of the temporal attributes and temporal relationships of features + + + + + + + + + + + + + + + + + + + validity of data specified by the scope with respect to time + + + + + + + + + + + + + + + + + + + accuracy of quantitative attributes and the correctness of non-quantitative attributes and of the classifications of features and their relationships + + + + + + + + + + + + + + + + + + + comparison of the classes assigned to features or their attributes to a universe of discourse + + + + + + + + + + + + + + + + + + + correctness of the explicitly encoded topological characteristics of the dataset as described by the scope + + + + + + + + + + + + + + + + + + + degree of adherence of a dataset to a specific set of requirements + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityEvaluation.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityEvaluation.xsd new file mode 100644 index 00000000..53fac0c3 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityEvaluation.xsd @@ -0,0 +1,182 @@ + + + Added by Erling Onstein, 2010-03-11 to follow up the Paris meeting 2010-03-04-05. + + + + + + + + Aggregation or derivation method + + + + + + + + + + + + + + + + + + + data evaluation method + + + + + + + + + + + + + + + + + + + Description of the evaluation method and procedure applied + + + + + + + + + date or range of dates on which a data quality measure was applied + + + + + description of the evaluation method + + + + + reference to the procedure information + + + + + Information on documents which are referenced in developing and applying a data quality evaluation method + + + + + type of method used to evaluate quality of the data + + + + + + + + + + + + + + + + type of method for evaluating an identified data quality measure + + + + + + + + + + + full inspection + + + + + + + + + + + + + + + + + + + indirect evaluation + + + + + + + + + information on which data are used as sources in deductive evaluation method + + + + + + + + + + + + + + + + sample based inspection + + + + + + + + + information of the type of sampling scheme and description of the sampling procedure + + + + + information of how lots are defined + + + + + information on how many samples on average are extracted for inspection from each lot of population + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityImagery.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityImagery.xsd new file mode 100644 index 00000000..52a472aa --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityImagery.xsd @@ -0,0 +1,63 @@ + + + + + + + + + + Description: Result of a data quality measure organising the measured values as a coverage +shortName: CoverageResult + + + + + + + + + Description: method used to spatially represent the coverage result +shortName: spaRepType + + + + + + + + + + + + + + + + + + + + Implement MX_File in this package to avoid circular dependencies required by import of 'Metadata for file transfer' package + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityResult.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityResult.xsd new file mode 100644 index 00000000..7c0e2555 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/dataQualityResult.xsd @@ -0,0 +1,135 @@ + + + + + + + + + + information about the outcome of evaluating the obtained value (or set of values) against a specified acceptable conformance quality level + + + + + + + + + citation of data product specification or user requirement against which data is being evaluated + + + + + explanation of the meaning of conformance for this result + + + + + indication of the conformance result where 0 = fail and 1 = pass + + + + + + + + + + + + + + + + data quality descriptive result + + + + + + + + + textual expression of the descriptive result + + + + + + + + + + + + + + + + the values or information about the value(s) (or set of values) obtained from applying a data quality measure + + + + + + + + + quantitative value or values, content determined by the evaluation procedure used, accordingly with the value type and valueStructure defined for the measure + + + + + value unit for reporting a data quality result + + + + + value type for reporting a data quality result, depends of the implementation + + + + + + + + + + + + + + + + generalization of more specific result classes + + + + + + + + + date when the result was generated + + + + + scope of the result + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/mdq.sch b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/mdq.sch new file mode 100644 index 00000000..27cd85bd --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/mdq.sch @@ -0,0 +1,49 @@ + + + + + + + + + + + The DQ_MeasureReference must include a measureIdentification or a nameOfmeasure. + + measureIdentifier is + "" + and nameOfmeasure + "" + . + + + + DQ_MeasureReference MUST include a measureIdentification or a nameOfmeasure + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/mdq.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/mdq.xsd new file mode 100644 index 00000000..3b192492 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/mdq.xsd @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/metaquality.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/metaquality.xsd new file mode 100644 index 00000000..9c1fe712 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19157/-2/mdq/1.0/metaquality.xsd @@ -0,0 +1,83 @@ + + + + + + + trustworthiness of a data quality result + + + + + + + + + + + + + + + + + + + expected or tested uniformity of the results obtained for a data quality evaluation + + + + + + + + + + + + + + + + + + + information about the reliability of data quality results + + + + + + + + + + + + + + + + + + + + + degree to which the sample used has produced a result which is representative of the data within the data quality scope + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19165/gpm/1.0/geospatialPreservationMetadata.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19165/gpm/1.0/geospatialPreservationMetadata.xsd new file mode 100644 index 00000000..bf31d291 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19165/gpm/1.0/geospatialPreservationMetadata.xsd @@ -0,0 +1,376 @@ + + + + + + + + + + + + + + + + + + + + + + + Who is storing the package + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Use onLine and offLine when this packageElement is stored in another package of a collection. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19165/gpm/1.0/gpm.xsd b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19165/gpm/1.0/gpm.xsd new file mode 100644 index 00000000..dc3d19ab --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/schemas/standards.iso.org/19165/gpm/1.0/gpm.xsd @@ -0,0 +1,8 @@ + + + + Namespace for XML elements <font color="#1f497d">for geospatial preservation metadata (ISO 19165)</font>. + + + diff --git a/ckanext/spatial/harvesters/iso19115/spatial_harvester.py b/ckanext/spatial/harvesters/iso19115/spatial_harvester.py new file mode 100644 index 00000000..e2b1eaa6 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/spatial_harvester.py @@ -0,0 +1,477 @@ +from six.moves.urllib.parse import urlparse, urlunparse, urlencode + + +from ckan import model +from ckan import plugins as p +from ckantoolkit import config + +from ckan.plugins.core import SingletonPlugin, implements + +from ckanext.spatial.harvesters.base import SpatialHarvester +from ckanext.spatial.interfaces import ISpatialHarvester + +import logging +log = logging.getLogger(__name__) + +class ISO19115SpatialHarvester(SpatialHarvester, SingletonPlugin): + ''' + An harvester for ISO19115 metadata + ''' + implements(ISpatialHarvester) + + # ISpatialHarvester + + # From parent SpatialHarvester + def get_package_dict(self, context, data_dict): + ''' + Allows to modify the dataset dict that will be created or updated + + This is the dict that the harvesters will pass to the `package_create` + or `package_update` actions. Extensions can modify it to suit their + needs, adding or removing filds, modifying the default ones, etc. + + This method should always return a package_dict. Note that, although + unlikely in a particular instance, this method could be implemented by + more than one plugin. + + If a dict is not returned by this function, the import stage will be + cancelled. + + + :param context: Contains a reference to the model, eg to + perform DB queries, and the user name used for + authorization. + :type context: dict + :param data_dict: Available data. Contains four keys: + + * `package_dict` + The default package_dict generated by the harvester. Modify this + or create a brand new one. + * `iso_values` + The parsed ISO XML document values. These contain more fields + that are not added by default to the ``package_dict``. + * `xml_tree` + The full XML etree object. If some values not present in + ``iso_values`` are needed, these can be extracted via xpath. + * `harvest_object` + A ``HarvestObject`` domain object which contains a reference + to the original metadata document (``harvest_object.content``) + and the harvest source (``harvest_object.source``). + + :type data_dict: dict + + :returns: A dataset dict ready to be used by ``package_create`` or + ``package_update`` + :rtype: dict + ''' + _dict = data_dict['package_dict'] + _values = data_dict['iso_values'] + # _tree = data_dict['xml_tree'] + _object = data_dict['harvest_object'] + # _dict2 = elem2dict(_tree) + + # TODO delegate + # self.source_config = context['config'] + try: + csw_harvester = p.get_plugin('csw_harvester') + return csw_harvester.get_package_dict(_values, _object) + except Exception as e: + log.error('Failed to get package from base implementation:\n%r', str(e)) + + # TODO readme (below) + return self._fault_tolerant_get_package_dict(_values, _object) + + + def get_validators(self): + ''' + Allows to register custom Validators that can be applied to harvested + metadata documents. + + Validators are classes that implement the ``is_valid`` method. Check + the `Writing custom validators`_ section in the docs to know more + about writing custom validators. + + :returns: A list of Validator classes + :rtype: list + ''' + import ckanext.spatial.harvesters.iso19115.validators as validators + return [ + validators.ISO19115_Schema, + validators.ISO19115_2_Schema, + validators.ISO19115_1_Schema, + validators.ISO19115_Schematron] + + # From parent SpatialHarvester + # def transform_to_iso(self, original_document, original_format, harvest_object): + # ''' + # Transforms an XML document to ISO 19139 + + # This method will be only called from the import stage if the + # harvest_object content is null and original_document and + # original_format harvest object extras exist (eg if an FGDC document + # was harvested). + + # In that case, this method should do the necessary to provide an + # ISO 1939 like document, otherwise the import process will stop. + + + # :param original_document: Original XML document + # :type original_document: string + # :param original_format: Original format (eg 'fgdc') + # :type original_format: string + # :param harvest_object: HarvestObject domain object (with access to + # job and source objects) + # :type harvest_object: HarvestObject + + # :returns: An ISO 19139 document or None if the transformation was not + # successful + # :rtype: string + + # ''' + # return None + + +### TODO provide PR to master and remove + + # TODO removeme + # We are extending concrete class SpatialHarvester + # to delegate some of the self.... methods below + # this imply beeing a IHarvester as well.... + # Once removed below functions no need to extend anymore + # we can be a pure ISpatialHarvester + def info(self): + return { + 'name': 'iso19115', + 'title': 'ISO19115', + 'description': '' + } + + # source_config = {} + + # force_import = False + + def _fault_tolerant_get_package_dict(self, iso_values, harvest_object): + ''' + DEPRECATED: should be used untill PR on master are accepted + + Constructs a package_dict suitable to be passed to package_create or + package_update. See documentation on + ckan.logic.action.create.package_create for more details + + ''' + + from string import Template + from datetime import datetime + import six + from six.moves.urllib.parse import urlparse + from six.moves.urllib.request import urlopen + # from owslib import wms + # from lxml import etree + from ckanext.harvest.harvesters.base import munge_tag + from ckan.lib.helpers import json + tags = [] + + if 'tags' in iso_values: + do_clean = self.source_config.get('clean_tags') + tags_val = [munge_tag(tag) if do_clean else tag[:100] for tag in iso_values['tags']] + tags = [{'name': tag} for tag in tags_val] + + # Add default_tags from config + default_tags = self.source_config.get('default_tags', []) + if default_tags: + for tag in default_tags: + tags.append({'name': tag}) + + package_dict = { + 'title': iso_values['title'], + 'notes': iso_values['abstract'], + 'tags': tags, + 'resources': [], + } + + # We need to get the owner organization (if any) from the harvest + # source dataset + source_dataset = model.Package.get(harvest_object.source.id) + if source_dataset.owner_org: + package_dict['owner_org'] = source_dataset.owner_org + + # Package name + package = harvest_object.package + if package is None or package.title != iso_values['title']: + name = self._gen_new_name(iso_values['title']) + if not name: + name = self._gen_new_name(six.text_type(iso_values['guid'])) + if not name: + raise Exception('Could not generate a unique name from the title or the GUID. Please choose a more unique title.') + package_dict['name'] = name + else: + package_dict['name'] = package.name + + extras = { + 'guid': harvest_object.guid, + 'spatial_harvester': True, + } + + # Just add some of the metadata as extras, not the whole lot + for name in [ + # Essentials + 'spatial-reference-system', + 'guid', + # Usefuls + 'dataset-reference-date', + 'metadata-language', # Language + 'metadata-date', # Released + 'coupled-resource', + 'contact-email', + 'frequency-of-update', + 'spatial-data-service-type', + ]: + extras[name] = iso_values[name] + + if len(iso_values.get('progress', [])): + extras['progress'] = iso_values['progress'][0] + else: + extras['progress'] = '' + + if len(iso_values.get('resource-type', [])): + extras['resource-type'] = iso_values['resource-type'][0] + else: + extras['resource-type'] = '' + + extras['licence'] = iso_values.get('use-constraints', '') + + def _extract_first_license_url(licences): + for licence in licences: + o = urlparse(licence) + if o.scheme and o.netloc: + return licence + return None + + if len(extras['licence']): + license_url_extracted = _extract_first_license_url(extras['licence']) + if license_url_extracted: + extras['licence_url'] = license_url_extracted + + + # Metadata license ID check for package + use_constraints = iso_values.get('use-constraints') + if use_constraints: + + context = {'model': model, 'session': model.Session, 'user': self._get_user_name()} + license_list = p.toolkit.get_action('license_list')(context, {}) + + for constraint in use_constraints: + package_license = None + + for license in license_list: + if constraint.lower() == license.get('id') or constraint == license.get('url'): + package_license = license.get('id') + break + + if package_license: + package_dict['license_id'] = package_license + break + + + extras['access_constraints'] = iso_values.get('limitations-on-public-access', '') + + # Grpahic preview + browse_graphic = iso_values.get('browse-graphic') + if browse_graphic: + browse_graphic = browse_graphic[0] + extras['graphic-preview-file'] = browse_graphic.get('file') + if browse_graphic.get('description'): + extras['graphic-preview-description'] = browse_graphic.get('description') + if browse_graphic.get('type'): + extras['graphic-preview-type'] = browse_graphic.get('type') + + + for key in ['temporal-extent-begin', 'temporal-extent-end']: + if len(iso_values.get(key, '')) > 0: + extras[key] = iso_values[key][0] + + # Save responsible organization roles + if iso_values['responsible-organisation']: + parties = {} + for party in iso_values['responsible-organisation']: + if party['organisation-name'] in parties: + if not party['role'] in parties[party['organisation-name']]: + parties[party['organisation-name']].append(party['role']) + else: + parties[party['organisation-name']] = [party['role']] + extras['responsible-party'] = [{'name': k, 'roles': v} for k, v in parties.items()] + + if len(iso_values.get('bbox',[])) > 0: + bbox = iso_values['bbox'][0] + extras['bbox-east-long'] = bbox['east'] + extras['bbox-north-lat'] = bbox['north'] + extras['bbox-south-lat'] = bbox['south'] + extras['bbox-west-long'] = bbox['west'] + + if iso_values.get('spatial'): + extras['spatial'] = iso_values['spatial'] + else: + try: + xmin = float(bbox['west']) + xmax = float(bbox['east']) + ymin = float(bbox['south']) + ymax = float(bbox['north']) + except ValueError as e: + self._save_object_error('Error parsing bounding box value: {0}'.format(six.text_type(e)), + harvest_object, 'Import') + else: + # Construct a GeoJSON extent so ckanext-spatial can register the extent geometry + + # Some publishers define the same two corners for the bbox (ie a point), + # that causes problems in the search if stored as polygon + if xmin == xmax or ymin == ymax: + extent_string = Template('{"type": "Point", "coordinates": [$x, $y]}').substitute( + x=xmin, y=ymin + ) + self._save_object_error('Point extent defined instead of polygon', + harvest_object, 'Import') + else: + extent_string = self.extent_template.substitute( + xmin=xmin, ymin=ymin, xmax=xmax, ymax=ymax + ) + extras['spatial'] = extent_string.strip() + else: + log.debug('No spatial extent defined for this object') + + resource_locators = iso_values.get('resource-locator', []) +\ + iso_values.get('resource-locator-identification', []) + + if len(resource_locators): + for resource_locator in resource_locators: + url = resource_locator.get('url', '').strip() + if url: + resource = {} + resource['format'] = _guess_resource_format(url) + if resource['format'] == 'wms' and config.get('ckanext.spatial.harvest.validate_wms', False): + # Check if the service is a view service + test_url = url.split('?')[0] if '?' in url else url + if self._is_wms(test_url): + resource['verified'] = True + resource['verified_date'] = datetime.now().isoformat() + + resource.update( + { + 'url': url, + 'name': resource_locator.get('name') or p.toolkit._('Unnamed resource'), + 'description': resource_locator.get('description') or '', + 'resource_locator_protocol': resource_locator.get('protocol') or '', + 'resource_locator_function': resource_locator.get('function') or '', + }) + package_dict['resources'].append(resource) + + + # Add default_extras from config + default_extras = self.source_config.get('default_extras',{}) + if default_extras: + override_extras = self.source_config.get('override_extras',False) + for key,value in default_extras.items(): + log.debug('Processing extra %s', key) + if not key in extras or override_extras: + # Look for replacement strings + if isinstance(value,six.string_types): + value = value.format(harvest_source_id=harvest_object.job.source.id, + harvest_source_url=harvest_object.job.source.url.strip('/'), + harvest_source_title=harvest_object.job.source.title, + harvest_job_id=harvest_object.job.id, + harvest_object_id=harvest_object.id) + extras[key] = value + + extras_as_dict = [] + for key, value in extras.items(): + if isinstance(value, (list, dict)): + extras_as_dict.append({'key': key, 'value': json.dumps(value)}) + else: + extras_as_dict.append({'key': key, 'value': value}) + + package_dict['extras'] = extras_as_dict + + return package_dict + +def _guess_resource_format(url, use_mimetypes=True): + ''' + + DEPRECATED should be removed once PR are accepted on master + + Given a URL try to guess the best format to assign to the resource + + The function looks for common patterns in popular geospatial services and + file extensions, so it may not be 100% accurate. It just looks at the + provided URL, it does not attempt to perform any remote check. + + if 'use_mimetypes' is True (default value), the mimetypes module will be + used if no match was found before. + + Returns None if no format could be guessed. + + ''' + import mimetypes + url = url.lower().strip() + + resource_types = { + # OGC + 'wms': ('service=wms', 'geoserver/wms', 'mapserver/wmsserver', 'com.esri.wms.Esrimap', 'service/wms'), + 'wfs': ('service=wfs', 'geoserver/wfs', 'mapserver/wfsserver', 'com.esri.wfs.Esrimap'), + 'wcs': ('service=wcs', 'geoserver/wcs', 'imageserver/wcsserver', 'mapserver/wcsserver'), + 'sos': ('service=sos',), + 'csw': ('service=csw',), + # ESRI + 'kml': ('mapserver/generatekml',), + 'arcims': ('com.esri.esrimap.esrimap',), + 'arcgis_rest': ('arcgis/rest/services',), + } + + for resource_type, parts in resource_types.items(): + if any(part in url for part in parts): + return resource_type + + file_types = { + 'kml' : ('kml',), + 'kmz': ('kmz',), + 'gml': ('gml',), + } + + for file_type, extensions in file_types.items(): + if any(url.endswith(extension) for extension in extensions): + return file_type + + resource_format, encoding = mimetypes.guess_type(url) + if resource_format: + return resource_format + + return None + +##################################################### +# TOOLS +##################################################### + +def elem2dict(node): + """ + Convert an lxml.etree node tree into a dict. + """ + result = {} + + for element in node.iterchildren(): + # Remove namespace prefix + key = element.tag.split('}')[1] if '}' in element.tag else element.tag + + # Process element as tree element if the inner XML contains non-whitespace content + if element.text and element.text.strip(): + value = element.text + else: + value = elem2dict(element) + if key in result: + + + if type(result[key]) is list: + result[key].append(value) + else: + tempvalue = result[key].copy() + result[key] = [tempvalue, value] + else: + result[key] = value + return result \ No newline at end of file diff --git a/ckanext/spatial/harvesters/iso19115/validators.py b/ckanext/spatial/harvesters/iso19115/validators.py new file mode 100644 index 00000000..58d9e425 --- /dev/null +++ b/ckanext/spatial/harvesters/iso19115/validators.py @@ -0,0 +1,72 @@ +##################################################### +# VALIDATORS +##################################################### +import os +from pkg_resources import resource_stream +import ckanext.spatial.validation.validation as validation +XsdValidator = validation.XsdValidator +SchematronValidator = validation.SchematronValidator + +class ISO19115_Schema(XsdValidator): + name = 'iso19115-3.2018' + title = 'ISO19115 XSD Schema' + + @classmethod + def is_valid(cls, xml): + xsd_path = 'schemas/standards.iso.org/19115/-3' + mdb_xsd_filepath = os.path.join(os.path.dirname(__file__), + xsd_path, 'mdb/2.0/mdb.xsd') + xsd_name = 'Dataset schema 3.2018 (mdb.xsd)' + is_valid, errors = cls._is_valid(xml, mdb_xsd_filepath, xsd_name) + if not is_valid: + # TODO: not sure if we need this one, + # keeping for backwards compatibility + errors.insert(0, ('{0} Validation Error'.format(xsd_name), None)) + return is_valid, errors + + +class ISO19115_2_Schema(XsdValidator): + name = 'iso19115-2' + title = 'ISO19115 XSD Schema' + + @classmethod + def is_valid(cls, xml): + xsd_path = 'schemas/standards.iso.org/19115/-3' + mdb_xsd_filepath = os.path.join(os.path.dirname(__file__), + xsd_path, 'mdb/1.0/mdb.xsd') + xsd_name = 'Dataset schema 2.0 (mdb.xsd)' + is_valid, errors = cls._is_valid(xml, mdb_xsd_filepath, xsd_name) + if not is_valid: + # TODO: not sure if we need this one, + # keeping for backwards compatibility + errors.insert(0, ('{0} Validation Error'.format(xsd_name), None)) + return is_valid, errors + +class ISO19115_1_Schema(XsdValidator): + name = 'iso19115-1' + title = 'ISO19115-3 v1.0 XSD Schema' + + @classmethod + def is_valid(cls, xml): + xsd_path = 'schemas/standards.iso.org/19115/-3' + mdb_xsd_filepath = os.path.join(os.path.dirname(__file__), + xsd_path, 'mds/1.0/mds.xsd') + xsd_name = 'Dataset schema 1.0 (mdb.xsd)' + is_valid, errors = cls._is_valid(xml, mdb_xsd_filepath, xsd_name) + if not is_valid: + # TODO: not sure if we need this one, + # keeping for backwards compatibility + errors.insert(0, ('{0} Validation Error'.format(xsd_name), None)) + return is_valid, errors + +class ISO19115_Schematron(SchematronValidator): + name = 'iso19115schematron' + title = 'ISO19115 Schematron' + + @classmethod + def get_schematrons(cls): + with resource_stream( + __name__, + "schemas/standards.iso.org/19115/-3/mdb/2.0/mdb.sch") as schema: + + return [cls.schematron(schema)] diff --git a/setup.py b/setup.py index 165981e6..039d25c6 100644 --- a/setup.py +++ b/setup.py @@ -54,6 +54,9 @@ csw_harvester=ckanext.spatial.harvesters:CSWHarvester waf_harvester=ckanext.spatial.harvesters:WAFHarvester doc_harvester=ckanext.spatial.harvesters:DocHarvester + + iso19115_harvester=ckanext.spatial.harvesters.iso19115.harvester:ISO19115Harvester + iso19115=ckanext.spatial.harvesters.iso19115.spatial_harvester:ISO19115SpatialHarvester # Legacy harvesters gemini_csw_harvester=ckanext.spatial.harvesters.gemini:GeminiCswHarvester