./PaxHeaders.23451/pycsw-2.0.30000644000000000000000000000007413114323025012473 xustar0030 atime=1496426333.201497685 30 ctime=1496426292.528636894 pycsw-2.0.3/0000755000175000001440000000000013114323025013355 5ustar00kalxasusers00000000000000pycsw-2.0.3/PaxHeaders.23451/.github0000644000000000000000000000007413114323025013676 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/.github/0000755000175000001440000000000013114323025014715 5ustar00kalxasusers00000000000000pycsw-2.0.3/.github/PaxHeaders.23451/ISSUE_TEMPLATE.md0000644000000000000000000000007413114323025016460 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/.github/ISSUE_TEMPLATE.md0000644000175000001440000000052313114323025017422 0ustar00kalxasusers00000000000000# Description # Environment - operating system: - Python version: - pycsw version: - source/distribution - [ ] git clone - [ ] DebianGIS/UbuntuGIS - [ ] PyPI - [ ] zip/tar.gz - [ ] other (please specify): - web server - [ ] Apache/mod_wsgi - [ ] CGI - [ ] other (please specify): # Steps to Reproduce # Additional Information pycsw-2.0.3/.github/PaxHeaders.23451/PULL_REQUEST_TEMPLATE.md0000644000000000000000000000007413114323025017554 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/.github/PULL_REQUEST_TEMPLATE.md0000644000175000001440000000075713114323025020527 0ustar00kalxasusers00000000000000# Overview # Related Issue / Discussion # Additional Information # Contributions and Licensing (as per https://github.com/geopython/pycsw/blob/master/CONTRIBUTING.rst#contributions-and-licensing) - [ ] I'd like to contribute [feature X|bugfix Y|docs|something else] to pycsw. I confirm that my contributions to pycsw will be compatible with the pycsw license guidelines at the time of contribution. - [ ] I have already previously agreed to the pycsw Contributions and Licensing Guidelines pycsw-2.0.3/PaxHeaders.23451/.travis.yml0000644000000000000000000000007413114323025014524 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/.travis.yml0000644000175000001440000000107513114323025015471 0ustar00kalxasusers00000000000000language: python sudo: required dist: trusty python: - "2.6" - "2.7" - "3.4" - "3.5" #matrix: # allow_failures: # - python: "3.4" addons: apt: packages: - libgeos-c1 - libxml2-dev before_script: - pycsw-admin.py -c get_sysprof install: - pip install -r requirements.txt - pip install -r requirements-dev.txt - pip install -r requirements-standalone.txt - python setup.py -q install script: - paver test after_script: - paver stop notifications: irc: channels: - "irc.freenode.org#pycsw" use_notice: true pycsw-2.0.3/PaxHeaders.23451/COMMITTERS.txt0000644000000000000000000000007413114323025014642 xustar0030 atime=1496426320.353225797 30 ctime=1496426292.480635878 pycsw-2.0.3/COMMITTERS.txt0000644000175000001440000000137513114323025015612 0ustar00kalxasusers00000000000000============== ===================== ================================== ================================== Login(s) Name Email / Contact Area(s) ============== ===================== ================================== ================================== tomkralidis Tom Kralidis tomkralidis at gmail.com Overall kalxas Angelos Tzotsos tzotsos at gmail.com INSPIRE, APISO profiles, Packaging adamhinz Adam Hinz hinz dot adam at gmail.com WSGI/Server Deployment ricardogsilva Ricardo Garcia Silva ricardo.garcia.silva at gmail.com Overall ============== ===================== ================================== ================================== pycsw-2.0.3/PaxHeaders.23451/CONTRIBUTING.rst0000644000000000000000000000007413114323025015054 xustar0030 atime=1496426320.469228252 30 ctime=1496426292.480635878 pycsw-2.0.3/CONTRIBUTING.rst0000644000175000001440000001665113114323025016027 0ustar00kalxasusers00000000000000Contributing to pycsw ===================== The pycsw project openly welcomes contributions (bug reports, bug fixes, code enhancements/features, etc.). This document will outline some guidelines on contributing to pycsw. As well, the pycsw `community `_ is a great place to get an idea of how to connect and participate in pycsw community and development. pycsw has the following modes of contribution: - GitHub Commit Access - GitHub Pull Requests Code of Conduct --------------- Contributors to this project are expected to act respectfully toward others in accordance with the `OSGeo Code of Conduct `_. Contributions and Licensing --------------------------- Contributors are asked to confirm that they comply with project `license `_ guidelines. GitHub Commit Access ^^^^^^^^^^^^^^^^^^^^ - proposals to provide developers with GitHub commit access shall be emailed to the pycsw-devel `mailing list`_. Proposals shall be approved by the pycsw development team. Committers shall be added by the project admin - removal of commit access shall be handled in the same manner - each committer must send an email to the pycsw mailing list agreeing to the license guidelines (see `Contributions and Licensing Agreement Template <#contributions-and-licensing-agreement-template>`_). **This is only required once** - each committer shall be listed in https://github.com/geopython/pycsw/blob/master/COMMITTERS.txt GitHub Pull Requests ^^^^^^^^^^^^^^^^^^^^ - pull requests can provide agreement to license guidelines as text in the pull request or via email to the pycsw `mailing list`_ (see `Contributions and Licensing Agreement Template <#contributions-and-licensing-agreement-template>`_). **This is only required for a contributor's first pull request. Subsequent pull requests do not require this step** - pull requests may include copyright in the source code header by the contributor if the contribution is significant or the contributor wants to claim copyright on their contribution - all contributors shall be listed at https://github.com/geopython/pycsw/graphs/contributors - unclaimed copyright, by default, is assigned to the main copyright holders as specified in https://github.com/geopython/pycsw/blob/master/LICENSE.txt Contributions and Licensing Agreement Template ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``Hi all, I'd like to contribute to pycsw. I confirm that my contributions to pycsw will be compatible with the pycsw license guidelines at the time of contribution.`` GitHub ------ Code, tests, documentation, wiki and issue tracking are all managed on GitHub. Make sure you have a `GitHub account `_. Code Overview ------------- - the pycsw `wiki `_ documents an overview of the codebase Documentation ------------- - documentation is managed in ``docs/``, in reStructuredText format - `Sphinx`_ is used to generate the documentation - See the `reStructuredText Primer `_ on rST markup and syntax. Bugs ---- pycsw's `issue tracker `_ is the place to report bugs or request enhancements. To submit a bug be sure to specify the pycsw version you are using, the appropriate component, a description of how to reproduce the bug, as well as what version of Python and platform. For convenience, you can run ``pycsw-admin.py -c get_sysprof`` and copy/paste the output into your issue. Forking pycsw ------------- Contributions are most easily managed via GitHub pull requests. `Fork `_ pycsw into your own GitHub repository to be able to commit your work and submit pull requests. Development ----------- GitHub Commit Guidelines ^^^^^^^^^^^^^^^^^^^^^^^^ - enhancements and bug fixes should be identified with a GitHub issue - commits should be granular enough for other developers to understand the nature / implications of the change(s) - for trivial commits that do not need `Travis CI `_ to run, include ``[ci skip]`` as part of the commit message - non-trivial Git commits shall be associated with a GitHub issue. As documentation can always be improved, tickets need not be opened for improving the docs - Git commits shall include a description of changes - Git commits shall include the GitHub issue number (i.e. ``#1234``) in the Git commit log message - all enhancements or bug fixes must successfully pass all :ref:`ogc-cite` tests before they are committed - all enhancements or bug fixes must successfully pass all :ref:`tests` tests before they are committed - enhancements which can be demonstrated from the pycsw :ref:`tests` should be accompanied by example CSW request XML Coding Guidelines ^^^^^^^^^^^^^^^^^ - pycsw instead of PyCSW, pyCSW, Pycsw - always code with `PEP 8`_ conventions - always run source code through ``pep8`` and `pylint`_, using all pylint defaults except for ``C0111``. ``sbin/pycsw-pylint.sh`` is included for convenience - for exceptions which make their way to OGC ``ExceptionReport`` XML, always specify the appropriate ``locator`` and ``code`` parameters - the pycsw wiki documents `developer tasks`_ for things like releasing documentation, testing, etc. Submitting a Pull Request ^^^^^^^^^^^^^^^^^^^^^^^^^ This section will guide you through steps of working on pycsw. This section assumes you have forked pycsw into your own GitHub repository. .. code-block:: bash # setup a virtualenv virtualenv mypycsw && cd mypycsw . ./bin/activate # clone the repository locally git clone git@github.com:USERNAME/pycsw.git cd pycsw pip install -e . && pip install -r requirements-standalone.txt # add the main pycsw master branch to keep up to date with upstream changes git remote add upstream https://github.com/geopython/pycsw.git git pull upstream master # create a local branch off master # The name of the branch should include the issue number if it exists git branch issue-72 git checkout issue-72 # # make code/doc changes # git commit -am 'fix xyz (#72)' git push origin issue-72 Your changes are now visible on your pycsw repository on GitHub. You are now ready to create a pull request. A member of the pycsw team will review the pull request and provide feedback / suggestions if required. If changes are required, make them against the same branch and push as per above (all changes to the branch in the pull request apply). The pull request will then be merged by the pycsw team. You can then delete your local branch (on GitHub), and then update your own repository to ensure your pycsw repository is up to date with pycsw master: .. code-block:: bash git checkout master git pull upstream master .. _`Corporate`: http://www.osgeo.org/sites/osgeo.org/files/Page/corporate_contributor.txt .. _`Individual`: http://www.osgeo.org/sites/osgeo.org/files/Page/individual_contributor.txt .. _`info@osgeo.org`: mailto:info@osgeo.org .. _`OSGeo`: http://www.osgeo.org/content/foundation/legal/licenses.html .. _`PEP 8`: http://www.python.org/dev/peps/pep-0008/ .. _`pep8`: http://pypi.python.org/pypi/pep8/ .. _`pylint`: http://www.logilab.org/857 .. _`Sphinx`: http://sphinx-doc.org/ .. _`developer tasks`: https://github.com/geopython/pycsw/wiki/Developer-Tasks .. _`mailing list`: http://pycsw.org/community.html#mailing_list pycsw-2.0.3/PaxHeaders.23451/HISTORY.txt0000644000000000000000000000007413114323025014315 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/HISTORY.txt0000644000175000001440000000017213114323025015257 0ustar00kalxasusers00000000000000pycsw Revision History =========================== See http://github.com/geopython/pycsw for commit and release history. pycsw-2.0.3/PaxHeaders.23451/LICENSE.txt0000644000000000000000000000007413114323025014236 xustar0030 atime=1496426320.829235871 30 ctime=1496426292.480635878 pycsw-2.0.3/LICENSE.txt0000644000175000001440000000226413114323025015204 0ustar00kalxasusers00000000000000The MIT License (MIT) Copyright (c) 2010-2015 Tom Kralidis Copyright (c) 2011-2015 Angelos Tzotsos Copyright (c) 2012-2015 Adam Hinz Copyright (c) 2015 Ricardo Garcia Silva Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. pycsw-2.0.3/PaxHeaders.23451/MANIFEST.in0000644000000000000000000000007413114323025014151 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/MANIFEST.in0000644000175000001440000000005413114323025015112 0ustar00kalxasusers00000000000000recursive-include pycsw *.xsd include *.txt pycsw-2.0.3/PaxHeaders.23451/README.txt0000644000000000000000000000007413114323025014111 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/README.txt0000644000175000001440000000155413114323025015060 0ustar00kalxasusers00000000000000pycsw README ============ pycsw is an OGC CSW server implementation written in Python. pycsw fully implements the OpenGIS Catalogue Service Implementation Specification (Catalogue Service for the Web). Initial development started in 2010 (more formally announced in 2011). The project is certified OGC Compliant, and is an OGC Reference Implementation. Since 2015, pycsw is an official OSGeo Project. pycsw allows for the publishing and discovery of geospatial metadata via numerous APIs (CSW 2/CSW 3, OpenSearch, OAI-PMH, SRU). Existing repositories of geospatial metadata can also be exposed, providing a standards-based metadata and catalogue component of spatial data infrastructures. pycsw is Open Source, released under an MIT license, and runs on all major platforms (Windows, Linux, Mac OS X). Please read the docs at http://pycsw.org/docs for more information. pycsw-2.0.3/PaxHeaders.23451/VERSION.txt0000644000000000000000000000007413114323025014301 xustar0030 atime=1496426319.901216231 30 ctime=1496426292.480635878 pycsw-2.0.3/VERSION.txt0000644000175000001440000000000613114323025015237 0ustar00kalxasusers000000000000002.0.3 pycsw-2.0.3/PaxHeaders.23451/bin0000644000000000000000000000007413114323025013106 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/bin/0000755000175000001440000000000013114323025014125 5ustar00kalxasusers00000000000000pycsw-2.0.3/bin/PaxHeaders.23451/pycsw-admin.py0000644000000000000000000000007413114323025015770 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/bin/pycsw-admin.py0000755000175000001440000002066413114323025016745 0ustar00kalxasusers00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # Angelos Tzotsos # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= from six.moves import configparser from six.moves import input import getopt import logging import sys from pycsw.core import admin, config logging.basicConfig(format='%(message)s', level=logging.DEBUG) CONTEXT = config.StaticContext() def usage(): """Provide usage instructions""" return ''' NAME pycsw-admin.py - pycsw admin utility SYNOPSIS pycsw-admin.py -c -f [-h] [-p /path/to/records] [-r] Available options: -c Command to be performed: - setup_db - load_records - export_records - rebuild_db_indexes - optimize_db - refresh_harvested_records - gen_sitemap - post_xml - get_sysprof - validate_xml - delete_records -f Filepath to pycsw configuration -h Usage message -o path to output file -p path to input/output directory or file to read/write metadata records -r load records from directory recursively -s XML Schema -t Timeout (in seconds) for HTTP requests (default is 30) -u URL of CSW -x XML document -y force confirmation EXAMPLES 1.) setup_db: Creates repository tables and indexes pycsw-admin.py -c setup_db -f default.cfg 2.) load_records: Loads metadata records from directory or file into repository pycsw-admin.py -c load_records -p /path/to/records -f default.cfg Load records from directory recursively pycsw-admin.py -c load_records -p /path/to/records -f default.cfg -r Load records from directory and force updates pycsw-admin.py -c load_records -p /path/to/records -f default.cfg -y Load metadata record from file into repository pycsw-admin.py -c load_records -p /path/to/file.xml -f default.cfg 3.) export_records: Dump metadata records from repository into directory pycsw-admin.py -c export_records -p /path/to/records -f default.cfg 4.) rebuild_db_indexes: Rebuild repository database indexes pycsw-admin.py -c rebuild_db_indexes -f default.cfg 5.) optimize_db: Optimize repository database pycsw-admin.py -c optimize_db -f default.cfg 6.) refresh_harvested_records: Refresh repository records which have been harvested pycsw-admin.py -c refresh_harvested_records -f default.cfg 7.) gen_sitemap: Generate XML Sitemap pycsw-admin.py -c gen_sitemap -f default.cfg -o /path/to/sitemap.xml 8.) post_xml: Execute a CSW request via HTTP POST pycsw-admin.py -c post_xml -u http://host/csw -x /path/to/request.xml 9.) get_sysprof: Get versions of dependencies pycsw-admin.py -c get_sysprof 10.) validate_xml: Validate an XML document against an XML Schema pycsw-admin.py -c validate_xml -x file.xml -s file.xsd 11.) delete_records: Deletes all records from repository pycsw-admin.py -c delete_records -f default.cfg 12.) delete_records: Deletes all records from repository without prompting pycsw-admin.py -c delete_records -f default.cfg -y ''' COMMAND = None XML_DIRPATH = None CFG = None RECURSIVE = False OUTPUT_FILE = None CSW_URL = None XML = None XSD = None TIMEOUT = 30 FORCE_CONFIRM = False if len(sys.argv) == 1: print(usage()) sys.exit(1) try: OPTS, ARGS = getopt.getopt(sys.argv[1:], 'c:f:ho:p:ru:x:s:t:y') except getopt.GetoptError as err: print('\nERROR: %s' % err) print(usage()) sys.exit(2) for o, a in OPTS: if o == '-c': COMMAND = a if o == '-f': CFG = a if o == '-o': OUTPUT_FILE = a if o == '-p': XML_DIRPATH = a if o == '-r': RECURSIVE = True if o == '-u': CSW_URL = a if o == '-x': XML = a if o == '-s': XSD = a if o == '-t': TIMEOUT = int(a) if o == '-h': # dump help and exit print(usage()) sys.exit(3) if o == '-y': FORCE_CONFIRM = True if COMMAND is None: print('-c is a required argument') sys.exit(4) if COMMAND not in ['setup_db', 'load_records', 'export_records', 'rebuild_db_indexes', 'optimize_db', 'refresh_harvested_records', 'gen_sitemap', 'post_xml', 'get_sysprof', 'validate_xml', 'delete_records']: print('ERROR: invalid command name: %s' % COMMAND) sys.exit(5) if CFG is None and COMMAND not in ['post_xml', 'get_sysprof', 'validate_xml']: print('ERROR: -f is a required argument') sys.exit(6) if COMMAND in ['load_records', 'export_records'] and XML_DIRPATH is None: print('ERROR: -p is a required argument') sys.exit(7) if COMMAND == 'gen_sitemap' and OUTPUT_FILE is None: print('ERROR: -o is a required argument') sys.exit(8) if COMMAND not in ['post_xml', 'get_sysprof', 'validate_xml']: SCP = configparser.SafeConfigParser() with open(CFG) as f: SCP.readfp(f) DATABASE = SCP.get('repository', 'database') URL = SCP.get('server', 'url') HOME = SCP.get('server', 'home') METADATA = dict(SCP.items('metadata:main')) try: TABLE = SCP.get('repository', 'table') except configparser.NoOptionError: TABLE = 'records' elif COMMAND not in ['get_sysprof', 'validate_xml']: if CSW_URL is None: print('ERROR: -u is a required argument') sys.exit(9) if XML is None: print('ERROR: -x /path/to/request.xml is a required argument') sys.exit(10) elif COMMAND == 'validate_xml': if XML is None: print('ERROR: -x /path/to/file.xml is a required argument') sys.exit(11) if XSD is None: print('ERROR: -s /path/to/file.xsd is a required argument') sys.exit(12) if COMMAND == 'setup_db': try: admin.setup_db(DATABASE, TABLE, HOME) except Exception as err: print(err) print('ERROR: DB creation error. Database tables already exist') print('Delete tables or database to reinitialize') elif COMMAND == 'load_records': admin.load_records(CONTEXT, DATABASE, TABLE, XML_DIRPATH, RECURSIVE, FORCE_CONFIRM) elif COMMAND == 'export_records': admin.export_records(CONTEXT, DATABASE, TABLE, XML_DIRPATH) elif COMMAND == 'rebuild_db_indexes': admin.rebuild_db_indexes(DATABASE, TABLE) elif COMMAND == 'optimize_db': admin.optimize_db(CONTEXT, DATABASE, TABLE) elif COMMAND == 'refresh_harvested_records': admin.refresh_harvested_records(CONTEXT, DATABASE, TABLE, URL) elif COMMAND == 'gen_sitemap': admin.gen_sitemap(CONTEXT, DATABASE, TABLE, URL, OUTPUT_FILE) elif COMMAND == 'post_xml': print(admin.post_xml(CSW_URL, XML, TIMEOUT)) elif COMMAND == 'get_sysprof': print(admin.get_sysprof()) elif COMMAND == 'validate_xml': admin.validate_xml(XML, XSD) elif COMMAND == 'delete_records': if not FORCE_CONFIRM: if input('This will delete all records! Continue? [Y/n] ') == 'Y': FORCE_CONFIRM = True if FORCE_CONFIRM: admin.delete_records(CONTEXT, DATABASE, TABLE) print('Done') pycsw-2.0.3/bin/PaxHeaders.23451/pycsw-pylint.sh0000644000000000000000000000007413114323025016201 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/bin/pycsw-pylint.sh0000755000175000001440000000260113114323025017145 0ustar00kalxasusers00000000000000#!/bin/sh # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= # run pylint without warnings about docstrings on first line # and suppress reporting pylint -r n -d C0111 $1 pycsw-2.0.3/PaxHeaders.23451/csw.py0000644000000000000000000000007413114323025013561 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/csw.py0000755000175000001440000000277413114323025014540 0ustar00kalxasusers00000000000000#!/usr/bin/python -u # -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= """ A CGI wrapper for pycsw that reuses code from the wsgi wrapper. """ from wsgiref.handlers import CGIHandler from pycsw.wsgi import application handler = CGIHandler() handler.run(application) pycsw-2.0.3/PaxHeaders.23451/default-sample.cfg0000644000000000000000000000007413114323025015777 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/default-sample.cfg0000644000175000001440000000614313114323025016745 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=/var/www/pycsw url=http://localhost/pycsw/csw.py mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo #federatedcatalogues=http://catalog.data.gov/csw #pretty_print=true #gzip_compresslevel=8 #domainquerytype=range #domaincounts=true #spatial_ranking=true profiles=apiso [manager] transactions=false allowed_ips=127.0.0.1 #csw_harvest_pagesize=10 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery,metadata identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=Organization Name provider_url=http://pycsw.org/ contact_name=Lastname, Firstname contact_position=Position Title contact_address=Mailing Address contact_city=City contact_stateorprovince=Administrative Area contact_postalcode=Zip or Postal Code contact_country=Country contact_phone=+xx-xxx-xxx-xxxx contact_fax=+xx-xxx-xxx-xxxx contact_email=Email Address contact_url=Contact URL contact_hours=Hours of Service contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:////var/www/pycsw/tests/suites/cite/data/records.db # postgres #database=postgresql://username:password@localhost/pycsw # mysql #database=mysql://username:password@localhost/pycsw?charset=utf8 #mappings=path/to/mappings.py table=records #filter=type = 'http://purl.org/dc/dcmitype/Dataset' [metadata:inspire] enabled=true languages_supported=eng,gre default_language=eng date=YYYY-MM-DD gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=Organization Name contact_email=Email Address temp_extent=YYYY-MM-DD/YYYY-MM-DD pycsw-2.0.3/PaxHeaders.23451/docs0000644000000000000000000000013113114323517013266 xustar0030 mtime=1496426319.689211745 29 atime=1496426320.14922148 30 ctime=1496426319.689211745 pycsw-2.0.3/docs/0000755000175000001440000000000013114323517014313 5ustar00kalxasusers00000000000000pycsw-2.0.3/docs/PaxHeaders.23451/Makefile0000644000000000000000000000007313114323025015002 xustar0029 atime=1496426319.68521166 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/Makefile0000644000175000001440000001272113114323025015750 0ustar00kalxasusers00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -W -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: mkdir -p $(BUILDDIR) $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/pycsw.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/pycsw.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/pycsw" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/pycsw" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." pycsw-2.0.3/docs/PaxHeaders.23451/_static0000644000000000000000000000007313114323025014713 xustar0029 atime=1496426320.14922148 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/_static/0000755000175000001440000000000013114323025015733 5ustar00kalxasusers00000000000000pycsw-2.0.3/docs/_static/PaxHeaders.23451/favicon.ico0000644000000000000000000000007413114323025017112 xustar0030 atime=1496426322.233265584 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/_static/favicon.ico0000644000175000001440000000217613114323025020062 0ustar00kalxasusers00000000000000 h(  ÿÿÿèäÝ#µ›|˜¥‚ZŤVɤVɤVɤVÉ¥ZÉ¥Zɨ‡aɤVɦƒ[¹¢†íëæÿÿÿäß×+™k;î j5ÿ j5ÿ j5ÿ j5ÿ j5ÿ j5ÿªyJÿº”nÿ¼—rÿ¹‘jÿ¾švÿ»”nÿ°‘nâíëæ¬Žk¯ j5ÿ j5ÿ j5ÿ¢m9ÿ¼–qÿÑ·žÿ×Àªÿе›ÿÀzÿ¨wGÿ¬|Nÿ«|Nÿ©yIÿ¤q>ÿ·Ÿ‚‘˜n?ç j5ÿ j5ÿº“mÿòëäÿëàÕÿÙİÿñéáÿÿÿÿÿþþþÿéÜÐÿ®€Sÿ j5ÿ j5ÿ j5ÿ¤VÉ–j;í j5ÿÁž|ÿ÷òîÿ¼—rÿͱ•ÿøôñÿßÍ»ÿÊ­ÿãÓÃÿÿÿÿÿøôñÿ±„Yÿ j5ÿ j5ÿ¢|RÏ–j;í¬~PÿøôñÿùõòÿíäÚÿîäÛÿ¬}Oÿ j5ÿǧˆÿõðêÿ¾švÿýüûÿïçÞÿ¢m9ÿ j5ÿ¢|RÏ–j;íØÂ¬ÿÓº¡ÿǧˆÿóìæÿ÷óîÿ×ÀªÿʬŽÿóìåÿ­Qÿ j5ÿïçßÿ÷óïÿŸ~ÿ j5ÿ¢|RÏ–j;íôïéÿ¯‚Vÿðèàÿ¸iÿ§vEÿæÙËÿÿÿÿÿ¿›xÿ j5ÿ j5ÿìâØÿÙİÿÞ̺ÿ j5ÿ¢|RÏšpBíûúøÿ°ƒWÿõðëÿ¡m8ÿ«~NÿöñìÿÙʱÿøõñÿ¾›vÿ§yDÿùöóÿ¿›wÿëàÕÿ j5ÿ¢|RÏšsDíüúùÿDzŽÿìæÙÿ³žiÿæßÍÿÜÓ»ÿ³žiÿŵŒÿø÷òÿàØÁÿîéÝÿȸ‘ÿìæÚÿ¬ŒWÿ¤ƒZÏšuFíðìãÿ×˲ÿîéÞÿÁ¯‰ÿöóîÿ³œmÿ¯˜fÿ¯˜fÿɹ—ÿÿÿÿÿϤÿÖʱÿÝÔ¿ÿ¯˜fÿ¦‰`Ï™tEíÑéÿìæÛÿúù÷ÿêäØÿξ£ÿ«‘bÿ«‘bÿº¥~ÿñíåÿéâÖÿóïèÿõòíÿ¾ª…ÿ«‘bÿ¥ˆ_Ï™qC꫎bÿñìåÿþýýÿþþþÿÓÄ­ÿÒìÿæÞÒÿøöòÿ˹Ÿÿ©Œ`ÿòíæÿàÖÆÿ¨Š]ÿ¨Š]ÿ¤…^ʧ…_¿¤}Nÿ²”mÿóïéÿüûúÿãØËÿÖűÿÄ®ÿª‰^ÿ·œxÿéáÕÿçÞÓÿ©‰]ÿ¥ƒVÿ¤Qÿ²—w ÙÐÄ?šk8ú¢xHÿ©„Yÿׯ²ÿùöóÿðëäÿêáÖÿôðêÿôðëÿ̶œÿ¤~Qÿ£|Mÿ¢zJÿšm<óåàØ*ÿÿÿØÏÂB¥ƒ[–l=ð•k;ó˜n@ó§…_ó­Žkó¤Yó–l=ó•k;ó•k;ó–m>e¸àÙÐ2ÿÿÿÀ€€Àpycsw-2.0.3/docs/_static/PaxHeaders.23451/pycsw-logo.png0000644000000000000000000000007413114323025017602 xustar0030 atime=1496426322.233265584 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/_static/pycsw-logo.png0000644000175000001440000003754613114323025020563 0ustar00kalxasusers00000000000000‰PNG  IHDR¬¬æ1GØsBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î< IDATxœíw|õ™ÿß³}Õ˪[ÕE²Ü{·…16 QCÂR9BÉ…4È%9.p!É…I€É ¢šbc¹7Ù––mõ^V}WÛw¬$«íîÌÉòšÈHS¾3ó™çû|Ÿ*¸\.&º‚Âh Hîÿ9°)'r\ÿ¢0@SÿÖ 4é‹‹Ì:ª~ãMX]Aap=p071µã:ˆ+ð]¸‰¼xøD_\dïAŒ au…9¸ z°ý»L®D®Ð P¨‘+5(dr0ñÒÿ_»»ÍŒÃîÞì63.—sän½À‡À»Àûú⢮ñ[È«+(Ô_f^P¡ וŒ6\‡B¡EÉ=žç .86lV#}†Vúz›±˜†ñÓì¶è‹‹Þ å8‚NX]A¡¸ø9n ™Dxd Úˆd2EP¯yã»ÍD_o ÆÞfÌFýP |xD_\´/× *au…7O3ÔÚXâsц'€ í:WpyÁé´c誧³íûàÚìà‡ú⢲`^+(„Õ.žÖ(UáÄ%N'<:5às_Ág.§ƒ®ö ºõå8vðà?õÅEÍÁ¸FÀ„Õ~ø —+TÄ$䛉 Èœ2aà§0øï‰Ö*…­ZV­D«V`³;1š¬Í6¬vÇÄ L$F>;§œ.p¹Àérát¹v mèí¬¦Ÿ_m@¡¾¸ho`g€°º‚B5ðn}•èøÉÄ&椟*ä ” (n‚Ž71£ÃÕ¤ÆG’ª‹"->’T]$iº(â"µn‚ªÈdžew81šmôYlôöYhl率­‡º¶ô=Ôë{è3ÛDe¢5(— ìV;Øìn"K…ÍjDßx“Q`þ]_\ôç@Æåau…IÀ[À2A“6—ˆè4é.T¥_‚*ä2¦¦Å33;‘™Y‰LÏL *Lòëvöš¨hêäTE3'+š)oìÀéB/Ïßî«Ý…ÕæÂ!A»\.Ú›ÏÐÓQ5ð«?ßÕÙý¢TÂê çãV¨')”Z’Ò¡ÖÆH:‡\Zµà&©¤#ýDÿErÓu,ÎKcfVyé:Tʉ7§Í6ÎTµp²ÒMàʦNŸÇLôòÕá“Õ…Ù*ž;½5è›NXv·ë‹‹|ßìH"¬® ðÜdÕjÂâHJ_„\!^*É7Q5Ja̧Š‘Ëš9Y¬ž“ErlD®\4è{ø¤´Š]'*ié4„äþÈó±Þà F³ ‹MÜÍ}´ÔÅa·”+õÅE-’Æ!–°º‚Â\à0›.e¶è…• €V%¦í´?p'ɱ\=?‡Õ³²HOŒÝC— >­ie׉Jöž®ÁhçÝ×fƒÙ…Íî›Kv›‰–Ú#XÌ݇€}q‘EìµDVWPƒ›¬Ó"¢ÓHœ´@ìùѨÂ5î~ ó"rÓuܲ2Ÿeù^GŸ5Øìö©åÝg¨mížèáŒÂÀ»±X]ôšœ>u\‡ÃJcålÖ>€WôÅE÷ˆ¾–/Âö{®>®QkcHÍZ!Ú•&C« -qçMâ–•ùÌÈJ éµ&.ü´–׊O‹ÒuGb<>a§ º N¬>¤­ÕÒKcåÞ{íôÅE¿s~1„ý=ð \¡&-g5 ¥ïÀ*™Ñ2TŠÐ="A€«ææpûš™¤é¢BvËGÏ7ðZñi.Ôë'z(£á‚î>'&‹wnõõ6Ó\{p9›ôÅE[}Ú+au…_ž©Ù+Pkc}ŽU!ˆ5%‰¿¹é:¾vÝ"¦MŠÎ ?Ã8QÞÄŸ?(¡¾-@U!²ÅhvÑcô®té/ÒÑrÜÑ_ËôÅEg½íï‘°º‚ÂLà< NH›GdLºÏjT1á²)þq‘ZþmÃ|ÖÌΞpÃúå‡ÃÉ[û?åõݧ±Ú./o›Å梳×éÕñÐZ CwÀ `¾¸ÈãÞÞÜR¿Ô‘1é¢ÈªU ÄDÈüþR½¦TÈÙ¼b:…«f¢QMl¤—˽& v‡•BŽZ)G©˜X{®\.ãÖÕ3Y5+‹>(¡äBCPψlШtÑmÝû¾¸è÷c^o$au…À'2¹’Œ©ëÉ=ç è¢å¨•Á%kT¸šn\Æ¢\éñ bPÕÔÉîSU—Ãéä“ÒJÞÜw–¶îẩR!G€Á/ àŽpGÛ›­~…hŽB°?Œ”øHn\–ÏêÙÙ(å?÷׊OQ´÷Œèý¥~+¢f2Ô·Ù±;FïÝÝ^I{ó€wôÅE›‡ea7)Õ‘¤O¹Êãur´EP^J„VÅ#w¬!/=! ó8].NV4±çt.$D‡“NBt8‰1è¢ÃP+}ÛoMú#mÝ}軌´uÑw_úÙe0`öH@HŽ‹äþ–0=#𘉭‡ËxåããA•ÿ0˜]´uŽv›‰Ú ô:}q‘iàoC û,pŒn*qIÓ=^D#'BøW¦æç÷¬c’î³þ×Ógálu gª›9[ÝBSǨE¬o8µ À†EÓøÂUsD}„Þ°«´‚?}p”@òú\ m¶1` »BoÒ½;ðû¡w¼ <*ÙãÉU HOd•ð"ÂÔJýÂÚÏY¢ÂÔ,ËÏ`Y~à¶áž­ié'q únÏ&²`bÛÑ œ¸ØÈ7nXÌŒLÿfkçN&L­ä™wâ4óÿÃã¢ä4µ–²aQÉ„½wu _Âê % ¥†Œië=ž<9^A˜:0éªVÊùÑ]W¬\ŽhîìeÏ©*ŠOUÒÑkò}ÀH•V°nþT¾°vn@.ë}gªÙòîA¿÷‘7ÔØfÇdþÁXÍ=ÔW´)úâ"'\’°Â"=KW¹\ LãYÆ­ËøÞm«?—dHŽäö5³¹uõ,J+ÙUZÁ‰òFœ!*å>>q‘•|}ãbfe{~Þ°rfú#¯ï>ÜŠDT¸laUš(ª0ìÖ¾D`>P—›=°“'„kKo‘ n^Îl?êg 2A`þ”4æOI£Ó`bÏ©Jv¬¤­+€-/¿½§'^+fÓÒéÜU0ǯÓo^>ƒÖn#Å'+ý¡$ ½›p­;eäw­VGawg%d3‚°) …Æã"´²€ì{ÖÍgq®ï¨¯Ïb#´Ü´|7.ŸÁÙê>@î°2Â4rAðk[6=“ §ýF?K€™YI|ÿ¶Õüø®«ÈHŠqÿ2HÛ@Eœ=§«øýÛû±I)йLà¡›W™3x¾ Ñë6–åiˆ¬y5Œ°žÂõ2™#I‰äk×-÷ÄþE0#3‰_Þ»¯_·˜ØHí%r° }æ%ëyꟻýr„hT ¾eZµRôGŒ-"ltDžü/¶ßÃ¥¹B5æM„‡É½Ýà Ô*9m^1áA×—#A`ͬ~óµë¹eù ÔJÏXâv®¦…'^Û…Á$:ƒz Ñá|yýBÿ ¦ŒU*Ô#V=IØd@pÄ~À"ú•b›‡a|ùš…¤'7ò(˜­vzúÌÌVLV›»Ã9¡¡wj¥‚[VÎâ×_»U³²ûkЉÛ|‰­ÊæNþëÕ]~Ei-ÏÏt»Ëýä`0¤ìv° |è¯ ¹‡„BX=+›U3³% œ«k¥´¢‘Nƒ‰.ƒÙýÓhò:E @L„–¤˜b"HŒ '1:‚Ę’c#‰ÐŽ=û ±Z¾¾q «fdóìÖƒt}÷ÀóVšÚ{øõ?÷ðß_¾VÔþCqï5 ¸Ø¨7‡ÈȸjÅ¥ªBà ô÷ …EÚ¢Ã5ܽvž´ƒ‚µRÁ‡%çGýÞ×}tÝÄ>ßÐ6êo“tÑäg$‘Ÿ™HÞ¤DÂÔ¡ip3=#‘ÇïÝÀs[q¶öRŸ@bÍ®[œç×ÑZ•’û¯_Ê/_ý$¸¶dƒQŽ( 0„“ƒ.Q…çÃûO"Ä}ÊCð…«æ†ì…ŠANr¹i \h^Î~ƒÞ]2óãã‘ ™I±ÌÈLdîäT¦¦ê‚v€è0 ܶ†wãíƒgòõ/ÎMgåŒ,¿Ÿšªã†%y¼{øœßç …·cÊçjH¡èW°E’6?#‘eÓ¥… :œ.œNgP³O¯]˜Ë…ÆÐ™p⢪¥ƒª–¶)c’.š‚Ù9¬ÈÏ Ú‡*›—å3-MÇsòª"xš9â"øwø²Rž°ii>ûÏUûån–‚‘v,ø¤´B!ž¬ ¹Œ{®–þ€Ž^¨ zªôü)©$ÅFÕôâikhïæïŸœà;Ͽ˟·¡¢©=h÷‘Ÿ‘Èã÷¬'?3ѳIk ‚Àׯ]L¸&pÝ[¥sûªá´P «” ¢/xýâ<ÉÉt5­´â²ôAX?oªÇù¿ÙöZÍãÿØÉc¯lc×ÉrlA(#¦á‘Â5\¿xºèÁ\·(¼ôàÕ[’—ÁÔTÝ% EÍZ›Bî]:ú&¬RacÂÙ´ØsíX°;œ¼°í §N’tœX¬š™M¸F…¯\°|½¾‡WvàÇ/oãè…ú€ïEn[9‹Âå3}^=;)–[–ÏøšÃ®ÜU0WÔdÈG¯ô¡Çú$¬Û¤å{Û´$_ò´þö¡³ÈH_ÌMŠÄR+ÌÊ‘4&oðç´÷ùãyâõO¨n•^qp$6-™Îí«f{¼žZ)ç— ÷5·úœä8–çg…ô£—û ï»ñR¢ÃY1=KÒÍW5wðQÉy–äeˆ>Æü¿]ÒÒ:ÖÍ›ŠBîD°^ÄÅÆvþëÿvò—í%¢l¬Þ°qa.w®™;æË¸«`.ɱ¡©qpËòÈå²€& o\òŸ„ÿßóvÝ¢ÌÊA.—F„DV[·‘W>9F¥`ùôL”¾È~LÒE3##‰OëZýr@H3×HŽxuw)à~“SÄ$.«o£×d|ñÛNH+±qAnPôXÿõß±ÑÝgæ©·ö°ãd¹¤ûŠUùYäK4aÙNžÛv“ÍF§ÑÄ'§¥IÙ ó§…Fµòß:¬€Ç—°jF¶è¯àTu35mî¶å'úØ£‡˜†8PVCwŸøétvV 9)q¡yÈn.—‹×öžä…íG°Ø‚SÌÊœ¦¶µsp–œ—tíILŠ^ÖóРEo!azyž4ìÖ£çõ½Ôø(InÌÓ5M—ôEÜu\wJ”J·.»dÃ/øŠ)WzäB=Oü³˜¶žÐFG¬jbÇÉ †¾LƒÙÊÇ¥Òžçº9S‚7KÂz”hàÓºVªZ:YN²xu Ã`¢ÛhaäS|º “U\ïV€ii ÌÌLfB© H”¶ =üúí½´‡¨Ò`§ÁÄK»Ž¹`Ü^zQt?0€ù“Ó$­_‚¿U‚åì§[Kʆ½˜œdñê@es‡[ÐØÌ6{ÎTù>ÁܲlæèýÁÉ; &~ûî>º´×Ž„Óåâ…b´ØF=LA0Ûìì%ÌœNµú.¯„ÚVzQR ÷„¨pVKtvxBèt_÷VßÑÃÓ[T ´×dá/;õªþ2ÇÒå]ßA©3/;5 ÙD Dzº.]X&“1M‚‘ûTu3}VÛ°î¹`ÇH4tô`³;ñ&ŽZ»ì/«}N€ëæ¡Q*B:­ 5m]¼ºï¤_Ǻ€w£Çd=«lÄ"!Èhá”ÀzQ @>ögÖ‚ ]´$sÔÁ1¦ë( ÝSô½FQÓõ{%eX%<ä(­šus¦ˆÞ߈U9|m‰ÑáܲĿpA—ÓE»Á$I±Øíœ¨_fZª¹LÀG?Tò~-QV‚¡ÈK_ÈÍh¶r¶¾eÔ ˆ/a»û,¸…¸­Ë„Éä@«•)áí’tØS0ÒÚNÕµ0;]|›Ëé© ,ÌI£¤*ˆ-Šwðû½«æ07Ó?ÉZÞÒÁ³;K°:œÃ¾V›ÓÅî²®Ÿ+®^´VÍÜÌŽU7yÝÏérÑc²#Òv>F`”Ë&“ƒÁŽÑhÃh°a2ùW$O ½¶ ‘$VJSŠÞ>頻Y¼*!2_ +±ÛÞ uTK0„ÌHKà* f ±¶Yé‰|÷Ú¥¢¥ÔHTë»Ø²ó(»Ý§.Xar‡3¹¯B!“Ìjµ•JŽRåN:lê6°óÓ*ÖK¨ò'—ɸoõ\ž|¿èÔ™ pÇ’|VLñ¿¿nmGÏì,Ád·‹á*àþ8OÔ6³VdùÓœøŽ—´a·y^WøªŠ=¡nÆ"š°R’àÔJïÓ‚¾Û„Ñl#\#îæ²’¢9]åÝÍj·;±Ûôǧ €R%G¥’Quñ3SIïjNˆ ãöÅù¼rà4¾Ø£U)øêê¹Ã¦[©¨ïèá™%˜¬öa×s:]8.ìv'‡ ‡Ý‰½ÿçÀïß³Tˆ&lbL8ÉÑáÔë{=î#¥X†ØŸ¿MX‹U¼BL«Îš–nò3Ź#³“c|Ö\.°ZX- ½6ÿÛžýözIçX’“ÆŽ#5|rª¹B†B.¸ƒs† 5.‚ݹ˜´xÿëZºøÁ‹ŸÐÑcEJ1&Ѧ# 7õ’¦7†Ó’½V ñ•xü葘% CØêñjANJðÛ–œoâµbé½§Þ¼ˆ(¥šÎv3m­&Z›û·´ˆHžºwm@d-oìä¿ýˆêºzº­ 6Ìfv›8²`ßñ}æzw`H‘°ÓeBX)Ö—JPÓ"~³xº!_øÃ[ǸP/ÞĦQòø}«G½Ä–Ná™×.>@h$Ž”5ñß~D—!ðj/'+Ä×n]8Í»C!aåo4_.„õ± 1¶²I¼yiJj,)ôM±°Úüä¯{úõDñÈÏÔqÿîÖ¤‚Ü4ŸŸ~iE@^¹7÷žç¡-û´°ˆÅÉJñ„Ò’•ìÙ>,eÑe Òø=A¼J á¥ÆGi}îsüBt¢ý×IDAT³¤.Ú+fV¬ÁjZºùÍëG$÷Å«g²fNO~µ€[?Ëïë;.~ûÏ#<ùCAí*ÞÖÕGS»øþg‹¼¨ Ñâ³v —‹„Õw‹OìKOð­Ãõš¬œ– VÍòß<ä ï¼ÈÇǪ%#ðÔׯ⪹ÒjäEŸÙÆ÷žÛÅ?> MW)RvjÚØ™‚‰âÛR/ÖÛ*r$ÒD`ßYñ ƒÓ’%å‚Iů¤Q‚D M¾ú›Ù/áHÅ) „õ$EcÂE©x"ØühÂÖµ‰'ì$‘æ”gÄ»U 9‹óB³ø0˜¬<úâž NËžp¦ª{õ>å7šó†ÚVñ Ûøè±Õ¸Ì$ñÒµ×d¥ÓÜš¶#!š° ú^ÑfJÎÊòÆNZ:ÅGʯ ¡Zn"=¿õDH¯±­¤Šo>½ÎÞоX€F½øC5¶„ÍJ¬S+Áòã/DÖjsÐ&I÷eî?+^Ê®™!Êdþßö3=ï;äμð~)½¸Ç§ë:Xhî4Š¾Ž‹Ô #Þ!Ca¥¸Üý…$;L½µ`Vޏ\$èp1j6- mÅA§Ëž¼7¨S›ÕæàÑ¿îá…ü+™é/ì'­â„ŒL&9:`FŠJpYIX€Z _мÉâ¢û–5I*“y÷Õ3$µ õí=&öœ_½Ï:zM|ów±ý˜´^ Á‚”…äH5N`ZšøÔó :³¿DØ3Uâ; Ξœ8æ3&«½È‘¦‹dm¦$_ÈI‰á…ïnä¦åâRM¼¡¼±“{õ>gª'®£5n¤››?¦Ôõ)a£þBaOT´ˆÞ7R«"'U\ €TŸþ=׌N *…œonšÇß~´‰Ù9þ¥]E·ÑÂ7~ûÍ¡í¹å RšÅ´,Ëï¬1˜¬’¼—þBaëZ{hï1‰ÞþqjAiE+euâ+ååeÄû Ø‚S“ù¿ŸÜÈ}×ÎZß©èp5JoVlH‰ÑðP.Ÿ!ž°'Ê[$e×ú Éo§´\¼”•ò…JõöCÊF…«yô‹Ëùãw6HòæˆÅ˦òÐ-KZ)냡iP‘a*fe‰/^}ìB³¤qù É„=!! hi~š¨¸€Ǫ%Ù&—NOeV¶ø:fóÆc›¹qYສ7Ü}õ ¾¼ÁÿXƒ@!%hÉ4$–uI^ª¤ÅmÉeKØ‹â%¬\&pÝ’É¢öµÚí•–Õúã/,—<…g&Eóôëø¯/¯–´ ÷ß8ŸÂU"“¢‚ )„|-Eè1Z(o­×n’ [ÑØ)IJ±›í=ßßâH&§ÆˆV b#5Nú+øAX§ËÅŽãÕ¢÷ÏJŠf¦È©»½ÇÄÎâÏ p߯Ùdzñƨ•r¾¼aoýìn]+)[6˜ ?û·•¬˜!¾)_0)¡<_hàÚy™ÄEŠSå}*-µ<øµ$þX¢üF Rö¥m§% ¨r~ü…e£ŠÃÈ–N¡èg·pÿó ™ðè :øÆÿ~$iñ9…\Æ“_+`žHëI0%¡ÄÔ@¶ÀWå‹>Æfw²ãDäqù ¿{²²URÐÊ5 ²E‡¨U6uI¶ËΛ’ÄM˧ þ÷’¼T^ùÑ üôK+HŒ ¬eЬ6[Þ9Î=OnåDy ßùãNÎúáP+åüîu^¦ƒ )õ$Œù™:I‹Ùýgëé1¯³/øEX— IÏá¥$ïÔ ï—J²÷³ooùXrN¸ÓÀÿ÷þ«%é‰þ"R‚„í3Û¸óªé’Îÿþañíꃿ­äR}ã›–‹W ŒfO¿Y"éü‘Zxðš .¨zMVÿûîÿÝ6êÆð“÷öYùÖ¶S凇G¥”óÔ××R0'#Cõˆ˜ñ–0µ‚uó³Dïßc´H ^ ü&lYmû˜/ÑLMfÁTñ%&?:ZÉ ?ôÄ`aç‰nÿÅÛ¼{à¢×ýº øÃvIîP*d<ñÕ‚Yr©ñâ“7¯]>VÍm¿x›?¾{œ>‹´CQ¯ïå§·û•þ"ðÃ;—ò¥uÁ‹D EÅœüõÃS!;·7šôZñ9I)±‘¾²qŽÏý2“¢yøÖE¼þØæ¥Åœ­ÖóÕß|ÈOþºÛ¯é|,T·tóÀ¶ûmêyðæ<²à\m;ßÙ²Ão­˜9‰?}w£¨ì㱦‹]½P *»Ø}ª6èç‹ ¶®µ‡­¥­×ÌNçžõ3ùÍ7×òöÏ ¹ïÚÙ¢CýËß}n/|pRRÙ¥@p²²•ï=·Ëï,ÙÜô8^üþõLI•Þ6T5^Úv*¤º/­úì–wcXì[7-`Õ¬ô'‚{QóÄWÖ0'é/RPr¾‰¼Pì·½2)6œ¾·‘%y©’Ž[,q1¸Pß!¹¤S°4ÂvöšyáýñMc–Šèp5[¾½žÍ+ÄëÛÁÀþ³õü䯻ý&m¸FÉïX'Ú$(ù(¡).<ùCãFè A­ïýúîsTCæd P)ÝÑ]?ÿ·U!­Õ5Å'kyð™í>;ìx‚\&ðèÝËùÛ—øtäeÄ@Ú±ðÖþ œ ° z0TÂ:œ.~ó†ôÒ•‹sxù7„ÔV9Ç/¶ðå§Þ÷Ë;€Û×äñÜw6x-lWog¯™-ï ê9ýEÐ;(.k¤øäø¬"f[@½²’£yé‘ëƒRƒ@,j[{¸ï©÷)•7³syåG70êè¸Z¹L`ãbñrÄàé7Küž‚´üxòÕC!-vVÓÒͯ_?Ìõ?yƒ¯þæɹ`C¡Q)øÉÝËyþákÉ'iÛm´ð­ßo磣â;pD\¤–-ßÞÀÝWÏöû•3'5WíØÅf>82¾!„Þ Ëš>ø¢RNdLpÒ7LV;]\»('mb·Òàl=¿~ý0¿{ó(g«õƒ‹˜ýgêQ*äÌ ’?%.‚›WLC£Rpºª »#´QH§‹OJÝ3Ñ?H2A`éôTrRb8øi6‡“om^(©â 7LV~vç„J×Î6·0zäÞ;~!",¸ ÇEhT¢‹Ây‚Ád¥hßyþó¥½¼±§Ìcaå£ç›0[,™î¿9G&˜;9‰kåÐÒÙG„N7þâøÅêÚzY1sr™^NJ s2©hêäþMó%EÄyÃO_Ú+©(r(0’°Büš[®>ÔF$’’¹4¨S*düå?®#/Ý?á3ï㟻Ë$¤Ü¼r?¸siP^ZEc/~tŠÇ«CnΙ;9‘§¾±6 .4ÁÄëÅçøõe°€®<û.úâ"B¤ÃÀfwò¨]ZpíÂIYŸoí»À£Ý”¯É©1<~ßj^ÿéfnX:%¤·¥­Ü÷Ôû’ªf‡ çjÛyú-iã…©è6ZhÐ÷²vn–d}6.Jˆ…Ù”V´ÐÖ%>䲩‹â“µÌ›’$)]Ù¢ÃÕ¬™“Á˧©Aßc¢+¥Ñ{ú¬|x´’™Ù ’2‚‰^“•~¿îqL,ô†qÓa‡¢²© “ÅÎR?ôË0µ’‹'SÛÚ#)wªË`æ½CåD…©E·õ…p’¹““¸mu«f¥£VÉih756Ájs°½¤ŠäئM ^"¥8.~ò×=~e‡ BXpG¨G†©EÕ …\ÆÕó²p8]’ê8œ.öŸ­çBC'KóRQѳ¥‹cY~w¯Áòi¤ÆGàÚ»M§õ8.vŸªÅît±pZJÐ,-¾ðß?(¹æD¨1a„8|®‘ìäh¿¼K‚àn~––Éás’ÌN5-Ý|t´’険 wTÄØpæMI↥S¸{Ý æOM"MIl¤¹ `0Ûü"qiy 5-ݬš™Ž<Ä]²Ÿ~³„JÌÑŒ$ìø9Óè°¸(­ßÕO®[<™y““xâÕƒ:×(ú¸Ö®>îz_¹v6_Ù8'dbj¥œ%y©Ã¢«œ.MíjZzÐ÷ôa0Ù0š¬ôš¬L6úÌ6”J9Z•­JFíþ®Q¢‹ÖÒÝg‘ÔP*^Üvš¿ï<²ó!5kyB¤VÅï¿u 3²Ó-?8\Áÿ•¼@˜’˃›LHQ¸Ë E{Ïó?ÿ84ÑÃðˆq5ky‚{%º-àöB×-™Ìëmæ‰éÉå <´eßúÃvÎ×I¯ÜòyÁÖCå<õÚቆ$Laú,v~vgÀ2±‘þû¾5üæ›k%×Ñ:RÖÄ=ÿóÿùòÞ %!~Vðâ¶Óüâ•ýß*ãºè ‡ÓÅÎ5$ņ“›˜ '3)š[×䑪‹ ¾­WRŸ­ò†NÞÜ{ƒÙJ~–.äÍë&N§‹ÿyí0¯||f¢‡" j% .ì=]G¸:ð¸¹LFnz<…«ò˜™•@{ItŸ*‡ÓÅ©Ê6ÞÞ£ÙFJ|Q½l—;,6?þKq@QbãËŽ°8t®‘†vK¦§¢ Є#î2=×/™Ìš9˜¬vª›»EM›ƒÒò^ß}ŽãZËddH,ùs9¢Ë`áÛ[>Y[ÒPa\ƒ_üAvJ O~eMÐcS[»úx}÷9ŠKk%ûë#´*Ö/Ìæ¦åS™¢\ÿPâDy ½¸‡V îíË#­Büš[V{4aq¤f¯œÈ± B£Rðƒ;–rýRq =¤¢©ÃÀ¡O9|®‘£ç›è•í;%-–‹sX4-…i“âÆ%ã×_8.^øà$/~tê3·¸p:íTŸû O_\nÂNÊÊ02¦­›ÐŽÄ¦eSøþíKDWïöN§‹³5z}ÚÀ¡sœ­Ñãé• ×(™39‘ùS’™75‰éñ—êÐÔaà±'>ž5Ø,êÊw”ë‹‹¦‚›°a€Qddçß0¡ “t‘|ÿŽ%ãfä·Ú´võÑÒa¤¹ÃHs§–Î>š; 4wié0b²ÚQ*dhT 4ýÞ)­ZAl„†Åy©,Ÿ‘6®É#ññ±jžxõ ä:—LF=MÕöè‹‹Ö.— ]Aa™w-r¹ø’‹ã‰«çgñÝ[…ÔE)N§ë²Tª[ºùíG$¹¬/gºëi­?𚾸èN¸KÐD;læË–°;WsðÓ¾yÃø%ìt»ÝŒŠà÷\ úÌ6~ûÏ#¼¸œïܲÈïä½Ï œ.[–³åÝã!ÍRž(8ìÞ ‹ÃöÙ¸éóuÜÿô6æNNä+ç”xøY„Óåâ“5¼´ýôç:›„­°Y?[þôÒŠV|æcfféøÊÆ9¬˜9qŽñ€Åæà½ƒåüß㳇?OÂÇÁþ„Ý üØØÛL\’ø.x— ÎTëyø;ÉKçK×ÌdÍœtTŠÏO<@·Ñ»Ëxcw™¤‰Ï2ì6Vs€Lß ì Ëf1ÄØ,”ê‰I€ euíü䯻‰Ôª¸fa67,™ìWJÎå›ÝÉÁOØ^RÅîSµ!ïóp¹ÁØ3èBþH_\4ð,¸ú= º‚¿wÇ%å£ ~ ž‰BfR4×/™ÌuK&­g¨àtº8v±™m%U|r¢F’îó†¦ê˜Œz€/é‹‹þ6ðû¡„½xM­%-gÕÄŒ2„˜œËÂÜdå¦0oJ’¤6?¡Bs‡‘ÒŠN”·°çTä–¥ŸG8Vjʶ.;¤/.\Yõy~X-¦N•ÃnF®^A±Ë.—»ïWyc'ÿøä2™ÀôŒxNKavNÙ)1¤ÆG­ÌÏXpº\Ô4ws¢¢•ÒòJ+Zhîßdú_}½-€ `ßP²ÂÂê‹‹zu…ŸŒ½ÍDÅfë ÇN§‹³Õúa9ø*¥œŒÄ(²“£ÉJŽ!;9]”–­ªS®Q™vmw8±Ø˜­v &+õú^Úz©kë¥^ßK}[/í½ãÞêò³ˆ¾Kúë;#ÿ62ªäM`COGÍçž°cÁjsPÞÐIyC§Ç}Â5*ÂÔ ìf›‹Õ>î-F?¯°ÛLôZœˆ ìËÀO¬æî Cw=ÑŸo»¦?p¹Ü®Ð`–(24Jf››Ý‰V¥ 7=‡ÓEES}fÛ°ýÃ4Jä‚@Ÿeì:‚N— ãˆcbÂÈIŽAßÓGMKG7nš.’ÔøL5-=£‘Z.óDhU¸‹M i¿Álõ؉¦£õ.—à}qѨªÃ«/.²è ^îh-#<*A¸<Âå>Ø´t ?¼k¿~ý0™IÑ®ÎÔ¡MV;ÿÜSƳï$çîXÊÆÅ9üùƒ“üéýÒQç[:=§Xdz |çÙ€;¶øßoœÏšÙé¤ ©×ÕÖÝÇó[K‡u+Ÿ™À¿°lT›¥²ÚvþçµCƒêÓß~´‰”øîxüaå£bÂxÿ¿oà¡-;8øiÃàß4*=q;&«?z׌µš{0t5X€ŸŽõÌÆbã߀Óvk=ÕcsAÆ7n˜Ç ˦ðû7K¸û—ïñýçwÑÔnàKëfò³{.ÕTfÙ´lʘ‹Ã›û»QT$—Éžyðî¼j:F‹Ÿ½¼ûŸÞÆËÛO£Q)xôîåƒååã"µ<ýÀ:²’¢yyûiþãù]|ÿù]¼µïyñüéვ½wœ¨`Õ¬á3ðÊ!žÆ‘á ËòÓШ|r¢Æc¼qG˧ô/¶žÑ™N=аúâ"'ðC€®¶ 8ãÓ„í_‘a*¾³eÿ·ëS.6t°ûT÷=õ>únå0w²»·Øéª6.6tÎÒüáñºh-«f¥ÓÒiì{ÃÒ)ÌÎI¤¢±‹ûŸ­|p¤‚cšÙòÎq~Wt€¯]?A€¥ù©DjU|p¸‚-ïgÏ©:vŸªã‰W²ãx5͆Ág;ú{u­š•>l +gNÂjwÐg¶±|Æp®›Àvµ»LFý€îÚüÒÓ³s¾×};VºõÒ:^t.käĈ"w};ÿ(þ`XY§îqKÏ‘Dn\6¹Là­}%ØÆEnéùòöÓ£¬[•ó½çvñÈŸ>A@Ì÷Z1ss2†¥ºÿø/»)üù[ƒ5$ÎÕ¶ÓØn`Vv1îÌb•R΢ÜŽ_láde+‰Qƒ­CU 9+g¥£ï6QZ>v„[ºðäHSÖPxSPÐ¥¿ˆ¹¯ÝËnW(ÊjÇ~¾=Ïò³.¹—?:R‰ÑlcÕ¬ôÁ)Z&Ü´b*v‡“w†è¤YcY=ÒëË:qº\œ¸ØÌ®Ò⣴üêëW±ó×wñì·×óÅu3ÆLÝq¬™ °<ß­,œ–ŒF¥`ÿ™zŽ]l`Yÿ,°8/…p’'Æ®dÞÙv‹©  ø½·gå‘°úâ¢#À3.—‹–º£ØmW<0¡BGÏØ-+ýäØðÁß™¬vÞ?\B.ãú%î$Í¥ù©¤ÄE°ûdí0O™Ví^Sw}Ì8œ.~ôçb~ü—Ý|ØÿQ,ÌMáÛ7/äµGobË·×Ëö©Ç®œéVœ­çÀY÷bkù ÷ßÖÎË`{ÉhuÀØÓDgëyp›±î×y%š/ÀÃÀN‡ÝJsía\έŒñ‚.fì*á±­]ýa‹ªMKÝ1›–¹Õƒ¢}†í7‚¨óV”AdØ%÷´Ë;ŽWóŸ/ïeã_ç¾§ÞçÅm§iëêcQn ß¿cÉà¾eµíÔë{YšŸ†R!cÅŒ4êZ{¨k를¡“Ö®>LKF«R°zV:ÍFÎTï©f5÷ÐÚp|à?¢/.zÏÓ3€WÂê‹‹ìÀmÀÅ'¿‚ bþ”±3'–÷¯´KÎ7û}USÇ/¶ÃìœDVÌH£¦¥›’E2*ûMNc5 ‹Ððê£7±ó©»H‰‹àÆeSyü¾Õ¬è—ŠN—‹3Õzþøîq~úÒ^æN~žÇ« ×(Ù¼b)ñì?{ÉŒµÿL=Z•‚û6Î&*\ÍŽãÕÃl¯#„àßõÅEOú~R"ŠÁé‹‹:î!âû ‚ˆY:n[“7ìwWÍÍdýº–1K íu›¸½{9•‚7÷^µÏKÛNcw8¹wýl²’/õî’ _¾v6Z•‚Òòš: D„)Y¿ ›ïÞºÕˆÚb3²ÝeQK+†/ w¯à×Ï´N€[5øÂZw㻡Ö—Ë9TÍ< |ÕÓ³ Q ÿúâ¢2]AáÀÖζór™\At|hŠ\ü+¢£×Äܶ„µó29_ÛÁä´–ä¥Òg±óÓ—öŽ´ýIi-½&²’£±Øl=<ÚšSÞÐÉïß*á¡[ñÊ7±÷t] kf§“F[WõKÏ7÷^`ݼ,ff'ðñ¯î䨅fš;ŒÌŸšDNJ ún/~tjØùÏ×uP×ÖKzB$&«/úèù&lv'J…Œz}ïàÂÒåtÐÚp|`!_lÖ‰ŽJ—ÿìg?µã#÷ÞQþ«—^ï6š mØí&Â"Æ«ÿçÓ3âY9+VñÂ¥ägêX9sF³w\ä©×q¶fìN—‹Ø s&'òÑÑJ>î·ŽÄ™j=ûÎÔ¥eÚ¤8æMI¢­»­+xì¥=tô'/ÚN>>^MoŸ•øh-9)±ä¥ÇÑÚÕÇîSu<ú×=c7uv¹Ð¨”ì=]7¸Ø°9œÄEiûÓz.r¶FÝf¢¹æà@œk/p­¾¸èâè“z†0–‹Ìt…w´š°8’Ò#WL|\ég·¬œÆïZÆ›û.ðä«%ÿ¿ÿ~5+fLâî_¾ÇņË;Ñbꤹö» ¸Q_\$¹N½ä@}qÑ«Àj ÁÜ×ACåîÜ›+GägêXž?‰Cç/{²ºêi¬Ú?@Ö]À"È ~6åЕè oÙm¦%UûХξÝbÈdO?à®6''›ÝÁsï˜àQy†Ëé £µŒîöÁnà[€ïô[Ÿü‚ßUÖôÅEMº‚Â5ÀŸœNû=­õÇén¯">9MØg¯$åDÀluÐÑkÂhªètºHOˆ"5>‚¦¿yãŸzÐq'.=]µt¶ž(†aÔ=è©%ë°cAWPø à¿€€°Èdâ’¦£RG|î+™L 6BsÙæ~õõ6ÓÞr›epv7Y÷ãüA!,€® 0øà{@8DÆf›‹BùùÊ»‚Ñ0÷uÒÑòéи“*àQàU}qQÐÒ1‚FØè “pß~P€€&,–ðÈ¢’QªÂ}œá >paîëÄØÛD_O36ë ûX<üQ_\ô<õ vº‚©À/€›ÁîJu$á‘É„G%£ÖÆz<þ .?¸œLÆ6Œ½Íôõ6ã°ãcð<𔾸(df£vº‚ÂàZ`3p=0«&Èä(äJû§BƒBéþ)W|¾:¸|fàrb·[pØÌØífv3v›û§ÃnÈ·@%ðvÿv@_\òè¨v(t…  7yo®ØÁ>{8N?IõÅE§ÇûâãJØ‘ÐF©ý[ʧâ¶8\É€XfÜ%.‡nM@ãÐ:W %ì\T\‘`Wð™Âÿ¿îcŽŽìªIEND®B`‚pycsw-2.0.3/docs/PaxHeaders.23451/_templates0000644000000000000000000000007413114323025015423 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/_templates/0000755000175000001440000000000013114323025016442 5ustar00kalxasusers00000000000000pycsw-2.0.3/docs/_templates/PaxHeaders.23451/indexsidebar.html0000644000000000000000000000007413114323025021027 xustar0030 atime=1496426321.353246961 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/_templates/indexsidebar.html0000644000175000001440000000520613114323025021774 0ustar00kalxasusers00000000000000

This product conforms to the OpenGIS Catalogue Service Implementation Specification [Catalogue Service for the Web], Revision 3.0.0. OGC, OGC®, and CERTIFIED OGC COMPLIANT are trademarks or registered trademarks of the Open Geospatial Consortium, Inc. in the United States and other countries.

This product conforms to the OpenGIS Catalogue Service Implementation Specification [Catalogue Service for the Web], Revision 3.0.0. OGC, OGC®, and CERTIFIED OGC COMPLIANT are trademarks or registered trademarks of the Open Geospatial Consortium, Inc. in the United States and other countries.

This product conforms to the OpenGIS Catalogue Service Implementation Specification [Catalogue Service for the Web], Revision 2.0.2. OGC, OGC®, and CERTIFIED OGC COMPLIANT are trademarks or registered trademarks of the Open Geospatial Consortium, Inc. in the United States and other countries.

OSGeo Project

pycsw-2.0.3/docs/_templates/PaxHeaders.23451/layout.html0000644000000000000000000000007413114323025017703 xustar0030 atime=1496426321.277245351 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/_templates/layout.html0000644000175000001440000000277213114323025020655 0ustar00kalxasusers00000000000000{% extends "!layout.html" %} {%- block extrahead %} {{ super() }} {% endblock %} {% block relbar1 %} {{ super() }} {% endblock %} {% block footer %} {% endblock %} pycsw-2.0.3/docs/PaxHeaders.23451/administration.rst0000644000000000000000000000007413114323025017122 xustar0030 atime=1496426320.161221734 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/administration.rst0000644000175000001440000001562413114323025020074 0ustar00kalxasusers00000000000000.. _administration: Administration ============== pycsw administration is handled by the ``pycsw-admin.py`` utility. ``pycsw-admin.py`` is installed as part of the pycsw install process and should be available in your PATH. .. note:: Run ``pycsw-admin.py -h`` to see all administration operations and parameters Metadata Repository Setup ------------------------- pycsw supports the following databases: - SQLite3 - PostgreSQL - PostgreSQL with PostGIS enabled - MySQL .. note:: The easiest and fastest way to deploy pycsw is to use SQLite3 as the backend. .. note:: PostgreSQL support includes support for PostGIS functions if enabled .. note:: If PostGIS (1.x or 2.x) is activated before setting up the pycsw/PostgreSQL database, then native PostGIS geometries will be enabled. To expose your geospatial metadata via pycsw, perform the following actions: - setup the database - import metadata - publish the repository Supported Information Models ---------------------------- By default, pycsw supports the ``csw:Record`` information model. .. note:: See :ref:`profiles` for information on enabling profiles Setting up the Database ----------------------- .. code-block:: bash $ pycsw-admin.py -c setup_db -f default.cfg This will create the necessary tables and values for the repository. The database created is an `OGC SFSQL`_ compliant database, and can be used with any implementing software. For example, to use with `OGR`_: .. code-block:: bash $ ogrinfo /path/to/records.db INFO: Open of 'records.db' using driver 'SQLite' successful. 1: records (Polygon) $ ogrinfo -al /path/to/records.db # lots of output .. note:: If PostGIS is detected, the pycsw-admin.py script does not create the SFSQL tables as they are already in the database. Loading Records ---------------- .. code-block:: bash $ pycsw-admin.py -c load_records -f default.cfg -p /path/to/records This will import all ``*.xml`` records from ``/path/to/records`` into the database specified in ``default.cfg`` (``repository.database``). Passing ``-r`` to the script will process ``/path/to/records`` recursively. Passing ``-y`` to the script will force overwrite existing metadata with the same identifier. Note that ``-p`` accepts either a directory path or single file. .. note:: Records can also be imported using CSW-T (see :ref:`transactions`). Exporting the Repository ------------------------ .. code-block:: bash $ pycsw-admin.py -c export_records -f default.cfg -p /path/to/output_dir This will write each record in the database specified in ``default.cfg`` (``repository.database``) to an XML document on disk, in directory ``/path/to/output_dir``. Optimizing the Database ----------------------- .. code-block:: bash $ pycsw-admin.py -c optimize_db -f default.cfg .. note:: This feature is relevant only for PostgreSQL and MySQL Deleting Records from the Repository ------------------------------------ .. code-block:: bash $ pycsw-admin.py -c delete_records -f default.cfg This will empty the repository of all records. Database Specific Notes ----------------------- PostgreSQL ^^^^^^^^^^ - if PostGIS is not enabled, pycsw makes uses of PL/Python functions. To enable PostgreSQL support, the database user must be able to create functions within the database. In case of recent PostgreSQL versions (9.x), the PL/Python extension must be enabled prior to pycsw setup - `PostgreSQL Full Text Search`_ is supported for ``csw:AnyText`` based queries. pycsw creates a tsvector column based on the text from anytext column. Then pycsw creates a GIN index against the anytext_tsvector column. This is created automatically in ``pycsw.admin.setup_db``. Any query against `csw:AnyText` or `apiso:AnyText` will process using PostgreSQL FTS handling PostGIS ^^^^^^^ - pycsw makes use of PostGIS spatial functions and native geometry data type. - It is advised to install the PostGIS extension before setting up the pycsw database - If PostGIS is detected, the pycsw-admin.py script will create both a native geometry column and a WKT column, as well as a trigger to keep both synchronized. - In case PostGIS gets disabled, pycsw will continue to work with the `WKT`_ column - In case of migration from plain PostgreSQL database to PostGIS, the spatial functions of PostGIS will be used automatically - When migrating from plain PostgreSQL database to PostGIS, in order to enable native geometry support, a "GEOMETRY" column named "wkb_geometry" needs to be created manually (along with the update trigger in ``pycsw.admin.setup_db``). Also the native geometries must be filled manually from the `WKT`_ field. Next versions of pycsw will automate this process .. _custom_repository: Mapping to an Existing Repository --------------------------------- pycsw supports publishing metadata from an existing repository. To enable this functionality, the default database mappings must be modified to represent the existing database columns mapping to the abstract core model (the default mappings are in ``pycsw/config.py:MD_CORE_MODEL``). To override the default settings: - define a custom database mapping based on ``etc/mappings.py`` - in ``default.cfg``, set ``repository.mappings`` to the location of the mappings.py file: .. code-block:: none [repository] ... mappings=path/to/mappings.py See the :ref:`geonode` and :ref:`odc` for further examples. Existing Repository Requirements ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pycsw requires certain repository attributes and semantics to exist in any repository to operate as follows: - ``pycsw:Identifier``: unique identifier - ``pycsw:Typename``: typename for the metadata; typically the value of the root element tag (e.g. ``csw:Record``, ``gmd:MD_Metadata``) - ``pycsw:Schema``: schema for the metadata; typically the target namespace (e.g. ``http://www.opengis.net/cat/csw/2.0.2``, ``http://www.isotc211.org/2005/gmd``) - ``pycsw:InsertDate``: date of insertion - ``pycsw:XML``: full XML representation - ``pycsw:AnyText``: bag of XML element text values, used for full text search. Realized with the following design pattern: - capture all XML element and attribute values - store in repository - ``pycsw:BoundingBox``: string of `WKT`_ or `EWKT`_ geometry The following repository semantics exist if the attributes are specified: - ``pycsw:Keywords``: comma delimited list of keywords - ``pycsw:Links``: structure of links in the format "name,description,protocol,url[^,,,[^,,,]]" Values of mappings can be derived from the following mechanisms: - text fields - Python datetime.datetime or datetime.date objects - Python functions Further information is provided in ``pycsw/config.py:MD_CORE_MODEL``. .. _`OGR`: http://www.gdal.org/ogr .. _`OGC SFSQL`: http://www.opengeospatial.org/standards/sfs .. _`WKT`: http://en.wikipedia.org/wiki/Well-known_text .. _`EWKT`: http://en.wikipedia.org/wiki/Well-known_text#Variations .. _`PostgreSQL Full Text Search`: http://www.postgresql.org/docs/9.2/static/textsearch.html pycsw-2.0.3/docs/PaxHeaders.23451/api.rst0000644000000000000000000000007413114323025014646 xustar0030 atime=1496426320.309224866 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/api.rst0000644000175000001440000000256313114323025015616 0ustar00kalxasusers00000000000000.. _api: API === Python applications can integrate pycsw into their custom workflows. This allows for seamless integate within frameworks like Flask and Django Below are examples of where using the API (as opposed to the default WSGI/CGI services could be used: - configuration based on a Python dict, or stored in a database - downstream request environment / framework (Flask, Django) - authentication or authorization logic - forcing CSW version 2.0.2 as default Simple Flask Example -------------------- .. code-block:: python import logging from flask import Flask, request from pycsw import __version__ as pycsw_version from pycsw.server import Csw LOGGER = logging.getLogger(__name__) APP = Flask(__name__) @APP.route('/csw') def csw_wrapper(): """CSW wrapper""" LOGGER.info('Running pycsw %s', pycsw_version) pycsw_config = some_dict # really comes from somewhere # initialize pycsw # pycsw_config: either a ConfigParser object or a dict of # the pycsw configuration # # env: dict of (HTTP) environment (defaults to os.environ) # # version: defaults to '3.0.0' my_csw = Csw(pycsw_config, request.environ, version='2.0.2') # dispatch the request http_status_code, response = my_csw.dispatch_wsgi() return response, http_status_code, {'Content-type': csw.contenttype} pycsw-2.0.3/docs/PaxHeaders.23451/ckan.rst0000644000000000000000000000007413114323025015011 xustar0030 atime=1496426320.337225459 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/ckan.rst0000644000175000001440000000211413114323025015751 0ustar00kalxasusers00000000000000.. _ckan: CKAN Configuration ================== CKAN (http://ckan.org) is a powerful data management system that makes data accessible – by providing tools to streamline publishing, sharing, finding and using data. CKAN is aimed at data publishers (national and regional governments, companies and organizations) wanting to make their data open and available. `ckanext-spatial`_ is CKAN's geospatial extension. The extension adds a spatial field to the default CKAN dataset schema, using PostGIS as the backend. This allows to perform spatial queries and display the dataset extent on the frontend. It also provides harvesters to import geospatial metadata into CKAN from other sources, as well as commands to support the CSW standard. Finally, it also includes plugins to preview spatial formats such as GeoJSON. CKAN Setup ---------- Installation and configuration Instructions are provided as part of the ckanext-spatial `documentation`_. .. _`ckanext-spatial`: https://github.com/okfn/ckanext-spatial .. _`documentation`: http://docs.ckan.org/projects/ckanext-spatial/en/latest/csw.html pycsw-2.0.3/docs/PaxHeaders.23451/committers.rst0000644000000000000000000000007413114323025016263 xustar0030 atime=1496426320.349225712 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/committers.rst0000644000175000001440000000010713114323025017223 0ustar00kalxasusers00000000000000.. _committers: Committers ========== .. include:: ../COMMITTERS.txt pycsw-2.0.3/docs/PaxHeaders.23451/conf.py0000644000000000000000000000007413114323025014642 xustar0030 atime=1496426319.901216231 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/conf.py0000644000175000001440000002454613114323025015617 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= # # pycsw documentation build configuration file, created by # sphinx-quickstart on Fri Aug 2 19:48:50 2013. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'pycsw' authors = u'Tom Kralidis' license = u'This work is licensed under a Creative Commons Attribution 4.0 International License' copyright = u'2010-2015, ' + authors + ' ' + license # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. with open('../VERSION.txt') as f: version = f.read().strip() # The full version, including alpha/beta/rc tags. release = version # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. today_fmt = '%Y-%m-%d' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'classic' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. html_theme_options = { 'sidebarbgcolor': '#356aa0', 'sidebarlinkcolor': '#ffffff', 'relbarlinkcolor': '#ffffff', 'footerbgcolor': '#356aa0' } # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = 'Documentation' # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. html_favicon = '_static/favicon.ico' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. html_last_updated_fmt = '%Y-%m-%dT%H:%M:%SZ' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. html_sidebars = { #'index':'indexsidebar.html', '**':'indexsidebar.html', } # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. html_use_index = False # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'pycswdoc' # -- Options for LaTeX output -------------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'pycsw.tex', u'pycsw Documentation', authors, 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'pycsw', u'pycsw Documentation', [authors], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------------ # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ('index', 'pycsw', u'pycsw Documentation', authors, 'pycsw', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' # -- Options for Epub output --------------------------------------------------- # Bibliographic Dublin Core info. epub_title = u'pycsw' epub_author = authors epub_publisher = authors epub_copyright = copyright # The language of the text. It defaults to the language option # or en if the language is not set. #epub_language = '' # The scheme of the identifier. Typical schemes are ISBN or URL. #epub_scheme = '' # The unique identifier of the text. This can be a ISBN number # or the project homepage. #epub_identifier = '' # A unique identification for the text. #epub_uid = '' # A tuple containing the cover image and cover page html template filenames. #epub_cover = () # HTML files that should be inserted before the pages created by sphinx. # The format is a list of tuples containing the path and title. #epub_pre_files = [] # HTML files shat should be inserted after the pages created by sphinx. # The format is a list of tuples containing the path and title. #epub_post_files = [] # A list of files that should not be packed into the epub file. #epub_exclude_files = [] # The depth of the table of contents in toc.ncx. #epub_tocdepth = 3 # Allow duplicate toc entries. #epub_tocdup = True pycsw-2.0.3/docs/PaxHeaders.23451/configuration.rst0000644000000000000000000000007413114323025016744 xustar0030 atime=1496426320.369226136 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/configuration.rst0000644000175000001440000001756413114323025017723 0ustar00kalxasusers00000000000000.. _configuration: Configuration ============= pycsw's runtime configuration is defined by ``default.cfg``. pycsw ships with a sample configuration (``default-sample.cfg``). Copy the file to ``default.cfg`` and edit the following: **[server]** - **home**: the full filesystem path to pycsw - **url**: the URL of the resulting service - **mimetype**: the MIME type when returning HTTP responses - **language**: the ISO 639-1 language and ISO 3166-1 alpha2 country code of the service (e.g. ``en-CA``, ``fr-CA``, ``en-US``) - **encoding**: the content type encoding (e.g. ``ISO-8859-1``, see https://docs.python.org/2/library/codecs.html#standard-encodings). Default value is 'UTF-8' - **maxrecords**: the maximum number of records to return by default. This value is enforced if a CSW's client's ``maxRecords`` parameter is greater than ``server.maxrecords`` to limit capacity. See :ref:`maxrecords-handling` for more information - **loglevel**: the logging level (see http://docs.python.org/library/logging.html#logging-levels) - **logfile**: the full file path to the logfile - **ogc_schemas_base**: base URL of OGC XML schemas tree file structure (default is http://schemas.opengis.net) - **federatedcatalogues**: comma delimited list of CSW endpoints to be used for distributed searching, if requested by the client (see :ref:`distributedsearching`) - **pretty_print**: whether to pretty print the output (``true`` or ``false``). Default is ``false`` - **gzip_compresslevel**: gzip compression level, lowest is ``1``, highest is ``9``. Default is off - **domainquerytype**: for GetDomain operations, how to output domain values. Accepted values are ``list`` and ``range`` (min/max). Default is ``list`` - **domaincounts**: for GetDomain operations, whether to provide frequency counts for values. Accepted values are ``true`` and ``False``. Default is ``false`` - **profiles**: comma delimited list of profiles to load at runtime (default is none). See :ref:`profiles` - **smtp_host**: SMTP host for processing ``csw:ResponseHandler`` parameter via outgoing email requests (default is ``localhost``) - **spatial_ranking**: parameter that enables (``true`` or ``false``) ranking of spatial query results as per `K.J. Lanfear 2006 - A Spatial Overlay Ranking Method for a Geospatial Search of Text Objects `_. **[manager]** - **transactions**: whether to enable transactions (``true`` or ``false``). Default is ``false`` (see :ref:`transactions`) - **allowed_ips**: comma delimited list of IP addresses (e.g. 192.168.0.103), wildcards (e.g. 192.168.0.*) or CIDR notations (e.g. 192.168.100.0/24) allowed to perform transactions (see :ref:`transactions`) - **csw_harvest_pagesize**: when harvesting other CSW servers, the number of records per request to page by (default is 10) **[metadata:main]** - **identification_title**: the title of the service - **identification_abstract**: some descriptive text about the service - **identification_keywords**: comma delimited list of keywords about the service - **identification_keywords_type**: keyword type as per the `ISO 19115 MD_KeywordTypeCode codelist `_). Accepted values are ``discipline``, ``temporal``, ``place``, ``theme``, ``stratum`` - **identification_fees**: fees associated with the service - **identification_accessconstraints**: access constraints associated with the service - **provider_name**: the name of the service provider - **provider_url**: the URL of the service provider - **contact_name**: the name of the provider contact - **contact_position**: the position title of the provider contact - **contact_address**: the address of the provider contact - **contact_city**: the city of the provider contact - **contact_stateorprovince**: the province or territory of the provider contact - **contact_postalcode**: the postal code of the provider contact - **contact_country**: the country of the provider contact - **contact_phone**: the phone number of the provider contact - **contact_fax**: the facsimile number of the provider contact - **contact_email**: the email address of the provider contact - **contact_url**: the URL to more information about the provider contact - **contact_hours**: the hours of service to contact the provider - **contact_instructions**: the how to contact the provider contact - **contact_role**: the role of the provider contact as per the `ISO 19115 CI_RoleCode codelist `_). Accepted values are ``author``, ``processor``, ``publisher``, ``custodian``, ``pointOfContact``, ``distributor``, ``user``, ``resourceProvider``, ``originator``, ``owner``, ``principalInvestigator`` **[repository]** - **database**: the full file path to the metadata database, in database URL format (see http://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls) - **table**: the table name for metadata records (default is ``records``). If you are using PostgreSQL with a DB schema other than ``public``, qualify the table like ``myschema.table`` - **mappings**: custom repository mappings (see :ref:`custom_repository`) - **source**: the source of this repository only if not local (e.g. :ref:`geonode`, :ref:`odc`). Supported values are ``geonode``, ``odc`` - **filter**: server side database filter to apply as mask to all CSW requests (see :ref:`repofilters`) .. note:: See :ref:`administration` for connecting your metadata repository and supported information models. .. _maxrecords-handling: MaxRecords Handling -------------------------- The The following describes how ``maxRecords`` is handled by the configuration when handling ``GetRecords`` requests: .. csv-table:: :header: server.maxrecords,GetRecords.maxRecords,Result none set,none passed,10 (CSW default) 20,14,20 20,none passed,20 none set,100,100 20,200,20 .. _alternate-configurations: Alternate Configurations ------------------------ By default, pycsw loads ``default.cfg`` at runtime. To load an alternate configuration, modify ``csw.py`` to point to the desired configuration. Alternatively, pycsw supports explicitly specifiying a configuration by appending ``config=/path/to/default.cfg`` to the base URL of the service (e.g. ``http://localhost/pycsw/csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities``). When the ``config`` parameter is passed by a CSW client, pycsw will override the default configuration location and subsequent settings with those of the specified configuration. This also provides the functionality to deploy numerous CSW servers with a single pycsw installation. Hiding the Location ^^^^^^^^^^^^^^^^^^^ Some deployments with alternate configurations prefer not to advertise the base URL with the ``config=`` approach. In this case, there are many options to advertise the base URL. Environment Variables ~~~~~~~~~~~~~~~~~~~~~ One option is using Apache's ``Alias`` and ``SetEnvIf`` directives. For example, given the base URL ``http://localhost/pycsw/csw.py?config=foo.cfg``, set the following in Apache's ``httpd.conf``: .. code-block:: none Alias /pycsw/csw-foo.py /var/www/pycsw/csw.py SetEnvIf Request_URI "/pycsw/csw-foo.py" PYCSW_CONFIG=/var/www/pycsw/csw-foo.cfg .. note:: Apache must be restarted after changes to ``httpd.conf`` pycsw will use the configuration as set in the ``PYCSW_CONFIG`` environment variable in the same manner as if it was specified in the base URL. Note that the configuration value ``server.url`` value must match the ``Request_URI`` value so as to advertise correctly in pycsw's Capabilities XML. Wrapper Script ~~~~~~~~~~~~~~ Another option is to write a simple wrapper (e.g. ``csw-foo.sh``), which provides the same functionality and can be deployed without restarting Apache: .. code-block:: bash #!/bin/sh export PYCSW_CONFIG=/var/www/pycsw/csw-foo.cfg /var/www/pycsw/csw.py pycsw-2.0.3/docs/PaxHeaders.23451/contributing.rst0000644000000000000000000000007413114323025016604 xustar0030 atime=1496426320.469228252 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/contributing.rst0000644000175000001440000000006413114323025017546 0ustar00kalxasusers00000000000000.. _contributing: .. include:: ../CONTRIBUTING.rst pycsw-2.0.3/docs/PaxHeaders.23451/csw-support.rst0000644000000000000000000000007413114323025016403 xustar0030 atime=1496426320.533229607 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/csw-support.rst0000644000175000001440000000236213114323025017350 0ustar00kalxasusers00000000000000.. _csw-support: CSW Support =========== Versions -------- pycsw supports both CSW 2.0.2 and 3.0.0 versions by default. In alignment with the CSW specifications, the default version returned is the latest supported version. That is, pycsw will always behave like a 3.0.0 CSW unless the client explicitly requests a 2.0.2 CSW. The sample URLs below provide examples of how requests behaves against various/missing/default version parameters. .. code-block:: bash http://localhost/csw # returns 3.0.0 Capabilities http://localhost/csw?service=CSW&request=GetCapabilities # returns 3.0.0 Capabilities http://localhost/csw?service=CSW&version=2.0.2&request=GetCapabilities # returns 2.0.2 Capabilities http://localhost/csw?service=CSW&version=3.0.0&request=GetCapabilities # returns 3.0.0 Capabilities Request Examples ---------------- The best place to look for sample requests is within the `tests/` directory, which provides numerous examples of all supported APIs and requests. Additional examples: - `Data.gov CSW HowTo v2.0`_ - `pycsw Quickstart on OSGeoLive`_ .. _`pycsw Quickstart on OSGeoLive`: http://live.osgeo.org/en/quickstart/pycsw_quickstart.html .. _`Data.gov CSW HowTo v2.0`: https://gist.github.com/kalxas/6ecb06d61cdd487dc7f9 pycsw-2.0.3/docs/PaxHeaders.23451/distributedsearching.rst0000644000000000000000000000007413114323025020303 xustar0030 atime=1496426320.549229945 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/distributedsearching.rst0000644000175000001440000000732213114323025021251 0ustar00kalxasusers00000000000000.. _distributedsearching: Distributed Searching ===================== .. note:: Your server must be able to make outgoing HTTP requests for this functionality. pycsw has the ability to perform distributed searching against other CSW servers. Distributed searching is disabled by default; to enable, ``server.federatedcatalogues`` must be set. A CSW client must issue a GetRecords request with ``csw:DistributedSearch`` specified, along with an optional ``hopCount`` attribute (see subclause 10.8.4.13 of the CSW specification). When enabled, pycsw will search all specified catalogues and return a unified set of search results to the client. Due to the distributed nature of this functionality, requests will take extra time to process compared to queries against the local repository. Scenario: Federated Search -------------------------- pycsw deployment with 3 configurations (CSW-1, CSW-2, CSW-3), subsequently providing three (3) endpoints. Each endpoint is based on an opaque metadata repository (based on theme/place/discipline, etc.). Goal is to perform a single search against all endpoints. pycsw realizes this functionality by supporting :ref:`alternate configurations `, and exposes the additional CSW endpoint(s) with the following design pattern: CSW-1: ``http://localhost/pycsw/csw.py?config=CSW-1.cfg`` CSW-2: ``http://localhost/pycsw/csw.py?config=CSW-2.cfg`` CSW-3: ``http://localhost/pycsw/csw.py?config=CSW-3.cfg`` ...where the ``*.cfg`` configuration files are configured for each respective metadata repository. The above CSW endpoints can be interacted with as usual. To federate the discovery of the three (3) portals into a unified search, pycsw realizes this functionality by deploying an additional configuration which acts as the superset of CSW-1, CSW-2, CSW-3: CSW-all: ``http://localhost/pycsw/csw.py?config=CSW-all.cfg`` This allows the client to invoke one (1) CSW GetRecords request, in which the CSW endpoint spawns the same GetRecords request to 1..n distributed CSW endpoints. Distributed CSW endpoints are advertised in CSW Capabilities XML via ``ows:Constraint``: .. code-block:: xml ... http://localhost/pycsw/csw.py?config=CSW-1.cfg http://localhost/pycsw/csw.py?config=CSW-2.cfg http://localhost/pycsw/csw.py?config=CSW-3.cfg ... ...which advertises which CSW endpoint(s) the CSW server will spawn if a distributed search is requested by the client. in the CSW-all configuration: .. code-block:: none [server] ... federatedcatalogues=http://localhost/pycsw/csw.py?config=CSW-1.cfg,http://localhost/pycsw/csw.py?config=CSW-2.cfg,http://localhost/pycsw/csw.py?config=CSW-3.cfg At which point a CSW client request to CSW-all with ``distributedsearch=TRUE``, while specifying an optional ``hopCount``. Query network topology: .. code-block:: none AnyClient ^ | v CSW-all ^ | v /-------------\ ^ ^ ^ | | | v v v CSW-1 CSW-2 CSW-3 As a result, a pycsw deployment in this scenario may be approached on a per 'theme' basis, or at an aggregate level. All interaction in this scenario is local to the pycsw installation, so network performance would not be problematic. A very important facet of distributed search is as per Annex B of OGC:CSW 2.0.2. Given that all the CSW endpoints are managed locally, duplicates and infinite looping are not deemed to present an issue. pycsw-2.0.3/docs/PaxHeaders.23451/geonode.rst0000644000000000000000000000007413114323025015515 xustar0030 atime=1496426320.573230453 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/geonode.rst0000644000175000001440000000225713114323025016465 0ustar00kalxasusers00000000000000.. _geonode: GeoNode Configuration ====================== GeoNode (http://geonode.org/) is a platform for the management and publication of geospatial data. It brings together mature and stable open-source software projects under a consistent and easy-to-use interface allowing users, with little training, to quickly and easily share data and create interactive maps. GeoNode provides a cost-effective and scalable tool for developing information management systems. GeoNode uses CSW as a cataloguing mechanism to query and present geospatial metadata. pycsw supports binding to an existing GeoNode repository for metadata query. The binding is read-only (transactions are not in scope, as GeoNode manages repository metadata changes in the application proper). GeoNode Setup ------------- pycsw is enabled and configured by default in GeoNode, so there are no additional steps required once GeoNode is setup. See the ``CATALOGUE`` and ``PYCSW`` `settings.py entries`_ at http://docs.geonode.org/en/latest/developers/reference/django-apps.html#id1 for customizing pycsw within GeoNode. .. _`settings.py entries`: http://docs.geonode.org/en/latest/developers/reference/django-apps.html#id1 pycsw-2.0.3/docs/PaxHeaders.23451/hhypermap.rst0000644000000000000000000000007413114323025016072 xustar0030 atime=1496426320.585230707 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/hhypermap.rst0000644000175000001440000000175613114323025017045 0ustar00kalxasusers00000000000000.. _hhypermap: HHypermap Configuration ======================= HHypermap (Harvard Hypermap) Supervisor (https://github.com/cga-harvard/HHypermap) is an application that manages OWS, Esri REST, and other types of map service harvesting, and maintains uptime statistics for services and layers. HHypermap Supervisor will publish to HHypermap Search (based on Lucene) which provides a fast search and visualization environment for spatio-temporal materials. HHypermap uses CSW as a cataloguing mechanism to ingest, query and present geospatial metadata. pycsw supports binding to an existing HHypermap repository for metadata query. HHypermap Setup --------------- pycsw is enabled and configured by default in HHypermap, so there are no additional steps required once HHypermap is setup. See the ``PYCSW`` `settings/default.py entries`_ for customizing pycsw within HHypermap. .. _`settings/default.py entries`: https://github.com/cga-harvard/HHypermap/blob/master/hypermap/settings/default.py#L197 pycsw-2.0.3/docs/PaxHeaders.23451/index.rst0000644000000000000000000000007413114323025015204 xustar0030 atime=1496426320.597230961 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/index.rst0000644000175000001440000000111413114323025016143 0ustar00kalxasusers00000000000000.. _index: ============================= pycsw |release| Documentation ============================= :Author: Tom Kralidis :Contact: tomkralidis at gmail.com :Release: |release| :Date: |today| .. toctree:: :maxdepth: 2 introduction installation configuration administration csw-support distributedsearching sru opensearch oaipmh json soap sitemaps transactions repofilters profiles outputschemas geonode hhypermap odc ckan api testing migration-guide tools support contributing license committers pycsw-2.0.3/docs/PaxHeaders.23451/installation.rst0000644000000000000000000000007413114323025016576 xustar0030 atime=1496426320.637231807 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/installation.rst0000644000175000001440000001563413114323025017551 0ustar00kalxasusers00000000000000.. _installation: Installation ============ System Requirements ------------------- pycsw is written in `Python `_, and works with (tested) version 2.6, 2.7 and 3.4 pycsw requires the following Python supporting libraries: - `lxml`_ for XML support - `SQLAlchemy`_ for database bindings - `pyproj`_ for coordinate transformations - `Shapely`_ for spatial query / geometry support - `OWSLib`_ for CSW client and metadata parser - `six`_ for Python 2/3 compatibility - `xmltodict`_ for working with XML similar to working with JSON - `geolinks`_ for dealing with geospatial links .. note:: You can install these dependencies via `easy_install`_ or `pip`_ .. note:: For :ref:`GeoNode ` or :ref:`Open Data Catalog ` or :ref:`HHypermap ` deployments, SQLAlchemy is not required Installing from Source ---------------------- `Download `_ the latest stable version or fetch from Git. For Developers and the Truly Impatient ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The 4 minute install: .. code-block:: bash $ virtualenv pycsw && cd pycsw && . bin/activate $ git clone https://github.com/geopython/pycsw.git && cd pycsw $ pip install -e . && pip install -r requirements-standalone.txt $ cp default-sample.cfg default.cfg $ vi default.cfg # adjust paths in # - server.home # - repository.database # set server.url to http://localhost:8000/ $ python pycsw/wsgi.py $ curl http://localhost:8000/?service=CSW&version=2.0.2&request=GetCapabilities The Quick and Dirty Way ^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: bash $ git clone git://github.com/geopython/pycsw.git Ensure that CGI is enabled for the install directory. For example, on Apache, if pycsw is installed in ``/srv/www/htdocs/pycsw`` (where the URL will be ``http://host/pycsw/csw.py``), add the following to ``httpd.conf``: .. code-block:: none Options +FollowSymLinks +ExecCGI Allow from all AddHandler cgi-script .py .. note:: If pycsw is installed in ``cgi-bin``, this should work as expected. In this case, the :ref:`tests ` application must be moved to a different location to serve static HTML documents. Make sure, you have all the dependencies from ``requirements.txt and requirements-standalone.txt`` The Clean and Proper Way ^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: bash $ git clone git://github.com/geopython/pycsw.git $ python setup.py build $ python setup.py install At this point, pycsw is installed as a library and requires a CGI ``csw.py`` or WSGI ``pycsw/wsgi.py`` script to be served into your web server environment (see below for WSGI configuration/deployment). .. _pypi: Installing from the Python Package Index (PyPi) ----------------------------------------------- .. code-block:: bash # easy_install or pip will do the trick $ easy_install pycsw # or $ pip install pycsw .. _opensuse: Installing from OpenSUSE Build Service -------------------------------------- In order to install the pycsw package in openSUSE Leap (stable distribution), one can run the following commands as user ``root``: .. code-block:: bash # zypper -ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.1/ GEO # zypper refresh # zypper install python-pycsw pycsw-cgi In order to install the pycsw package in openSUSE Tumbleweed (rolling distribution), one can run the following commands as user ``root``: .. code-block:: bash # zypper -ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Tumbleweed/ GEO # zypper refresh # zypper install python-pycsw pycsw-cgi An alternative method is to use the `One-Click Installer `_. .. _ubuntu: Installing on Ubuntu/Mint ------------------------- In order to install the most recent pycsw release to an Ubuntu-based distribution, one can use the UbuntuGIS Unstable repository by running the following commands: .. code-block:: bash # sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable # sudo apt-get update # sudo apt-get install python-pycsw pycsw-cgi Alternatively, one can use the UbuntuGIS Stable repository which includes older but very well tested versions: # sudo add-apt-repository ppa:ubuntugis/ppa # sudo apt-get update # sudo apt-get install python-pycsw pycsw-cgi .. note:: Since Ubuntu 16.04 LTS Xenial release, pycsw is included by default in the official Multiverse repository. Running on Windows ------------------ For Windows installs, change the first line of ``csw.py`` to: .. code-block:: python #!/Python27/python -u .. note:: The use of ``-u`` is required to properly output gzip-compressed responses. Security -------- By default, ``default.cfg`` is at the root of the pycsw install. If pycsw is setup outside an HTTP server's ``cgi-bin`` area, this file could be read. The following options protect the configuration: - move ``default.cfg`` to a non HTTP accessible area, and modify ``csw.py`` to point to the updated location - configure web server to deny access to the configuration. For example, in Apache, add the following to ``httpd.conf``: .. code-block:: none order allow,deny deny from all Running on WSGI --------------- pycsw supports the `Web Server Gateway Interface`_ (WSGI). To run pycsw in WSGI mode, use ``pycsw/wsgi.py`` in your WSGI server environment. .. note:: ``mod_wsgi`` supports only the version of python it was compiled with. If the target server already supports WSGI applications, pycsw will need to use the same python version. `WSGIDaemonProcess`_ provides a ``python-path`` directive that may allow a virtualenv created from the python version ``mod_wsgi`` uses. Below is an example of configuring with Apache: .. code-block:: none WSGIDaemonProcess host1 home=/var/www/pycsw processes=2 WSGIProcessGroup host1 WSGIScriptAlias /pycsw-wsgi /var/www/pycsw/wsgi.py Order deny,allow Allow from all or use the `WSGI reference implementation`_: .. code-block:: bash $ python ./pycsw/wsgi.py Serving on port 8000... which will publish pycsw to ``http://localhost:8000/`` .. _`lxml`: http://lxml.de/ .. _`SQLAlchemy`: http://www.sqlalchemy.org/ .. _`Shapely`: http://toblerity.github.io/shapely/ .. _`pyproj`: http://code.google.com/p/pyproj/ .. _`OWSLib`: https://github.com/geopython/OWSLib .. _`six`: https://pypi.python.org/pypi/six/ .. _`xmltodict`: https://github.com/martinblech/xmltodict .. _`geolinks`: https://github.com/geopython/geolinks .. _`easy_install`: http://packages.python.org/distribute/easy_install.html .. _`pip`: http://www.pip-installer.org .. _`Web Server Gateway Interface`: http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface .. _`WSGIDaemonProcess`: https://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess .. _`WSGI reference implementation`: http://docs.python.org/library/wsgiref.html pycsw-2.0.3/docs/PaxHeaders.23451/introduction.rst0000644000000000000000000000007413114323025016616 xustar0030 atime=1496426320.709233331 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/introduction.rst0000644000175000001440000001350113114323025017560 0ustar00kalxasusers00000000000000.. _introduction: Introduction ============ pycsw is an OGC CSW server implementation written in Python. Features ======== - certified OGC `Compliant`_ and OGC Reference Implementation for both CSW 2.0.2 and CSW 3.0.0 - harvesting support for WMS, WFS, WCS, WPS, WAF, CSW, SOS - implements `INSPIRE Discovery Services 3.0`_ - implements `ISO Metadata Application Profile 1.0.0`_ - implements `FGDC CSDGM Application Profile for CSW 2.0`_ - implements the Search/Retrieval via URL (`SRU`_) search protocol - implements Full Text Search capabilities - implements OGC OpenSearch Geo and Time Extensions - implements Open Archives Initiative Protocol for Metadata Harvesting - supports ISO, Dublin Core, DIF, FGDC, Atom and GM03 metadata models - CGI or WSGI deployment - Python 2 and 3 compatible - simple configuration - transactional capabilities (CSW-T) - flexible repository configuration - `GeoNode`_ connectivity - `HHypermap`_ connectivity - `Open Data Catalog`_ connectivity - `CKAN`_ connectivity - federated catalogue distributed searching - realtime XML Schema validation - extensible profile plugin architecture Standards Support ----------------- +-------------------+--------------+ | Standard | Version(s) | +===================+==============+ | `OGC CSW`_ | 2.0.2, 3.0.0 | +-------------------+--------------+ | `OGC Filter`_ | 1.1.0, 2.0.0 | +-------------------+--------------+ | `OGC OWS Common`_ | 1.0.0, 2.0.0 | +-------------------+--------------+ | `OGC GML`_ | 3.1.1 | +-------------------+--------------+ | `OGC SFSQL`_ | 1.2.1 | +-------------------+--------------+ | `Dublin Core`_ | 1.1 | +-------------------+--------------+ | `SOAP`_ | 1.2 | +-------------------+--------------+ | `ISO 19115`_ | 2003 | +-------------------+--------------+ | `ISO 19139`_ | 2007 | +-------------------+--------------+ | `ISO 19119`_ | 2005 | +-------------------+--------------+ | `NASA DIF`_ | 9.7 | +-------------------+--------------+ | `FGDC CSDGM`_ | 1998 | +-------------------+--------------+ | `GM03`_ | 2.1 | +-------------------+--------------+ | `SRU`_ | 1.1 | +-------------------+--------------+ | `OGC OpenSearch`_ | 1.0 | +-------------------+--------------+ | `OAI-PMH`_ | 2.0 | +-------------------+--------------+ Supported Operations -------------------- .. csv-table:: :header: Request,Optionality,Supported,HTTP method binding(s) GetCapabilities,mandatory,yes,GET (KVP) / POST (XML) / SOAP DescribeRecord,mandatory,yes,GET (KVP) / POST (XML) / SOAP GetRecords,mandatory,yes,GET (KVP) / POST (XML) / SOAP GetRecordById,optional,yes,GET (KVP) / POST (XML) / SOAP GetRepositoryItem,optional,yes,GET (KVP) GetDomain,optional,yes,GET (KVP) / POST (XML) / SOAP Harvest,optional,yes,GET (KVP) / POST (XML) / SOAP UnHarvest,optional,no, Transaction,optional,yes,POST (XML) / SOAP .. note:: Asynchronous processing supported for GetRecords and Harvest requests (via ``csw:ResponseHandler``) .. note:: Supported Harvest Resource Types are listed in :ref:`transactions` Supported Output Formats ------------------------ - XML (default) - JSON Supported Output Schemas ------------------------ - Dublin Core - ISO 19139 - FGDC CSDGM - NASA DIF - Atom - GM03 Supported Sorting Functionality ------------------------------- - ogc:SortBy - ascending or descending - aspatial (queryable properties) - spatial (geometric area) Supported Filters ----------------- Full Text Search ^^^^^^^^^^^^^^^^ - csw:AnyText Geometry Operands ^^^^^^^^^^^^^^^^^ - gml:Point - gml:LineString - gml:Polygon - gml:Envelope .. note:: Coordinate transformations are supported Spatial Operators ^^^^^^^^^^^^^^^^^ - BBOX - Beyond - Contains - Crosses - Disjoint - DWithin - Equals - Intersects - Overlaps - Touches - Within Logical Operators ^^^^^^^^^^^^^^^^^ - Between - EqualTo - LessThanEqualTo - GreaterThan - Like - LessThan - GreaterThanEqualTo - NotEqualTo - NullCheck Functions ^^^^^^^^^ - length - lower - ltrim - rtrim - trim - upper .. _`OGC CSW`: http://www.opengeospatial.org/standards/cat .. _`ISO Metadata Application Profile 1.0.0`: http://portal.opengeospatial.org/files/?artifact_id=21460 .. _`OGC Filter`: http://www.opengeospatial.org/standards/filter .. _`OGC OWS Common`: http://www.opengeospatial.org/standards/common .. _`OGC GML`: http://www.opengeospatial.org/standards/gml .. _`OGC SFSQL`: http://www.opengeospatial.org/standards/sfs .. _`Dublin Core`: http://www.dublincore.org/ .. _`OGC CITE CSW`: http://cite.opengeospatial.org/test_engine/csw/2.0.2 .. _`SOAP`: http://www.w3.org/TR/soap/ .. _`INSPIRE Discovery Services 3.0`: http://inspire.jrc.ec.europa.eu/documents/Network_Services/TechnicalGuidance_DiscoveryServices_v3.0.pdf .. _`ISO 19115`: http://www.iso.org/iso/catalogue_detail.htm?csnumber=26020 .. _`ISO 19139`: http://www.iso.org/iso/catalogue_detail.htm?csnumber=32557 .. _`ISO 19119`: http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=39890 .. _`NASA DIF`: http://gcmd.gsfc.nasa.gov/add/difguide/index.html .. _`FGDC CSDGM`: http://www.fgdc.gov/metadata/csdgm .. _`FGDC CSDGM Application Profile for CSW 2.0`: http://portal.opengeospatial.org/files/?artifact_id=16936 .. _`SRU`: http://www.loc.gov/standards/sru/ .. _`OGC OpenSearch`: http://www.opengeospatial.org/standards/opensearchgeo .. _`GeoNode`: http://geonode.org/ .. _`HHypermap`: https://github.com/cga-harvard/HHypermap .. _`Open Data Catalog`: https://github.com/azavea/Open-Data-Catalog/ .. _`CKAN`: http://ckan.org/ .. _`Compliant`: http://www.opengeospatial.org/resource/products/details/?pid=1374 .. _`OAI-PMH`: http://www.openarchives.org/OAI/openarchivesprotocol.html .. _`GM03`: http://www.geocat.ch/internet/geocat/en/home/documentation/gm03.html pycsw-2.0.3/docs/PaxHeaders.23451/json.rst0000644000000000000000000000007413114323025015046 xustar0030 atime=1496426320.817235616 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/json.rst0000644000175000001440000000037313114323025016013 0ustar00kalxasusers00000000000000.. _json: JSON Support ============ pycsw supports JSON support for ``DescribeRecord``, ``GetRecords`` and ``GetRecordById`` requests. Adding ``outputFormat=application/json`` to your CSW request will return the response as a JSON representation. pycsw-2.0.3/docs/PaxHeaders.23451/license.rst0000644000000000000000000000007413114323025015517 xustar0030 atime=1496426320.825235786 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/license.rst0000644000175000001440000000046713114323025016470 0ustar00kalxasusers00000000000000.. _license: License ======= .. include:: ../LICENSE.txt Documentation ------------- The documentation is released under the `Creative Commons Attribution 4.0 International (CC BY 4.0)`_ license. .. _`Creative Commons Attribution 4.0 International (CC BY 4.0)`: http://creativecommons.org/licenses/by/4.0/ pycsw-2.0.3/docs/PaxHeaders.23451/locale0000644000000000000000000000007313114323025014524 xustar0029 atime=1496426320.14922148 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/locale/0000755000175000001440000000000013114323025015544 5ustar00kalxasusers00000000000000pycsw-2.0.3/docs/locale/PaxHeaders.23451/el0000644000000000000000000000007313114323025015124 xustar0029 atime=1496426320.14922148 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/locale/el/0000755000175000001440000000000013114323025016144 5ustar00kalxasusers00000000000000pycsw-2.0.3/docs/locale/el/PaxHeaders.23451/LC_MESSAGES0000644000000000000000000000007313114323025016711 xustar0029 atime=1496426320.14922148 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/locale/el/LC_MESSAGES/0000755000175000001440000000000013114323025017731 5ustar00kalxasusers00000000000000pycsw-2.0.3/docs/locale/el/LC_MESSAGES/PaxHeaders.23451/.gitkeep0000644000000000000000000000007413114323025020420 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/locale/el/LC_MESSAGES/.gitkeep0000644000175000001440000000000013114323025021350 0ustar00kalxasusers00000000000000pycsw-2.0.3/docs/locale/PaxHeaders.23451/fr0000644000000000000000000000007313114323025015133 xustar0029 atime=1496426320.14922148 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/locale/fr/0000755000175000001440000000000013114323025016153 5ustar00kalxasusers00000000000000pycsw-2.0.3/docs/locale/fr/PaxHeaders.23451/LC_MESSAGES0000644000000000000000000000007313114323025016720 xustar0029 atime=1496426320.14922148 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/locale/fr/LC_MESSAGES/0000755000175000001440000000000013114323025017740 5ustar00kalxasusers00000000000000pycsw-2.0.3/docs/locale/fr/LC_MESSAGES/PaxHeaders.23451/.gitkeep0000644000000000000000000000007413114323025020427 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/locale/fr/LC_MESSAGES/.gitkeep0000644000175000001440000000000013114323025021357 0ustar00kalxasusers00000000000000pycsw-2.0.3/docs/PaxHeaders.23451/migration-guide.rst0000644000000000000000000000007313114323025017160 xustar0029 atime=1496426320.83723604 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/migration-guide.rst0000644000175000001440000000255313114323025020130 0ustar00kalxasusers00000000000000.. _migration-guide: pycsw Migration Guide ===================== This page provides migration support across pycsw versions over time to help with pycsw change management. pycsw 1.x to 2.0 Migration -------------------------- - the default CSW version is now 3.0.0. CSW clients need to explicitly specify ``version=2.0.2`` for CSW 2 behaviour. Also, pycsw administrators can use a WSGI wrapper to the pycsw API to force ``version=2.0.2`` on init of ``pycsw.server.Csw`` from the server. See :ref:`csw-support` for more information. - ``pycsw.server.Csw.dispatch_wsgi()`` previously returned the response content as a string. 2.0.0 introduces a compatability break to additionally return the HTTP status code along with the response as a list .. code-block:: python from pycsw.server import Csw my_csw = Csw(my_dict) # add: env=some_environ_dict, version='2.0.2' if preferred # using pycsw 1.x response = my_csw.dispatch_wsgi() # using pycsw 2.0 http_status_code, response = my_csw.dispatch_wsgi() # covering either pycsw version content = csw.dispatch_wsgi() # pycsw 2.0 has an API break: # pycsw < 2.0: content = xml_response # pycsw >= 2.0: content = [http_status_code, content] # deal with the API break if isinstance(content, list): # pycsw 2.0+ http_response_code, response = content See :ref:`api` for more information. pycsw-2.0.3/docs/PaxHeaders.23451/oaipmh.rst0000644000000000000000000000007413114323025015352 xustar0030 atime=1496426320.853236378 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/oaipmh.rst0000644000175000001440000000120313114323025016310 0ustar00kalxasusers00000000000000.. _oaipmh: OAI-PMH Support =============== pycsw supports the `The Open Archives Initiative Protocol for Metadata Harvesting`_ (OAI-PMH) standard. OAI-PMH OpenSearch support is enabled by default. HTTP requests must be specified with ``mode=oaipmh`` in the base URL for OAI-PMH requests, e.g.: .. code-block:: bash http://localhost/pycsw/csw.py?mode=oaipmh&verb=Identify See http://www.openarchives.org/OAI/openarchivesprotocol.html for more information on OAI-PMH as well as request / reponse examples. .. _`The Open Archives Initiative Protocol for Metadata Harvesting`: http://www.openarchives.org/OAI/openarchivesprotocol.html pycsw-2.0.3/docs/PaxHeaders.23451/odc.rst0000644000000000000000000000007413114323025014642 xustar0030 atime=1496426320.865236632 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/odc.rst0000644000175000001440000000253013114323025015604 0ustar00kalxasusers00000000000000.. _odc: Open Data Catalog Configuration =============================== Open Data Catalog (https://github.com/azavea/Open-Data-Catalog/) is an open data catalog based on Django, Python and PostgreSQL. It was originally developed for OpenDataPhilly.org, a portal that provides access to open data sets, applications, and APIs related to the Philadelphia region. The Open Data Catalog is a generalized version of the original source code with a simple skin. It is intended to display information and links to publicly available data in an easily searchable format. The code also includes options for data owners to submit data for consideration and for registered public users to nominate a type of data they would like to see openly available to the public. pycsw supports binding to an existing Open Data Catalog repository for metadata query. The binding is read-only (transactions are not in scope, as Open Data Catalog manages repository metadata changes in the application proper). Open Data Catalog Setup ----------------------- Open Data Catalog provides CSW functionality using pycsw out of the box (installing ODC will also install pycsw). Settings are defined in https://github.com/azavea/Open-Data-Catalog/blob/master/OpenDataCatalog/settings.py#L165. At this point, pycsw is able to read from the Open Data Catalog repository using the Django ORM. pycsw-2.0.3/docs/PaxHeaders.23451/opensearch.rst0000644000000000000000000000007413114323025016224 xustar0030 atime=1496426320.877236887 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/opensearch.rst0000644000175000001440000000151513114323025017170 0ustar00kalxasusers00000000000000.. _opensearch: OpenSearch Support ================== pycsw supports the `OGC OpenSearch Geo and Time Extensions 1.0`_ standard via the following conformance classes: - Core (GeoSpatial Service) ``{searchTerms}``, ``{geo:box}``, ``{startIndex}``, ``{count}`` - Temporal Search core ``{time:start}``, ``{time:end}`` OpenSearch support is enabled by default. HTTP requests must be specified with ``mode=opensearch`` in the base URL for OpenSearch requests, e.g.: .. code-block:: bash http://localhost/pycsw/csw.py?mode=opensearch&service=CSW&version=2.0.2&request=GetCapabilities This will return the Description document which can then be `autodiscovered `_. .. _`OGC OpenSearch Geo and Time Extensions 1.0`: http://www.opengeospatial.org/standards/opensearchgeo pycsw-2.0.3/docs/PaxHeaders.23451/outputschemas.rst0000644000000000000000000000007313114323025017000 xustar0029 atime=1496426320.88923714 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/outputschemas.rst0000644000175000001440000000260713114323025017750 0ustar00kalxasusers00000000000000.. _outputschemas: Output Schema Plugins ===================== Overview -------- pycsw allows for extending the implementation of output schemas to the core standard. outputschemas allow for a client to request metadata in a specific format (ISO, Dublin Core, FGDC, NASA DIF Atom and GM03 are default). All outputschemas must be placed in the ``pycsw/plugins/outputschemas`` directory. Requirements ------------ .. code-block:: none pycsw/ plugins/ __init__.py # empty outputschemas/ __init__.py # __all__ is a list of all provided outputschemas atom.py # default dif.py # default fgdc.py # default gm03.py # default Implementing a new outputschema ------------------------------- Create a file in ``pycsw/plugins/outputschemas``, which defines the following: - ``NAMESPACE``: the default namespace of the outputschema which will be advertised - ``NAMESPACE``: dict of all applicable namespaces to outputschema - ``XPATH_MAPPINGS``: dict of pycsw core queryables mapped to the equivalent XPath of the outputschema - ``write_record``: function which returns a record as an ``lxml.etree.Element`` object Add the name of the file to ``__init__.py:__all__``. The new outputschema is now supported in pycsw. Testing ------- New outputschemas must add examples to the :ref:`tests` interface, which must provide example requests specific to the profile. pycsw-2.0.3/docs/PaxHeaders.23451/profiles.rst0000644000000000000000000000007413114323025015720 xustar0030 atime=1496426320.909237564 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/profiles.rst0000644000175000001440000000473613114323025016674 0ustar00kalxasusers00000000000000.. _profiles: Profile Plugins =============== Overview -------- pycsw allows for the implementation of profiles to the core standard. Profiles allow specification of additional metadata format types (i.e. ISO 19139:2007, NASA DIF, INSPIRE, etc.) to the repository, which can be queried and presented to the client. pycsw supports a plugin architecture which allows for runtime loading of Python code. All profiles must be placed in the ``pycsw/plugins/profiles`` directory. Requirements ------------ .. code-block:: none pycsw/ plugins/ __init__.py # empty profiles/ # directory to store profiles __init__.py # empty profile.py # defines abstract profile object (properties and methods) and functions to load plugins apiso/ # profile directory __init__.py # empty apiso.py # profile code ... # supporting files, etc. Abstract Base Class Definition ------------------------------ All profile code must be instantiated as a subclass of ``profile.Profile``. Below is an example to add a ``Foo`` profile: .. code-block:: python from pycsw.plugins.profiles import profile class FooProfile(profile.Profile): profile.Profile.__init__(self, name='foo', version='1.0.3', title='My Foo Profile', url='http://example.org/fooprofile/docs', namespace='http://example.org/foons', typename='foo:RootElement', outputschema=http://example.org/foons', prefixes=['foo'], model=model, core_namespaces=namespaces, added_namespaces={'foo': 'http://example.org/foons'} repository=REPOSITORY['foo:RootElement']) Your profile plugin class (``FooProfile``) must implement all methods as per ``profile.Profile``. Profile methods must always return ``lxml.etree.Element`` types, or ``None``. Enabling Profiles ----------------- All profiles are disabled by default. To specify profiles at runtime, set the ``server.profiles`` value in the :ref:`configuration` to the name of the package (in the ``pycsw/plugins/profiles`` directory). To enable multiple profiles, specify as a comma separated value (see :ref:`configuration`). Testing ------- Profiles must add examples to the :ref:`tests` interface, which must provide example requests specific to the profile. Supported Profiles ================== .. include:: ../pycsw/plugins/profiles/apiso/docs/apiso.rst .. include:: ../pycsw/plugins/profiles/ebrim/docs/ebrim.rst pycsw-2.0.3/docs/PaxHeaders.23451/repofilters.rst0000644000000000000000000000007413114323025016433 xustar0030 atime=1496426320.977239003 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/repofilters.rst0000644000175000001440000000446713114323025017410 0ustar00kalxasusers00000000000000.. _repofilters: Repository Filters ================== pycsw has the ability to perform server side repository / database filters as a means to mask all CSW requests to query against a specific subset of the metadata repository, thus providing the ability to deploy multiple pycsw instances pointing to the same database in different ways via the ``repository.filter`` configuration option. Repository filters are a convenient way to subset your repository at the server level without the hassle of creating proper database views. For large repositories, it may be better to subset at the database level for performance. Scenario: One Database, Many Views ---------------------------------- Imagine a sample database table of records (subset below for brevity): .. csv-table:: :header: identifier,parentidentifier,title,abstract 1,33,foo1,bar1 2,33,foo2,bar2 3,55,foo3,bar3 4,55,foo1,bar1 5,21,foo5,bar5 5,21,foo6,bar6 A default pycsw instance (with no ``repository.filters`` option) will always process CSW requests against the entire table. So a CSW `GetRecords` filter like: .. code-block:: xml apiso:Title foo1 ...will return: .. csv-table:: :header: identifier,parentidentifier,title,abstract 1,33,foo1,bar1 4,55,foo1,bar1 Suppose you wanted to deploy another pycsw instance which serves metadata from the same database, but only from a specific subset. Here we set the ``repository.filter`` option: .. code-block:: text [repository] database=sqlite:///records.db filter=pycsw:ParentIdentifier = '33' The same CSW `GetRecords` filter as per above then yields the following results: .. csv-table:: :header: identifier,parentidentifier,title,abstract 1,33,foo1,bar1 Another example: .. code-block:: text [repository] database=sqlite:///records.db filter=pycsw:ParentIdentifier != '33' The same CSW `GetRecords` filter as per above then yields the following results: .. csv-table:: :header: identifier,parentidentifier,title,abstract 4,55,foo1,bar1 The ``repository.filter`` option accepts all core queryables set in the pycsw core model (see ``pycsw.config.StaticContext.md_core_model`` for the complete list). pycsw-2.0.3/docs/PaxHeaders.23451/sitemaps.rst0000644000000000000000000000007413114323025015722 xustar0030 atime=1496426321.029240104 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/sitemaps.rst0000644000175000001440000000061413114323025016665 0ustar00kalxasusers00000000000000.. _sitemaps: XML Sitemaps ============ `XML Sitemaps`_ can be generated by running: .. code-block:: bash $ pycsw-admin.py -c gen_sitemap -f default.cfg -o sitemap.xml The ``sitemap.xml`` file should be saved to an an area on your web server (parallel to or above your pycsw install location) to enable web crawlers to index your repository. .. _`XML Sitemaps`: http://www.sitemaps.org/ pycsw-2.0.3/docs/PaxHeaders.23451/soap.rst0000644000000000000000000000007413114323025015037 xustar0030 atime=1496426321.041240357 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/soap.rst0000644000175000001440000000027513114323025016005 0ustar00kalxasusers00000000000000.. _soap: SOAP ==== pycsw supports handling of SOAP encoded requests and responses as per subclause 10.3.2 of OGC:CSW 2.0.2. SOAP request examples can be found in ``tests/index.html``. pycsw-2.0.3/docs/PaxHeaders.23451/sru.rst0000644000000000000000000000007413114323025014706 xustar0030 atime=1496426321.049240527 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/sru.rst0000644000175000001440000000114013114323025015644 0ustar00kalxasusers00000000000000.. _sru: Search/Retrieval via URL (SRU) Support ====================================== pycsw supports the `Search/Retrieval via URL`_ search protocol implementation as per subclause 8.4 of the OpenGIS Catalogue Service Implementation Specification. SRU support is enabled by default. HTTP GET requests must be specified with ``mode=sru`` for SRU requests, e.g.: .. code-block:: bash http://localhost/pycsw/csw.py?mode=sru&operation=searchRetrieve&query=foo See http://www.loc.gov/standards/sru/simple.html for example SRU requests. .. _`Search/Retrieval via URL`: http://www.loc.gov/standards/sru/ pycsw-2.0.3/docs/PaxHeaders.23451/support.rst0000644000000000000000000000007313114323025015610 xustar0029 atime=1496426321.06124078 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/support.rst0000644000175000001440000000027113114323025016553 0ustar00kalxasusers00000000000000.. _support: Support ======= Community --------- Please see the `Community `_ page for information on the pycsw community, getting support, and how to get involved. pycsw-2.0.3/docs/PaxHeaders.23451/testing.rst0000644000000000000000000000007413114323025015552 xustar0030 atime=1496426321.069240949 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/testing.rst0000644000175000001440000001075713114323025016526 0ustar00kalxasusers00000000000000.. _testing: Testing ======= .. _ogc-cite: OGC CITE -------- Compliance benchmarking is done via the OGC `Compliance & Interoperability Testing & Evaluation Initiative`_. The pycsw `wiki `_ documents testing procedures and status. .. _tests: Tester ------ The pycsw tests framework (in ``tests``) is a collection of testsuites to perform automated regession testing of the codebase. Test are run against all pushes to the GitHub repository via `Travis CI`_. Running Locally ^^^^^^^^^^^^^^^ The tests framework can be run from ``tests`` using `Paver`_ (see ``pavement.py``) tasks for convenience: .. code-block:: bash $ cd /path/to/pycsw # run all tests (starts up http://localhost:8000) $ paver test # run tests only against specific testsuites $ paver test -s apiso,fgdc # run all tests, including harvesting (this is turned off by default given the volatility of remote services/data testing) $ paver test -r # run all tests with 1000ms time benchmark $ paver test -t 1000 The tests perform HTTP GET and POST requests against ``http://localhost:8000``. The expected output for each test can be found in ``expected``. Results are categorized as ``passed``, ``failed``, or ``initialized``. A summary of results is output at the end of the run. Failed Tests ^^^^^^^^^^^^ If a given test has failed, the output is saved in ``results``. The resulting failure can be analyzed by running ``diff tests/expected/name_of_test.xml tests/results/name_of_test.xml`` to find variances. The Paver task returns a status code which indicates the number of tests which have failed (i.e. ``echo $?``). Test Suites ^^^^^^^^^^^ The tests framework is run against a series of 'suites' (in ``tests/suites``), each of which specifies a given configuration to test various functionality of the codebase. Each suite is structured as follows: * ``tests/suites/suite/default.cfg``: the configuration for the suite * ``tests/suites/suite/post``: directory of XML documents for HTTP POST requests * ``tests/suites/suite/get/requests.txt``: directory and text file of KVP for HTTP GET requests * ``tests/suites/suite/data``: directory of sample XML data required for the test suite. Database and test data are setup/loaded automatically as part of testing When the tests are invoked, the following operations are run: * pycsw configuration is set to ``tests/suites/suite/default.cfg`` * HTTP POST requests are run against ``tests/suites/suite/post/*.xml`` * HTTP GET requests are run against each request in ``tests/suites/suite/get/requests.txt`` The CSV format of ``tests/suites/suite/get/requests.txt`` is ``testname,request``, with one line for each test. The ``testname`` value is a unique test name (this value sets the name of the output file in the test results). The ``request`` value is the HTTP GET request. The ``PYCSW_SERVER`` token is replaced at runtime with the URL to the pycsw install. Adding New Tests ^^^^^^^^^^^^^^^^ To add tests to an existing suite: * for HTTP POST tests, add XML documents to ``tests/suites/suite/post`` * for HTTP GET tests, add tests (one per line) to ``tests/suites/suite/get/requests.txt`` * run ``paver test`` To add a new test suite: * create a new directory under ``tests/suites`` (e.g. ``foo``) * create a new configuration in ``tests/suites/foo/default.cfg`` * Ensure that all file paths are relative to ``path/to/pycsw`` * Ensure that ``repository.database`` points to an SQLite3 database called ``tests/suites/foo/data/records.db``. The database *must* be called ``records.db`` and the directory ``tests/suites/foo/data`` *must* exist * populate HTTP POST requests in ``tests/suites/foo/post`` * populate HTTP GET requests in ``tests/suites/foo/get/requests.txt`` * if the testsuite requires test data, create ``tests/suites/foo/data`` are store XML file there * run ``paver test`` (or ``paver test -s foo`` to test only the new test suite) The new test suite database will be created automatically and used as part of tests. Web Testing ^^^^^^^^^^^ You can also use the pycsw tests via your web browser to perform sample requests against your pycsw install. The tests are is located in ``tests/``. To generate the HTML page: .. code-block:: bash $ paver gen_tests_html Then navigate to ``http://host/path/to/pycsw/tests/index.html``. .. _`Compliance & Interoperability Testing & Evaluation Initiative`: http://cite.opengeospatial.org/ .. _`Travis CI`: http://travis-ci.org/geopython/pycsw .. _`Paver`: http://paver.github.io/paver/ pycsw-2.0.3/docs/PaxHeaders.23451/tools.rst0000644000000000000000000000007413114323025015235 xustar0030 atime=1496426321.121242051 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/tools.rst0000644000175000001440000000165613114323025016207 0ustar00kalxasusers00000000000000.. _tools: Cataloguing and Metadata Tools ============================== CSW Clients ----------- - `Geoportal CSW Clients `_ - `OWSLib `_ - `MetaSearch `_ (`QGIS `_ plugin) CSW Servers ----------- - `deegree `_ - `eXcat `_ - `GeoNetwork opensource `_ Metadata Editing Tools ---------------------- - `CatMDEdit `_ - `EUOSME `_ - `GIMED `_ - `Metatools `_ (`QGIS `_ plugin) - `QSphere `_ (`QGIS `_ plugin) pycsw-2.0.3/docs/PaxHeaders.23451/transactions.rst0000644000000000000000000000007413114323025016605 xustar0030 atime=1496426321.145242559 30 ctime=1496426292.480635878 pycsw-2.0.3/docs/transactions.rst0000644000175000001440000000727413114323025017561 0ustar00kalxasusers00000000000000.. _transactions: Transactions ============ pycsw has the ability to process CSW Harvest and Transaction requests (CSW-T). Transactions are disabled by default; to enable, ``manager.transactions`` must be set to ``true``. Access to transactional functionality is limited to IP addresses which must be set in ``manager.allowed_ips``. Supported Resource Types ------------------------ For transactions and harvesting, pycsw supports the following metadata resource types by default: .. csv-table:: :header: Resource Type,Namespace,Transaction,Harvest Dublin Core,``http://www.opengis.net/cat/csw/2.0.2``,yes,yes FGDC,``http://www.opengis.net/cat/csw/csdgm``,yes,yes GM03,``http://www.interlis.ch/INTERLIS2.3``,yes,yes ISO 19139,``http://www.isotc211.org/2005/gmd``,yes,yes ISO GMI,``http://www.isotc211.org/2005/gmi``,yes,yes OGC:CSW 2.0.2,``http://www.opengis.net/cat/csw/2.0.2``,,yes OGC:WMS 1.1.1,``http://www.opengis.net/wms``,,yes OGC:WMTS 1.0.0,``http://www.opengis.net/wmts/1.0``,,yes OGC:WFS 1.1.0,``http://www.opengis.net/wfs``,,yes OGC:WCS 1.0.0,``http://www.opengis.net/wcs``,,yes OGC:WPS 1.0.0,``http://www.opengis.net/wps/1.0.0``,,yes OGC:SOS 1.0.0,``http://www.opengis.net/sos/1.0``,,yes OGC:SOS 2.0.0,``http://www.opengis.net/sos/2.0``,,yes `WAF`_,``urn:geoss:urn``,,yes Additional metadata models are supported by enabling the appropriate :ref:`profiles`. .. note:: For transactions to be functional when using SQLite3, the SQLite3 database file (**and its parent directory**) must be fully writable. For example: .. code-block:: bash $ mkdir /path/data $ chmod 777 /path/data $ chmod 666 test.db $ mv test.db /path/data For CSW-T deployments, it is strongly advised that this directory reside in an area that is not accessible by HTTP. Harvesting ---------- .. note:: Your server must be able to make outgoing HTTP requests for this functionality. pycsw supports the CSW-T ``Harvest`` operation. Records which are harvested require to setup a cronjob to periodically refresh records in the local repository. A sample cronjob is available in ``etc/harvest-all.cron`` which points to ``pycsw-admin.py`` (you must specify the correct path to your configuration). Harvest operation results can be sent by email (via ``mailto:``) or ftp (via ``ftp://``) if the Harvest request specifies ``csw:ResponseHandler``. .. note:: For ``csw:ResponseHandler`` values using the ``mailto:`` protocol, you must have ``server.smtp_host`` set in your :ref:`configuration `. OGC Web Services ^^^^^^^^^^^^^^^^ When harvesting OGC web services, requests can provide the base URL of the service as part of the Harvest request. pycsw will construct a ``GetCapabilities`` request dynamically. When harvesting other CSW servers, pycsw pages through the entire CSW in default increments of 10. This value can be modified via the ``manager.csw_harvest_pagesize`` :ref:`configuration ` option. It is strongly advised to use the ``csw:ResponseHandler`` parameter for harvesting large CSW catalogues to prevent HTTP timeouts. Transactions ------------ pycsw supports 3 modes of the ``Transaction`` operation (``Insert``, ``Update``, ``Delete``): - **Insert**: full XML documents can be inserted as per CSW-T - **Update**: updates can be made as full record updates or record properties against a ``csw:Constraint`` - **Delete**: deletes can be made against a ``csw:Constraint`` Transaction operation results can be sent by email (via ``mailto:``) or ftp (via ``ftp://``) if the Transaction request specifies ``csw:ResponseHandler``. The :ref:`tests` contain CSW-T request examples. .. _`WAF`: http://seabass.ieee.org/groups/geoss/index.php?option=com_sir_200&Itemid=157&ID=183 pycsw-2.0.3/PaxHeaders.23451/etc0000644000000000000000000000007413114323025013111 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/etc/0000755000175000001440000000000013114323025014130 5ustar00kalxasusers00000000000000pycsw-2.0.3/etc/PaxHeaders.23451/harvest-all.cron0000644000000000000000000000007413114323025016273 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/etc/harvest-all.cron0000644000175000001440000000032013114323025017230 0ustar00kalxasusers00000000000000# run cronjob daily at 0400h # # info on setting up cron at http://www.unixgeeks.org/security/newbie/unix/cron-1.html 00 04 * * * /path/to/pycsw-admin.py -c refresh_harvested_records -f /path/to/default.cfg pycsw-2.0.3/etc/PaxHeaders.23451/mappings.py0000644000000000000000000000007413114323025015356 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/etc/mappings.py0000644000175000001440000001016413114323025016322 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= # sample mappings.py # # use this file to bind to an existing alternate metadata database model # # steps: # - update the 'mappings' dict to the column names of your existing database # - set repository.mappings to the location of this file MD_CORE_MODEL = { 'typename': 'pycsw:CoreMetadata', 'outputschema': 'http://pycsw.org/metadata', 'mappings': { 'pycsw:Identifier': 'identifier', 'pycsw:Typename': 'typename', 'pycsw:Schema': 'schema', 'pycsw:MdSource': 'mdsource', 'pycsw:InsertDate': 'insert_date', 'pycsw:XML': 'xml', 'pycsw:AnyText': 'anytext', 'pycsw:Language': 'language', 'pycsw:Title': 'title', 'pycsw:Abstract': 'abstract', 'pycsw:Keywords': 'keywords', 'pycsw:KeywordType': 'keywordstype', 'pycsw:Format': 'format', 'pycsw:Source': 'source', 'pycsw:Date': 'date', 'pycsw:Modified': 'date_modified', 'pycsw:Type': 'type', 'pycsw:BoundingBox': 'wkt_geometry', 'pycsw:CRS': 'crs', 'pycsw:AlternateTitle': 'title_alternate', 'pycsw:RevisionDate': 'date_revision', 'pycsw:CreationDate': 'date_creation', 'pycsw:PublicationDate': 'date_publication', 'pycsw:OrganizationName': 'organization', 'pycsw:SecurityConstraints': 'securityconstraints', 'pycsw:ParentIdentifier': 'parentidentifier', 'pycsw:TopicCategory': 'topicategory', 'pycsw:ResourceLanguage': 'resourcelanguage', 'pycsw:GeographicDescriptionCode': 'geodescode', 'pycsw:Denominator': 'denominator', 'pycsw:DistanceValue': 'distancevalue', 'pycsw:DistanceUOM': 'distanceuom', 'pycsw:TempExtent_begin': 'time_begin', 'pycsw:TempExtent_end': 'time_end', 'pycsw:ServiceType': 'servicetype', 'pycsw:ServiceTypeVersion': 'servicetypeversion', 'pycsw:Operation': 'operation', 'pycsw:CouplingType': 'couplingtype', 'pycsw:OperatesOn': 'operateson', 'pycsw:OperatesOnIdentifier': 'operatesonidentifier', 'pycsw:OperatesOnName': 'operatesoname', 'pycsw:Degree': 'degree', 'pycsw:AccessConstraints': 'accessconstraints', 'pycsw:OtherConstraints': 'otherconstraints', 'pycsw:Classification': 'classification', 'pycsw:ConditionApplyingToAccessAndUse': 'conditionapplyingtoaccessanduse', 'pycsw:Lineage': 'lineage', 'pycsw:ResponsiblePartyRole': 'responsiblepartyrole', 'pycsw:SpecificationTitle': 'specificationtitle', 'pycsw:SpecificationDate': 'specificationdate', 'pycsw:SpecificationDateType': 'specificationdatetype', 'pycsw:Creator': 'creator', 'pycsw:Publisher': 'publisher', 'pycsw:Contributor': 'contributor', 'pycsw:Relation': 'relation', 'pycsw:Links': 'links', } } pycsw-2.0.3/etc/PaxHeaders.23451/pycsw0000644000000000000000000000007413114323025014256 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/etc/pycsw0000644000175000001440000000016713114323025015224 0ustar00kalxasusers00000000000000 Options FollowSymLinks +ExecCGI Allow from all AddHandler cgi-script .py pycsw-2.0.3/etc/PaxHeaders.23451/pycsw.conf0000644000000000000000000000007413114323025015202 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/etc/pycsw.conf0000644000175000001440000000020213114323025016136 0ustar00kalxasusers00000000000000 Options +FollowSymLinks +ExecCGI Require all granted AddHandler cgi-script .py pycsw-2.0.3/etc/PaxHeaders.23451/pycsw.desktop0000644000000000000000000000007413114323025015726 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/etc/pycsw.desktop0000644000175000001440000000046113114323025016671 0ustar00kalxasusers00000000000000[Desktop Entry] Type=Application Encoding=UTF-8 Name=pycsw Comment=pycsw catalog server Categories=Application;Education;Geography; Exec=firefox http://localhost/pycsw/tests/index.html Icon=/var/www/html/pycsw/docs/_static/pycsw-logo.png Terminal=false StartupNotify=false Categories=Education;Geography; pycsw-2.0.3/PaxHeaders.23451/pavement.py0000644000000000000000000000007413114323025014604 xustar0030 atime=1496426319.637210647 30 ctime=1496426292.480635878 pycsw-2.0.3/pavement.py0000644000175000001440000002422713114323025015555 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= from __future__ import (absolute_import, division, print_function) import glob import os import sys import time from six.moves import configparser from paver.easy import task, cmdopts, needs, \ pushd, sh, call_task, path, info, BuildFailure DOCS = 'docs' STAGE_DIR = '/tmp' @task def build_release(): """Create release package""" pass @task def refresh_docs(): """Build sphinx docs from scratch""" with pushd(DOCS): sh('make clean') sh('make html') @task @cmdopts([ ('user=', 'u', 'OSGeo userid'), ]) def publish_docs(options): """Publish dev docs to production""" local_path = '_build/html' remote_host = 'pycsw.org' remote_path = '/osgeo/pycsw/pycsw-web/docs/latest' user = options.get('user', False) if not user: raise Exception('OSGeo userid required') call_task('refresh_docs') with pushd(DOCS): # change privs to be group writeable for root, dirs, files in os.walk(local_path): for dfile in files: os.chmod(os.path.join(root, dfile), 0o664) for ddir in dirs: os.chmod(os.path.join(root, ddir), 0o775) # copy documentation sh('scp -r %s%s* %s@%s:%s' % (local_path, os.sep, user, remote_host, remote_path)) @task def gen_tests_html(): """Generate tests/index.html for online testing""" with pushd('tests'): # ensure manager testsuite is writeable os.chmod(os.path.join('suites', 'manager', 'data'), 0o777) sh('python gen_html.py > index.html') @task @needs(['distutils.command.sdist']) def publish_pypi(): """Publish to PyPI""" pass @task def package(): """Package a distribution .tar.gz/.zip""" import pycsw version = pycsw.__version__ package_name = 'pycsw-%s' % version call_task('package_tar_gz', options={'package_name': package_name}) @task @cmdopts([ ('package_name=', 'p', 'Name of package'), ]) def package_tar_gz(options): """Package a .tar.gz distribution""" import tarfile package_name = options.get('package_name', None) if package_name is None: raise Exception('Package name required') filename = path('%s/%s.tar.gz' % (STAGE_DIR, package_name)) if filename.exists(): info('Package %s already exists' % filename) return with pushd(STAGE_DIR): stage_path = '%s/%s' % (STAGE_DIR, package_name) if not path(stage_path).exists(): raise Exception('Directory %s does not exist' % stage_path) tar = tarfile.open(filename, 'w:gz') tar.add(package_name) tar.close() @task def setup_testdata(): """Create test databases and load test data""" test_database_parameters = { # suite: has_testdata 'apiso': True, 'cite': True, 'harvesting': False, 'manager': False } for suite in test_database_parameters.keys(): dbfile = 'tests/suites/%s/data/records.db' % suite if os.path.isfile(dbfile): os.remove(dbfile) for database, has_testdata in test_database_parameters.items(): info('Setting up test database %s' % database) cfg = path('tests/suites/%s/default.cfg' % database) sh('pycsw-admin.py -c setup_db -f %s' % cfg) if has_testdata: datapath = path('tests/suites/%s/data' % database) info('Loading test data from %s' % datapath) sh('pycsw-admin.py -c load_records -f %s -p %s' % (cfg, datapath)) exportpath = path('tests/results/exports') sh('pycsw-admin.py -c export_records -f %s -p %s' % (cfg, exportpath)) @task @cmdopts([ ('url=', 'u', 'pycsw endpoint'), ('suites=', 's', 'comma-separated list of testsuites'), ('database=', 'd', 'database (SQLite3 [default], PostgreSQL, MySQL)'), ('user=', 'U', 'database username'), ('pass=', 'p', 'database password'), ('pedantic', 'P', 'run tests in pedantic mode (byte level diff check) (default: c14n mode)'), ('remote', 'r', 'remote testing (harvesting)'), ('time=', 't', 'time (milliseconds) in which requests should complete') ]) def test(options): """Run unit tests""" db_setup = False db_conn = None cfg_files = [] status = 0 url = options.get('url', None) suites = options.get('suites', None) database = options.get('database', 'SQLite3') remote = options.get('remote') timems = options.get('time', None) pedantic = options.get('pedantic', False) if url is None: # run against default server call_task('stop') call_task('reset') if database == 'SQLite3': call_task('setup_testdata') call_task('start') url = 'http://localhost:8000' if suites is not None: cmd = 'python run_tests.py -u %s -s %s' % (url, suites) else: cmd = 'python run_tests.py -u %s' % url if remote: cmd = '%s -r' % cmd if pedantic: cmd = '%s -p' % cmd if timems: cmd = '%s -t %s' % (cmd, timems) # configure/setup database if not default if database != 'SQLite3': db_setup = True temp_db = 'pycsw_ci_test_pid_%d' % os.getpid() if database == 'PostgreSQL': # configure PG from pycsw.admin import setup_db, load_records, export_records from pycsw.config import StaticContext cmd = '%s -d %s' % (cmd, database) init_sfsql = True home = os.path.abspath(os.path.dirname(__file__)) user = options.get('user', 'postgres') password = options.get('pass', '') context = StaticContext() db_conn = 'postgresql://%s:%s@localhost/%s' % ( user, password, temp_db) if password: sh('set PGPASSWORD=%s' % password) sh('createdb %s -U %s' % (temp_db, user)) sh('createlang --dbname=%s plpythonu -U %s' % (temp_db, user)) # update all default.cfg files to point to test DB cfg_files = glob.glob('tests%ssuites%s*%s*.cfg' % (3*(os.sep,))) for cfg in cfg_files: # generate table suite = cfg.split(os.sep)[2] tablename = 'records_cite' if suite == 'manager': tablename = 'records_manager' elif suite == 'apiso': tablename = 'records_apiso' config = configparser.SafeConfigParser() with open(cfg) as read_data: config.readfp(read_data) config.set('repository', 'database', db_conn) config.set('repository', 'table', tablename) with open(cfg, 'wb') as config2: config.write(config2) if suite in ['cite', 'manager', 'apiso']: # setup tables setup_db(db_conn, tablename, home, init_sfsql, init_sfsql) init_sfsql = False if suite in ['cite', 'apiso']: # load test data dirname = '%s%sdata' % (os.path.dirname(cfg), os.sep) load_records(context, db_conn, tablename, dirname) if suite in ['cite', 'apiso']: # export test data exportpath = 'tests/results/exports' export_records(context, db_conn, tablename, exportpath) else: raise Exception('Invalid database specified') with pushd('tests'): try: sh(cmd) except BuildFailure as err: status = 1 # stop pycsw instance call_task('stop') if db_setup: # tearDown for cfg in cfg_files: sh('git checkout %s' % cfg) if database == 'PostgreSQL': sh("psql -c \"select pg_terminate_backend(procpid) from pg_stat_activity where datname='%s';\" -U %s" % (temp_db, user)) sh('dropdb %s -U %s' % (temp_db, user)) sh('unset PGPASSWORD') sys.exit(status) @task def start(options): """Start local WSGI server instance""" sh('python pycsw/wsgi.py 8000 &') time.sleep(10) @task def stop(): """Stop local WSGI server instance""" kill_process('python', 'pycsw/wsgi.py') @task @cmdopts([ ('force', 'f', 'forces git clean'), ]) def reset(options): """Return codebase to pristine state""" force = options.get('force') if force: sh('git clean -dxf') def kill_process(procname, scriptname): """kill WSGI processes that may be running in development""" # from http://stackoverflow.com/a/2940878 import subprocess, signal p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE) out, err = p.communicate() for line in out.decode().splitlines(): if procname in line and scriptname in line: pid = int(line.split()[1]) info('Stopping %s %s %d' % (procname, scriptname, pid)) os.kill(pid, signal.SIGKILL) pycsw-2.0.3/PaxHeaders.23451/pycsw0000644000000000000000000000007413114323025013503 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.504636386 pycsw-2.0.3/pycsw/0000755000175000001440000000000013114323025014522 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025015671 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.480635878 pycsw-2.0.3/pycsw/__init__.py0000644000175000001440000000246613114323025016643 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= __version__ = '2.0.3' pycsw-2.0.3/pycsw/PaxHeaders.23451/core0000644000000000000000000000007413114323025014433 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/0000755000175000001440000000000013114323025015452 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025016621 xustar0030 atime=1496426292.480635878 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/__init__.py0000644000175000001440000000243713114323025017571 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/core/PaxHeaders.23451/admin.py0000644000000000000000000000007413114323025016152 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/admin.py0000644000175000001440000005265113114323025017125 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # Angelos Tzotsos # # Copyright (c) 2015 Tom Kralidis # Copyright (c) 2015 Angelos Tzotsos # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import logging import os import sys from glob import glob from pycsw.core import metadata, repository, util from pycsw.core.etree import etree LOGGER = logging.getLogger(__name__) def setup_db(database, table, home, create_sfsql_tables=True, create_plpythonu_functions=True, postgis_geometry_column='wkb_geometry', extra_columns=[], language='english'): """Setup database tables and indexes""" from sqlalchemy import Column, create_engine, Integer, MetaData, \ Table, Text from sqlalchemy.orm import create_session LOGGER.info('Creating database %s', database) if database.startswith('sqlite'): dbtype, filepath = database.split('sqlite:///') dirname = os.path.dirname(filepath) if not os.path.exists(dirname): raise RuntimeError('SQLite directory %s does not exist' % dirname) dbase = create_engine(database) schema, table = util.sniff_table(table) mdata = MetaData(dbase, schema=schema) create_postgis_geometry = False # If PostGIS 2.x detected, do not create sfsql tables. if dbase.name == 'postgresql': try: dbsession = create_session(dbase) for row in dbsession.execute('select(postgis_lib_version())'): postgis_lib_version = row[0] create_sfsql_tables=False create_postgis_geometry = True LOGGER.info('PostGIS %s detected: Skipping SFSQL tables creation' % postgis_lib_version) except: pass if create_sfsql_tables: LOGGER.info('Creating table spatial_ref_sys') srs = Table( 'spatial_ref_sys', mdata, Column('srid', Integer, nullable=False, primary_key=True), Column('auth_name', Text), Column('auth_srid', Integer), Column('srtext', Text) ) srs.create() i = srs.insert() i.execute(srid=4326, auth_name='EPSG', auth_srid=4326, srtext='GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]') LOGGER.info('Creating table geometry_columns') geom = Table( 'geometry_columns', mdata, Column('f_table_catalog', Text, nullable=False), Column('f_table_schema', Text, nullable=False), Column('f_table_name', Text, nullable=False), Column('f_geometry_column', Text, nullable=False), Column('geometry_type', Integer), Column('coord_dimension', Integer), Column('srid', Integer, nullable=False), Column('geometry_format', Text, nullable=False), ) geom.create() i = geom.insert() i.execute(f_table_catalog='public', f_table_schema='public', f_table_name=table, f_geometry_column='wkt_geometry', geometry_type=3, coord_dimension=2, srid=4326, geometry_format='WKT') # abstract metadata information model LOGGER.info('Creating table %s', table) records = Table( table, mdata, # core; nothing happens without these Column('identifier', Text, primary_key=True), Column('typename', Text, default='csw:Record', nullable=False, index=True), Column('schema', Text, default='http://www.opengis.net/cat/csw/2.0.2', nullable=False, index=True), Column('mdsource', Text, default='local', nullable=False, index=True), Column('insert_date', Text, nullable=False, index=True), Column('xml', Text, nullable=False), Column('anytext', Text, nullable=False), Column('language', Text, index=True), # identification Column('type', Text, index=True), Column('title', Text, index=True), Column('title_alternate', Text, index=True), Column('abstract', Text, index=True), Column('keywords', Text, index=True), Column('keywordstype', Text, index=True), Column('parentidentifier', Text, index=True), Column('relation', Text, index=True), Column('time_begin', Text, index=True), Column('time_end', Text, index=True), Column('topicategory', Text, index=True), Column('resourcelanguage', Text, index=True), # attribution Column('creator', Text, index=True), Column('publisher', Text, index=True), Column('contributor', Text, index=True), Column('organization', Text, index=True), # security Column('securityconstraints', Text, index=True), Column('accessconstraints', Text, index=True), Column('otherconstraints', Text, index=True), # date Column('date', Text, index=True), Column('date_revision', Text, index=True), Column('date_creation', Text, index=True), Column('date_publication', Text, index=True), Column('date_modified', Text, index=True), Column('format', Text, index=True), Column('source', Text, index=True), # geospatial Column('crs', Text, index=True), Column('geodescode', Text, index=True), Column('denominator', Text, index=True), Column('distancevalue', Text, index=True), Column('distanceuom', Text, index=True), Column('wkt_geometry', Text), # service Column('servicetype', Text, index=True), Column('servicetypeversion', Text, index=True), Column('operation', Text, index=True), Column('couplingtype', Text, index=True), Column('operateson', Text, index=True), Column('operatesonidentifier', Text, index=True), Column('operatesoname', Text, index=True), # additional Column('degree', Text, index=True), Column('classification', Text, index=True), Column('conditionapplyingtoaccessanduse', Text, index=True), Column('lineage', Text, index=True), Column('responsiblepartyrole', Text, index=True), Column('specificationtitle', Text, index=True), Column('specificationdate', Text, index=True), Column('specificationdatetype', Text, index=True), # distribution # links: format "name,description,protocol,url[^,,,[^,,,]]" Column('links', Text, index=True), ) # add extra columns that may have been passed via extra_columns # extra_columns is a list of sqlalchemy.Column objects if extra_columns: LOGGER.info('Extra column definitions detected') for extra_column in extra_columns: LOGGER.info('Adding extra column: %s', extra_column) records.append_column(extra_column) records.create() conn = dbase.connect() if create_plpythonu_functions and not create_postgis_geometry: if dbase.name == 'postgresql': # create plpythonu functions within db LOGGER.info('Setting plpythonu functions') pycsw_home = home function_get_anytext = ''' CREATE OR REPLACE FUNCTION get_anytext(xml text) RETURNS text AS $$ import sys sys.path.append('%s') from pycsw import util return util.get_anytext(xml) $$ LANGUAGE plpythonu; ''' % pycsw_home function_query_spatial = ''' CREATE OR REPLACE FUNCTION query_spatial(bbox_data_wkt text, bbox_input_wkt text, predicate text, distance text) RETURNS text AS $$ import sys sys.path.append('%s') from pycsw import util return util.query_spatial(bbox_data_wkt, bbox_input_wkt, predicate, distance) $$ LANGUAGE plpythonu; ''' % pycsw_home function_update_xpath = ''' CREATE OR REPLACE FUNCTION update_xpath(nsmap text, xml text, recprops text) RETURNS text AS $$ import sys sys.path.append('%s') from pycsw import util return util.update_xpath(nsmap, xml, recprops) $$ LANGUAGE plpythonu; ''' % pycsw_home function_get_geometry_area = ''' CREATE OR REPLACE FUNCTION get_geometry_area(geom text) RETURNS text AS $$ import sys sys.path.append('%s') from pycsw import util return util.get_geometry_area(geom) $$ LANGUAGE plpythonu; ''' % pycsw_home function_get_spatial_overlay_rank = ''' CREATE OR REPLACE FUNCTION get_spatial_overlay_rank(target_geom text, query_geom text) RETURNS text AS $$ import sys sys.path.append('%s') from pycsw import util return util.get_spatial_overlay_rank(target_geom, query_geom) $$ LANGUAGE plpythonu; ''' % pycsw_home conn.execute(function_get_anytext) conn.execute(function_query_spatial) conn.execute(function_update_xpath) conn.execute(function_get_geometry_area) conn.execute(function_get_spatial_overlay_rank) if dbase.name == 'postgresql': LOGGER.info('Creating PostgreSQL Free Text Search (FTS) GIN index') tsvector_fts = "alter table %s add column anytext_tsvector tsvector" % table conn.execute(tsvector_fts) index_fts = "create index fts_gin_idx on %s using gin(anytext_tsvector)" % table conn.execute(index_fts) # This needs to run if records exist "UPDATE records SET anytext_tsvector = to_tsvector('english', anytext)" trigger_fts = "create trigger ftsupdate before insert or update on %s for each row execute procedure tsvector_update_trigger('anytext_tsvector', 'pg_catalog.%s', 'anytext')" % (table, language) conn.execute(trigger_fts) if dbase.name == 'postgresql' and create_postgis_geometry: # create native geometry column within db LOGGER.info('Creating native PostGIS geometry column') if postgis_lib_version < '2': create_column_sql = "SELECT AddGeometryColumn('%s', '%s', 4326, 'POLYGON', 2)" % (table, postgis_geometry_column) else: create_column_sql = "ALTER TABLE %s ADD COLUMN %s geometry(Geometry,4326);" % (table, postgis_geometry_column) create_insert_update_trigger_sql = ''' DROP TRIGGER IF EXISTS %(table)s_update_geometry ON %(table)s; DROP FUNCTION IF EXISTS %(table)s_update_geometry(); CREATE FUNCTION %(table)s_update_geometry() RETURNS trigger AS $%(table)s_update_geometry$ BEGIN IF NEW.wkt_geometry IS NULL THEN RETURN NEW; END IF; NEW.%(geometry)s := ST_GeomFromText(NEW.wkt_geometry,4326); RETURN NEW; END; $%(table)s_update_geometry$ LANGUAGE plpgsql; CREATE TRIGGER %(table)s_update_geometry BEFORE INSERT OR UPDATE ON %(table)s FOR EACH ROW EXECUTE PROCEDURE %(table)s_update_geometry(); ''' % {'table': table, 'geometry': postgis_geometry_column} create_spatial_index_sql = 'CREATE INDEX %(geometry)s_idx ON %(table)s USING GIST (%(geometry)s);' \ % {'table': table, 'geometry': postgis_geometry_column} conn.execute(create_column_sql) conn.execute(create_insert_update_trigger_sql) conn.execute(create_spatial_index_sql) def load_records(context, database, table, xml_dirpath, recursive=False, force_update=False): """Load metadata records from directory of files to database""" repo = repository.Repository(database, context, table=table) file_list = [] if os.path.isfile(xml_dirpath): file_list.append(xml_dirpath) elif recursive: for root, dirs, files in os.walk(xml_dirpath): for mfile in files: if mfile.endswith('.xml'): file_list.append(os.path.join(root, mfile)) else: for rec in glob(os.path.join(xml_dirpath, '*.xml')): file_list.append(rec) total = len(file_list) counter = 0 for recfile in sorted(file_list): counter += 1 LOGGER.info('Processing file %s (%d of %d)', recfile, counter, total) # read document try: exml = etree.parse(recfile, context.parser) except Exception as err: LOGGER.warn('XML document is not well-formed: %s', str(err)) continue record = metadata.parse_record(context, exml, repo) for rec in record: LOGGER.info('Inserting %s %s into database %s, table %s ....', rec.typename, rec.identifier, database, table) # TODO: do this as CSW Harvest try: repo.insert(rec, 'local', util.get_today_and_now()) LOGGER.info('Inserted') except RuntimeError as err: if force_update: LOGGER.info('Record exists. Updating.') repo.update(rec) LOGGER.info('Updated') else: LOGGER.warn('ERROR: not inserted %s', err) def export_records(context, database, table, xml_dirpath): """Export metadata records from database to directory of files""" repo = repository.Repository(database, context, table=table) LOGGER.info('Querying database %s, table %s ....', database, table) records = repo.session.query(repo.dataset) LOGGER.info('Found %d records\n', records.count()) LOGGER.info('Exporting records\n') dirpath = os.path.abspath(xml_dirpath) if not os.path.exists(dirpath): LOGGER.info('Directory %s does not exist. Creating...', dirpath) try: os.makedirs(dirpath) except OSError as err: raise RuntimeError('Could not create %s %s' % (dirpath, err)) for record in records.all(): identifier = \ getattr(record, context.md_core_model['mappings']['pycsw:Identifier']) LOGGER.info('Processing %s', identifier) if identifier.find(':') != -1: # it's a URN # sanitize identifier LOGGER.info(' Sanitizing identifier') identifier = identifier.split(':')[-1] # write to XML document filename = os.path.join(dirpath, '%s.xml' % identifier) try: LOGGER.info('Writing to file %s', filename) if hasattr(record.xml, 'decode'): str_xml = record.xml.decode('utf-8') else: str_xml = record.xml with open(filename, 'w') as xml: xml.write('\n') xml.write(str_xml) except Exception as err: raise RuntimeError("Error writing to %s" % filename, err) def refresh_harvested_records(context, database, table, url): """refresh / harvest all non-local records in repository""" from owslib.csw import CatalogueServiceWeb # get configuration and init repo connection repos = repository.Repository(database, context, table=table) # get all harvested records count, records = repos.query(constraint={'where': 'mdsource != "local"', 'values': []}) if int(count) > 0: LOGGER.info('Refreshing %s harvested records', count) csw = CatalogueServiceWeb(url) for rec in records: source = \ getattr(rec, context.md_core_model['mappings']['pycsw:Source']) schema = \ getattr(rec, context.md_core_model['mappings']['pycsw:Schema']) identifier = \ getattr(rec, context.md_core_model['mappings']['pycsw:Identifier']) LOGGER.info('Harvesting %s (identifier = %s) ...', source, identifier) # TODO: find a smarter way of catching this if schema == 'http://www.isotc211.org/2005/gmd': schema = 'http://www.isotc211.org/schemas/2005/gmd/' try: csw.harvest(source, schema) LOGGER.info(csw.response) except Exception as err: LOGGER.warn(err) else: LOGGER.info('No harvested records') def rebuild_db_indexes(database, table): """Rebuild database indexes""" raise NotImplementedError def optimize_db(context, database, table): """Optimize database""" LOGGER.info('Optimizing database %s', database) repos = repository.Repository(database, context, table=table) repos.engine.connect().execute('VACUUM ANALYZE').close() def gen_sitemap(context, database, table, url, output_file): """generate an XML sitemap from all records in repository""" # get configuration and init repo connection repos = repository.Repository(database, context, table=table) # write out sitemap document urlset = etree.Element(util.nspath_eval('sitemap:urlset', context.namespaces), nsmap=context.namespaces) schema_loc = util.nspath_eval('xsi:schemaLocation', context.namespaces) urlset.attrib[schema_loc] = \ '%s http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd' % \ context.namespaces['sitemap'] # get all records count, records = repos.query(constraint={}, maxrecords=99999999) LOGGER.info('Found %s records', count) for rec in records: url = etree.SubElement(urlset, util.nspath_eval('sitemap:url', context.namespaces)) uri = '%s?service=CSW&version=2.0.2&request=GetRepositoryItem&id=%s' % \ (url, getattr(rec, context.md_core_model['mappings']['pycsw:Identifier'])) etree.SubElement(url, util.nspath_eval('sitemap:loc', context.namespaces)).text = uri # write to file LOGGER.info('Writing to %s', output_file) with open(output_file, 'w') as ofile: ofile.write(etree.tostring(urlset, pretty_print=1, encoding='utf8', xml_declaration=1)) def post_xml(url, xml, timeout=30): """Execute HTTP XML POST request and print response""" LOGGER.info('Executing HTTP POST request %s on server %s', xml, url) from owslib.util import http_post try: with open(xml) as f: return http_post(url=url, request=f.read(), timeout=timeout) except Exception as err: raise RuntimeError(err) def get_sysprof(): """Get versions of dependencies""" none = 'Module not found' try: import sqlalchemy vsqlalchemy = sqlalchemy.__version__ except ImportError: vsqlalchemy = none try: import pyproj vpyproj = pyproj.__version__ except ImportError: vpyproj = none try: import shapely try: vshapely = shapely.__version__ except AttributeError: import shapely.geos vshapely = shapely.geos.geos_capi_version except ImportError: vshapely = none try: import owslib try: vowslib = owslib.__version__ except AttributeError: vowslib = 'Module found, version not specified' except ImportError: vowslib = none return '''pycsw system profile -------------------- Python version: %s os: %s SQLAlchemy: %s Shapely: %s lxml: %s libxml2: %s pyproj: %s OWSLib: %s''' % (sys.version_info, sys.platform, vsqlalchemy, vshapely, etree.__version__, etree.LIBXML_VERSION, vpyproj, vowslib) def validate_xml(xml, xsd): """Validate XML document against XML Schema""" LOGGER.info('Validating %s against schema %s', xml, xsd) schema = etree.XMLSchema(file=xsd) parser = etree.XMLParser(schema=schema, resolve_entities=False) try: valid = etree.parse(xml, parser) return 'Valid' except Exception as err: raise RuntimeError('ERROR: %s' % str(err)) def delete_records(context, database, table): """Deletes all records from repository""" LOGGER.info('Deleting all records') repo = repository.Repository(database, context, table=table) repo.delete(constraint={'where': '', 'values': []}) pycsw-2.0.3/pycsw/core/PaxHeaders.23451/config.py0000644000000000000000000000007413114323025016327 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/config.py0000644000175000001440000006712513114323025017304 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2016 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import logging from pycsw.core.etree import etree from pycsw import __version__ LOGGER = logging.getLogger(__name__) class StaticContext(object): """core configuration""" def __init__(self, prefix='csw30'): """initializer""" LOGGER.debug('Initializing static context') self.version = __version__ self.ogc_schemas_base = 'http://schemas.opengis.net' self.parser = etree.XMLParser(resolve_entities=False) self.languages = { 'en': 'english', 'fr': 'french', 'el': 'greek', } self.response_codes = { 'OK': '200 OK', 'NotFound': '404 Not Found', 'InvalidValue': '400 Invalid property value', 'OperationParsingFailed': '400 Bad Request', 'OperationProcessingFailed': '403 Server Processing Failed', 'OperationNotSupported': '400 Not Implemented', 'MissingParameterValue': '400 Bad Request', 'InvalidParameterValue': '400 Bad Request', 'VersionNegotiationFailed': '400 Bad Request', 'InvalidUpdateSequence': '400 Bad Request', 'OptionNotSupported': '400 Not Implemented', 'NoApplicableCode': '400 Internal Server Error' } self.namespaces = { 'atom': 'http://www.w3.org/2005/Atom', 'csw': 'http://www.opengis.net/cat/csw/2.0.2', 'csw30': 'http://www.opengis.net/cat/csw/3.0', 'dc': 'http://purl.org/dc/elements/1.1/', 'dct': 'http://purl.org/dc/terms/', 'dif': 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/', 'fes20': 'http://www.opengis.net/fes/2.0', 'fgdc': 'http://www.opengis.net/cat/csw/csdgm', 'gm03': 'http://www.interlis.ch/INTERLIS2.3', 'gmd': 'http://www.isotc211.org/2005/gmd', 'gml': 'http://www.opengis.net/gml', 'ogc': 'http://www.opengis.net/ogc', 'os': 'http://a9.com/-/spec/opensearch/1.1/', 'ows': 'http://www.opengis.net/ows', 'ows11': 'http://www.opengis.net/ows/1.1', 'ows20': 'http://www.opengis.net/ows/2.0', 'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'sitemap': 'http://www.sitemaps.org/schemas/sitemap/0.9', 'soapenv': 'http://www.w3.org/2003/05/soap-envelope', 'xlink': 'http://www.w3.org/1999/xlink', 'xs': 'http://www.w3.org/2001/XMLSchema', 'xsi': 'http://www.w3.org/2001/XMLSchema-instance' } self.keep_ns_prefixes = [ 'csw', 'dc', 'dct', 'gmd', 'gml', 'ows', 'xs' ] self.md_core_model = { 'typename': 'pycsw:CoreMetadata', 'outputschema': 'http://pycsw.org/metadata', 'mappings': { 'pycsw:Identifier': 'identifier', # CSW typename (e.g. csw:Record, md:MD_Metadata) 'pycsw:Typename': 'typename', # schema namespace, i.e. http://www.isotc211.org/2005/gmd 'pycsw:Schema': 'schema', # origin of resource, either 'local', or URL to web service 'pycsw:MdSource': 'mdsource', # date of insertion 'pycsw:InsertDate': 'insert_date', # date of insertion # raw XML metadata 'pycsw:XML': 'xml', # bag of metadata element and attributes ONLY, no XML tages 'pycsw:AnyText': 'anytext', 'pycsw:Language': 'language', 'pycsw:Title': 'title', 'pycsw:Abstract': 'abstract', 'pycsw:Keywords': 'keywords', 'pycsw:KeywordType': 'keywordstype', 'pycsw:Format': 'format', 'pycsw:Source': 'source', 'pycsw:Date': 'date', 'pycsw:Modified': 'date_modified', 'pycsw:Type': 'type', # geometry, specified in OGC WKT 'pycsw:BoundingBox': 'wkt_geometry', 'pycsw:CRS': 'crs', 'pycsw:AlternateTitle': 'title_alternate', 'pycsw:RevisionDate': 'date_revision', 'pycsw:CreationDate': 'date_creation', 'pycsw:PublicationDate': 'date_publication', 'pycsw:OrganizationName': 'organization', 'pycsw:SecurityConstraints': 'securityconstraints', 'pycsw:ParentIdentifier': 'parentidentifier', 'pycsw:TopicCategory': 'topicategory', 'pycsw:ResourceLanguage': 'resourcelanguage', 'pycsw:GeographicDescriptionCode': 'geodescode', 'pycsw:Denominator': 'denominator', 'pycsw:DistanceValue': 'distancevalue', 'pycsw:DistanceUOM': 'distanceuom', 'pycsw:TempExtent_begin': 'time_begin', 'pycsw:TempExtent_end': 'time_end', 'pycsw:ServiceType': 'servicetype', 'pycsw:ServiceTypeVersion': 'servicetypeversion', 'pycsw:Operation': 'operation', 'pycsw:CouplingType': 'couplingtype', 'pycsw:OperatesOn': 'operateson', 'pycsw:OperatesOnIdentifier': 'operatesonidentifier', 'pycsw:OperatesOnName': 'operatesoname', 'pycsw:Degree': 'degree', 'pycsw:AccessConstraints': 'accessconstraints', 'pycsw:OtherConstraints': 'otherconstraints', 'pycsw:Classification': 'classification', 'pycsw:ConditionApplyingToAccessAndUse': 'conditionapplyingtoaccessanduse', 'pycsw:Lineage': 'lineage', 'pycsw:ResponsiblePartyRole': 'responsiblepartyrole', 'pycsw:SpecificationTitle': 'specificationtitle', 'pycsw:SpecificationDate': 'specificationdate', 'pycsw:SpecificationDateType': 'specificationdatetype', 'pycsw:Creator': 'creator', 'pycsw:Publisher': 'publisher', 'pycsw:Contributor': 'contributor', 'pycsw:Relation': 'relation', # links: format "name,description,protocol,url[^,,,[^,,,]]" 'pycsw:Links': 'links', } } self.model = None self.models = { 'csw': { 'operations_order': [ 'GetCapabilities', 'DescribeRecord', 'GetDomain', 'GetRecords', 'GetRecordById', 'GetRepositoryItem' ], 'operations': { 'GetCapabilities': { 'methods': { 'get': True, 'post': True, }, 'parameters': { 'sections': { 'values': ['ServiceIdentification', 'ServiceProvider', 'OperationsMetadata', 'Filter_Capabilities'] } } }, 'DescribeRecord': { 'methods': { 'get': True, 'post': True, }, 'parameters': { 'schemaLanguage': { 'values': ['http://www.w3.org/XML/Schema', 'http://www.w3.org/TR/xmlschema-1/', 'http://www.w3.org/2001/XMLSchema'] }, 'typeName': { 'values': ['csw:Record'] }, 'outputFormat': { 'values': ['application/xml', 'application/json'] } } }, 'GetRecords': { 'methods': { 'get': True, 'post': True, }, 'parameters': { 'resultType': { 'values': ['hits', 'results', 'validate'] }, 'typeNames': { 'values': ['csw:Record'] }, 'outputSchema': { 'values': ['http://www.opengis.net/cat/csw/2.0.2'] }, 'outputFormat': { 'values': ['application/xml', 'application/json'] }, 'CONSTRAINTLANGUAGE': { 'values': ['FILTER', 'CQL_TEXT'] }, 'ElementSetName': { 'values': ['brief', 'summary', 'full'] } }, 'constraints': { } }, 'GetRecordById': { 'methods': { 'get': True, 'post': True, }, 'parameters': { 'outputSchema': { 'values': ['http://www.opengis.net/cat/csw/2.0.2'] }, 'outputFormat': { 'values': ['application/xml', 'application/json'] }, 'ElementSetName': { 'values': ['brief', 'summary', 'full'] } } }, 'GetRepositoryItem': { 'methods': { 'get': True, 'post': False, }, 'parameters': { } } }, 'parameters': { 'version': { 'values': ['2.0.2', '3.0.0'] }, 'service': { 'values': ['CSW'] } }, 'constraints': { 'MaxRecordDefault': { 'values': ['10'] }, 'PostEncoding': { 'values': ['XML', 'SOAP'] }, 'XPathQueryables': { 'values': ['allowed'] } }, 'typenames': { 'csw:Record': { 'outputschema': 'http://www.opengis.net/cat/csw/2.0.2', 'queryables': { 'SupportedDublinCoreQueryables': { # map Dublin Core queryables to core metadata model 'dc:title': {'dbcol': self.md_core_model['mappings']['pycsw:Title']}, 'dct:alternative': {'dbcol': self.md_core_model['mappings']['pycsw:AlternateTitle']}, 'dc:creator': {'dbcol': self.md_core_model['mappings']['pycsw:Creator']}, 'dc:subject': {'dbcol': self.md_core_model['mappings']['pycsw:Keywords']}, 'dct:abstract': {'dbcol': self.md_core_model['mappings']['pycsw:Abstract']}, 'dc:publisher': {'dbcol': self.md_core_model['mappings']['pycsw:Publisher']}, 'dc:contributor': {'dbcol': self.md_core_model['mappings']['pycsw:Contributor']}, 'dct:modified': {'dbcol': self.md_core_model['mappings']['pycsw:Modified']}, 'dc:date': {'dbcol': self.md_core_model['mappings']['pycsw:Date']}, 'dc:type': {'dbcol': self.md_core_model['mappings']['pycsw:Type']}, 'dc:format': {'dbcol': self.md_core_model['mappings']['pycsw:Format']}, 'dc:identifier': {'dbcol': self.md_core_model['mappings']['pycsw:Identifier']}, 'dc:source': {'dbcol': self.md_core_model['mappings']['pycsw:Source']}, 'dc:language': {'dbcol': self.md_core_model['mappings']['pycsw:Language']}, 'dc:relation': {'dbcol': self.md_core_model['mappings']['pycsw:Relation']}, 'dc:rights': {'dbcol': self.md_core_model['mappings']['pycsw:AccessConstraints']}, 'dct:spatial': {'dbcol': self.md_core_model['mappings']['pycsw:CRS']}, # bbox and full text map to internal fixed columns 'ows:BoundingBox': {'dbcol': self.md_core_model['mappings']['pycsw:BoundingBox']}, 'csw:AnyText': {'dbcol': self.md_core_model['mappings']['pycsw:AnyText']}, } } } } }, 'csw30': { 'operations_order': [ 'GetCapabilities', 'GetDomain', 'GetRecords', 'GetRecordById', 'GetRepositoryItem' ], 'operations': { 'GetCapabilities': { 'methods': { 'get': True, 'post': True, }, 'parameters': { 'acceptVersions': { 'values': ['2.0.2', '3.0.0'] }, 'acceptFormats': { 'values': ['text/xml', 'application/xml'] }, 'sections': { 'values': ['ServiceIdentification', 'ServiceProvider', 'OperationsMetadata', 'Filter_Capabilities', 'All'] } } }, 'GetRecords': { 'methods': { 'get': True, 'post': True, }, 'parameters': { 'typeNames': { 'values': ['csw:Record'] }, 'outputSchema': { 'values': ['http://www.opengis.net/cat/csw/3.0'] }, 'outputFormat': { 'values': ['application/xml', 'application/json', 'application/atom+xml'] }, 'CONSTRAINTLANGUAGE': { 'values': ['FILTER', 'CQL_TEXT'] }, 'ElementSetName': { 'values': ['brief', 'summary', 'full'] } }, 'constraints': { } }, 'GetRecordById': { 'methods': { 'get': True, 'post': True, }, 'parameters': { 'outputSchema': { 'values': ['http://www.opengis.net/cat/csw/3.0'] }, 'outputFormat': { 'values': ['application/xml', 'application/json', 'application/atom+xml'] }, 'ElementSetName': { 'values': ['brief', 'summary', 'full'] } } }, 'GetRepositoryItem': { 'methods': { 'get': True, 'post': False, }, 'parameters': { } } }, 'parameters': { 'version': { 'values': ['2.0.2', '3.0.0'] }, 'service': { 'values': ['CSW'] } }, 'constraints': { 'MaxRecordDefault': { 'values': ['10'] }, 'PostEncoding': { 'values': ['XML', 'SOAP'] }, 'XPathQueryables': { 'values': ['allowed'] }, 'http://www.opengis.net/spec/csw/3.0/conf/OpenSearch': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/Transaction': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions': { 'values': ['http://www.opengis.net/gml'] }, 'http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables': { 'values': ['TRUE'] }, 'http://www.opengis.net/spec/csw/3.0/conf/CoreSortables': { 'values': ['TRUE'] } }, 'typenames': { 'csw:Record': { 'outputschema': 'http://www.opengis.net/cat/csw/3.0', 'queryables': { 'SupportedDublinCoreQueryables': { # map Dublin Core queryables to core metadata model 'dc:title': {'dbcol': self.md_core_model['mappings']['pycsw:Title']}, 'dct:alternative': {'dbcol': self.md_core_model['mappings']['pycsw:AlternateTitle']}, 'dc:creator': {'dbcol': self.md_core_model['mappings']['pycsw:Creator']}, 'dc:subject': {'dbcol': self.md_core_model['mappings']['pycsw:Keywords']}, 'dct:abstract': {'dbcol': self.md_core_model['mappings']['pycsw:Abstract']}, 'dc:publisher': {'dbcol': self.md_core_model['mappings']['pycsw:Publisher']}, 'dc:contributor': {'dbcol': self.md_core_model['mappings']['pycsw:Contributor']}, 'dct:modified': {'dbcol': self.md_core_model['mappings']['pycsw:Modified']}, 'dc:date': {'dbcol': self.md_core_model['mappings']['pycsw:Date']}, 'dc:type': {'dbcol': self.md_core_model['mappings']['pycsw:Type']}, 'dc:format': {'dbcol': self.md_core_model['mappings']['pycsw:Format']}, 'dc:identifier': {'dbcol': self.md_core_model['mappings']['pycsw:Identifier']}, 'dc:source': {'dbcol': self.md_core_model['mappings']['pycsw:Source']}, 'dc:language': {'dbcol': self.md_core_model['mappings']['pycsw:Language']}, 'dc:relation': {'dbcol': self.md_core_model['mappings']['pycsw:Relation']}, 'dc:rights': {'dbcol': self.md_core_model['mappings']['pycsw:AccessConstraints']}, 'dct:spatial': {'dbcol': self.md_core_model['mappings']['pycsw:CRS']}, # bbox and full text map to internal fixed columns 'ows:BoundingBox': {'dbcol': self.md_core_model['mappings']['pycsw:BoundingBox']}, 'csw:AnyText': {'dbcol': self.md_core_model['mappings']['pycsw:AnyText']}, } } } } } } self.set_model(prefix) def set_model(self, prefix): """sets model given request context""" self.model = self.models[prefix] def gen_domains(self): """Generate parameter domain model""" domain = {} domain['methods'] = {'get': True, 'post': True} domain['parameters'] = {'ParameterName': {'values': []}} for operation in self.model['operations'].keys(): for parameter in self.model['operations'][operation]['parameters']: domain['parameters']['ParameterName']['values'].append('%s.%s' % (operation, parameter)) return domain def refresh_dc(self, mappings): """Refresh Dublin Core mappings""" LOGGER.debug('refreshing Dublin Core mappings with %s' % str(mappings)) defaults = { 'dc:title': 'pycsw:Title', 'dct:alternative': 'pycsw:AlternateTitle', 'dc:creator': 'pycsw:Creator', 'dc:subject': 'pycsw:Keywords', 'dct:abstract': 'pycsw:Abstract', 'dc:publisher': 'pycsw:Publisher', 'dc:contributor': 'pycsw:Contributor', 'dct:modified': 'pycsw:Modified', 'dc:date': 'pycsw:Date', 'dc:type': 'pycsw:Type', 'dc:format': 'pycsw:Format', 'dc:identifier': 'pycsw:Identifier', 'dc:source': 'pycsw:Source', 'dc:language': 'pycsw:Language', 'dc:relation': 'pycsw:Relation', 'dc:rights': 'pycsw:AccessConstraints', 'dct:spatial': 'pycsw:CRS', 'ows:BoundingBox': 'pycsw:BoundingBox', 'csw:AnyText': 'pycsw:AnyText', } for k, val in defaults.items(): for model, params in self.models.items(): queryables = params['typenames']['csw:Record']['queryables'] queryables['SupportedDublinCoreQueryables'][k] = { 'dbcol': mappings['mappings'][val] } pycsw-2.0.3/pycsw/core/PaxHeaders.23451/etree.py0000644000000000000000000000007413114323025016166 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/etree.py0000644000175000001440000000246713114323025017141 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= from lxml import etree pycsw-2.0.3/pycsw/core/PaxHeaders.23451/formats0000644000000000000000000000007413114323025016106 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/formats/0000755000175000001440000000000013114323025017125 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/formats/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025020274 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/formats/__init__.py0000644000175000001440000000243713114323025021244 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/core/formats/PaxHeaders.23451/fmt_json.py0000644000000000000000000000007413114323025020354 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/formats/fmt_json.py0000644000175000001440000000326013114323025021317 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import json from pycsw.core.util import xml2dict def xml2json(xml_string, namespaces, pretty_print=False): """Convert an xml string to JSON""" separators = (',', ': ') if pretty_print: return json.dumps(xml2dict(xml_string, namespaces), indent=4, separators=separators) return json.dumps(xml2dict(xml_string, namespaces), separators=separators) pycsw-2.0.3/pycsw/core/PaxHeaders.23451/log.py0000644000000000000000000000007413114323025015643 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/log.py0000644000175000001440000000665413114323025016620 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import logging LOGGER = logging.getLogger(__name__) MSG_FORMAT = '%(asctime)s] [%(levelname)s] file=%(pathname)s \ line=%(lineno)s module=%(module)s function=%(funcName)s %(message)s' TIME_FORMAT = '%a, %d %b %Y %H:%M:%S' LOGLEVELS = { 'CRITICAL': logging.CRITICAL, 'ERROR': logging.ERROR, 'WARNING': logging.WARNING, 'INFO': logging.INFO, 'DEBUG': logging.DEBUG, 'NOTSET': logging.NOTSET, } def setup_logger(config=None): """Initialize logging facility""" if config is None: return None # Do not proceed if logging has not been set up. if not (config.has_option('server', 'loglevel') or config.has_option('server', 'logfile')): return None logfile = None loglevel = 'NOTSET' if config.has_option('server', 'loglevel'): loglevel = config.get('server', 'loglevel') if loglevel not in LOGLEVELS.keys(): raise RuntimeError( 'Invalid server configuration (server.loglevel).') if not config.has_option('server', 'logfile'): raise RuntimeError( 'Invalid server configuration (server.loglevel set,\ but server.logfile missing).') if config.has_option('server', 'logfile'): if not config.has_option('server', 'loglevel'): raise RuntimeError( 'Invalid server configuration (server.logfile set,\ but server.loglevel missing).') logfile = config.get('server', 'logfile') if loglevel != 'NOTSET' and logfile is None: raise RuntimeError( 'Invalid server configuration \ (server.loglevel set, but server.logfile is not).') # Setup logging globally (not only for the pycsw module) # based on the parameters passed. logging.basicConfig(level=LOGLEVELS[loglevel], filename=logfile, datefmt=TIME_FORMAT, format=MSG_FORMAT) LOGGER.info('Logging initialized (level: %s).' % loglevel) if loglevel == 'DEBUG': # turn on CGI debugging LOGGER.info('CGI debugging enabled.') import cgitb cgitb.enable() pycsw-2.0.3/pycsw/core/PaxHeaders.23451/metadata.py0000644000000000000000000000007413114323025016642 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/metadata.py0000644000175000001440000017073713114323025017623 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2017 Tom Kralidis # Copyright (c) 2016 James F. Dickens # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import logging import uuid from six.moves import range from six.moves.urllib.parse import urlparse from owslib.util import build_get_url from geolinks import sniff_link from pycsw.core import util from pycsw.core.etree import etree LOGGER = logging.getLogger(__name__) def parse_record(context, record, repos=None, mtype='http://www.opengis.net/cat/csw/2.0.2', identifier=None, pagesize=10): ''' parse metadata ''' if identifier is None: identifier = uuid.uuid4().urn # parse web services if (mtype == 'http://www.opengis.net/cat/csw/2.0.2' and isinstance(record, str) and record.startswith('http')): LOGGER.debug('CSW service detected, fetching via HTTP') # CSW service, not csw:Record try: return _parse_csw(context, repos, record, identifier, pagesize) except Exception as err: # TODO: implement better exception handling if str(err).find('ExceptionReport') != -1: msg = 'CSW harvesting error: %s' % str(err) LOGGER.debug(msg) raise RuntimeError(msg) LOGGER.debug('Not a CSW, attempting to fetch Dublin Core') try: content = util.http_request('GET', record) except Exception as err: raise RuntimeError('HTTP error: %s' % str(err)) return [_parse_dc(context, repos, etree.fromstring(content, context.parser))] elif mtype == 'urn:geoss:waf': # WAF LOGGER.debug('WAF detected, fetching via HTTP') return _parse_waf(context, repos, record, identifier) elif mtype == 'http://www.opengis.net/wms': # WMS LOGGER.debug('WMS detected, fetching via OWSLib') return _parse_wms(context, repos, record, identifier) elif mtype == 'http://www.opengis.net/wmts/1.0': # WMTS LOGGER.debug('WMTS 1.0.0 detected, fetching via OWSLib') return _parse_wmts(context, repos, record, identifier) elif mtype == 'http://www.opengis.net/wps/1.0.0': # WPS LOGGER.debug('WPS detected, fetching via OWSLib') return [_parse_wps(context, repos, record, identifier)] elif mtype == 'http://www.opengis.net/wfs': # WFS LOGGER.debug('WFS detected, fetching via OWSLib') return _parse_wfs(context, repos, record, identifier) elif mtype == 'http://www.opengis.net/wcs': # WCS LOGGER.debug('WCS detected, fetching via OWSLib') return _parse_wcs(context, repos, record, identifier) elif mtype == 'http://www.opengis.net/sos/1.0': # SOS 1.0.0 LOGGER.debug('SOS 1.0.0 detected, fetching via OWSLib') return _parse_sos(context, repos, record, identifier, '1.0.0') elif mtype == 'http://www.opengis.net/sos/2.0': # SOS 2.0.0 LOGGER.debug('SOS 2.0.0 detected, fetching via OWSLib') return _parse_sos(context, repos, record, identifier, '2.0.0') elif (mtype == 'http://www.opengis.net/cat/csw/csdgm' and record.startswith('http')): # FGDC LOGGER.debug('FGDC detected, fetching via HTTP') record = util.http_request('GET', record) return _parse_metadata(context, repos, record) def _set(context, obj, name, value): ''' convenience method to set values ''' setattr(obj, context.md_core_model['mappings'][name], value) def _parse_metadata(context, repos, record): """parse metadata formats""" if isinstance(record, str): exml = etree.fromstring(record, context.parser) else: # already serialized to lxml if hasattr(record, 'getroot'): # standalone document exml = record.getroot() else: # part of a larger document exml = record root = exml.tag LOGGER.debug('Serialized metadata, parsing content model') if root == '{%s}MD_Metadata' % context.namespaces['gmd']: # ISO return [_parse_iso(context, repos, exml)] elif root == '{http://www.isotc211.org/2005/gmi}MI_Metadata': # ISO Metadata for Imagery return [_parse_iso(context, repos, exml)] elif root == 'metadata': # FGDC return [_parse_fgdc(context, repos, exml)] elif root == '{%s}TRANSFER' % context.namespaces['gm03']: # GM03 return [_parse_gm03(context, repos, exml)] elif root == '{%s}Record' % context.namespaces['csw']: # Dublin Core CSW return [_parse_dc(context, repos, exml)] elif root == '{%s}RDF' % context.namespaces['rdf']: # Dublin Core RDF return [_parse_dc(context, repos, exml)] elif root == '{%s}DIF' % context.namespaces['dif']: # DIF pass # TODO else: raise RuntimeError('Unsupported metadata format') def _parse_csw(context, repos, record, identifier, pagesize=10): from owslib.csw import CatalogueServiceWeb recobjs = [] # records serviceobj = repos.dataset() # if init raises error, this might not be a CSW md = CatalogueServiceWeb(record, timeout=60) LOGGER.debug('Setting CSW service metadata') # generate record of service instance _set(context, serviceobj, 'pycsw:Identifier', identifier) _set(context, serviceobj, 'pycsw:Typename', 'csw:Record') _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/cat/csw/2.0.2') _set(context, serviceobj, 'pycsw:MdSource', record) _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, serviceobj, 'pycsw:AnyText', util.get_anytext(md._exml)) _set(context, serviceobj, 'pycsw:Type', 'service') _set(context, serviceobj, 'pycsw:Title', md.identification.title) _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract) _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords)) _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name) _set(context, serviceobj, 'pycsw:Publisher', md.provider.name) _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name) _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name) _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints) _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees) _set(context, serviceobj, 'pycsw:Source', record) _set(context, serviceobj, 'pycsw:Format', md.identification.type) _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:CSW') _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version) _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations])) _set(context, serviceobj, 'pycsw:CouplingType', 'tight') links = [ '%s,OGC-CSW Catalogue Service for the Web,OGC:CSW,%s' % (identifier, md.url) ] _set(context, serviceobj, 'pycsw:Links', '^'.join(links)) _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context)) recobjs.append(serviceobj) # get all supported typenames of metadata # so we can harvest the entire CSW # try for ISO, settle for Dublin Core csw_typenames = 'csw:Record' csw_outputschema = 'http://www.opengis.net/cat/csw/2.0.2' grop = md.get_operation_by_name('GetRecords') if all(['gmd:MD_Metadata' in grop.parameters['typeNames']['values'], 'http://www.isotc211.org/2005/gmd' in grop.parameters['outputSchema']['values']]): LOGGER.info('CSW supports ISO') csw_typenames = 'gmd:MD_Metadata' csw_outputschema = 'http://www.isotc211.org/2005/gmd' # now get all records # get total number of records to loop against try: md.getrecords2(typenames=csw_typenames, resulttype='hits', outputschema=csw_outputschema) matches = md.results['matches'] except: # this is a CSW, but server rejects query raise RuntimeError(md.response) if pagesize > matches: pagesize = matches LOGGER.debug('Harvesting %d CSW records' % matches) # loop over all catalogue records incrementally for r in range(1, matches+1, pagesize): try: md.getrecords2(typenames=csw_typenames, startposition=r, maxrecords=pagesize, outputschema=csw_outputschema, esn='full') except Exception as err: # this is a CSW, but server rejects query raise RuntimeError(md.response) for k, v in md.records.items(): # try to parse metadata try: LOGGER.debug('Parsing metadata record: %s', v.xml) if csw_typenames == 'gmd:MD_Metadata': recobjs.append(_parse_iso(context, repos, etree.fromstring(v.xml, context.parser))) else: recobjs.append(_parse_dc(context, repos, etree.fromstring(v.xml, context.parser))) except Exception as err: # parsing failed for some reason LOGGER.warning('Metadata parsing failed %s', err) return recobjs def _parse_waf(context, repos, record, identifier): recobjs = [] content = util.http_request('GET', record) LOGGER.debug(content) try: parser = etree.HTMLParser() tree = etree.fromstring(content, parser) except Exception as err: raise Exception('Could not parse WAF: %s' % str(err)) up = urlparse(record) links = [] LOGGER.debug('collecting links') for link in tree.xpath('//a/@href'): link = link.strip() if not link: continue if link.find('?') != -1: continue if not link.endswith('.xml'): LOGGER.debug('Skipping, not .xml') continue if '/' in link: # path is embedded in link if link[-1] == '/': # directory, skip continue if link[0] == '/': # strip path of WAF URL link = '%s://%s%s' % (up.scheme, up.netloc, link) else: # tack on href to WAF URL link = '%s/%s' % (record, link) LOGGER.debug('URL is: %s', link) links.append(link) LOGGER.debug('%d links found', len(links)) for link in links: LOGGER.debug('Processing link %s', link) # fetch and parse linkcontent = util.http_request('GET', link) recobj = _parse_metadata(context, repos, linkcontent)[0] recobj.source = link recobj.mdsource = link recobjs.append(recobj) return recobjs def _parse_wms(context, repos, record, identifier): from owslib.wms import WebMapService recobjs = [] serviceobj = repos.dataset() md = WebMapService(record) # generate record of service instance _set(context, serviceobj, 'pycsw:Identifier', identifier) _set(context, serviceobj, 'pycsw:Typename', 'csw:Record') _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/wms') _set(context, serviceobj, 'pycsw:MdSource', record) _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, serviceobj, 'pycsw:AnyText', util.get_anytext(md.getServiceXML())) _set(context, serviceobj, 'pycsw:Type', 'service') _set(context, serviceobj, 'pycsw:Title', md.identification.title) _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract) _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords)) _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name) _set(context, serviceobj, 'pycsw:Publisher', md.provider.name) _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name) _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name) _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints) _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees) _set(context, serviceobj, 'pycsw:Source', record) _set(context, serviceobj, 'pycsw:Format', md.identification.type) for c in md.contents: if md.contents[c].parent is None: bbox = md.contents[c].boundingBoxWGS84 tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3]) _set(context, serviceobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp)) break _set(context, serviceobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326') _set(context, serviceobj, 'pycsw:DistanceUOM', 'degrees') _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:WMS') _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version) _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations])) _set(context, serviceobj, 'pycsw:OperatesOn', ','.join(list(md.contents))) _set(context, serviceobj, 'pycsw:CouplingType', 'tight') links = [ '%s,OGC-WMS Web Map Service,OGC:WMS,%s' % (identifier, md.url), ] _set(context, serviceobj, 'pycsw:Links', '^'.join(links)) _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context)) recobjs.append(serviceobj) # generate record foreach layer LOGGER.debug('Harvesting %d WMS layers' % len(md.contents)) for layer in md.contents: recobj = repos.dataset() identifier2 = '%s-%s' % (identifier, md.contents[layer].name) _set(context, recobj, 'pycsw:Identifier', identifier2) _set(context, recobj, 'pycsw:Typename', 'csw:Record') _set(context, recobj, 'pycsw:Schema', 'http://www.opengis.net/wms') _set(context, recobj, 'pycsw:MdSource', record) _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, recobj, 'pycsw:Type', 'dataset') _set(context, recobj, 'pycsw:ParentIdentifier', identifier) _set(context, recobj, 'pycsw:Title', md.contents[layer].title) _set(context, recobj, 'pycsw:Abstract', md.contents[layer].abstract) _set(context, recobj, 'pycsw:Keywords', ','.join(md.contents[layer].keywords)) _set(context, recobj, 'pycsw:AnyText', util.get_anytext([md.contents[layer].title, md.contents[layer].abstract, ','.join(md.contents[layer].keywords)])) bbox = md.contents[layer].boundingBoxWGS84 if bbox is not None: tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3]) _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp)) _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326') _set(context, recobj, 'pycsw:DistanceUOM', 'degrees') else: bbox = md.contents[layer].boundingBox if bbox: tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3]) _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp)) _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:%s' % \ bbox[-1].split(':')[1]) times = md.contents[layer].timepositions if times is not None: # get temporal extent time_begin = time_end = None if len(times) == 1 and len(times[0].split('/')) > 1: time_envelope = times[0].split('/') time_begin = time_envelope[0] time_end = time_envelope[1] elif len(times) > 1: # get first/last time_begin = times[0] time_end = times[-1] if all([time_begin is not None, time_end is not None]): _set(context, recobj, 'pycsw:TempExtent_begin', time_begin) _set(context, recobj, 'pycsw:TempExtent_end', time_end) params = { 'service': 'WMS', 'version': '1.1.1', 'request': 'GetMap', 'layers': md.contents[layer].name, 'format': 'image/png', 'height': '200', 'width': '200', 'srs': 'EPSG:4326', 'bbox': '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3]), 'styles': '' } links = [ '%s,OGC-Web Map Service,OGC:WMS,%s' % (md.contents[layer].name, md.url), '%s,Web image thumbnail (URL),WWW:LINK-1.0-http--image-thumbnail,%s' % (md.contents[layer].name, build_get_url(md.url, params)) ] _set(context, recobj, 'pycsw:Links', '^'.join(links)) _set(context, recobj, 'pycsw:XML', caps2iso(recobj, md, context)) recobjs.append(recobj) return recobjs def _parse_wmts(context, repos, record, identifier): from owslib.wmts import WebMapTileService recobjs = [] serviceobj = repos.dataset() md = WebMapTileService(record) # generate record of service instance _set(context, serviceobj, 'pycsw:Identifier', identifier) _set(context, serviceobj, 'pycsw:Typename', 'csw:Record') _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/wmts/1.0') _set(context, serviceobj, 'pycsw:MdSource', record) _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, serviceobj, 'pycsw:AnyText', util.get_anytext(md.getServiceXML())) _set(context, serviceobj, 'pycsw:Type', 'service') _set(context, serviceobj, 'pycsw:Title', md.identification.title) _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract) _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords)) _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name) _set(context, serviceobj, 'pycsw:Publisher', md.provider.name) _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name) _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name) _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints) _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees) _set(context, serviceobj, 'pycsw:Source', record) _set(context, serviceobj, 'pycsw:Format', md.identification.type) for c in md.contents: if md.contents[c].parent is None: bbox = md.contents[c].boundingBoxWGS84 tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3]) _set(context, serviceobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp)) break _set(context, serviceobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326') _set(context, serviceobj, 'pycsw:DistanceUOM', 'degrees') _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:WMTS') _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version) _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations])) _set(context, serviceobj, 'pycsw:OperatesOn', ','.join(list(md.contents))) _set(context, serviceobj, 'pycsw:CouplingType', 'tight') links = [ '%s,OGC-WMTS Web Map Service,OGC:WMTS,%s' % (identifier, md.url), ] _set(context, serviceobj, 'pycsw:Links', '^'.join(links)) _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context)) recobjs.append(serviceobj) # generate record for each layer LOGGER.debug('Harvesting %d WMTS layers' % len(md.contents)) for layer in md.contents: recobj = repos.dataset() keywords = '' identifier2 = '%s-%s' % (identifier, md.contents[layer].name) _set(context, recobj, 'pycsw:Identifier', identifier2) _set(context, recobj, 'pycsw:Typename', 'csw:Record') _set(context, recobj, 'pycsw:Schema', 'http://www.opengis.net/wmts/1.0') _set(context, recobj, 'pycsw:MdSource', record) _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, recobj, 'pycsw:Type', 'dataset') _set(context, recobj, 'pycsw:ParentIdentifier', identifier) if md.contents[layer].title: _set(context, recobj, 'pycsw:Title', md.contents[layer].title) else: _set(context, recobj, 'pycsw:Title', "") if md.contents[layer].abstract: _set(context, recobj, 'pycsw:Abstract', md.contents[layer].abstract) else: _set(context, recobj, 'pycsw:Abstract', "") if hasattr(md.contents[layer], 'keywords'): # safeguard against older OWSLib installs keywords = ','.join(md.contents[layer].keywords) _set(context, recobj, 'pycsw:Keywords', keywords) _set(context, recobj, 'pycsw:AnyText', util.get_anytext([md.contents[layer].title, md.contents[layer].abstract, ','.join(keywords) ])) bbox = md.contents[layer].boundingBoxWGS84 if bbox is not None: tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3]) _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp)) _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326') _set(context, recobj, 'pycsw:DistanceUOM', 'degrees') else: bbox = md.contents[layer].boundingBox if bbox: tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3]) _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp)) _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:%s' % \ bbox[-1].split(':')[1]) params = { 'service': 'WMTS', 'version': '1.0.0', 'request': 'GetTile', 'layer': md.contents[layer].name, } links = [ '%s,OGC-Web Map Tile Service,OGC:WMTS,%s' % (md.contents[layer].name, md.url), '%s,Web image thumbnail (URL),WWW:LINK-1.0-http--image-thumbnail,%s' % (md.contents[layer].name, build_get_url(md.url, params)) ] _set(context, recobj, 'pycsw:Links', '^'.join(links)) _set(context, recobj, 'pycsw:XML', caps2iso(recobj, md, context)) recobjs.append(recobj) return recobjs def _parse_wfs(context, repos, record, identifier): from owslib.wfs import WebFeatureService bboxs = [] recobjs = [] serviceobj = repos.dataset() md = WebFeatureService(record, '1.1.0') # generate record of service instance _set(context, serviceobj, 'pycsw:Identifier', identifier) _set(context, serviceobj, 'pycsw:Typename', 'csw:Record') _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/wfs') _set(context, serviceobj, 'pycsw:MdSource', record) _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, serviceobj, 'pycsw:AnyText', util.get_anytext(etree.tostring(md._capabilities))) _set(context, serviceobj, 'pycsw:Type', 'service') _set(context, serviceobj, 'pycsw:Title', md.identification.title) _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract) _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords)) _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name) _set(context, serviceobj, 'pycsw:Publisher', md.provider.name) _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name) _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name) _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints) _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees) _set(context, serviceobj, 'pycsw:Source', record) _set(context, serviceobj, 'pycsw:Format', md.identification.type) _set(context, serviceobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326') _set(context, serviceobj, 'pycsw:DistanceUOM', 'degrees') _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:WFS') _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version) _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations])) _set(context, serviceobj, 'pycsw:OperatesOn', ','.join(list(md.contents))) _set(context, serviceobj, 'pycsw:CouplingType', 'tight') links = [ '%s,OGC-WFS Web Feature Service,OGC:WFS,%s' % (identifier, md.url) ] _set(context, serviceobj, 'pycsw:Links', '^'.join(links)) # generate record foreach featuretype LOGGER.debug('Harvesting %d WFS featuretypes' % len(md.contents)) for featuretype in md.contents: recobj = repos.dataset() identifier2 = '%s-%s' % (identifier, md.contents[featuretype].id) _set(context, recobj, 'pycsw:Identifier', identifier2) _set(context, recobj, 'pycsw:Typename', 'csw:Record') _set(context, recobj, 'pycsw:Schema', 'http://www.opengis.net/wfs') _set(context, recobj, 'pycsw:MdSource', record) _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, recobj, 'pycsw:Type', 'dataset') _set(context, recobj, 'pycsw:ParentIdentifier', identifier) _set(context, recobj, 'pycsw:Title', md.contents[featuretype].title) _set(context, recobj, 'pycsw:Abstract', md.contents[featuretype].abstract) _set(context, recobj, 'pycsw:Keywords', ','.join(md.contents[featuretype].keywords)) _set(context, recobj, 'pycsw:AnyText', util.get_anytext([md.contents[featuretype].title, md.contents[featuretype].abstract, ','.join(md.contents[featuretype].keywords)])) bbox = md.contents[featuretype].boundingBoxWGS84 if bbox is not None: tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3]) wkt_polygon = util.bbox2wktpolygon(tmp) _set(context, recobj, 'pycsw:BoundingBox', wkt_polygon) _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326') _set(context, recobj, 'pycsw:DistanceUOM', 'degrees') bboxs.append(wkt_polygon) params = { 'service': 'WFS', 'version': '1.1.0', 'request': 'GetFeature', 'typename': md.contents[featuretype].id, } links = [ '%s,OGC-Web Feature Service,OGC:WFS,%s' % (md.contents[featuretype].id, md.url), '%s,File for download,WWW:DOWNLOAD-1.0-http--download,%s' % (md.contents[featuretype].id, build_get_url(md.url, params)) ] _set(context, recobj, 'pycsw:Links', '^'.join(links)) _set(context, recobj, 'pycsw:XML', caps2iso(recobj, md, context)) recobjs.append(recobj) # Derive a bbox based on aggregated featuretype bbox values bbox_agg = util.bbox_from_polygons(bboxs) if bbox_agg is not None: _set(context, serviceobj, 'pycsw:BoundingBox', bbox_agg) _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context)) recobjs.insert(0, serviceobj) return recobjs def _parse_wcs(context, repos, record, identifier): from owslib.wcs import WebCoverageService bboxs = [] recobjs = [] serviceobj = repos.dataset() md = WebCoverageService(record, '1.0.0') # generate record of service instance _set(context, serviceobj, 'pycsw:Identifier', identifier) _set(context, serviceobj, 'pycsw:Typename', 'csw:Record') _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/wcs') _set(context, serviceobj, 'pycsw:MdSource', record) _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, serviceobj, 'pycsw:AnyText', util.get_anytext(etree.tostring(md._capabilities))) _set(context, serviceobj, 'pycsw:Type', 'service') _set(context, serviceobj, 'pycsw:Title', md.identification.title) _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract) _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords)) _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name) _set(context, serviceobj, 'pycsw:Publisher', md.provider.name) _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name) _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name) _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessConstraints) _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees) _set(context, serviceobj, 'pycsw:Source', record) _set(context, serviceobj, 'pycsw:Format', md.identification.type) _set(context, serviceobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326') _set(context, serviceobj, 'pycsw:DistanceUOM', 'degrees') _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:WCS') _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version) _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations])) _set(context, serviceobj, 'pycsw:OperatesOn', ','.join(list(md.contents))) _set(context, serviceobj, 'pycsw:CouplingType', 'tight') links = [ '%s,OGC-WCS Web Coverage Service,OGC:WCS,%s' % (identifier, md.url) ] _set(context, serviceobj, 'pycsw:Links', '^'.join(links)) # generate record foreach coverage LOGGER.debug('Harvesting %d WCS coverages ' % len(md.contents)) for coverage in md.contents: recobj = repos.dataset() identifier2 = '%s-%s' % (identifier, md.contents[coverage].id) _set(context, recobj, 'pycsw:Identifier', identifier2) _set(context, recobj, 'pycsw:Typename', 'csw:Record') _set(context, recobj, 'pycsw:Schema', 'http://www.opengis.net/wcs') _set(context, recobj, 'pycsw:MdSource', record) _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, recobj, 'pycsw:Type', 'dataset') _set(context, recobj, 'pycsw:ParentIdentifier', identifier) _set(context, recobj, 'pycsw:Title', md.contents[coverage].title) _set(context, recobj, 'pycsw:Abstract', md.contents[coverage].abstract) _set(context, recobj, 'pycsw:Keywords', ','.join(md.contents[coverage].keywords)) _set(context, recobj, 'pycsw:AnyText', util.get_anytext([md.contents[coverage].title, md.contents[coverage].abstract, ','.join(md.contents[coverage].keywords)])) bbox = md.contents[coverage].boundingBoxWGS84 if bbox is not None: tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3]) wkt_polygon = util.bbox2wktpolygon(tmp) _set(context, recobj, 'pycsw:BoundingBox', wkt_polygon) _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326') _set(context, recobj, 'pycsw:DistanceUOM', 'degrees') bboxs.append(wkt_polygon) links = [ '%s,OGC-Web Coverage Service,OGC:WCS,%s' % (md.contents[coverage].id, md.url) ] _set(context, recobj, 'pycsw:Links', '^'.join(links)) _set(context, recobj, 'pycsw:XML', caps2iso(recobj, md, context)) recobjs.append(recobj) # Derive a bbox based on aggregated coverage bbox values bbox_agg = util.bbox_from_polygons(bboxs) if bbox_agg is not None: _set(context, serviceobj, 'pycsw:BoundingBox', bbox_agg) _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context)) recobjs.insert(0, serviceobj) return recobjs def _parse_wps(context, repos, record, identifier): from owslib.wps import WebProcessingService serviceobj = repos.dataset() md = WebProcessingService(record) # generate record of service instance _set(context, serviceobj, 'pycsw:Identifier', identifier) _set(context, serviceobj, 'pycsw:Typename', 'csw:Record') _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/wps/1.0.0') _set(context, serviceobj, 'pycsw:MdSource', record) _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, serviceobj, 'pycsw:AnyText', util.get_anytext(md._capabilities)) _set(context, serviceobj, 'pycsw:Type', 'service') _set(context, serviceobj, 'pycsw:Title', md.identification.title) _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract) _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords)) _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name) _set(context, serviceobj, 'pycsw:Publisher', md.provider.name) _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name) _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name) _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints) _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees) _set(context, serviceobj, 'pycsw:Source', record) _set(context, serviceobj, 'pycsw:Format', md.identification.type) _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:WPS') _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version) _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations])) _set(context, serviceobj, 'pycsw:OperatesOn', ','.join([o.identifier for o in md.processes])) _set(context, serviceobj, 'pycsw:CouplingType', 'loose') links = [ '%s,OGC-WPS Web Processing Service,OGC:WPS,%s' % (identifier, md.url), '%s,OGC-WPS Capabilities service (ver 1.0.0),OGC:WPS-1.1.0-http-get-capabilities,%s' % (identifier, build_get_url(md.url, {'service': 'WPS', 'version': '1.0.0', 'request': 'GetCapabilities'})), ] _set(context, serviceobj, 'pycsw:Links', '^'.join(links)) _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context)) return serviceobj def _parse_sos(context, repos, record, identifier, version): from owslib.sos import SensorObservationService bboxs = [] recobjs = [] serviceobj = repos.dataset() if version == '1.0.0': schema = 'http://www.opengis.net/sos/1.0' else: schema = 'http://www.opengis.net/sos/2.0' md = SensorObservationService(record, version=version) # generate record of service instance _set(context, serviceobj, 'pycsw:Identifier', identifier) _set(context, serviceobj, 'pycsw:Typename', 'csw:Record') _set(context, serviceobj, 'pycsw:Schema', schema) _set(context, serviceobj, 'pycsw:MdSource', record) _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, serviceobj, 'pycsw:AnyText', util.get_anytext(etree.tostring(md._capabilities))) _set(context, serviceobj, 'pycsw:Type', 'service') _set(context, serviceobj, 'pycsw:Title', md.identification.title) _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract) _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords)) _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name) _set(context, serviceobj, 'pycsw:Publisher', md.provider.name) _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name) _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name) _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints) _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees) _set(context, serviceobj, 'pycsw:Source', record) _set(context, serviceobj, 'pycsw:Format', md.identification.type) _set(context, serviceobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326') _set(context, serviceobj, 'pycsw:DistanceUOM', 'degrees') _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:SOS') _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version) _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations])) _set(context, serviceobj, 'pycsw:OperatesOn', ','.join(list(md.contents))) _set(context, serviceobj, 'pycsw:CouplingType', 'tight') links = [ '%s,OGC-SOS Sensor Observation Service,OGC:SOS,%s' % (identifier, md.url), ] _set(context, serviceobj, 'pycsw:Links', '^'.join(links)) # generate record foreach offering LOGGER.debug('Harvesting %d SOS ObservationOffering\'s ', len(md.contents)) for offering in md.contents: recobj = repos.dataset() identifier2 = '%s-%s' % (identifier, md.contents[offering].id) _set(context, recobj, 'pycsw:Identifier', identifier2) _set(context, recobj, 'pycsw:Typename', 'csw:Record') _set(context, recobj, 'pycsw:Schema', schema) _set(context, recobj, 'pycsw:MdSource', record) _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, recobj, 'pycsw:Type', 'dataset') _set(context, recobj, 'pycsw:ParentIdentifier', identifier) _set(context, recobj, 'pycsw:Title', md.contents[offering].description) _set(context, recobj, 'pycsw:Abstract', md.contents[offering].description) _set(context, recobj, 'pycsw:TempExtent_begin', util.datetime2iso8601(md.contents[offering].begin_position)) _set(context, recobj, 'pycsw:TempExtent_end', util.datetime2iso8601(md.contents[offering].end_position)) #For observed_properties that have mmi url or urn, we simply want the observation name. observed_properties = [] for obs in md.contents[offering].observed_properties: #Observation is stored as urn representation: urn:ogc:def:phenomenon:mmisw.org:cf:sea_water_salinity if obs.lower().startswith(('urn:', 'x-urn')): observed_properties.append(obs.rsplit(':', 1)[-1]) #Observation is stored as uri representation: http://mmisw.org/ont/cf/parameter/sea_floor_depth_below_sea_surface elif obs.lower().startswith(('http://', 'https://')): observed_properties.append(obs.rsplit('/', 1)[-1]) else: observed_properties.append(obs) #Build anytext from description and the observed_properties. anytext = [] anytext.append(md.contents[offering].description) anytext.extend(observed_properties) _set(context, recobj, 'pycsw:AnyText', util.get_anytext(anytext)) _set(context, recobj, 'pycsw:Keywords', ','.join(observed_properties)) bbox = md.contents[offering].bbox if bbox is not None: tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3]) wkt_polygon = util.bbox2wktpolygon(tmp) _set(context, recobj, 'pycsw:BoundingBox', wkt_polygon) _set(context, recobj, 'pycsw:CRS', md.contents[offering].bbox_srs.id) _set(context, recobj, 'pycsw:DistanceUOM', 'degrees') bboxs.append(wkt_polygon) _set(context, recobj, 'pycsw:XML', caps2iso(recobj, md, context)) recobjs.append(recobj) # Derive a bbox based on aggregated featuretype bbox values bbox_agg = util.bbox_from_polygons(bboxs) if bbox_agg is not None: _set(context, serviceobj, 'pycsw:BoundingBox', bbox_agg) _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context)) recobjs.insert(0, serviceobj) return recobjs def _parse_fgdc(context, repos, exml): from owslib.fgdc import Metadata recobj = repos.dataset() links = [] md = Metadata(exml) if md.idinfo.datasetid is not None: # we need an identifier _set(context, recobj, 'pycsw:Identifier', md.idinfo.datasetid) else: # generate one ourselves _set(context, recobj, 'pycsw:Identifier', uuid.uuid1().urn) _set(context, recobj, 'pycsw:Typename', 'fgdc:metadata') _set(context, recobj, 'pycsw:Schema', context.namespaces['fgdc']) _set(context, recobj, 'pycsw:MdSource', 'local') _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, recobj, 'pycsw:XML', md.xml) _set(context, recobj, 'pycsw:AnyText', util.get_anytext(exml)) _set(context, recobj, 'pycsw:Language', 'en-US') if hasattr(md.idinfo, 'descript'): _set(context, recobj, 'pycsw:Abstract', md.idinfo.descript.abstract) if hasattr(md.idinfo, 'keywords'): if md.idinfo.keywords.theme: _set(context, recobj, 'pycsw:Keywords', \ ','.join(md.idinfo.keywords.theme[0]['themekey'])) if hasattr(md.idinfo.timeperd, 'timeinfo'): if hasattr(md.idinfo.timeperd.timeinfo, 'rngdates'): _set(context, recobj, 'pycsw:TempExtent_begin', md.idinfo.timeperd.timeinfo.rngdates.begdate) _set(context, recobj, 'pycsw:TempExtent_end', md.idinfo.timeperd.timeinfo.rngdates.enddate) if hasattr(md.idinfo, 'origin'): _set(context, recobj, 'pycsw:Creator', md.idinfo.origin) _set(context, recobj, 'pycsw:Publisher', md.idinfo.origin) _set(context, recobj, 'pycsw:Contributor', md.idinfo.origin) if hasattr(md.idinfo, 'ptcontac'): _set(context, recobj, 'pycsw:OrganizationName', md.idinfo.ptcontac.cntorg) _set(context, recobj, 'pycsw:AccessConstraints', md.idinfo.accconst) _set(context, recobj, 'pycsw:OtherConstraints', md.idinfo.useconst) _set(context, recobj, 'pycsw:Date', md.metainfo.metd) if hasattr(md.idinfo, 'spdom') and hasattr(md.idinfo.spdom, 'bbox'): bbox = md.idinfo.spdom.bbox else: bbox = None if hasattr(md.idinfo, 'citation'): if hasattr(md.idinfo.citation, 'citeinfo'): _set(context, recobj, 'pycsw:Type', md.idinfo.citation.citeinfo['geoform']) _set(context, recobj, 'pycsw:Title', md.idinfo.citation.citeinfo['title']) _set(context, recobj, 'pycsw:PublicationDate', md.idinfo.citation.citeinfo['pubdate']) _set(context, recobj, 'pycsw:Format', md.idinfo.citation.citeinfo['geoform']) if md.idinfo.citation.citeinfo['onlink']: for link in md.idinfo.citation.citeinfo['onlink']: tmp = ',,,%s' % link links.append(tmp) if hasattr(md, 'distinfo') and hasattr(md.distinfo, 'stdorder'): for link in md.distinfo.stdorder['digform']: tmp = ',%s,,%s' % (link['name'], link['url']) links.append(tmp) if len(links) > 0: _set(context, recobj, 'pycsw:Links', '^'.join(links)) if bbox is not None: try: tmp = '%s,%s,%s,%s' % (bbox.minx, bbox.miny, bbox.maxx, bbox.maxy) _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp)) except: # coordinates are corrupted, do not include _set(context, recobj, 'pycsw:BoundingBox', None) else: _set(context, recobj, 'pycsw:BoundingBox', None) return recobj def _parse_gm03(context, repos, exml): def get_value_by_language(pt_group, language, pt_type='text'): for ptg in pt_group: if ptg.language == language: if pt_type == 'url': val = ptg.plain_url else: # 'text' val = ptg.plain_text return val from owslib.gm03 import GM03 recobj = repos.dataset() links = [] md = GM03(exml) if hasattr(md.data, 'core'): data = md.data.core elif hasattr(md.data, 'comprehensive'): data = md.data.comprehensive language = data.metadata.language _set(context, recobj, 'pycsw:Identifier', data.metadata.file_identifier) _set(context, recobj, 'pycsw:Typename', 'gm03:TRANSFER') _set(context, recobj, 'pycsw:Schema', context.namespaces['gm03']) _set(context, recobj, 'pycsw:MdSource', 'local') _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, recobj, 'pycsw:XML', md.xml) _set(context, recobj, 'pycsw:AnyText', util.get_anytext(exml)) _set(context, recobj, 'pycsw:Language', data.metadata.language) _set(context, recobj, 'pycsw:Type', data.metadata.hierarchy_level[0]) _set(context, recobj, 'pycsw:Date', data.metadata.date_stamp) for dt in data.date: if dt.date_type == 'modified': _set(context, recobj, 'pycsw:Modified', dt.date) elif dt.date_type == 'creation': _set(context, recobj, 'pycsw:CreationDate', dt.date) elif dt.date_type == 'publication': _set(context, recobj, 'pycsw:PublicationDate', dt.date) elif dt.date_type == 'revision': _set(context, recobj, 'pycsw:RevisionDate', dt.date) if hasattr(data, 'metadata_point_of_contact'): _set(context, recobj, 'pycsw:ResponsiblePartyRole', data.metadata_point_of_contact.role) _set(context, recobj, 'pycsw:Source', data.metadata.dataset_uri) _set(context, recobj, 'pycsw:CRS','urn:ogc:def:crs:EPSG:6.11:4326') if hasattr(data, 'citation'): _set(context, recobj, 'pycsw:Title', get_value_by_language(data.citation.title.pt_group, language)) if hasattr(data, 'data_identification'): _set(context, recobj, 'pycsw:Abstract', get_value_by_language(data.data_identification.abstract.pt_group, language)) if hasattr(data.data_identification, 'topic_category'): _set(context, recobj, 'pycsw:TopicCategory', data.data_identification.topic_category) _set(context, recobj, 'pycsw:ResourceLanguage', data.data_identification.language) if hasattr(data, 'format'): _set(context, recobj, 'pycsw:Format', data.format.name) # bbox if hasattr(data, 'geographic_bounding_box'): try: tmp = '%s,%s,%s,%s' % (data.geographic_bounding_box.west_bound_longitude, data.geographic_bounding_box.south_bound_latitude, data.geographic_bounding_box.east_bound_longitude, data.geographic_bounding_box.north_bound_latitude) _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp)) except: # coordinates are corrupted, do not include _set(context, recobj, 'pycsw:BoundingBox', None) else: _set(context, recobj, 'pycsw:BoundingBox', None) # temporal extent if hasattr(data, 'temporal_extent'): if data.temporal_extent.extent['begin'] is not None and data.temporal_extent.extent['end'] is not None: _set(context, recobj, 'pycsw:TempExtent_begin', data.temporal_extent.extent['begin']) _set(context, recobj, 'pycsw:TempExtent_end', data.temporal_extent.extent['end']) # online linkages name = description = protocol = '' if hasattr(data, 'online_resource'): if hasattr(data.online_resource, 'name'): name = get_value_by_language(data.online_resource.name.pt_group, language) if hasattr(data.online_resource, 'description'): description = get_value_by_language(data.online_resource.description.pt_group, language) linkage = get_value_by_language(data.online_resource.linkage.pt_group, language, 'url') tmp = '%s,"%s",%s,%s' % (name, description, protocol, linkage) links.append(tmp) if len(links) > 0: _set(context, recobj, 'pycsw:Links', '^'.join(links)) keywords = [] for kw in data.keywords: keywords.append(get_value_by_language(kw.keyword.pt_group, language)) _set(context, recobj, 'pycsw:Keywords', ','.join(keywords)) # contacts return recobj def _parse_iso(context, repos, exml): from owslib.iso import MD_Metadata recobj = repos.dataset() links = [] md = MD_Metadata(exml) _set(context, recobj, 'pycsw:Identifier', md.identifier) _set(context, recobj, 'pycsw:Typename', 'gmd:MD_Metadata') _set(context, recobj, 'pycsw:Schema', context.namespaces['gmd']) _set(context, recobj, 'pycsw:MdSource', 'local') _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, recobj, 'pycsw:XML', md.xml) _set(context, recobj, 'pycsw:AnyText', util.get_anytext(exml)) _set(context, recobj, 'pycsw:Language', md.language) _set(context, recobj, 'pycsw:Type', md.hierarchy) _set(context, recobj, 'pycsw:ParentIdentifier', md.parentidentifier) _set(context, recobj, 'pycsw:Date', md.datestamp) _set(context, recobj, 'pycsw:Modified', md.datestamp) _set(context, recobj, 'pycsw:Source', md.dataseturi) if md.referencesystem is not None: _set(context, recobj, 'pycsw:CRS','urn:ogc:def:crs:EPSG:6.11:%s' % md.referencesystem.code) if hasattr(md, 'identification'): _set(context, recobj, 'pycsw:Title', md.identification.title) _set(context, recobj, 'pycsw:AlternateTitle', md.identification.alternatetitle) _set(context, recobj, 'pycsw:Abstract', md.identification.abstract) _set(context, recobj, 'pycsw:Relation', md.identification.aggregationinfo) if hasattr(md.identification, 'temporalextent_start'): _set(context, recobj, 'pycsw:TempExtent_begin', md.identification.temporalextent_start) if hasattr(md.identification, 'temporalextent_end'): _set(context, recobj, 'pycsw:TempExtent_end', md.identification.temporalextent_end) if len(md.identification.topiccategory) > 0: _set(context, recobj, 'pycsw:TopicCategory', md.identification.topiccategory[0]) if len(md.identification.resourcelanguage) > 0: _set(context, recobj, 'pycsw:ResourceLanguage', md.identification.resourcelanguage[0]) if hasattr(md.identification, 'bbox'): bbox = md.identification.bbox else: bbox = None if (hasattr(md.identification, 'keywords') and len(md.identification.keywords) > 0): all_keywords = [item for sublist in md.identification.keywords for item in sublist['keywords'] if item is not None] _set(context, recobj, 'pycsw:Keywords', ','.join(all_keywords)) _set(context, recobj, 'pycsw:KeywordType', md.identification.keywords[0]['type']) if (hasattr(md.identification, 'creator') and len(md.identification.creator) > 0): all_orgs = set([item.organization for item in md.identification.creator if hasattr(item, 'organization') and item.organization is not None]) _set(context, recobj, 'pycsw:Creator', ';'.join(all_orgs)) if (hasattr(md.identification, 'publisher') and len(md.identification.publisher) > 0): all_orgs = set([item.organization for item in md.identification.publisher if hasattr(item, 'organization') and item.organization is not None]) _set(context, recobj, 'pycsw:Publisher', ';'.join(all_orgs)) if (hasattr(md.identification, 'contributor') and len(md.identification.contributor) > 0): all_orgs = set([item.organization for item in md.identification.contributor if hasattr(item, 'organization') and item.organization is not None]) _set(context, recobj, 'pycsw:Contributor', ';'.join(all_orgs)) if (hasattr(md.identification, 'contact') and len(md.identification.contact) > 0): all_orgs = set([item.organization for item in md.identification.contact if hasattr(item, 'organization') and item.organization is not None]) _set(context, recobj, 'pycsw:OrganizationName', ';'.join(all_orgs)) if len(md.identification.securityconstraints) > 0: _set(context, recobj, 'pycsw:SecurityConstraints', md.identification.securityconstraints[0]) if len(md.identification.accessconstraints) > 0: _set(context, recobj, 'pycsw:AccessConstraints', md.identification.accessconstraints[0]) if len(md.identification.otherconstraints) > 0: _set(context, recobj, 'pycsw:OtherConstraints', md.identification.otherconstraints[0]) if hasattr(md.identification, 'date'): for datenode in md.identification.date: if datenode.type == 'revision': _set(context, recobj, 'pycsw:RevisionDate', datenode.date) elif datenode.type == 'creation': _set(context, recobj, 'pycsw:CreationDate', datenode.date) elif datenode.type == 'publication': _set(context, recobj, 'pycsw:PublicationDate', datenode.date) if hasattr(md.identification, 'extent') and hasattr(md.identification.extent, 'description_code'): _set(context, recobj, 'pycsw:GeographicDescriptionCode', md.identification.extent.description_code) if len(md.identification.denominators) > 0: _set(context, recobj, 'pycsw:Denominator', md.identification.denominators[0]) if len(md.identification.distance) > 0: _set(context, recobj, 'pycsw:DistanceValue', md.identification.distance[0]) if len(md.identification.uom) > 0: _set(context, recobj, 'pycsw:DistanceUOM', md.identification.uom[0]) if len(md.identification.classification) > 0: _set(context, recobj, 'pycsw:Classification', md.identification.classification[0]) if len(md.identification.uselimitation) > 0: _set(context, recobj, 'pycsw:ConditionApplyingToAccessAndUse', md.identification.uselimitation[0]) if hasattr(md.identification, 'format'): _set(context, recobj, 'pycsw:Format', md.distribution.format) if md.serviceidentification is not None: _set(context, recobj, 'pycsw:ServiceType', md.serviceidentification.type) _set(context, recobj, 'pycsw:ServiceTypeVersion', md.serviceidentification.version) _set(context, recobj, 'pycsw:CouplingType', md.serviceidentification.couplingtype) service_types = [] for smd in md.identificationinfo: if smd.identtype == 'service' and smd.type is not None: service_types.append(smd.type) _set(context, recobj, 'pycsw:ServiceType', ','.join(service_types)) #if len(md.serviceidentification.operateson) > 0: # _set(context, recobj, 'pycsw:operateson = VARCHAR(32), #_set(context, recobj, 'pycsw:operation VARCHAR(32), #_set(context, recobj, 'pycsw:operatesonidentifier VARCHAR(32), #_set(context, recobj, 'pycsw:operatesoname VARCHAR(32), if hasattr(md.identification, 'dataquality'): _set(context, recobj, 'pycsw:Degree', md.dataquality.conformancedegree) _set(context, recobj, 'pycsw:Lineage', md.dataquality.lineage) _set(context, recobj, 'pycsw:SpecificationTitle', md.dataquality.specificationtitle) if hasattr(md.dataquality, 'specificationdate'): _set(context, recobj, 'pycsw:specificationDate', md.dataquality.specificationdate[0].date) _set(context, recobj, 'pycsw:SpecificationDateType', md.dataquality.specificationdate[0].datetype) if hasattr(md, 'contact') and len(md.contact) > 0: _set(context, recobj, 'pycsw:ResponsiblePartyRole', md.contact[0].role) LOGGER.info('Scanning for links') if hasattr(md, 'distribution'): dist_links = [] if hasattr(md.distribution, 'online'): LOGGER.debug('Scanning for gmd:transferOptions element(s)') dist_links.extend(md.distribution.online) if hasattr(md.distribution, 'distributor'): LOGGER.debug('Scanning for gmd:distributorTransferOptions element(s)') for dist_member in md.distribution.distributor: dist_links.extend(dist_member.online) for link in dist_links: if link.url is not None and link.protocol is None: # take a best guess link.protocol = sniff_link(link.url) linkstr = '%s,%s,%s,%s' % \ (link.name, link.description, link.protocol, link.url) links.append(linkstr) try: LOGGER.debug('Scanning for srv:SV_ServiceIdentification links') for sident in md.identificationinfo: if hasattr(sident, 'operations'): for sops in sident.operations: for scpt in sops['connectpoint']: LOGGER.debug('adding srv link %s', scpt.url) linkstr = '%s,%s,%s,%s' % \ (scpt.name, scpt.description, scpt.protocol, scpt.url) links.append(linkstr) except Exception as err: # srv: identification does not exist LOGGER.debug('no srv:SV_ServiceIdentification links found') if len(links) > 0: _set(context, recobj, 'pycsw:Links', '^'.join(links)) if bbox is not None: try: tmp = '%s,%s,%s,%s' % (bbox.minx, bbox.miny, bbox.maxx, bbox.maxy) _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp)) except: # coordinates are corrupted, do not include _set(context, recobj, 'pycsw:BoundingBox', None) else: _set(context, recobj, 'pycsw:BoundingBox', None) return recobj def _parse_dc(context, repos, exml): from owslib.csw import CswRecord recobj = repos.dataset() links = [] md = CswRecord(exml) if md.bbox is None: bbox = None else: bbox = md.bbox _set(context, recobj, 'pycsw:Identifier', md.identifier) _set(context, recobj, 'pycsw:Typename', 'csw:Record') _set(context, recobj, 'pycsw:Schema', context.namespaces['csw']) _set(context, recobj, 'pycsw:MdSource', 'local') _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now()) _set(context, recobj, 'pycsw:XML', md.xml) _set(context, recobj, 'pycsw:AnyText', util.get_anytext(exml)) _set(context, recobj, 'pycsw:Language', md.language) _set(context, recobj, 'pycsw:Type', md.type) _set(context, recobj, 'pycsw:Title', md.title) _set(context, recobj, 'pycsw:AlternateTitle', md.alternative) _set(context, recobj, 'pycsw:Abstract', md.abstract) if len(md.subjects) > 0 and None not in md.subjects: _set(context, recobj, 'pycsw:Keywords', ','.join(md.subjects)) _set(context, recobj, 'pycsw:ParentIdentifier', md.ispartof) _set(context, recobj, 'pycsw:Relation', md.relation) _set(context, recobj, 'pycsw:TempExtent_begin', md.temporal) _set(context, recobj, 'pycsw:TempExtent_end', md.temporal) _set(context, recobj, 'pycsw:ResourceLanguage', md.language) _set(context, recobj, 'pycsw:Creator', md.creator) _set(context, recobj, 'pycsw:Publisher', md.publisher) _set(context, recobj, 'pycsw:Contributor', md.contributor) _set(context, recobj, 'pycsw:OrganizationName', md.rightsholder) _set(context, recobj, 'pycsw:AccessConstraints', md.accessrights) _set(context, recobj, 'pycsw:OtherConstraints', md.license) _set(context, recobj, 'pycsw:Date', md.date) _set(context, recobj, 'pycsw:CreationDate', md.created) _set(context, recobj, 'pycsw:PublicationDate', md.issued) _set(context, recobj, 'pycsw:Modified', md.modified) _set(context, recobj, 'pycsw:Format', md.format) _set(context, recobj, 'pycsw:Source', md.source) for ref in md.references: tmp = ',,%s,%s' % (ref['scheme'], ref['url']) links.append(tmp) for uri in md.uris: tmp = '%s,%s,%s,%s' % \ (uri['name'], uri['description'], uri['protocol'], uri['url']) links.append(tmp) if len(links) > 0: _set(context, recobj, 'pycsw:Links', '^'.join(links)) if bbox is not None: try: tmp = '%s,%s,%s,%s' % (bbox.minx, bbox.miny, bbox.maxx, bbox.maxy) _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp)) except: # coordinates are corrupted, do not include _set(context, recobj, 'pycsw:BoundingBox', None) else: _set(context, recobj, 'pycsw:BoundingBox', None) return recobj def caps2iso(record, caps, context): """Creates ISO metadata from Capabilities XML""" from pycsw.plugins.profiles.apiso.apiso import APISO apiso_obj = APISO(context.model, context.namespaces, context) apiso_obj.ogc_schemas_base = 'http://schemas.opengis.net' apiso_obj.url = context.url queryables = dict(apiso_obj.repository['queryables']['SupportedISOQueryables'].items()) iso_xml = apiso_obj.write_record(record, 'full', 'http://www.isotc211.org/2005/gmd', queryables, caps) return etree.tostring(iso_xml) pycsw-2.0.3/pycsw/core/PaxHeaders.23451/repository.py0000644000000000000000000000007413114323025017301 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/repository.py0000644000175000001440000004176413114323025020257 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # Angelos Tzotsos # # Copyright (c) 2015 Tom Kralidis # Copyright (c) 2015 Angelos Tzotsos # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import logging import os from sqlalchemy import create_engine, asc, desc, func, __version__, select from sqlalchemy.sql import text from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import create_session from pycsw.core import util LOGGER = logging.getLogger(__name__) class Repository(object): _engines = {} @classmethod def create_engine(clazz, url): ''' SQL Alchemy engines are thread-safe and simple wrappers for connection pools https://groups.google.com/forum/#!topic/sqlalchemy/t8i3RSKZGb0 To reduce startup time we can cache the engine as a class variable in the repository object and do database initialization once Engines are memoized by url ''' if url not in clazz._engines: LOGGER.debug('creating new engine: %s', url) engine = create_engine('%s' % url, echo=False) # load SQLite query bindings # This can be directly bound via events # for sqlite < 0.7, we need to to this on a per-connection basis if engine.name in ['sqlite', 'sqlite3'] and __version__ >= '0.7': from sqlalchemy import event @event.listens_for(engine, "connect") def connect(dbapi_connection, connection_rec): dbapi_connection.create_function( 'query_spatial', 4, util.query_spatial) dbapi_connection.create_function( 'update_xpath', 3, util.update_xpath) dbapi_connection.create_function('get_anytext', 1, util.get_anytext) dbapi_connection.create_function('get_geometry_area', 1, util.get_geometry_area) dbapi_connection.create_function('get_spatial_overlay_rank', 2, util.get_spatial_overlay_rank) clazz._engines[url] = engine return clazz._engines[url] ''' Class to interact with underlying repository ''' def __init__(self, database, context, app_root=None, table='records', repo_filter=None): ''' Initialize repository ''' self.context = context self.filter = repo_filter self.fts = False # Don't use relative paths, this is hack to get around # most wsgi restriction... if (app_root and database.startswith('sqlite:///') and not database.startswith('sqlite:////')): database = database.replace('sqlite:///', 'sqlite:///%s%s' % (app_root, os.sep)) self.engine = Repository.create_engine('%s' % database) base = declarative_base(bind=self.engine) LOGGER.debug('binding ORM to existing database') self.postgis_geometry_column = None schema, table = util.sniff_table(table) self.dataset = type('dataset', (base,), dict(__tablename__=table,__table_args__={'autoload': True, 'schema': schema})) self.dbtype = self.engine.name self.session = create_session(self.engine) temp_dbtype = None if self.dbtype == 'postgresql': # check if PostgreSQL is enabled with PostGIS 1.x try: self.session.execute(select([func.postgis_version()])) temp_dbtype = 'postgresql+postgis+wkt' LOGGER.debug('PostgreSQL+PostGIS1+WKT detected') except Exception as err: LOGGER.debug('PostgreSQL+PostGIS1+WKT detection failed') # check if PostgreSQL is enabled with PostGIS 2.x try: self.session.execute('select(postgis_version())') temp_dbtype = 'postgresql+postgis+wkt' LOGGER.debug('PostgreSQL+PostGIS2+WKT detected') except Exception as err: LOGGER.debug('PostgreSQL+PostGIS2+WKT detection failed') # check if a native PostGIS geometry column exists try: result = self.session.execute("select f_geometry_column from geometry_columns where f_table_name = '%s' and f_geometry_column != 'wkt_geometry' limit 1;" % table) row = result.fetchone() self.postgis_geometry_column = str(row['f_geometry_column']) temp_dbtype = 'postgresql+postgis+native' LOGGER.debug('PostgreSQL+PostGIS+Native detected') except Exception as err: LOGGER.debug('PostgreSQL+PostGIS+Native not picked up: %s', str(err)) # check if a native PostgreSQL FTS GIN index exists result = self.session.execute("select relname from pg_class where relname='fts_gin_idx'").scalar() self.fts = bool(result) LOGGER.debug('PostgreSQL FTS enabled: %r', self.fts) if temp_dbtype is not None: LOGGER.debug('%s support detected' % temp_dbtype) self.dbtype = temp_dbtype if self.dbtype in ['sqlite', 'sqlite3']: # load SQLite query bindings # <= 0.6 behaviour if not __version__ >= '0.7': self.connection = self.engine.raw_connection() self.connection.create_function( 'query_spatial', 4, util.query_spatial) self.connection.create_function( 'update_xpath', 3, util.update_xpath) self.connection.create_function('get_anytext', 1, util.get_anytext) self.connection.create_function('get_geometry_area', 1, util.get_geometry_area) self.connection.create_function('get_spatial_overlay_rank', 2, util.get_spatial_overlay_rank) LOGGER.debug('setting repository queryables') # generate core queryables db and obj bindings self.queryables = {} for tname in self.context.model['typenames']: for qname in self.context.model['typenames'][tname]['queryables']: self.queryables[qname] = {} for qkey, qvalue in \ self.context.model['typenames'][tname]['queryables'][qname].items(): self.queryables[qname][qkey] = qvalue # flatten all queryables # TODO smarter way of doing this self.queryables['_all'] = {} for qbl in self.queryables: self.queryables['_all'].update(self.queryables[qbl]) self.queryables['_all'].update(self.context.md_core_model['mappings']) def _create_values(self, values): value_dict = {} for num, value in enumerate(values): value_dict['pvalue%d' % num] = value return value_dict def query_ids(self, ids): ''' Query by list of identifiers ''' column = getattr(self.dataset, \ self.context.md_core_model['mappings']['pycsw:Identifier']) query = self.session.query(self.dataset).filter(column.in_(ids)) return self._get_repo_filter(query).all() def query_domain(self, domain, typenames, domainquerytype='list', count=False): ''' Query by property domain values ''' domain_value = getattr(self.dataset, domain) if domainquerytype == 'range': LOGGER.debug('Generating property name range values') query = self.session.query(func.min(domain_value), func.max(domain_value)) else: if count: LOGGER.debug('Generating property name frequency counts') query = self.session.query(getattr(self.dataset, domain), func.count(domain_value)).group_by(domain_value) else: query = self.session.query(domain_value).distinct() return self._get_repo_filter(query).all() def query_insert(self, direction='max'): ''' Query to get latest (default) or earliest update to repository ''' column = getattr(self.dataset, \ self.context.md_core_model['mappings']['pycsw:InsertDate']) if direction == 'min': return self._get_repo_filter(self.session.query(func.min(column))).first()[0] # else default max return self._get_repo_filter(self.session.query(func.max(column))).first()[0] def query_source(self, source): ''' Query by source ''' column = getattr(self.dataset, \ self.context.md_core_model['mappings']['pycsw:Source']) query = self.session.query(self.dataset).filter(column == source) return self._get_repo_filter(query).all() def query(self, constraint, sortby=None, typenames=None, maxrecords=10, startposition=0): ''' Query records from underlying repository ''' # run the raw query and get total if 'where' in constraint: # GetRecords with constraint LOGGER.debug('constraint detected') query = self.session.query(self.dataset).filter( text(constraint['where'])).params(self._create_values(constraint['values'])) else: # GetRecords sans constraint LOGGER.debug('No constraint detected') query = self.session.query(self.dataset) total = self._get_repo_filter(query).count() if util.ranking_pass: #apply spatial ranking #TODO: Check here for dbtype so to extract wkt from postgis native to wkt LOGGER.debug('spatial ranking detected') LOGGER.debug('Target WKT: %s', getattr(self.dataset, self.context.md_core_model['mappings']['pycsw:BoundingBox'])) LOGGER.debug('Query WKT: %s', util.ranking_query_geometry) query = query.order_by(func.get_spatial_overlay_rank(getattr(self.dataset, self.context.md_core_model['mappings']['pycsw:BoundingBox']), util.ranking_query_geometry).desc()) #trying to make this wsgi safe util.ranking_pass = False util.ranking_query_geometry = '' if sortby is not None: # apply sorting LOGGER.debug('sorting detected') #TODO: Check here for dbtype so to extract wkt from postgis native to wkt sortby_column = getattr(self.dataset, sortby['propertyname']) if sortby['order'] == 'DESC': # descending sort if 'spatial' in sortby and sortby['spatial']: # spatial sort query = query.order_by(func.get_geometry_area(sortby_column).desc()) else: # aspatial sort query = query.order_by(sortby_column.desc()) else: # ascending sort if 'spatial' in sortby and sortby['spatial']: # spatial sort query = query.order_by(func.get_geometry_area(sortby_column)) else: # aspatial sort query = query.order_by(sortby_column) # always apply limit and offset return [str(total), self._get_repo_filter(query).limit( maxrecords).offset(startposition).all()] def insert(self, record, source, insert_date): ''' Insert a record into the repository ''' try: self.session.begin() self.session.add(record) self.session.commit() except Exception as err: self.session.rollback() raise RuntimeError('ERROR: %s' % str(err.orig)) def update(self, record=None, recprops=None, constraint=None): ''' Update a record in the repository based on identifier ''' if record is not None: identifier = getattr(record, self.context.md_core_model['mappings']['pycsw:Identifier']) xml = getattr(self.dataset, self.context.md_core_model['mappings']['pycsw:XML']) anytext = getattr(self.dataset, self.context.md_core_model['mappings']['pycsw:AnyText']) if recprops is None and constraint is None: # full update LOGGER.debug('full update') update_dict = dict([(getattr(self.dataset, key), getattr(record, key)) \ for key in record.__dict__.keys() if key != '_sa_instance_state']) try: self.session.begin() self._get_repo_filter(self.session.query(self.dataset)).filter_by( identifier=identifier).update(update_dict, synchronize_session='fetch') self.session.commit() except Exception as err: self.session.rollback() raise RuntimeError('ERROR: %s' % str(err.orig)) else: # update based on record properties LOGGER.debug('property based update') try: rows = rows2 = 0 self.session.begin() for rpu in recprops: # update queryable column and XML document via XPath if 'xpath' not in rpu['rp']: self.session.rollback() raise RuntimeError('XPath not found for property %s' % rpu['rp']['name']) if 'dbcol' not in rpu['rp']: self.session.rollback() raise RuntimeError('property not found for XPath %s' % rpu['rp']['name']) rows += self._get_repo_filter(self.session.query(self.dataset)).filter( text(constraint['where'])).params(self._create_values(constraint['values'])).update({ getattr(self.dataset, rpu['rp']['dbcol']): rpu['value'], 'xml': func.update_xpath(str(self.context.namespaces), getattr(self.dataset, self.context.md_core_model['mappings']['pycsw:XML']), str(rpu)), }, synchronize_session='fetch') # then update anytext tokens rows2 += self._get_repo_filter(self.session.query(self.dataset)).filter( text(constraint['where'])).params(self._create_values(constraint['values'])).update({ 'anytext': func.get_anytext(getattr( self.dataset, self.context.md_core_model['mappings']['pycsw:XML'])) }, synchronize_session='fetch') self.session.commit() return rows except Exception as err: self.session.rollback() raise RuntimeError('ERROR: %s' % str(err.orig)) def delete(self, constraint): ''' Delete a record from the repository ''' try: self.session.begin() rows = self._get_repo_filter(self.session.query(self.dataset)).filter( text(constraint['where'])).params(self._create_values(constraint['values'])) parentids = [] for row in rows: # get ids parentids.append(getattr(row, self.context.md_core_model['mappings']['pycsw:Identifier'])) rows=rows.delete(synchronize_session='fetch') if rows > 0: LOGGER.debug('Deleting all child records') # delete any child records which had this record as a parent rows += self._get_repo_filter(self.session.query(self.dataset)).filter( getattr(self.dataset, self.context.md_core_model['mappings']['pycsw:ParentIdentifier']).in_(parentids)).delete( synchronize_session='fetch') self.session.commit() except Exception as err: self.session.rollback() raise RuntimeError('ERROR: %s' % str(err.orig)) return rows def _get_repo_filter(self, query): ''' Apply repository wide side filter / mask query ''' if self.filter is not None: return query.filter(text(self.filter)) return query pycsw-2.0.3/pycsw/core/PaxHeaders.23451/schemas0000644000000000000000000000007413114323025016056 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/0000755000175000001440000000000013114323025017075 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/PaxHeaders.23451/catalog.xml0000644000000000000000000000007413114323025020267 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/catalog.xml0000644000175000001440000000413413114323025021233 0ustar00kalxasusers00000000000000 pycsw-2.0.3/pycsw/core/schemas/PaxHeaders.23451/ogc0000644000000000000000000000007413114323025016626 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/0000755000175000001440000000000013114323025017645 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/PaxHeaders.23451/OGC-SOFTWARE-NOTICE.txt0000644000000000000000000000007413114323025022263 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/OGC-SOFTWARE-NOTICE.txt0000644000175000001440000000420413114323025023225 0ustar00kalxasusers00000000000000OGC Software Notice This OGC work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions: Permission to use, copy, and modify this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make: The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-document] Open Geospatial Consortium, Inc. All Rights Reserved. http://www.opengeospatial.org/ogc/legal (Hypertext is preferred, but a textual representation is permitted.) Notice of any changes or modifications to the OGC files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.) THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.pycsw-2.0.3/pycsw/core/schemas/ogc/PaxHeaders.23451/README.txt0000644000000000000000000000007413114323025020401 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/README.txt0000644000175000001440000000057113114323025021346 0ustar00kalxasusers00000000000000 These schemas are shipped with pycsw to support realtime XML validation. The schemas have been downloaded from the official OGC schema repository at http://schemas.opengis.net/ Note that only schemas required for pycsw are included. As well, xs:import and xs:include statements with references to absolute URLs have been modified to refer to relative URLs for performance. pycsw-2.0.3/pycsw/core/schemas/ogc/PaxHeaders.23451/csw0000644000000000000000000000007413114323025017422 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/0000755000175000001440000000000013114323025020441 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/csw/PaxHeaders.23451/2.0.20000644000000000000000000000007413114323025020061 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/2.0.2/0000755000175000001440000000000013114323025021100 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/csw/2.0.2/PaxHeaders.23451/CSW-discovery.xsd0000644000000000000000000000007413114323025023317 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/2.0.2/CSW-discovery.xsd0000644000175000001440000005634413114323025024275 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd This schema defines the request and response messages for the CSW-Discovery operations specified in clause 10 of OGC-07-066. CSW is an OGC Standard. Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Base type for all request messages except GetCapabilities. The attributes identify the relevant service type and version. Request for a description of service capabilities. See OGC 05-008 for more information. This type extends ows:CapabilitiesBaseType defined in OGC-05-008 to include information about supported OGC filter components. A profile may extend this type to describe additional capabilities. This request allows a user to discover elements of the information model supported by the catalogue. If no TypeName elements are included, then all of the schemas for the information model must be returned. schemaLanguage - preferred schema language (W3C XML Schema by default) outputFormat - preferred output format (application/xml by default) The response contains a list of matching schema components in the requested schema language. A schema component includes a schema fragment (type definition) or an entire schema from some target namespace; the schema language is identified by URI. If the component is a schema fragment its parent MUST be referenced (parentSchema). The principal means of searching the catalogue. The matching catalogue entries may be included with the response. The client may assign a requestId (absolute URI). A distributed search is performed if the DistributedSearch element is present and the catalogue is a member of a federation. Profiles may allow alternative query expressions. Various attributes that specify basic retrieval options: outputFormat - the media type of the response message outputSchema - the preferred schema for records in the result set startPosition - requests a slice of the result set, starting at this position maxRecords - the maximum number of records to return. No records are returned if maxRecords=0. Include results in the response. Provide a result set summary, but no results. Validate the request and return an Acknowledgement message if it is valid. Continue processing the request asynchronously. Governs the behaviour of a distributed search. hopCount - the maximum number of message hops before the search is terminated. Each catalogue node decrements this value when the request is received, and must not forward the request if hopCount=0. Specifies a query to execute against instances of one or more object types. A set of ElementName elements may be included to specify an adhoc view of the csw:Record instances in the result set. Otherwise, use ElementSetName to specify a predefined view. The Constraint element contains a query filter expressed in a supported query language. A sorting criterion that specifies a property to sort by may be included. typeNames - a list of object types to query. The exact syntax is defined in an application profile. If querying against the common record properties, only a single type may be specified (Record). A search constraint that adheres to one of the following syntaxes: Filter - OGC filter expression CqlText - OGC CQL predicate Query language version Named subsets of catalogue object properties; these views are mapped to a specific information model and are defined in an application profile. The response message for a GetRecords request. Some or all of the matching records may be included as children of the SearchResults element. The RequestId is only included if the client specified it. This element provides information about the status of the search request. status - status of the search timestamp - the date and time when the result set was modified (ISO 8601 format: YYYY-MM-DDThh:mm:ss[+|-]hh:mm). Includes representations of result set members if maxRecords > 0. The items must conform to one of the csw:Record views or a profile-specific representation. resultSetId - id of the result set (a URI). elementSet - The element set that has been returned (i.e., "brief", "summary", "full") recordSchema - schema reference for included records(URI) numberOfRecordsMatched - number of records matched by the query numberOfRecordsReturned - number of records returned to client nextRecord - position of next record in the result set (0 if no records remain). expires - the time instant when the result set expires and is discarded (ISO 8601 format) Convenience operation to retrieve default record representations by identifier. Id - object identifier (a URI) that provides a reference to a catalogue item (or a result set if the catalogue supports persistent result sets). ElementSetName - one of "brief, "summary", or "full" Returns a representation of the matching entry. If there is no matching record, the response message must be empty. Requests the actual values of some specified request parameter or other data element. Returns the actual values for some property. In general this is a subset of the value domain (that is, set of permissible values), although in some cases these may be the same. This is a general acknowledgement response message for all requests that may be processed in an asynchronous manner. EchoedRequest - Echoes the submitted request message RequestId - identifier for polling purposes (if no response handler is available, or the URL scheme is unsupported) Includes a copy of the request message body. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/2.0.2/PaxHeaders.23451/CSW-publication.xsd0000644000000000000000000000007413114323025023621 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/2.0.2/CSW-publication.xsd0000644000175000001440000002624513114323025024574 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd This schema defines the request and response messages for the CSW-Publication operations specified in clause 10 of OGC-07-066. CSW is an OGC Standard. Copyright (c) 2004, 2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Users may insert, update, or delete catalogue entries. If the verboseResponse attribute has the value "true", then one or more csw:InsertResult elements must be included in the response. Submits one or more records to the catalogue. The representation is defined by the application profile. The handle attribute may be included to specify a local identifier for the action (it must be unique within the context of the transaction). Update statements may replace an entire record or only update part of a record: 1) To replace an existing record, include a new instance of the record; 2) To update selected properties of an existing record, include a set of RecordProperty elements. The scope of the update statement is determined by the Constraint element. The 'handle' is a local identifier for the action. Deletes one or more catalogue items that satisfy some set of conditions. The RecordProperty element is used to specify the new value of a record property in an update statement. The Name element contains the name of a property to be updated. The name may be a path expression. The Value element contains the replacement value for the named property. The response for a transaction request that was successfully completed. If the transaction failed for any reason, a service exception report indicating a TransactionFailure is returned instead. Reports the total number of catalogue items modified by a transaction request (i.e, inserted, updated, deleted). If the client did not specify a requestId, the server may assign one (a URI value). Returns a "brief" view of any newly created catalogue records. The handle attribute may reference a particular statement in the corresponding transaction request. Requests that the catalogue attempt to harvest a resource from some network location identified by the source URL. Source - a URL from which the resource is retrieved ResourceType - normally a URI that specifies the type of the resource (DCMES v1.1) being harvested if it is known. ResourceFormat - a media type indicating the format of the resource being harvested. The default is "application/xml". ResponseHandler - a reference to some endpoint to which the response shall be forwarded when the harvest operation has been completed HarvestInterval - an interval expressed using the ISO 8601 syntax; it specifies the interval between harvest attempts (e.g., P6M indicates an interval of six months). The content of the response varies depending on the presence of the ResponseHandler element. If present, then the catalogue should verify the request and respond immediately with an csw:Acknowledgement element in the response. The catalogue must then attempt to harvest the resource at some later time and send the response message to the location specified by the value of the ResponseHandler element using the indicated protocol (e.g. ftp, mailto, http). If the ResponseHandler element is absent, then the catalogue must attempt to harvest the resource immediately and include a TransactionResponse element in the response. In any case, if the harvest attempt is successful the response shall include summary representations of the newly created catalogue item(s). pycsw-2.0.3/pycsw/core/schemas/ogc/csw/2.0.2/PaxHeaders.23451/rec-dcmes.xsd0000644000000000000000000000007413114323025022520 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/2.0.2/rec-dcmes.xsd0000644000175000001440000002465513114323025023476 0ustar00kalxasusers00000000000000 This schema declares XML elements for the 15 Dublin Core elements in the "http://purl.org/dc/elements/1.1/" namespace. This is the default type for all of the DC elements. It defines a complexType SimpleLiteral which permits mixed content but disallows child elements by use of minOcccurs/maxOccurs. However, this complexType does permit the derivation of other types which would permit child elements. The scheme attribute may be used as a qualifier to reference an encoding scheme that describes the value domain for a given property. A name given to the resource. Typically, Title will be a name by which the resource is formally known. An entity primarily responsible for making the content of the resource. Examples of Creator include a person, an organization, or a service. Typically, the name of a Creator should be used to indicate the entity. A topic of the content of the resource. Typically, Subject will be expressed as keywords, key phrases, or classification codes that describe a topic of the resource. Recommended best practice is to select a value from a controlled vocabulary or formal classification scheme. An account of the content of the resource. Examples of Description include, but are not limited to, an abstract, table of contents, reference to a graphical representation of content, or free-text account of the content. An entity responsible for making the resource available. Examples of Publisher include a person, an organization, or a service. Typically, the name of a Publisher should be used to indicate the entity. An entity responsible for making contributions to the content of the resource. Examples of Contributor include a person, an organization, or a service. Typically, the name of a Contributor should be used to indicate the entity. A date of an event in the lifecycle of the resource. Typically, Date will be associated with the creation or availability of the resource. Recommended best practice for encoding the date value is defined in a profile of ISO 8601 and includes (among others) dates of the form YYYY-MM-DD. The nature or genre of the content of the resource. Type includes terms describing general categories, functions, genres, or aggregation levels for content. Recommended best practice is to select a value from a controlled vocabulary (for example, the DCMI Type Vocabulary). To describe the physical or digital manifestation of the resource, use the Format element. The physical or digital manifestation of the resource. Typically, Format will include the media-type or dimensions of the resource. Format may be used to identify the software, hardware, or other equipment needed to display or operate the resource. Examples of dimensions include size and duration. Recommended best practice is to select a value from a controlled vocabulary (for example, the list of Internet Media Types defining computer media formats). An unambiguous reference to the resource within a given context. Recommended best practice is to identify the resource by means of a string or number conforming to a formal identification system. Formal identification systems include but are not limited to the Uniform Resource Identifier (URI) (including the Uniform Resource Locator (URL)), the Digital Object Identifier (DOI), and the International Standard Book Number (ISBN). A Reference to a resource from which the present resource is derived. The present resource may be derived from the Source resource in whole or in part. Recommended best practice is to identify the referenced resource by means of a string or number conforming to a formal identification system. A language of the intellectual content of the resource. Recommended best practice is to use RFC 3066, which, in conjunction with ISO 639, defines two- and three-letter primary language tags with optional subtags. Examples include "en" or "eng" for English, "akk" for Akkadian, and "en-GB" for English used in the United Kingdom. A reference to a related resource. Recommended best practice is to identify the referenced resource by means of a string or number conforming to a formal identification system. The extent or scope of the content of the resource. Typically, Coverage will include spatial location (a place name or geographic coordinates), temporal period (a period label, date, or date range), or jurisdiction (such as a named administrative entity). Recommended best practice is to select a value from a controlled vocabulary (for example, the Thesaurus of Geographic Names [TGN]) and to use, where appropriate, named places or time periods in preference to numeric identifiers such as sets of coordinates or date ranges. Information about rights held in and over the resource. Typically, Rights will contain a rights management statement for the resource, or reference a service providing such information. Rights information often encompasses Intellectual Property Rights (IPR), Copyright, and various Property Rights. If the Rights element is absent, no assumptions may be made about any rights held in or over the resource. This group is included as a convenience for schema authors who need to refer to all the elements in the "http://purl.org/dc/elements/1.1/" namespace. This type definition is included as a convenience for schema authors who need a container element for all of the DC elements. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/2.0.2/PaxHeaders.23451/rec-dcterms.xsd0000644000000000000000000000007413114323025023066 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/2.0.2/rec-dcterms.xsd0000644000175000001440000001102313114323025024025 0ustar00kalxasusers00000000000000 This schema declares additional DCMI elements and element refinements in the "http://purl.org/dc/terms/" namespace. This group is included as a convenience for schema authors who need to refer to the complete set of DCMI metadata terms. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/2.0.2/PaxHeaders.23451/record.xsd0000644000000000000000000000007413114323025022134 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/2.0.2/record.xsd0000644000175000001440000001416313114323025023103 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/2.0.2/record.xsd This schema defines the basic record types that must be supported by all CSW implementations. These correspond to full, summary, and brief views based on DCMI metadata terms. CSW is an OGC Standard. Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . This type encapsulates all of the standard DCMI metadata terms, including the Dublin Core refinements; these terms may be mapped to the profile-specific information model. This type defines a brief representation of the common record format. It extends AbstractRecordType to include only the dc:identifier and dc:type properties. This type defines a summary representation of the common record format. It extends AbstractRecordType to include the core properties. This type extends DCMIRecordType to add ows:BoundingBox; it may be used to specify a spatial envelope for the catalogued resource. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/PaxHeaders.23451/3.00000644000000000000000000000007413114323025017722 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/0000755000175000001440000000000013114323025020741 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/README.txt0000644000000000000000000000007413114323025021475 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/README.txt0000644000175000001440000000156013114323025022441 0ustar00kalxasusers00000000000000# 2015-02-13 The unofficial CSW 3.0 schema can be tested from here. http://test.schemas.opengis.net/csw/3.0/ I did make one change to the examples/Capabilities.xml Thanks, kevin #################################################################### --- csw3_0_0-beta-20150123-pv/csw/3.0/examples/Capabilities.xml +++ csw3_0_0-beta-20150123-pv-s1/csw/3.0/examples/Capabilities.xml @@ -15,7 +15,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/cat/csw/3.0 - http://www.opengis.net/csw/3.0/cswAll.xsd + http://schemas.opengis.net/csw/3.0/cswAll.xsd http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd http://www.w3.org/1999/xlink pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/cswAll.xsd0000644000000000000000000000007413114323025021744 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/cswAll.xsd0000644000175000001440000000270413114323025022711 0ustar00kalxasusers00000000000000 cswAll.xsd 2012-06-04 This XML Schema Document includes and imports, directly or indirectly, all the XML Schemas defined by the Catalogue Service Specification. CSW is an OGC Standard. Copyright (c) 2012 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights see: http://www.opengeospatial.org/legal/. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/cswCommon.xsd0000644000000000000000000000007413114323025022464 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/cswCommon.xsd0000644000175000001440000000654513114323025023440 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/3.0/cswCommons.xsd This schema defines commen elements used in the CSW schemas. Base type for all request messages except GetCapabilities. The attributes identify the relevant service type and version. This is a general acknowledgement response message for all requests that may be processed in an asynchronous manner. EchoedRequest - Echoes the submitted request message RequestId - identifier for polling purposes (if no response handler is available, or the URL scheme is unsupported) Includes a copy of the request message body. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/cswGetCapabilities.xsd0000644000000000000000000000007413114323025024265 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/cswGetCapabilities.xsd0000644000175000001440000000723313114323025025234 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/3.0/cswGetCapabilities.xsd This schema defines the request and response messages for the CSW 3.0 GetCapabilities operation. Request for a description of service capabilities. See OGC 06-121r9 for more information. OGC service type identifier (CSW). This type extends ows:CapabilitiesBaseType defined in OGC 06-121r9 to include information about supported OGC filter components. A profile may extend this type to describe additional capabilities. If sections parameter not specified, then Filter_Capabilities is mandatory. On full getCapabilities request, then all capabilities should be present. Document this in the specification, use annotation on minOccurs to make this point. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/cswGetDomain.xsd0000644000000000000000000000007413114323025023103 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/cswGetDomain.xsd0000644000175000001440000001506213114323025024051 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/3.0/cswGetDomain.xsd This schema defines the request and response messages for the CSW 3.0 GetDomain operation. Returns the set of supported possible values for the specified data component. Returns the set of available values for the specified data component. This is typically a subset of the list of possible values. Returns the actual values for some property. In general this is a subset of the value domain (that is, set of permissible values), although in some cases these may be the same. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/cswGetRecordById.xsd0000644000000000000000000000007413114323025023662 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/cswGetRecordById.xsd0000644000175000001440000000550213114323025024626 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/3.0/cswGetRecordsById.xsd This schema defines the request messages for the CSW 3.0 GetRecordById operation. Convenience operation to retrieve default record representations by identifier. Id - object identifier (a URI) that provides a reference to a catalogue item (or a result set if the catalogue supports persistent result sets). ElementSetName - one of "brief, "summary", or "full" pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/cswGetRecords.xsd0000644000000000000000000000007413114323025023275 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/cswGetRecords.xsd0000644000175000001440000004502713114323025024247 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/3.0/cswGetRecords.xsd This schema defines the request and response messages for the CSW 3.0 GetRecords operation. The principal means of searching the catalogue. The matching catalogue entries may be included with the response. The client may assign a requestId (absolute URI). A distributed search is performed if the DistributedSearch element is present and the catalogue is a member of a federation. Profiles may allow alternative query expressions. requestId becomes mandatory in the case of a distributed search. Must be a unique Id (i.e. a UUID). Various attributes that specify basic retrieval options: outputFormat - the media type of the response message outputSchema - the preferred schema for records in the result set startPosition - requests a slice of the result set, starting at this position maxRecords - the maximum number of records to return. No records are returned if maxRecords=0. Governs the behaviour of a distributed search. hopCount - the maximum number of message hops before the search is terminated. Each catalogue node decrements this value when the request is received, and must not forward the request if hopCount=0. To restrict the number of catalogues of a federation which should be searched upon an optional list of those catalogues can be provided within the federatedCatatalogues parameter. An Id which uniquely identifies the requestor. Id which uniquely identifies a complete client initiated distributed search sequence/session. Defines how long (sec) the distributedSearchId should be valid, meaning how long a server involved in distributed search should minimally store information related to the distributedSearchId. For every catalogue in this list an optional timeout definition (in msec) can be provided. Specifies a query to execute against instances of one or more object types. A set of ElementName elements may be included to specify an adhoc view of the csw30:Record instances in the result set. Otherwise, use ElementSetName to specify a predefined view. The Constraint element contains a query filter expressed in a supported query language. A sorting criterion that specifies a property to sort by may be included. typeNames - a list of object types to query. The exact syntax is defined in an application profile. If querying against the common record properties, only a single type may be specified (Record). A search constraint that adheres to one of the following syntaxes: Filter - OGC filter expression CqlText - OGC CQL predicate Query language version Named subsets of catalogue object properties; these views are mapped to a specific information model and are defined in an application profile. The response message for a GetRecords request. Some or all of the matching records may be included as children of the SearchResults element. The RequestId is only included if the client specified it. This element provides information about the status of the search request. status - status of the search timestamp - the date and time when the result set was modified (ISO 8601 format: YYYY-MM-DDThh:mm:ss[+|-]hh:mm). status of the items included in the resultset: complete (all items found are included), subset (subset of items found are included, but no further items in the requested range startPosition/maxRecords are available), processing (subset of items found are included, but server further processing to get the outstanding items in the requested range startPosition/maxRecords), none (no items are included). Includes representations of result set members if maxRecords > 0. The items must conform to one of the csw30:Record views or a profile-specific representation. resultSetId - id of the result set (a URI). elementSet - The element set that has been returned (e.g., "brief", "summary", "full") recordSchema - schema reference for included records(URI) numberOfRecordsMatched - number of records matched by the query numberOfRecordsReturned - number of records returned to client nextRecord - position of next record in the result set (0 if no records remain). expires - the time instant when the result set expires and is discarded (ISO8601 format) elapsedTime - runtime information of the search within the federated catalogue The URL-prefix of the getCapabilities HTTP-GET operation of the catalogue. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/cswHarvest.xsd0000644000000000000000000000007413114323025022650 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/cswHarvest.xsd0000644000175000001440000001134513114323025023616 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/3.0/cswHarvest.xsd This schema defines the request and response messages for the Harvest operation. Requests that the catalogue attempt to harvest a resource from some network location identified by the source URL. Source - a URL from which the resource is retrieved ResourceType - normally a URI that specifies the type of the resource being harvested ResourceFormat - a media type indicating the format of the resource being harvested. The default is "application/xml". ResponseHandler - a reference to some endpoint to which the response shall be forwarded when the harvest operation has been completed HarvestInterval - an interval expressed using the ISO 8601 syntax; it specifies the interval between harvest attempts (e.g., P6M indicates an interval of six months). The content of the response varies depending on the presence of the ResponseHandler element. If present, then the catalogue should verify the request and respond immediately with an csw30:Acknowledgement element in the response. The catalogue must then attempt to harvest the resource at some later time and send the response message to the location specified by the value of the ResponseHandler element using the indicated protocol (e.g. ftp, mailto, http). If the ResponseHandler element is absent, then the catalogue must attempt to harvest the resource immediately and include a TransactionResponse element in the response. In any case, if the harvest attempt is successful the response shall include summary representations of the newly created catalogue item(s). pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/cswTransaction.xsd0000644000000000000000000000007413114323025023521 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/cswTransaction.xsd0000644000175000001440000002070713114323025024471 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/3.0/cswTransaction.xsd This schema defines the request and response messages for the Transaction operation. Users may insert, update, or delete catalogue entries. If the verboseResponse attribute has the value "true", then one or more csw30:InsertResult elements must be included in the response. Submits one or more records to the catalogue. The representation is defined by the application profile. The handle attribute may be included to specify a local identifier for the action (it must be unique within the context of the transaction). Update statements may replace an entire record or only update part of a record: 1) To replace an existing record, include a new instance of the record; 2) To update selected properties of an existing record, include a set of RecordProperty elements. The scope of the update statement is determined by the Constraint element. The 'handle' is a local identifier for the action. Deletes one or more catalogue items that satisfy some set of conditions. The RecordProperty element is used to specify the new value of a record property in an update statement. The Name element contains the name of a property to be updated. The name may be a path expression. The Value element contains the replacement value for the named property. The response for a transaction request that was successfully completed. If the transaction failed for any reason, a service exception report indicating a TransactionFailure is returned instead. Reports the total number of catalogue items modified by a transaction request (i.e, inserted, updated, deleted). If the client did not specify a requestId, the server may assign one (a URI value). Returns a "brief" view of any newly created catalogue records. The handle attribute may reference a particular statement in the corresponding transaction request. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/cswUnHarvest.xsd0000644000000000000000000000007413114323025023153 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/cswUnHarvest.xsd0000644000175000001440000000703513114323025024122 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/3.0/cswUnHarvest.xsd This schema defines the request and response messages for the UnHarvest operation. Requests that the CSW unharvest a resource from the catalogue. The resource to unharvest is identified by its source URL (which must match exactly) and its resource type. Source - URL of the resourse to unharvest (must match exactly; including case) ResourceType - normally a URI that specifies the type of the resource being unharvested. ResponseHandler - a reference to some endpoint to which the response shall be forwarded when the unharvest operation has been completed The response to an UnHarvest request is simply a list of csw30:Source elements echoing what has been unharvested. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/rec-dcmes.xsd0000644000000000000000000000007413114323025022361 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/rec-dcmes.xsd0000644000175000001440000002641013114323025023326 0ustar00kalxasusers00000000000000 This schema declares XML elements for the 15 Dublin Core elements in the "http://purl.org/dc/elements/1.1/" namespace. This is the default type for all of the DC elements. It defines a complexType SimpleLiteral which permits mixed content but disallows child elements by use of minOcccurs/maxOccurs. However, this complexType does permit the derivation of other types which would permit child elements. The scheme attribute may be used as a qualifier to reference an encoding scheme that describes the value domain for a given property. A name given to the resource. Typically, Title will be a name by which the resource is formally known. An entity primarily responsible for making the content of the resource. Examples of Creator include a person, an organization, or a service. Typically, the name of a Creator should be used to indicate the entity. A topic of the content of the resource. Typically, Subject will be expressed as keywords, key phrases, or classification codes that describe a topic of the resource. Recommended best practice is to select a value from a controlled vocabulary or formal classification scheme. An account of the content of the resource. Examples of Description include, but are not limited to, an abstract, table of contents, reference to a graphical representation of content, or free-text account of the content. An entity responsible for making the resource available. Examples of Publisher include a person, an organization, or a service. Typically, the name of a Publisher should be used to indicate the entity. An entity responsible for making contributions to the content of the resource. Examples of Contributor include a person, an organization, or a service. Typically, the name of a Contributor should be used to indicate the entity. A date of an event in the lifecycle of the resource. Typically, Date will be associated with the creation or availability of the resource. Recommended best practice for encoding the date value is defined in a profile of ISO 8601 and includes (among others) dates of the form YYYY-MM-DD. The nature or genre of the content of the resource. Type includes terms describing general categories, functions, genres, or aggregation levels for content. Recommended best practice is to select a value from a controlled vocabulary (for example, the DCMI Type Vocabulary). To describe the physical or digital manifestation of the resource, use the Format element. The physical or digital manifestation of the resource. Typically, Format will include the media-type or dimensions of the resource. Format may be used to identify the software, hardware, or other equipment needed to display or operate the resource. Examples of dimensions include size and duration. Recommended best practice is to select a value from a controlled vocabulary (for example, the list of Internet Media Types defining computer media formats). An unambiguous reference to the resource within a given context. Recommended best practice is to identify the resource by means of a string or number conforming to a formal identification system. Formal identification systems include but are not limited to the Uniform Resource Identifier (URI) (including the Uniform Resource Locator (URL)), the Digital Object Identifier (DOI), and the International Standard Book Number (ISBN). A Reference to a resource from which the present resource is derived. The present resource may be derived from the Source resource in whole or in part. Recommended best practice is to identify the referenced resource by means of a string or number conforming to a formal identification system. A language of the intellectual content of the resource. Recommended best practice is to use RFC 3066, which, in conjunction with ISO 639, defines two- and three-letter primary language tags with optional subtags. Examples include "en" or "eng" for English, "akk" for Akkadian, and "en-GB" for English used in the United Kingdom. A reference to a related resource. Recommended best practice is to identify the referenced resource by means of a string or number conforming to a formal identification system. The extent or scope of the content of the resource. Typically, Coverage will include spatial location (a place name or geographic coordinates), temporal period (a period label, date, or date range), or jurisdiction (such as a named administrative entity). Recommended best practice is to select a value from a controlled vocabulary (for example, the Thesaurus of Geographic Names [TGN]) and to use, where appropriate, named places or time periods in preference to numeric identifiers such as sets of coordinates or date ranges. Information about rights held in and over the resource. Typically, Rights will contain a rights management statement for the resource, or reference a service providing such information. Rights information often encompasses Intellectual Property Rights (IPR), Copyright, and various Property Rights. If the Rights element is absent, no assumptions may be made about any rights held in or over the resource. This group is included as a convenience for schema authors who need to refer to all the elements in the "http://purl.org/dc/elements/1.1/" namespace. This type definition is included as a convenience for schema authors who need a container element for all of the DC elements. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/rec-dcterms.xsd0000644000000000000000000000007413114323025022727 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/rec-dcterms.xsd0000644000175000001440000001110513114323025023667 0ustar00kalxasusers00000000000000 This schema declares additional DCMI elements and element refinements in the "http://purl.org/dc/terms/" namespace. This group is included as a convenience for schema authors who need to refer to the complete set of DCMI metadata terms. pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/PaxHeaders.23451/record.xsd0000644000000000000000000000007413114323025021775 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/csw/3.0/record.xsd0000644000175000001440000001702613114323025022745 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/3.0/record.xsd This schema defines the basic record types that must be supported by all CSW implementations. These correspond to full, summary, and brief views based on DCMI metadata terms. This type encapsulates all of the standard DCMI metadata terms, including the Dublin Core refinements; these terms may be mapped to the profile-specific information model. A type for specifying the temporal extent of the data item that a metadata record describes. Omitting begin/end implies infinity in that direction. The attribute "inclusive" can be used indicate whether the boundary value in included in extent or not. This type defines a brief representation of the common record format. It extends AbstractRecordType to include only the dc:identifier and dc:type properties. This type defines a summary representation of the common record format. It extends AbstractRecordType to include the core properties. This type extends DCMIRecordType to add ows:BoundingBox; it may be used to specify a spatial envelope for the catalogued resource. pycsw-2.0.3/pycsw/core/schemas/ogc/PaxHeaders.23451/filter0000644000000000000000000000007413114323025020113 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/0000755000175000001440000000000013114323025021132 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/filter/PaxHeaders.23451/1.1.00000644000000000000000000000007413114323025020550 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/1.1.0/0000755000175000001440000000000013114323025021567 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/filter/1.1.0/PaxHeaders.23451/expr.xsd0000644000000000000000000000007413114323025022323 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/1.1.0/expr.xsd0000644000175000001440000000526413114323025023274 0ustar00kalxasusers00000000000000 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/1.1.0/PaxHeaders.23451/filter.xsd0000644000000000000000000000007413114323025022632 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/1.1.0/filter.xsd0000644000175000001440000002473613114323025023610 0ustar00kalxasusers00000000000000 This XML Schema defines OGC query filter capabilities documents. filter is an OGC Standard. Copyright (c) 2002,2003,2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit: http://www.opengeospatial.org/legal/ . Updated: 2011-02-04 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/1.1.0/PaxHeaders.23451/filterCapabilities.xsd0000644000000000000000000000007413114323025025144 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/1.1.0/filterCapabilities.xsd0000644000175000001440000001527613114323025026121 0ustar00kalxasusers00000000000000 This XML Schema defines OGC query filter capabilities documents. filter is an OGC Standard. Copyright (c) 2002,2003,2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Updated: 2010-01-22 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/1.1.0/PaxHeaders.23451/sort.xsd0000644000000000000000000000007413114323025022334 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/1.1.0/sort.xsd0000644000175000001440000000324513114323025023302 0ustar00kalxasusers00000000000000 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/PaxHeaders.23451/2.00000644000000000000000000000007413114323025020412 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/0000755000175000001440000000000013114323025021431 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/PaxHeaders.23451/expr.xsd0000644000000000000000000000007413114323025022165 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/expr.xsd0000644000175000001440000000270613114323025023134 0ustar00kalxasusers00000000000000 Filter Encoding is an OGC Standard. Copyright (c) 2010, 2014 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/PaxHeaders.23451/filter.xsd0000644000000000000000000000007413114323025022474 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/filter.xsd0000644000175000001440000004113613114323025023443 0ustar00kalxasusers00000000000000 Filter Encoding is an OGC Standard. Copyright (c) 2010, 2014 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/PaxHeaders.23451/filterAll.xsd0000644000000000000000000000007413114323025023125 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/filterAll.xsd0000644000175000001440000000151313114323025024067 0ustar00kalxasusers00000000000000 This XML Schema document includes and imports, directly or indirectly, all the XML Schema defined by the Filter Encoding Standard. Filter Encoding is an OGC Standard. Copyright (c) 2010, 2014 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/PaxHeaders.23451/filterCapabilities.xsd0000644000000000000000000000007413114323025025006 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/filterCapabilities.xsd0000644000175000001440000002604513114323025025757 0ustar00kalxasusers00000000000000 This XML Schema defines OGC query filter capabilities documents. Filter Encoding is an OGC Standard. Copyright (c) 2010, 2014 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/PaxHeaders.23451/query.xsd0000644000000000000000000000007413114323025022354 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/query.xsd0000644000175000001440000000541113114323025023317 0ustar00kalxasusers00000000000000 Filter Encoding is an OGC Standard. Copyright (c) 2010, 2014 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/PaxHeaders.23451/sort.xsd0000644000000000000000000000007413114323025022176 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/filter/2.0/sort.xsd0000644000175000001440000000346713114323025023152 0ustar00kalxasusers00000000000000 Filter Encoding is an OGC Standard. Copyright (c) 2010, 2014 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . pycsw-2.0.3/pycsw/core/schemas/ogc/PaxHeaders.23451/gml0000644000000000000000000000007413114323025017405 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/0000755000175000001440000000000013114323025020424 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/gml/PaxHeaders.23451/3.1.10000644000000000000000000000007413114323025020045 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/0000755000175000001440000000000013114323025021064 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/PaxHeaders.23451/base0000644000000000000000000000007413114323025020757 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/0000755000175000001440000000000013114323025021776 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/basicTypes.xsd0000644000000000000000000000007413114323025023662 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/basicTypes.xsd0000644000175000001440000003325513114323025024634 0ustar00kalxasusers00000000000000 basicTypes.xsd Generic simpleContent components for use in GML GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Some common reasons for a null value: innapplicable - the object does not have a 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:reason - as indicated by "reason" string Specific communities may agree to assign more strict semantics when these terms are used in a particular context. Utility type for null elements. The value may be selected from one of the enumerated tokens, or may be a URI in which case this should identify a resource which describes the reason for the null. Utility type used in various places - e.g. to indicate the direction of topological objects; "+" for forwards, or "-" for backwards. Union of the XML Schema boolean type and the GML Nulltype. An element which uses this type may have content which is either a boolean {0,1,true,false} or a value from Nulltype XML List based on the union type defined above. An element declared with this type contains a space-separated list of boolean values {0,1,true,false} with null values interspersed as needed XML List based on XML Schema boolean type. An element of this type contains a space-separated list of boolean values {0,1,true,false} Union of the XML Schema string type and the GML Nulltype. An element which uses this type may have content which is either a string or a value from Nulltype. Note that a "string" may contain whitespace. Union of the XML Schema Name type and the GML Nulltype. An element which uses this type may have content which is either a Name or a value from Nulltype. Note that a "Name" may not contain whitespace. XML List based on the union type defined above. An element declared with this type contains a space-separated list of Name values with null values interspersed as needed XML List based on XML Schema Name type. An element of this type contains a space-separated list of Name values Union of the XML Schema double type and the GML Nulltype. An element which uses this type may have content which is either a double or a value from Nulltype XML List based on the union type defined above. An element declared with this type contains a space-separated list of double values with null values interspersed as needed XML List based on XML Schema double type. An element of this type contains a space-separated list of double values Union of the XML Schema integer type and the GML Nulltype. An element which uses this type may have content which is either an integer or a value from Nulltype XML List based on the union type defined above. An element declared with this type contains a space-separated list of integer values with null values interspersed as needed XML List based on XML Schema integer type. An element of this type contains a space-separated list of integer values Name or code with an (optional) authority. Text token. If the codeSpace attribute is present, then its value should identify a dictionary, thesaurus or authority for the term, such as the organisation who assigned the value, or the dictionary from which it is taken. A text string with an optional codeSpace attribute. List of values on a uniform nominal scale. List of text tokens. In a list context a token should not include any spaces, so xsd:Name is used instead of xsd:string. If a codeSpace attribute is present, then its value is a reference to a Reference System for the value, a dictionary or code list. List of values on a uniform nominal scale. List of text tokens. In a list context a token should not include any spaces, so xsd:Name is used instead of xsd:string. A member of the list may be a typed null. If a codeSpace attribute is present, then its value is a reference to a Reference System for the value, a dictionary or code list. Number with a scale. The value of uom (Units Of Measure) attribute is a reference to a Reference System for the amount, either a ratio or position scale. List of numbers with a uniform scale. The value of uom (Units Of Measure) attribute is a reference to a Reference System for the amount, either a ratio or position scale. List of numbers with a uniform scale. A member of the list may be a typed null. The value of uom (Units Of Measure) attribute is a reference to a Reference System for the amount, either a ratio or position scale. Tables or arrays of tuples. May be used for text-encoding of values from a table. Actually just a string, but allows the user to indicate which characters are used as separators. The value of the 'cs' attribute is the separator for coordinate values, and the value of the 'ts' attribute gives the tuple separator (a single space by default); the default values may be changed to reflect local usage. Defaults to CSV within a tuple, space between tuples. However, any string content will be schema-valid. A set of values, representing a list of token with the lexical value space of NCName. The tokens are seperated by whitespace. A set of values, representing a list of token with the lexical value space of QName. The tokens are seperated by whitespace. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/coordinateOperations.xsd0000644000000000000000000000007413114323025025747 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/coordinateOperations.xsd0000644000175000001440000013121213114323025026711 0ustar00kalxasusers00000000000000 How to encode coordinate operation definitions. Builds on referenceSystems.xsd to encode the data needed to define coordinate operations, including Transformations, Conversions, and other specific subtypes of operations. This schema encodes the Coordinate Operation (CC_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. Caution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Basic encoding for coordinate operation objects, simplifying and restricting the DefinitionType as needed. The name by which this coordinate operation is identified. 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 must 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. Set of alternative identifications of this coordinate operation. The first coordinateOperationID, if any, is normally the primary identification code, and any others are aliases. Comments on or information about this coordinate operation, including source information. Unordered set of estimates of the impact of this coordinate operation on point position accuracy. Gives position error estimates for target coordinates of this coordinate operation, assuming no errors in source coordinates. An identification of a coordinate operation. 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. Association to the source CRS (coordinate reference system) of this coordinate operation. Association to the target CRS (coordinate reference system) of this coordinate operation. For constraints on multiplicity of "sourceCRS" and "targetCRS", see UML model of Coordinate Operation package in OGC Abstract Specification topic 2. Association to a coordinate operation, either referencing or containing the definition of that coordinate operation. An ordered sequence of two or more single coordinate operations. The 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. Ordered sequence of associations to the two or more single operations used by this concatenated operation. Association to a single operation. Association to a concatenated operation, either referencing or containing the definition of that concatenated operation. A single (not concatenated) coordinate operation. Association to a single operation, either referencing or containing the definition of that single operation. A pass-through operation specifies that a subset of a coordinate tuple is subject to a specific coordinate operation. Ordered sequence of positive integers defining the positions in a coordinate tuple of the coordinates affected by this pass-through operation. A positive integer defining a position in a coordinate tuple. Association to the operation applied to the specified ordinates. Association to a pass through operation, either referencing or containing the definition of that pass through operation. A parameterized mathematical operation on coordinates that transforms or converts coordinates to another coordinate reference system. This coordinate operation 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. This abstract complexType shall not be directly used, extended, or restricted in a compliant Application Schema. Association to an abstract operation, either referencing or containing the definition of that operation. 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. This abstract complexType is expected to be extended for well-known operation methods with many Conversion instances, in 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 "_generalParameterValue" element. Association to a general conversion, either referencing or containing the definition of that conversion. 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 complexType can be used with all operation methods, without using an Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one Conversion instance. Unordered list of composition associations to the set of parameter values used by this conversion operation. Association to the operation method used by this coordinate operation. Composition association to a parameter value used by this coordinate operation. Association to a concrete general-purpose conversion, either referencing or containing the definition of that conversion. 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. This abstract complexType 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 "_generalParameterValue" element. Association to a general transformation, either referencing or containing the definition of that transformation. A concrete 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. This concrete complexType can be used for all operation methods, without using an Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one Transformation instance. Unordered set of composition associations to the set of parameter values used by this transformation operation. Association to a transformation, either referencing or containing the definition of that transformation. 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 "valueOfParameter" element that references one element substitutable for the "OperationParameter" element. A parameter value, ordered sequence of values, or reference to a file of parameter values. This concrete complexType can 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 complexType can be used, extended, or restricted for well-known operation methods, especially for methods with many instances. Numeric value of an operation parameter, with its associated unit of measure. Value of an angle operation parameter, in either degree-minute-second format or single value format. String value of an operation parameter. A string value does not have an associated unit of measure. Positive integer value of an operation parameter, usually used for a count. An integer value does not have an associated unit of measure. Boolean value of an operation parameter. A Boolean value does not have an associated unit of measure. 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. 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. 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 must contain multiple identified parts, such as an XML encoded document. Furthermore, the referenced file or part of a file can reference another part of the same or different files, as allowed in XML documents. Association to the operation parameter that this is a value of. 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 complexType can 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 complexType can be used, extended, or restricted for well-known operation methods, especially for methods with many instances. Unordered set of composition associations to the parameter values and groups of values included in this group. A composition association to a parameter value or group of values included in this group. Association to the operation parameter group for which this element provides parameter values. Basic encoding for operation method objects, simplifying and restricting the DefinitionType as needed. The name by which this operation method is identified. Definition of an algorithm 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. Set of alternative identifications of this operation method. The first methodID, if any, is normally the primary identification code, and any others are aliases. Comments on or information about this operation method, including source information. Unordered list of associations to the set of operation parameters and parameter groups used by this operation method. An identification of an operation method. Formula(s) used by this operation method. The value may be a reference to a publication. Note that the operation method may not be analytic, in which case this element references or contains the procedure, not an analytic formula. Number of dimensions in the source CRS of this operation method. Number of dimensions in the target CRS of this operation method. Association to an operation parameter or parameter group used by this operation method. Association to a concrete general-purpose operation method, either referencing or containing the definition of that method. Abstract definition of a parameter or group of parameters used by an operation method. The minimum number of times that values for this parameter group or parameter are required. If this attribute is omitted, the minimum number is one. Association to an operation parameter or group, either referencing or containing the definition of that parameter or group. Basic encoding for operation parameter objects, simplifying and restricting the DefinitionType as needed. The name by which this operation parameter is identified. The definition of a parameter used by an operation method. Most parameter values are numeric, but other types of parameter values are possible. This complexType is expected to be used or extended for all operation methods, without defining operation-method-specialized element names. Set of alternative identifications of this operation parameter. The first parameterID, if any, is normally the primary identification code, and any others are aliases. Comments on or information about this operation parameter, including source information. An identification of an operation parameter. Association to an operation parameter, either referencing or containing the definition of that parameter. Basic encoding for operation parameter group objects, simplifying and restricting the DefinitionType as needed. The name by which this operation parameter group is identified. The definition of a group of parameters used by an operation method. This complexType is expected to be used or extended for all applicable operation methods, without defining operation-method-specialized element names. Set of alternative identifications of this operation parameter group. The first groupID, if any, is normally the primary identification code, and any others are aliases. Comments on or information about this operation parameter group, including source information. Unordered list of associations to the set of operation parameters that are members of this group. An identification of an operation parameter group. The maximum number of times that values for this parameter group can be included. If this attribute is omitted, the maximum number is one. Association to an operation parameter that is a member of a group. Association to an operation parameter, either referencing or containing the definition of that parameter. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/coordinateReferenceSystems.xsd0000644000000000000000000000007413114323025027112 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/coordinateReferenceSystems.xsd0000644000175000001440000005417413114323025030067 0ustar00kalxasusers00000000000000 How to encode coordinate reference system definitions. Builds on referenceSystems.xsd to encode the data needed to define coordinate reference systems, including the specific subtypes of coordinate reference systems. This schema encodes the Coordinate Reference System (SC_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates, with the exception of the abstract "SC_CRS" class. The "SC_CRS" class is encoded in referenceSystems.xsd, to eliminate the (circular) references from coordinateOperations.xsd to coordinateReferenceSystems.xsd. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. Caution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . A coordinate reference system consists of an ordered sequence of coordinate system axes that are related to the earth through a datum. A coordinate reference system is defined by one datum and by one coordinate system. Most coordinate reference system do not move relative to the earth, except for engineering coordinate reference systems defined on moving platforms such as cars, ships, aircraft, and spacecraft. For further information, see OGC Abstract Specification Topic 2. Coordinate reference systems are commonly divided into sub-types. The common classification criterion for sub-typing of coordinate reference systems is the way in which they deal with earth curvature. This has a direct effect on the portion of the earth's surface that can be covered by that type of CRS with an acceptable degree of error. The exception to the rule is the subtype "Temporal" which has been added by analogy. Association to a coordinate reference system, either referencing or containing the definition of that reference system. A coordinate reference system describing the position of points through two or more independent coordinate reference systems. Ordered sequence of associations to all the component coordinate reference systems included in this compound coordinate reference system. An association to a component coordinate reference system included in this compound coordinate reference system. Association to a compound coordinate reference system, either referencing or containing the definition of that reference system. A coordinate reference system based on an ellipsoidal approximation of the geoid; this provides an accurate representation of the geometry of geographic features for a large portion of the earth's surface. Association to the ellipsoidal coordinate system used by this CRS. Association to the geodetic datum used by this CRS. Association to a geographic coordinate reference system, either referencing or containing the definition of that reference system. 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. Association to the vertical coordinate system used by this CRS. Association to the vertical datum used by this CRS. Association to a vertical coordinate reference system, either referencing or containing the definition of that reference system. A 3D coordinate reference system with the origin at the approximate centre of mass of the earth. A geocentric CRS deals with the earth's curvature by taking a 3D spatial view, which obviates the need to model the earth's curvature. Association to the Cartesian coordinate system used by this CRS. Association to the spherical coordinate system used by this CRS. Association to a geocentric coordinate reference system, either referencing or containing the definition of that reference system. A coordinate reference system that is defined by its coordinate conversion from another coordinate reference system (not by a datum). This abstract complexType 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. Association to the coordinate reference system used by this derived CRS. Association to the coordinate conversion used to define this derived CRS. 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. Association to a projected coordinate reference system, either referencing or containing the definition of that reference system. A coordinate reference system that is defined by its coordinate conversion from another coordinate reference system but is not a projected coordinate reference system. This category includes coordinate reference systems derived from a projected coordinate reference system. Type of a derived coordinate reference system. Reference to a source of information specifying the values and meanings of all the allowed string values for this DerivedCRSTypeType. Association to the coordinate system used by this CRS. Association to a non-projected derived coordinate reference system, either referencing or containing the definition of that reference system. 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. For further information, see OGC Abstract Specification Topic 2. Association to the engineering datum used by this CRS. Association to an engineering coordinate reference system, either referencing or containing the definition of that reference system. An engineering coordinate reference system applied to locations in images. Image coordinate reference systems are treated as a separate sub-type because a separate user community exists for images with its own terms of reference. Association to the oblique Cartesian coordinate system used by this CRS. Association to the image datum used by this CRS. Association to an image coordinate reference system, either referencing or containing the definition of that reference system. A 1D coordinate reference system used for the recording of time. Association to the temporal coordinate system used by this CRS. Association to the temporal datum used by this CRS. Association to a temporal coordinate reference system, either referencing or containing the definition of that reference system. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/coordinateSystems.xsd0000644000000000000000000000007413114323025025273 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/coordinateSystems.xsd0000644000175000001440000005610113114323025026240 0ustar00kalxasusers00000000000000 How to encode coordinate system definitions. Builds on referenceSystems.xsd to encode the data needed to define coordinate systems, including the specific subtypes of coordinate systems. This schema encodes the Coordinate System (CS_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. Caution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Basic encoding for coordinate system axis objects, simplifying and restricting the DefinitionType as needed. The name by which this coordinate system axis is identified. Definition of a coordinate system axis. Set of alternative identifications of this coordinate system axis. The first axisID, if any, is normally the primary identification code, and any others are aliases. Comments on or information about this coordinate system axis, including data source information. An identification of a coordinate system axis. The abbreviation used for this coordinate system axis. This abbreviation can be used to identify the ordinates in a coordinate tuple. Examples are X and Y. The codeSpace attribute can reference a source of more information on a set of standardized abbreviations, or on this abbreviation. Direction of this coordinate system axis (or in the case of Cartesian projected coordinates, the direction of this coordinate system axis at the origin). Examples: north or south, east or west, up or down. Within any set of coordinate system axes, only one of each pair of terms can 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. Note that an EngineeringCRS can include specific descriptions of the directions of its coordinate system axes. For example, the path of a linear CRS axis can be referenced in another document, such as referencing a GML feature that references or includes a curve geometry. The codeSpace attribute can reference a source of more information on a set of standardized directions, or on this direction. 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. Association to a coordinate system axis, either referencing or containing the definition of that axis. Basic encoding for coordinate system objects, simplifying and restricting the DefinitionType as needed. The name by which this coordinate system is identified. A coordinate system (CS) is the set 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, whenever those coordinates use a coordinate reference system that uses this coordinate system. This abstract complexType 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. Set of alternative identifications of this coordinate system. The first csID, if any, is normally the primary identification code, and any others are aliases. Comments on or information about this coordinate system, including data source information. Ordered sequence of associations to the coordinate system axes included in this coordinate system. An identification of a coordinate system. Association to a coordinate system axis. Association to a coordinate system, either referencing or containing the definition of that coordinate system. 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 usesAxis associations. Association to an ellipsoidal coordinate system, either referencing or containing the definition of that coordinate system. A 1-, 2-, or 3-dimensional coordinate system. Gives the position of points relative to orthogonal straight axes in the 2- and 3-dimensional cases. In the 1-dimensional case, it contains a single straight coordinate axis. In the multi-dimensional case, all axes shall have the same length unit of measure. A CartesianCS shall have one, two, or three usesAxis associations. Association to a Cartesian coordinate system, either referencing or containing the definition of that coordinate system. 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 usesAxis association. Association to a vertical coordinate system, either referencing or containing the definition of that coordinate system. A one-dimensional coordinate system containing a single time axis, used to describe the temporal position of a point in the specified time units from a specified time origin. A TemporalCS shall have one usesAxis association. Association to a temporal coordinate system, either referencing or containing the definition of that coordinate system. A one-dimensional coordinate system that consists of the points that lie on the single axis described. The associated ordinate is the distance from the specified origin to the point along the axis. Example: usage of the line feature representing a road to describe points on or along that road. A LinearCS shall have one usesAxis association. Association to a linear coordinate system, either referencing or containing the definition of that coordinate system. A two- or three-dimensional coordinate system that consists of any combination of coordinate axes not covered by any other coordinate system type. An example is a multilinear coordinate system which contains one coordinate axis that may have any 1-D shape which has no intersections with itself. This non-straight axis is supplemented by one or two straight axes to complete a 2 or 3 dimensional coordinate system. The non-straight axis is typically incrementally straight or curved. A UserDefinedCS shall have two or three usesAxis associations. Association to a user-defined coordinate system, either referencing or containing the definition of that coordinate system. A three-dimensional coordinate system with one distance measured from the origin and two angular coordinates. Not to be confused with an ellipsoidal coordinate system based on an ellipsoid "degenerated" into a sphere. A SphericalCS shall have three usesAxis associations. Association to a spherical coordinate system, either referencing or containing the definition of that coordinate system. A 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 usesAxis associations. Association to a polar coordinate system, either referencing or containing the definition of that coordinate system. 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 usesAxis associations. Association to a cylindrical coordinate system, either referencing or containing the definition of that coordinate system. A two- or three-dimensional coordinate system with straight axes that are not necessarily orthogonal. An ObliqueCartesianCS shall have two or three usesAxis associations. Association to an oblique-Cartesian coordinate system, either referencing or containing the definition of that coordinate system. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/coverage.xsd0000644000000000000000000000007413114323025023347 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/coverage.xsd0000644000175000001440000005170313114323025024317 0ustar00kalxasusers00000000000000 coverage.xsd GML Coverage schema. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Abstract element which acts as the head of a substitution group for coverages. Note that a coverage is a GML feature. 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 A discrete coverage consists of a domain set, range set and optionally a coverage function. The domain set consists of either geometry or temporal 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. This definition conforms to ISO 19123. The spatiotemporal domain of a coverage. Typically * a geometry collection, * an implicit geometry (e.g. a grid), * an explicit or implicit collection of time instances or periods, or N.B. Temporal geometric complexes and temporal grids are not yet implemented in GML. each member _Value holds a tuple or "row" from the equivalent table each list holds the complete set of one scalar component from the values - i.e. a "column" from the equivalent table Its tuple list holds the values as space-separated tuples each of which contains comma-separated components, and the tuple structure is specified using the rangeParameters property. a reference to an external source for the data, together with a description of how that external source is structured The function or rule which defines the map from members of the domainSet to the range. More functions will be added to this list List of codes that identifies the file structure model for records stored in files. Metadata about the rangeSet. Definition of record structure. This is required if the rangeSet is encoded in a DataBlock. We use a gml:_Value with empty values as a map of the composite value structure. Description of a rule for associating members from the domainSet with members of the rangeSet. Defines how values in the domain are mapped to the range set. The start point and the sequencing rule are specified here. If absent, the implied value is "Linear". Index position of the first grid post, which must lie somwhere in the GridEnvelope. If absent, the startPoint is equal to the value of gridEnvelope::low from the grid definition. Exends GridFunctionType with a lookUpTable. This contains a list of indexes of members within the rangeSet corresponding with the members of the domainSet. The domainSet is traversed in list order if it is enumerated explicitly, or in the order specified by a SequenceRule if the domain is an implicit set. The length of the lookUpTable corresponds with the length of the subset of the domainSet for which the coverage is defined. List of codes (adopted from ISO 19123 Annex C) that identifies the rule for traversing a grid to correspond with the sequence of members of the rangeSet. The enumeration value here indicates the incrementation order to be used on the first 2 axes, i.e. "+x-y" means that the points on the first axis are to be traversed from lowest to highest and the points on the second axis are to be traversed from highest to lowest. The points on all other axes (if any) beyond the first 2 are assumed to increment from lowest to highest. A discrete coverage type whose domain is defined by a collection of point A discrete coverage type whose domain is defined by a collection of curves. A discrete coverage type whose domain is defined by a collection of surface patches (includes polygons, triangles, rectangles, etc). A discrete coverage type whose domain is defined by a collection of Solids. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/dataQuality.xsd0000644000000000000000000000007413114323025024036 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/dataQuality.xsd0000644000175000001440000001501713114323025025004 0ustar00kalxasusers00000000000000 How to encode positional data quality information. Builds on units.xsd to encode the data needed to describe the positional accuracy of coordinate operations. This schema encodes the Data Quality (DQ) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. Caution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Position error estimate (or accuracy) data. A description of the position accuracy parameter(s) provided. Closeness of reported coordinate values to values accepted as or being true. Closeness of the relative positions of two or more positions to their respective relative positions accepted as or being true. A quantitative result defined by the evaluation procedure used, and identified by the measureDescription. Error estimate covariance matrix. Ordered sequence of units of measure, corresponding to the row and column index numbers of the covariance matrix, starting with row and column 1 and ending with row/column N. Each unit of measure is for the ordinate reflected in the relevant row and column of the covariance matrix. Unordered set of elements in this covariance matrix. Because the covariance matrix is symmetrical, only the elements in the upper or lower diagonal part (including the main diagonal) of the matrix need to be specified. Any zero valued covariance elements can be omitted. An element of a covariance matrix. Row number of this covariance element value. Column number of this covariance element value. Value of covariance matrix element. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/datums.xsd0000644000000000000000000000007413114323025023051 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/datums.xsd0000644000175000001440000006215213114323025024021 0ustar00kalxasusers00000000000000 How to encode datum definitions. Builds on referenceSystems.xsd to encode the data needed to define datums, including the specific subtypes of datums. This schema encodes the Datum (CD_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. Caution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Basic encoding for datum objects, simplifying and restricting the DefinitionType as needed. The name by which this datum is identified. A datum 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 can be associated with only specific types of coordinate systems. This abstract complexType 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. Set of alternative identifications of this datum. The first datumID, if any, is normally the primary identification code, and any others are aliases. Comments on this reference system, including source information. An identification of a datum. Description, possibly including coordinates, of the point or points used to anchor the datum to the Earth. Also known as the "origin", especially for engineering and image datums. The codeSpace attribute can 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 point may be a physical point, or it may be a point with defined coordinates in another CRS. When appropriate, the coordinates of this anchor point can be referenced in another document, such as referencing a GML feature that references or includes a point position. - For an image datum, the anchor point 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 point, a temporal datum carries a separate time origin of type DateTime. The time after which this datum definition is valid. This time may be precise (e.g. 1997.0 for IRTF97) or merely a year (e.g. 1983 for NAD83). In the latter case, the epoch usually refers to the year in which a major recalculation of the geodetic control network, underlying the datum, was executed or initiated. An old datum can remain valid after a new datum is defined. Alternatively, a datum may be superseded by a later datum, in which case the realization epoch for the new datum defines the upper limit for the validity of the superseded datum. Association to a datum, either referencing or containing the definition of that datum. An engineering datum defines the origin of an engineering coordinate reference system, and is used in a region around that origin. This origin can 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). Association to an engineering datum, either referencing or containing the definition of that datum. An image datum defines the origin of an image coordinate reference system, and is used in a local context only. For more information, see OGC Abstract Specification Topic 2. Specification of the way an image grid is associated with the image data attributes. Reference to a source of information specifying the values and meanings of all the allowed string values for this PixelInCellType. Association to an image datum, either referencing or containing the definition of that datum. 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 standard. There are several types of Vertical Datums, and each may place constraints on the Coordinate Axis with which it is combined to create a Vertical CRS. Type of a vertical datum. Reference to a source of information specifying the values and meanings of all the allowed string values for this VerticalDatumTypeType. Association to a vertical datum, either referencing or containing the definition of that datum. Partially defines the origin of a temporal coordinate reference system. This type restricts the AbstractDatumType to remove the "anchorPoint" and "realizationEpoch" elements. Defines the origin of a temporal coordinate reference system. This type extends the TemporalDatumRestrictionType to add the "origin" element with the dateTime type. The date and time origin of this temporal datum. Association to a temporal datum, either referencing or containing the definition of that datum. A geodetic datum defines the precise location and orientation in 3-dimensional space of a defined ellipsoid (or sphere) that approximates the shape of the earth, or of a Cartesian coordinate system centered in this ellipsoid (or sphere). Association to the prime meridian used by this geodetic datum. Association to the ellipsoid used by this geodetic datum. Association to a geodetic datum, either referencing or containing the definition of that datum. Basic encoding for prime meridian objects, simplifying and restricting the DefinitionType as needed. The name by which this prime meridian is identified. The meridianName most common value is Greenwich, and that value shall be used when the greenwichLongitude value is zero. A prime meridian defines the origin from which longitude values are determined. Set of alternative identifications of this prime meridian. The first meridianID, if any, is normally the primary identification code, and any others are aliases. Comments on or information about this prime meridian, including source information. An identification of a prime meridian. Longitude of the prime meridian measured from the Greenwich meridian, positive eastward. The greenwichLongitude most common value is zero, and that value shall be used when the meridianName value is Greenwich. Association to a prime meridian, either referencing or containing the definition of that meridian. Basic encoding for ellipsoid objects, simplifying and restricting the DefinitionType as needed. The name by which this ellipsoid is identified. An ellipsoid is a geometric figure that can 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. Set of alternative identifications of this ellipsoid. The first ellipsoidID, if any, is normally the primary identification code, and any others are aliases. Comments on or information about this ellipsoid, including source information. An identification of an ellipsoid. 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. Association to an ellipsoid, either referencing or containing the definition of that ellipsoid. 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. Inverse flattening value of the ellipsoid. Value is a scale factor (or ratio) that has no physical unit. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a scale factor, such as percent, permil, or parts-per-million. Length of the semi-minor axis of the ellipsoid. 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/defaultStyle.xsd0000644000000000000000000000007413114323025024221 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/defaultStyle.xsd0000644000175000001440000004557213114323025025200 0ustar00kalxasusers00000000000000 defaultStyle.xsd Default Style schema for GML 3.1.1 GML is an OGC Standard. Copyright (c) 2001,2005,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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/dictionary.xsd0000644000000000000000000000007413114323025023721 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/dictionary.xsd0000644000175000001440000002164113114323025024667 0ustar00kalxasusers00000000000000 Dictionary schema for GML 3.1.1 Components to support the lists of definitions. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . This content model group makes it easier to construct types that derive from DefinitionType and its descendents "by restriction". A reference to the group saves having to enumerate the standard definition properties. See definition of StandardObjectProperties for more documentation A definition, which can be included in or referenced by a dictionary. In this extended type, the inherited "description" optional element can hold the definition whenever only text is needed. The inherited "name" elements can provide one or more brief terms for which this is the definition. The inherited "metaDataProperty" elements can be used to reference or include more information about this definition. The gml:id attribute is required - it must be possible to reference this definition using this handle. A non-abstract bag that is specialized for use as a dictionary which contains a set of definitions. These definitions are referenced from other places, in the same and different XML documents. In this restricted type, the inherited optional "description" element can be used for a description of this dictionary. The inherited optional "name" element can be used for the name(s) of this dictionary. The inherited "metaDataProperty" elements can be used to reference or contain more information about this dictionary. The inherited required gml:id attribute allows the dictionary to be referenced using this handle. An entry in this dictionary. The content of an entry can itself be a lower level dictionary or definition collection. This element follows the standard GML property model, so the value may be provided directly or by reference. 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 entry in this context. When used in this way the referenced definition will usually be in a dictionary in the same XML document. An identified reference to a remote entry in this dictionary, to be used when this entry should be identified to allow external references to this specific entry. An entry in a dictionary of definitions. An instance of this type contains or refers to a definition object. The number of definitions contained in this dictionaryEntry is restricted to one, but a DefinitionCollection or Dictionary that contains multiple definitions can be substituted if needed. Specialized descendents of this dictionaryEntry might be restricted in an application schema to allow only including specified types of definitions as valid entries in a dictionary. This element in a dictionary entry contains the actual definition. A non-identified reference to a remote entry in this dictionary, to be used when this entry need not be identified to allow external references to this specific entry. The remote entry referenced will usually be in a dictionary in the same XML document. This element will usually be used in dictionaries that are inside of another dictionary. An entry in a dictionary of definitions that contains a GML object which references a remote definition object. This entry is expected to be convenient in allowing multiple elements in one XML document to contain short (abbreviated XPointer) references, which are resolved to an external definition provided in a Dictionary element in the same XML document. Specialized descendents of this dictionaryEntry might be restricted in an application schema to allow only including specified types of definitions as valid entries in a dictionary. A proxy entry in a dictionary of definitions. An element of this type contains a reference to a remote definition object. This entry is expected to be convenient in allowing multiple elements in one XML document to contain short (abbreviated XPointer) references, which are resolved to an external definition provided in a Dictionary element in the same XML document. A reference to a remote entry in this dictionary, used when this dictionary entry is identified to allow external references to this specific entry. The remote entry referenced can be in a dictionary in the same or different XML document. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/direction.xsd0000644000000000000000000000007413114323025023534 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/direction.xsd0000644000175000001440000000611013114323025024474 0ustar00kalxasusers00000000000000 direction.xsd This schema defines "direction" element and type. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Direction expressed as a vector, either using components, or using angles. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/dynamicFeature.xsd0000644000000000000000000000007413114323025024514 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/dynamicFeature.xsd0000644000175000001440000001216313114323025025461 0ustar00kalxasusers00000000000000 Basic support for tracking moving objects and objects with changing state. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . A timeslice encapsulates the time-varying properties of a dynamic feature--it must be extended to represent a timestamped projection of a feature. The dataSource property describes how the temporal data was acquired. This type encapsulates various dynamic properties of moving objects (points, lines, regions). It is useful for dealing with features whose geometry or topology changes over time. The history relationship associates a feature with a sequence of TimeSlice instances. The track of a moving object is a sequence of specialized timeslices that indicate the status of the object. A dynamic feature may possess a history and/or a timestamp. A dynamic feature collection may possess a history and/or a timestamp. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/feature.xsd0000644000000000000000000000007413114323025023207 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/feature.xsd0000644000175000001440000002171113114323025024153 0ustar00kalxasusers00000000000000 GML Feature schema. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . An abstract feature provides a set of common properties, including id, metaDataProperty, name and description inherited from AbstractGMLType, plus boundedBy. A concrete feature type must derive from this type and specify additional properties in an application schema. A feature must possess an identifying attribute ('id' - 'fid' has been deprecated). deprecated deprecated in GML version 3.1 Bounding shape. Envelope that includes also a temporal extent. Container for a feature - follow gml:AssociationType pattern. Container for features - follow gml:ArrayAssociationType pattern. A feature collection contains zero or more features. Concrete generic feature collection. Makes boundedBy mandatory deprecated deprecated in GML version 3.1 Deprecated in GML 3.1.0 Convenience property for generalised location. A representative location for plotting or analysis. Often augmented by one or more additional geometry properties with more specific semantics. Deprecated in GML 3.1.0 Deprecated in GML 3.1.0 G-XML component Deprecated in GML 3.1.0 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/geometryAggregates.xsd0000644000000000000000000000007413114323025025401 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/geometryAggregates.xsd0000644000175000001440000006723713114323025026362 0ustar00kalxasusers00000000000000 geometryAggregates.xsd GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . The "_GeometricAggregate" element is the abstract head of the substituition group for all geometric aggremates. This is the abstract root type of the geometric aggregates. A geometry collection must include one or more geometries, referenced through geometryMember elements. The members of the geometric aggregate can be specified either using the "standard" property or the array property style. It is also valid to use both the "standard" and the array property style in the same collection. NOTE: Array properties cannot reference remote geometry elements. This property element either references a geometric aggregate via the XLink-attributes or contains the "multi geometry" element. multiGeometryProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for _GeometricAggregate. A property that has a geometric aggregate as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. A MultiPoint is defined by one or more Points, referenced through pointMember elements. The members of the geometric aggregate can be specified either using the "standard" property or the array property style. It is also valid to use both the "standard" and the array property style in the same collection. NOTE: Array properties cannot reference remote geometry elements. This property element either references a point aggregate via the XLink-attributes or contains the "multi point" element. multiPointProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for MultiPoint. A property that has a collection of points as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. A MultiCurve is defined by one or more Curves, referenced through curveMember elements. The members of the geometric aggregate can be specified either using the "standard" property or the array property style. It is also valid to use both the "standard" and the array property style in the same collection. NOTE: Array properties cannot reference remote geometry elements. This property element either references a curve aggregate via the XLink-attributes or contains the "multi curve" element. multiCurveProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for MultiCurve. A property that has a collection of curves as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. A MultiSurface is defined by one or more Surfaces, referenced through surfaceMember elements. The members of the geometric aggregate can be specified either using the "standard" property or the array property style. It is also valid to use both the "standard" and the array property style in the same collection. NOTE: Array properties cannot reference remote geometry elements. This property element either references a surface aggregate via the XLink-attributes or contains the "multi surface" element. multiSurfaceProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for MultiSurface. A property that has a collection of surfaces as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. A MultiSolid is defined by one or more Solids, referenced through solidMember elements. The members of the geometric aggregate can be specified either using the "standard" property or the array property style. It is also valid to use both the "standard" and the array property style in the same collection. NOTE: Array properties cannot reference remote geometry elements. This property element either references a solid aggregate via the XLink-attributes or contains the "multi solid" element. multiSolidProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for MultiSolid. A property that has a collection of solids as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. Deprecated with GML 3.0 and included for backwards compatibility with GML 2. Use the "MultiSurface" element instead. Deprecated with GML 3.0 and included for backwards compatibility with GML 2. Use the "MultiCurve" element instead. A MultiLineString is defined by one or more LineStrings, referenced through lineStringMember elements. Deprecated with GML version 3.0. Use MultiCurveType instead. This type is deprecated with GML 3 and shall not be used. It is included for backwards compatibility with GML 2. Use MultiCurvePropertyType instead. A property that has a collection of line strings as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. A MultiPolygon is defined by one or more Polygons, referenced through polygonMember elements. Deprecated with GML version 3.0. Use MultiSurfaceType instead. This type is deprecated with GML 3 and shall not be used. It is included for backwards compatibility with GML 2. Use MultiSurfacePropertyType instead. A property that has a collection of polygons as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. 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. 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. This property element contains a list of curves. The order of the elements is significant and shall be preserved when processing the array. 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 "_Surface". This property element contains a list of surfaces. The order of the elements is significant and shall be preserved when processing the array. 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 "_Solid". This property element contains a list of solids. The order of the elements is significant and shall be preserved when processing the array. deprecated Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use "curveMember" instead. This property element either references a line string via the XLink-attributes or contains the line string element. deprecated Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use "curveMember" instead. This property element either references a line string via the XLink-attributes or contains the line string element. deprecated Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use "surfaceMember" instead. This property element either references a polygon via the XLink-attributes or contains the polygon element. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/geometryBasic0d1d.xsd0000644000000000000000000000007413114323025025022 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/geometryBasic0d1d.xsd0000644000175000001440000010041313114323025025763 0ustar00kalxasusers00000000000000 geometryBasic0d1d.xsd Schematron validation 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. The presence of a count attribute implies the presence of the dimension attribute. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . This includes not only measures.xsd, but also units.xsd, gmlBase.xsd and basicTypes.xsd. The "_Geometry" element is the abstract head of the substituition group for all geometry elements of GML 3. This includes pre-defined and user-defined geometry elements. Any geometry element must be a direct or indirect extension/restriction of AbstractGeometryType and must be directly or indirectly in the substitution group of "_Geometry". A geometric property can 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 document). Note that either the reference or the contained element must be given, but not both or none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. A container for an array of geometry elements. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements is not supported. All geometry elements are derived directly or indirectly from this abstract supertype. A geometry element may have an identifying attribute ("gml:id"), a name (attribute "name") and a description (attribute "description"). It may be associated with a spatial reference system (attribute "srsName"). The following rules shall be adhered: - 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 _Geometry. This attribute is included for backward compatibility with GML 2 and is deprecated with GML 3. This identifer is superceded by "gml:id" inherited from AbstractGMLType. The attribute "gid" should not be used anymore and may be deleted in future versions of GML without further notice. Optional reference to the CRS used by this geometry, with optional additional information to simplify use when a more complete definition of the CRS is not needed. In general this reference points to a CRS instance of gml:CoordinateReferenceSystemType (see coordinateReferenceSystems.xsd). 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 must be specified as part of the larger context this geometry element is part of, e.g. a geometric element like point, curve, etc. It is expected that this attribute will be specified at the direct position level only in rare cases. The "srsDimension" is the length of coordinate sequence (the number of entries in the list). This dimension is specified by the coordinate reference system. When the srsName attribute is omitted, this attribute shall be omitted. Optional additional and redundant information for a CRS to simplify use when a more complete definition of the CRS is not needed. This information shall be the same as included in the more 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. 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 forbiddden 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. 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 forbiddden 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 "_GeometricPrimitive" element is the abstract head of the substituition group for all (pre- and user-defined) geometric primitives. This 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. A property that has a geometric primitive as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. A Point is defined by a single coordinate tuple. GML supports two different ways to specify the direct poisiton of a point. 1. The "pos" element is of type DirectPositionType. Deprecated with GML version 3.1.0 for coordinates with ordinate values that are numbers. Use "pos" instead. The "coordinates" element shall only be used for coordinates with ordinates that require a string representation, e.g. DMS representations. Deprecated with GML version 3.0. Use "pos" instead. The "coord" element is included for backwards compatibility with GML 2. This property element either references a point via the XLink-attributes or contains the point element. pointProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for Point. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. A property that has a point as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. A container for an array of points. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements is not supported. The "_Curve" element is the abstract head of the substituition group for all (continuous) curve elements. An abstraction of a curve to support the different levels of complexity. The curve can always be viewed as a geometric primitive, i.e. is continuous. This property element either references a curve via the XLink-attributes or contains the curve element. curveProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for _Curve. A property that has a curve as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. A container for an array of curves. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements 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. It is backwards compatible with the LineString of GML 2, GM_LineString of ISO 19107 is implemented by LineStringSegment. GML supports two different ways to specify the control points of a line string. 1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve (reuse of existing points). 2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve only. The number of direct positions in the list must be at least two. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. Deprecated with GML version 3.0. Use "pos" instead. The "coord" element is included for backwards compatibility with GML 2. Deprecated with GML version 3.1.0. Use "posList" instead. DirectPosition instances hold the coordinates for a position within some coordinate reference system (CRS). Since DirectPositions, 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 DirectPosition 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. DirectPositionList instances hold the coordinates for a sequence of direct positions within the same coordinate reference system (CRS). "count" allows to specify the number of direct positions in the list. If the attribute count is present then the attribute srsDimension shall be present, too. Vector instances hold the compoents for a (usually spatial) vector within some coordinate reference system (CRS). Since Vectors will often be included in larger objects that have references to CRS, the "srsName" attribute may be missing. In this case, the CRS is implicitly assumed to take on the value of the containing object's CRS. Note that this content model is the same as DirectPositionType, but is defined separately to reflect the distinct semantics, and to avoid validation problems. SJDC 2004-12-02 A geometric position represented either by a DirectPosition or a Point. A list of geometric positions represented either by a DirectPosition or a Point. Deprecated with GML version 3.1.0. 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). deprecated deprecated with GML version 3.0 deprecated Deprecated with GML version 3.1. Use the explicit properties "lowerCorner" and "upperCorner" instead. Deprecated with GML version 3.1.0. Use the explicit properties "lowerCorner" and "upperCorner" instead. Deprecated with GML 3.0 and included for backwards compatibility with GML 2. Use the "pos" element instead. Represents a coordinate tuple in one, two, or three dimensions. Deprecated with GML 3.0 and replaced by DirectPositionType. Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use "curveProperty" instead. This property element either references a line string via the XLink-attributes or contains the line string element. This type is deprecated with GML 3 and shall not be used. It is included for backwards compatibility with GML 2. Use CurvePropertyType instead. A property that has a line string as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/geometryBasic2d.xsd0000644000000000000000000000007413114323025024577 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/geometryBasic2d.xsd0000644000175000001440000003124413114323025025545 0ustar00kalxasusers00000000000000 geometryBasic2d.xsd GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . The "_Surface" element is the abstract head of the substituition group for all (continuous) surface elements. An abstraction of a surface to support the different levels of complexity. A surface is always a continuous region of a plane. This property element either references a surface via the XLink-attributes or contains the surface element. surfaceProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for _Surface. A property that has a surface as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. A container for an array of surfaces. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements is not supported. A Polygon is a special surface that is defined by a single surface patch. The boundary of this patch is coplanar and the polygon uses planar interpolation in its interior. It is backwards compatible with the Polygon of GML 2, GM_Polygon of ISO 19107 is implemented by PolygonPatch. The "_Ring" element is the abstract head of the substituition group for all closed boundaries of a surface patch. An abstraction of a ring to support surface boundaries of different complexity. 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 seperate the surface / surface patch from the area enclosed by the rings. Deprecated with GML 3.0, included only for backwards compatibility with GML 2. Use "exterior" instead. Deprecated with GML 3.0, included only for backwards compatibility with GML 2. Use "interior" instead. 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 must be coincident. GML supports two different ways to specify the control points of a linear ring. 1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this ring, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this ring (reuse of existing points). 2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this ring only. The number of direct positions in the list must be at least four. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. Deprecated with GML version 3.1.0. Use "posList" instead. Deprecated with GML version 3.0 and included for backwards compatibility with GML 2. Use "pos" elements instead. Encapsulates a ring to represent properties in features or geometry collections. Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use "surfaceProperty" instead. This property element either references a polygon via the XLink-attributes or contains the polygon element. This type is deprecated with GML 3 and shall not be used. It is included for backwards compatibility with GML 2. Use SurfacePropertyType instead. A property that has a polygon as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/geometryComplexes.xsd0000644000000000000000000000007413114323025025267 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/geometryComplexes.xsd0000644000175000001440000001752413114323025026242 0ustar00kalxasusers00000000000000 geometryComplexes.xsd GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . A CompositeCurve is defined by a sequence of (orientable) curves such that the each curve in the sequence terminates at the start point of the subsequent curve in the list. This element references or contains one curve in the composite curve. The curves are contiguous, the collection of curves is ordered. NOTE: This definition allows for a nested structure, i.e. a CompositeCurve may use, for example, another CompositeCurve as a curve member. A CompositeSurface is defined by a set of orientable surfaces. A composite surface 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. This element references or contains one surface in the composite surface. The surfaces are contiguous. NOTE: This definition allows for a nested structure, i.e. a CompositeSurface may use, for example, another CompositeSurface as a member. A composite solid 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. This element references or contains one solid in the composite solid. The solids are contiguous. NOTE: This definition allows for a nested structure, i.e. a CompositeSolid may use, for example, another CompositeSolid as a member. A geometric complex. A property that has a geometric complex as its value domain can 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 must be given, but neither both nor none. NOTE: The allowed geometry elements contained in such a property (or referenced by it) have to be modelled by an XML Schema choice element since the composites inherit both from geometric complex *and* geometric primitive and are already part of the _GeometricPrimitive substitution group. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/geometryPrimitives.xsd0000644000000000000000000000007413114323025025463 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.484635962 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/geometryPrimitives.xsd0000644000175000001440000025702713114323025026442 0ustar00kalxasusers00000000000000 geometryPrimitives.xsd GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . 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. This element encapsulates the segments of the curve. This property element either references a curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for "_Curve". 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 _Curve with a parameterization that reverses the sense of the curve traversal. References or contains the base curve (positive orientation). NOTE: This definition allows for a nested structure, i.e. an OrientableCurve may use another OrientableCurve as its base curve. If the orientation is "+", then the OrientableCurve is identical to the baseCurve. If the orientation is "-", then the OrientableCurve is related to another _Curve with a parameterization that reverses the sense of the curve traversal. "+" is the default value. The "_CurveSegment" element is the abstract head of the substituition group for all curve segment elements, i.e. continuous segments of the same interpolation mechanism. Curve segment defines a homogeneous segment of a curve. The attribute "numDerivativesAtStart" specifies the type of continuity between this curve segment and its predecessor. If this is the first curve segment in the curve, one of these values, as appropriate, is ignored. The default value of "0" means simple continuity, which is a mandatory minimum level of continuity. This level is referred to as "C 0 " in mathematical texts. A value of 1 means that the function and its first derivative are continuous at the appropriate end point: "C 1 " continuity. A value of "n" for any integer means the function and its first n derivatives are continuous: "C n " continuity. NOTE: Use of these values is only appropriate when the basic curve definition is an underdetermined system. For example, line string segments cannot support continuity above C 0 , since there is no spare control parameter to adjust the incoming angle at the end points of the segment. Spline functions on the other hand often have extra degrees of freedom on end segments that allow them to adjust the values of the derivatives to support C 1 or higher continuity. The attribute "numDerivativesAtEnd" specifies the type of continuity between this curve segment and its successor. If this is the last curve segment in the curve, one of these values, as appropriate, is ignored. The default value of "0" means simple continuity, which is a mandatory minimum level of continuity. This level is referred to as "C 0 " in mathematical texts. A value of 1 means that the function and its first derivative are continuous at the appropriate end point: "C 1 " continuity. A value of "n" for any integer means the function and its first n derivatives are continuous: "C n " continuity. NOTE: Use of these values is only appropriate when the basic curve definition is an underdetermined system. For example, line string segments cannot support continuity above C 0 , since there is no spare control parameter to adjust the incoming angle at the end points of the segment. Spline functions on the other hand often have extra degrees of freedom on end segments that allow them to adjust the values of the derivatives to support C 1 or higher continuity. The attribute "numDerivativesInterior" specifies the type of continuity that is guaranteed interior to the curve. The default value of "0" means simple continuity, which is a mandatory minimum level of continuity. This level is referred to as "C 0 " in mathematical texts. A value of 1 means that the function and its first derivative are continuous at the appropriate end point: "C 1 " continuity. A value of "n" for any integer means the function and its first n derivatives are continuous: "C n " continuity. NOTE: Use of these values is only appropriate when the basic curve definition is an underdetermined system. For example, line string segments cannot support continuity above C 0 , since there is no spare control parameter to adjust the incoming angle at the end points of the segment. Spline functions on the other hand often have extra degrees of freedom on end segments that allow them to adjust the values of the derivatives to support C 1 or higher continuity. This property element contains a list of curve segments. The order of the elements is significant and shall be preserved when processing the array. A container for an array of curve segments. A LineStringSegment is a curve segment that is defined by two or more coordinate tuples, with linear interpolation between them. Note: LineStringSegment implements GM_LineString of ISO 19107. GML supports two different ways to specify the control points of a curve segment. 1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points). 2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least two. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. Deprecated with GML version 3.1.0. Use "posList" instead. The attribute "interpolation" specifies 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. For a LineStringSegment the interpolation is fixed as "linear". An ArcString is a curve segment that uses three-point circular arc interpolation. GML supports two different ways to specify the control points of a curve segment. 1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points). 2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least three. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. Deprecated with GML version 3.1.0. Use "posList" instead. The attribute "interpolation" specifies 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. For an ArcString the interpolation is fixed as "circularArc3Points". The number of arcs in the arc string can be explicitly stated in this attribute. The number of control points in the arc string must be 2 * numArc + 1. An Arc is an arc string with only one arc unit, i.e. three control points. GML supports two different ways to specify the control points of a curve segment. 1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points). 2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be three. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. Deprecated with GML version 3.1.0. Use "posList" instead. An arc is an arc string consiting of a single arc, the attribute is fixed to "1". A Circle is an arc whose ends coincide to form a simple closed loop. The "start" and "end" bearing are equal and shall be the bearing for the first controlPoint listed. The three control points must 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. GML supports two different ways to specify the control points of a curve segment. 1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points). 2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least two. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. Deprecated with GML version 3.1.0. Use "posList" instead. The bulge controls the offset of each arc's midpoint. The "bulge" is the real number multiplier for the normal that determines the offset direction of the midpoint of each arc. The length of the bulge sequence is exactly 1 less than the length of the control point array, since a bulge is needed for each pair of adjacent points in the control point array. The bulge is not given by a distance, since it is simply a multiplier for the normal. The midpoint of the resulting arc is given by: midPoint = ((startPoint + endPoint)/2.0) + bulge*normal The attribute "normal" is a vector normal (perpendicular) to the chord of the arc, the line joining the first and last point of the arc. In a 2D coordinate system, there are only two possible directions for the normal, and it is often given as a signed real, indicating its length, with a positive sign indicating a left turn angle from the chord line, and a negative sign indicating a right turn from the chord. In 3D, the normal determines the plane of the arc, along with the start and endPoint of the arc. The normal is usually a unit vector, but this is not absolutely necessary. If the normal is a zero vector, the geometric object becomes equivalent to the straight line between the two end points. The length of the normal sequence is exactly the same as for the bulge sequence, 1 less than the control point sequence length. The attribute "interpolation" specifies 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. For an ArcStringByBulge the interpolation is fixed as "circularArc2PointWithBulge". The number of arcs in the arc string can be explicitly stated in this attribute. The number of control points in the arc string must be numArc + 1. An ArcByBulge is an arc string with only one arc unit, i.e. two control points and one bulge. GML supports two different ways to specify the control points of a curve segment. 1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points). 2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be two. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. Deprecated with GML version 3.1.0. Use "posList" instead. The bulge controls the offset of each arc's midpoint. The "bulge" is the real number multiplier for the normal that determines the offset direction of the midpoint of each arc. The length of the bulge sequence is exactly 1 less than the length of the control point array, since a bulge is needed for each pair of adjacent points in the control point array. The bulge is not given by a distance, since it is simply a multiplier for the normal. The midpoint of the resulting arc is given by: midPoint = ((startPoint + endPoint)/2.0) + bulge*normal The attribute "normal" is a vector normal (perpendicular) to the chord of the arc, the line joining the first and last point of the arc. In a 2D coordinate system, there are only two possible directions for the normal, and it is often given as a signed real, indicating its length, with a positive sign indicating a left turn angle from the chord line, and a negative sign indicating a right turn from the chord. In 3D, the normal determines the plane of the arc, along with the start and endPoint of the arc. The normal is usually a unit vector, but this is not absolutely necessary. If the normal is a zero vector, the geometric object becomes equivalent to the straight line between the two end points. The length of the normal sequence is exactly the same as for the bulge sequence, 1 less than the control point sequence length. An arc is an arc string consiting of a single arc, the attribute is fixed to "1". This variant of the arc requires that the points on the arc have to be computed instead of storing the coordinates directly. The control point is the center point of the arc plus the radius and the bearing at start and end. This represenation can be used only in 2D. GML supports two different ways to specify the control points of a curve segment. 1. A "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) element. The "pos" element contains a center point that is only part of this curve segment, a "pointProperty" element contains a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points). 2. The "posList" element can be used to specifiy the coordinates of the center point, too. The number of direct positions in the list must be one. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. Deprecated with GML version 3.1.0. Use "posList" instead. The radius of the arc. The bearing of the arc at the start. The bearing of the arc at the end. The attribute "interpolation" specifies 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. For an ArcByCenterPoint the interpolation is fixed as "circularArcCenterPointWithRadius". Since this type describes always a single arc, the attribute is fixed to "1". A CircleByCenterPoint is an ArcByCenterPoint with identical start and end angle to form a full circle. Again, this represenation can be used only in 2D. An offset curve is a curve at a constant distance from the basis curve. They can be useful as a cheap and simple alternative to constructing curves that are offsets by definition. offsetBase is a reference to thecurve from which this curve is define as an offset. distance is the distance at which the offset curve is generated from the basis curve. In 2D systems, positive distances are to be to the left of the basis curve, and the negative distances are to be to the right of the basis curve. refDistance is used to define the vector direction of the offset curve from the basis curve. It can be omitted in the 2D case, where the distance can be positive or negative. In that case, distance defines left side (positive distance) or right side (negative distance) with respect to the tangent to the basis curve. In 3D the basis curve shall have a well defined tangent direction for every point. The offset curve at any point in 3D, the basis curve shall have a well-defined tangent direction for every point. The offset curve at any point (parameter) on the basis curve c is in the direction - - - - s = v x t where v = c.refDirection() and - t = c.tangent() - For the offset direction to be well-defined, v shall not on any point of the curve be in the same, or opposite, direction as - t. The default value of the refDirection shall be the local co-ordinate axis vector for elevation, which indicates up for the curve in a geographic sense. NOTE! If the refDirection is the positive tangent to the local elevation axis ("points upward"), then the offset vector points to the left of the curve when viewed from above. A placement takes a standard geometric construction and places it in geographic space. It defines a transformation from a constructive parameter space to the co-ordinate space of the co-ordinate reference system being used. Parameter spaces in formulae in this International Standard are given as (u, v) in 2D and(u, v, w) in 3D. Co-ordinate reference systems positions are given in formulae, in this International Standard, by either (x, y) in 2D, or (x, y, z) in 3D. Affine placements are defined by linear transformations from parameter space to the target co-ordiante space. 2-dimensional Cartesian parameter space,(u,v) transforms into 3-dimensional co- ordinate reference systems,(x,y,z) by using an affine transformation,(u,v)->(x,y,z) which is defined : x ux vx x0 u y = uy vy + y0 v x uz vz z0 Then, given this equation, the location element of the AffinePlacement is the direct position (x0, y0, z0), which is the target position of the origin in (u, v). The two reference directions (ux, uy, uz) and (vx, vy, vz) are the target directions of the unit vectors at the origin in (u, v). The location property gives the target of the parameter space origin. This is the vector (x0, y0, z0) in the formulae above. The attribute refDirection gives the target directions for the co-ordinate basis vectors of the parameter space. These are the columns of the matrix in the formulae given above. The number of directions given shall be inDimension. The dimension of the directions shall be outDimension. Dimension of the constructive parameter space. Dimension of the co-ordinate space. A clothoid, or Cornu's spiral, is plane curve whose curvature is a fixed function of its length. In suitably chosen co-ordinates it is given by Fresnel's integrals. x(t) = 0-integral-t cos(AT*T/2)dT y(t) = 0-integral-t sin(AT*T/2)dT This geometry is mainly used as a transition curve between curves of type straight line to circular arc or circular arc to circular arc. With this curve type it is possible to achieve a C2-continous transition between the above mentioned curve types. One formula for the Clothoid is A*A = R*t where A is constant, R is the varying radius of curvature along the the curve and t is the length along and given in the Fresnel integrals. The "refLocation" is an affine mapping that places the curve defined by the Fresnel Integrals into the co-ordinate reference system of this object. The element gives the value for the constant in the Fresnel's integrals. The startParameter is the arc length distance from the inflection point that will be the start point for this curve segment. This shall be lower limit used in the Fresnel integral and is the value of the constructive parameter of this curve segment at its start point. The startParameter can either be positive or negative. NOTE! If 0.0 (zero), lies between the startParameter and the endParameter of the clothoid, then the curve goes through the clothoid's inflection point, and the direction of its radius of curvature, given by the second derivative vector, changes sides with respect to the tangent vector. The term length distance for the The endParameter is the arc length distance from the inflection point that will be the end point for this curve segment. This shall be upper limit used in the Fresnel integral and is the value of the constructive parameter of this curve segment at its start point. The startParameter can either be positive or negative. A GeodesicString consists of sequence of geodesic segments. The type essentially combines a sequence of Geodesic into a single object. The GeodesicString is computed from two or more positions and an interpolation using geodesics defined from the geoid (or ellipsoid) of the co-ordinate reference system being used. The attribute "interpolation" specifies 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. For an GeodesicString the interpolation is fixed as "geodesic". A Geodesic consists of two distinct positions joined by a geodesic curve. The control points of a Geodesic shall lie on the geodesic between its start point and end points. Between these two points, a geodesic curve defined from ellipsoid or geoid model used by the co-ordinate reference systems may be used to interpolate other positions. Any other point in the controlPoint array must fall on this geodesic. Cubic splines are similar to line strings in that they are a sequence of segments each with its own defining function. A cubic spline uses the control points and a set of derivative parameters to define a piecewise 3rd degree polynomial interpolation. Unlike line-strings, the parameterization by arc length is not necessarily still a polynomial. The function describing the curve must be C2, that is, have a continuous 1st and 2nd derivative at all points, and pass through the controlPoints in the order given. Between the control points, the curve segment is defined by a cubic polynomial. At each control point, the polynomial changes in such a manner that the 1st and 2nd derivative vectors are the same from either side. The control parameters record must contain vectorAtStart, and vectorAtEnd which are the unit tangent vectors at controlPoint[1] and controlPoint[n] where n = controlPoint.count. Note: only the direction of the vectors is relevant, not their length. GML supports two different ways to specify the control points of a curve segment. 1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points). 2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least three. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. Deprecated with GML version 3.1.0. Use "posList" instead. "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. The attribute "interpolation" specifies 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. For a CubicSpline the interpolation is fixed as "cubicSpline". The degree for a cubic spline is "3". A knot is a breakpoint on a piecewise spline curve. The property "value" is the value of the parameter at the knot of the spline. The sequence of knots shall be a non-decreasing sequence. That is, each knot's value in the sequence shall be equal to or greater than the previous knot's value. The use of equal consecutive knots is normally handled using the multiplicity. The property "multiplicity" is the multiplicity of this knot used in the definition of the spline (with the same weight). The property "weight" is the value of the averaging weight used for this knot of the spline. Encapsulates a knot to use it in a geometric type. A B-Spline is a piecewise parametric polynomial or rational curve described in terms of control points and basis functions. Knots are breakpoints on the curve that connect its pieces. They are given as a non-decreasing sequence of real numbers. If the weights in the knots are equal then it is a polynomial spline. The degree is the algebraic degree of the basis functions. GML supports two different ways to specify the control points of a curve segment. 1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points). 2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. Deprecated with GML version 3.1.0. Use "posList" instead. The attribute "degree" shall be the degree of the polynomial used for interpolation in this spline. The property "knot" shall be the sequence of distinct knots used to define the spline basis functions. The attribute "interpolation" specifies 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. For a BSpline the interpolation can be either "polynomialSpline" or "rationalSpline", default is "polynomialSpline". The attribute isPolynomial is set to true if this is a polynomial spline. The attribute "knotType" gives the type of knot distribution used in defining this spline. This is for information only and is set according to the different construction-functions. 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. GML supports two different ways to specify the control points of a curve segment. 1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points). 2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0. Deprecated with GML version 3.1.0. Use "posList" instead. The attribute "degree" shall be the degree of the polynomial used for interpolation in this spline. The property "knot" shall be the sequence of distinct knots used to define the spline basis functions. The attribute "interpolation" specifies 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. For a Bezier the interpolation is fixed as "polynomialSpline". The attribute isPolynomial is set to true as this is a polynomial spline. The property "knotType" is not relevant for Bezier curve segments. A Surface is a 2-dimensional primitive and is composed of one or more surface patches. The surface patches are connected to one another. The orientation of the surface is positive ("up"). The orientation of a surface chooses an "up" direction through the choice of the upward normal, which, if the surface is not a cycle, is the side of the surface from which the exterior boundary appears counterclockwise. Reversal of the surface orientation reverses the curve orientation of each boundary component, and interchanges the conceptual "up" and "down" direction of the surface. If the surface is the boundary of a solid, the "up" direction is usually outward. For closed surfaces, which have no boundary, the up direction is that of the surface patches, which must be consistent with one another. Its included surface patches describe the interior structure of the Surface. This element encapsulates the patches of the surface. 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 "_Surface". 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 Surface with an up-normal that reverses the direction for this OrientableSurface, the sense of "the top of the surface". References or contains the base surface (positive 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 Surface with an up-normal that reverses the direction for this OrientableSurface, the sense of "the top of the surface". "+" is the default value. The "_SurfacePatch" element is the abstract head of the substituition group for all surface pach elements describing a continuous portion of a surface. A surface patch defines a homogenuous portion of a surface. This property element contains a list of surface patches. The order of the elements is significant and shall be preserved when processing the array. A container for an array of surface patches. A 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 are coplanar and the polygon uses planar interpolation in its interior. Implements GM_Polygon of ISO 19107. The attribute "interpolation" specifies the interpolation mechanism used for this surface patch. Currently only planar surface patches are defined in GML 3, the attribute is fixed to "planar", i.e. the interpolation method shall return points on a single plane. The boundary of the patch shall be contained within that plane. Represents a triangle as a surface 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 must be four. Constraint: The Ring shall be a LinearRing and must form a triangle, the first and the last position must be co-incident. The attribute "interpolation" specifies the interpolation mechanism used for this surface patch. Currently only planar surface patches are defined in GML 3, the attribute is fixed to "planar", i.e. the interpolation method shall return points on a single plane. The boundary of the patch shall be contained within that plane. Represents a rectangle as a surface 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 must be five. Constraint: The Ring shall be a LinearRing and must form a rectangle; the first and the last position must be co-incident. The attribute "interpolation" specifies the interpolation mechanism used for this surface patch. Currently only planar surface patches are defined in GML 3, the attribute is fixed to "planar", i.e. the interpolation method shall return points on a single plane. The boundary of the patch shall be contained within that plane. This property element either references a curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for "_Curve". A Ring is used to represent a single connected component of a surface boundary. It consists of a sequence of curves connected in a cycle (an object whose boundary is empty). A Ring is structurally similar to a composite curve in that the endPoint of each curve in the sequence is the startPoint of the next curve in the Sequence. Since the sequence is circular, there is no exception to this rule. Each ring, like all boundaries, is a cycle and each ring is simple. NOTE: Even though each Ring is simple, the boundary need not be simple. The easiest case of this is where one of the interior rings of a surface is tangent to its exterior ring. This element references or contains one curve in the composite curve. The curves are contiguous, the collection of curves is ordered. NOTE: This definition allows for a nested structure, i.e. a CompositeCurve may use, for example, another CompositeCurve as a curve member. Encapsulates a ring to represent properties in features or geometry collections. Reference points which are organised into sequences or grids(sequences of equal length sequences). A gridded surface is a parametric curve surface derived from a rectangular grid in the parameter space. The rows from this grid are control points for horizontal surface curves; the columns are control points for vertical surface curves. The working assumption is that for a pair of parametric co-ordinates (s, t) that the horizontal curves for each integer offset are calculated and evaluated at "s". The defines a sequence of control points: cn(s) : s 1 .....columns From this sequence a vertical curve is calculated for "s", and evaluated at "t". In most cases, the order of calculation (horizontal-vertical vs. vertical-horizontal) does not make a difference. Where it does, the horizontal- vertical order shall be the one used. Logically, any pair of curve interpolation types can lead to a subtype of GriddedSurface. The following clauses define some most commonly encountered surfaces that can be represented in this manner. This is the double indexed sequence of control points, given in row major form. NOTE! There in no assumption made about the shape of the grid. For example, the positions need not effect a "21/2D" surface, consecutive points may be equal in any or all of the ordinates. Further, the curves in either or both directions may close. The attribute rows gives the number of rows in the parameter grid. The attribute columns gives the number of columns in the parameter grid. A cone is a gridded surface given as a family of conic sections whose control points vary linearly. NOTE! A 5-point ellipse with all defining positions identical is a point. Thus, a truncated elliptical cone can be given as a 2x5 set of control points ((P1, P1, P1, P1, P1), (P2, P3, P4, P5, P6)). P1 is the apex of the cone. P2, P3,P4, P5 and P6 are any five distinct points around the base ellipse of the cone. If the horizontal curves are circles as opposed to ellipses, the a circular cone can be constructed using ((P1, P1, P1),(P2, P3, P4)). The apex most not coinside with the other plane. A cylinder is a gridded surface given as a family of circles whose positions vary along a set of parallel lines, keeping the cross sectional horizontal curves of a constant shape. NOTE! Given the same working assumptions as in the previous note, a Cylinder can be given by two circles, giving us the control points of the form ((P1, P2, P3),(P4, P5, P6)). A sphere is a gridded surface given as a family of circles whose positions vary linearly along the axis of the sphere, and whise radius varies in proportions to the cosine function of the central angle. The horizontal circles resemble lines of constant latitude, and the vertical arcs resemble lines of constant longitude. NOTE! If the control points are sorted in terms of increasing longitude, and increasing latitude, the upNormal of a sphere is the outward normal. EXAMPLE If we take a gridded set of latitudes and longitudes in degrees,(u,v) such as (-90,-180) (-90,-90) (-90,0) (-90, 90) (-90, 180) (-45,-180) (-45,-90) (-45,0) (-45, 90) (-45, 180) ( 0,-180) ( 0,-90) ( 0,0) ( 0, 90) ( 0, 180) ( 45,-180) ( 45,-90) ( 45,0) ( 45, -90) ( 45, 180) ( 90,-180) ( 90,-90) ( 90,0) ( 90, -90) ( 90, 180) And map these points to 3D using the usual equations (where R is the radius of the required sphere). z = R sin u x = (R cos u)(sin v) y = (R cos u)(cos v) We have a sphere of Radius R, centred at (0,0), as a gridded surface. Notice that the entire first row and the entire last row of the control points map to a single point in each 3D Euclidean space, North and South poles respectively, and that each horizontal curve closes back on itself forming a geometric cycle. This gives us a metrically bounded (of finite size), topologically unbounded (not having a boundary, a cycle) surface. A polyhedral surface is a surface composed of polygon surfaces connected along their common boundary curves. This differs from the surface type only in the restriction on the types of surface patches acceptable. This property encapsulates the patches of the polyhedral surface. This property element contains a list of polygon patches. The order of the patches is significant and shall be preserved when processing the list. This type defines a container for an array of polygon patches. This property element contains a list of triangle patches. The order of the patches is significant and shall be preserved when processing the list. This type defines a container for an array of triangle patches. A triangulated surface is a polyhedral surface that is composed only of triangles. There is no restriction on how the triangulation is derived. This property encapsulates the patches of the triangulated surface. A tin is a triangulated surface that uses the Delauny algorithm or a similar algorithm complemented with consideration of breaklines, stoplines, and maximum length of triangle sides. These networks satisfy the Delauny's criterion away from the modifications: Fore each triangle in the network, the circle passing through its vertices does not contain, in its interior, the vertex of any other triangle. Stoplines are lines where the local continuity or regularity of the surface is questionable. In the area of these pathologies, triangles intersecting a stopline shall be removed from the tin surface, leaving holes in the surface. If coincidence occurs on surface boundary triangles, the result shall be a change of the surface boundary. Stoplines contains all these pathological segments as a set of line strings. Breaklines are lines of a critical nature to the shape of the surface, representing local ridges, or depressions (such as drainage lines) in the surface. As such their constituent segments must be included in the tin eve if doing so violates the Delauny criterion. Break lines contains these critical segments as a set of line strings. Areas of the surface where data is not sufficiently dense to assure reasonable calculation shall be removed by adding a retention criterion for triangles based on the length of their sides. For many triangle sides exceeding maximum length, the adjacent triangles to that triangle side shall be removed from the surface. The corners of the triangles in the TIN are often referred to as pots. ControlPoint shall contain a set of the GM_Position used as posts for this TIN. Since each TIN contains triangles, there must be at least 3 posts. The order in which these points are given does not affect the surface that is represented. Application schemas may add information based on ordering of control points to facilitate the reconstruction of the TIN from the control points. The "_Solid" element is the abstract head of the substituition group for all (continuous) solid elements. An abstraction of a solid to support the different levels of complexity. A solid is always contiguous. This property element either references a solid via the XLink-attributes or contains the solid element. solidProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for _Solid. A property that has a solid as its value domain can 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 must be given, but neither both nor none. This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup. 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 (shells). A shell is represented by a composite surface, where every shell is used to represent a single connected component of the boundary of a solid. It consists of a composite surface (a list of orientable surfaces) connected in a topological cycle (an object whose boundary is empty). Unlike a Ring, a Shell's elements have no natural sort order. Like Rings, Shells are simple. Boundaries of solids are similar to surface boundaries. In normal 3-dimensional Euclidean space, one (composite) surface is distinguished as the exterior. In the more general case, this is not always possible. Boundaries of solids are similar to surface boundaries. CurveInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema. SurfaceInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema. Defines allowed values for the knots` type. Uniform knots implies that all knots are of multiplicity 1 and they differ by a positive constant from the preceding knot. Knots are quasi-uniform iff they are of multiplicity (degree + 1) at the ends, of multiplicity 1 elsewhere, and they differ by a positive constant from the preceding knot. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/gml.xsd0000644000000000000000000000007413114323025022333 xustar0030 atime=1496426292.484635962 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/gml.xsd0000644000175000001440000000242113114323025023274 0ustar00kalxasusers00000000000000 gml.xsd Top level GML schema GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/gmlBase.xsd0000644000000000000000000000007413114323025023126 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/gmlBase.xsd0000644000175000001440000004271113114323025024075 0ustar00kalxasusers00000000000000 Schematron validation Property element may not carry both a reference to an object and contain an object. Property element must either carry a reference to an object or contain an object. GML base schema for GML 3 Components to support the GML encoding model. The abstract Schematron rules can be used by any schema that includes gmlBase. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . This abstract element is the head of a substitutionGroup hierararchy which may contain either simpleContent or complexContent elements. It is used to assert the model position of "class" elements declared in other GML schemas. Global element which acts as the head of a substitution group that may include any element which is a GML feature, object, geometry or complex value This content model group makes it easier to construct types that derive from AbstractGMLType and its descendents "by restriction". A reference to the group saves having to enumerate the standard object properties. Multiple names may be provided. These will often be distinguished by being assigned by different authorities, as indicated by the value of the codeSpace attribute. In an instance document there will usually only be one name per authority. All complexContent GML elements are directly or indirectly derived from this abstract supertype to establish a hierarchy of GML types that may be distinguished from other XML types by their ancestry. Elements in this hierarchy may have an ID and are thus referenceable. Generic GML element to contain a heterogeneous collection of GML _Objects A non-abstract generic collection type that can be used as a document element for a collection of any GML types - Geometries, Topologies, Features ... FeatureCollections may only contain Features. GeometryCollections may only contain Geometrys. Bags are less constrained they must contain objects that are substitutable for gml:_Object. This may mix several levels, including Features, Definitions, Dictionaries, Geometries etc. The content model would ideally be member 0..* members 0..1 member 0..* for maximum flexibility in building a collection from both homogeneous and distinct components: included "member" elements each contain a single Object an included "members" element contains a set of Objects However, this is non-deterministic, thus prohibited by XSD. Generic GML element to contain a homogeneous array of GML _Objects A non-abstract generic collection type that can be used as a document element for a homogeneous collection of any GML types - Geometries, Topologies, Features ... Abstract element which acts as the head of a substitution group for packages of MetaData properties. An abstract base type for complex metadata types. Concrete element in the _MetaData substitution group, which permits any well-formed XML content. Intended to act as a container for metadata defined in external schemas, for which it is not possible to add the concrete components to the GML _MetaData substitution group directly. Deprecated with GML version 3.1.0. Deprecated with GML version 3.1.0. must carry a reference to an object or contain an object but not both A pattern or base for derived types used to specify complex types corresponding to an unspecified UML association - either composition or aggregation. Restricts the cardinality of Objects contained in the association to a maximum of one. An instance of this type can contain an element representing an Object, or serve as a pointer to a remote Object. Descendents of this type can be restricted in an application schema to * allow only specified classes as valid participants in the aggregation * allow only association by reference (i.e. empty the content model) or by value (i.e. remove the xlinks). When used for association by reference, the value of the gml:remoteSchema attribute can be used to locate a schema fragment that constrains the target instance. In many cases it is desirable to impose the constraint prohibiting the occurence of both reference and value in the same instance, as that would be ambiguous. This is accomplished by adding a directive in the annotation element of the element declaration. This directive can be in the form of normative prose, or can use a Schematron pattern to automatically constrain co-occurrence - see the declaration for _strictAssociation below. If co-occurence is not prohibited, then both a link and content may be present. If this occurs in an instance, then the rule for interpretation is that the instance found by traversing the href provides the normative value of the property, and should be used when possible. The value(s) included as content may be used if the remote instance cannot be resolved. This may be considered to be a "cached" version of the value(s). A pattern or base for derived types used to specify complex types corresponding to a UML aggregation association. An instance of this type serves as a pointer to a remote Object. A base for derived types used to specify complex types containing an array of objects, by unspecified UML association - either composition or aggregation. An instance of this type contains elements representing Objects. Ideally this type would be derived by extension of AssociationType. However, this leads to a non-deterministic content model, since both the base and the extension have minOccurs="0", and is thus prohibited in XML Schema. Contains or refers to a metadata package that contains metadata properties. Base type for complex metadata property types. Database handle for the object. It is of XML type ID, so is constrained to be unique in the XML document within which it occurs. An external identifier for the object in the form of a URI may be constructed using standard XML and XPointer methods. This is done by concatenating the URI for the document, a fragment separator, and the value of the id attribute. Reference to an XML Schema fragment that specifies the content model of the propertys value. This is in conformance with the XML Schema Section 4.14 Referencing Schemas from Elsewhere. Attribute group used to enable property elements to refer to their value remotely. It contains the simple link components from xlinks.xsd, with all members optional, and the remoteSchema attribute, which is also optional. These attributes can be attached to any element, thus allowing it to act as a pointer. The 'remoteSchema' attribute allows an element that carries link attributes to indicate that the element is declared in a remote schema rather than by the schema that constrains the current document instance. Label for the object, normally a descriptive name. An object may have several names, typically assigned by different authorities. 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. Contains a simple text description of the object, or refers to an external description. This type is available wherever there is a need for a "text" type property. It is of string type, so the text can be included inline, but the value can also be referenced remotely via xlinks from the AssociationAttributeGroup. If the remote reference is present, then the value obtained by traversing the link should be used, and the string content of the element can be used for an annotation. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/grids.xsd0000644000000000000000000000007413114323025022664 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/grids.xsd0000644000175000001440000000742513114323025023636 0ustar00kalxasusers00000000000000 grids.xsd Grid geometries A subset of implicit geometries Designed for use with GML Coverage schema, but maybe useful elsewhere as well. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . An unrectified grid, which is a network composed of two or more sets of equally spaced parallel lines in which the members of each set intersect the members of the other sets at right angles. Provides grid coordinate values for the diametrically opposed corners of an envelope that bounds a section of grid. The value of a single coordinate is the number of offsets from the origin of the grid in the direction of a specific axis. Should be substitutionGroup="gml:Grid" but changed in order to accomplish Xerces-J schema validation A rectified grid has an origin and vectors that define its post locations. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/measures.xsd0000644000000000000000000000007413114323025023400 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/measures.xsd0000644000175000001440000002555713114323025024360 0ustar00kalxasusers00000000000000 Extends the units.xsd and basicTypes.xsd schemas with types for recording measures using specific types of units, especially the measures and units needed for coordinate reference systems and coordinate operations. The specific unit types encoded are length, angle, scale factor, time, area, volume, speed, and grid length. This schema allows angle values to be recorded as single numbers or in degree-minute-second format. Parts of this schema are based on Subclause 6.5.7 of ISO/CD 19103 Geographic information - Conceptual schema language, on Subclause A.5.2.2.3 of ISO/CD 19118 Geographic information - Encoding, and on Subclause 4.7 of OpenGIS Recommendation Paper OGC 02-007r4 Units of Measure Use and Definition Recommendations. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Value of a length (or distance) quantity, 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. Value of a scale factor (or ratio) that has no physical unit. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a scale factor, such as percent, permil, or parts-per-million. Value of a time or temporal quantity, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a time value, such as seconds or weeks. Value of a length (or distance) quantity in a grid, where the grid spacing does not have any associated physical units, or does not have a constant physical spacing. This grid length will often be used in a digital image grid, where the base units are likely to be pixel spacings. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for length along the axes of a grid, such as pixel spacings or grid spacings. Value of a spatial area quantity, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for an area, such as square metres or square miles. Value of a spatial volume quantity, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a volume, such as cubic metres or cubic feet. Value of a speed, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a velocity, such as metres per second or miles per hour. Value of an angle quantity provided in either degree-minute-second format or single value format. Value of an angle quantity recorded as a single number, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for an angle, such as degrees or radians. Angle value provided in degree-minute-second or degree-minute format. Integer number of degrees, plus the angle direction. This element can be used for geographic Latitude and Longitude. For Latitude, the XML attribute direction can take the values "N" or "S", meaning North or South of the equator. For Longitude, direction can take the values "E" or "W", meaning East or West of the prime meridian. This element can also be used for other angles. In that case, the direction can take the values "+" or "-" (of SignType), in the specified rotational direction from a specified reference direction. Integer number of degrees in a degree-minute-second or degree-minute angular value, without indication of direction. Decimal number of arc-minutes in a degree-minute angular value. Integer number of arc-minutes in a degree-minute-second angular value. Number of arc-seconds in a degree-minute-second angular value. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/observation.xsd0000644000000000000000000000007413114323025024107 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/observation.xsd0000644000175000001440000001051713114323025025055 0ustar00kalxasusers00000000000000 observation.xsd Observation schema for GML 3.1 GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . This element contains or points to a description of a sensor, instrument or procedure used for the observation This element contains or points to the specimen, region or station which is the object of the observation Synonym for target - common word used for photographs Container for an object representing the target or subject of an observation. The result of the observation: an image, external object, etc pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/referenceSystems.xsd0000644000000000000000000000007413114323025025102 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/referenceSystems.xsd0000644000175000001440000002745213114323025026056 0ustar00kalxasusers00000000000000 How to encode reference system definitions. Builds on several other parts of GML 3 to encode the data needed to define reference systems. This schema encodes the Reference System (RS_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. The SC_CRS class is also encoded here, to eliminate the (circular) references from coordinateOperations.xsd to coordinateReferenceSystems.xsd. The RS_SpatialReferenceSystemUsingGeographicIdentifier class is not encoded, since it is not applicable to coordinate positions. The CI_Citation class is not directly encoded, since such information can be included as metaDataProperty elements which are optionally allowed. A modified version of the EX_Extent (DataType) class from ISO 19115 is currently encoded here, using GML 3 schema types. (A more extensive version of the EX_Extent package might be XML encoded in the future, probably in a separate extent.xsd schema.) Caution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Basic encoding for reference system objects, simplifying and restricting the DefinitionType as needed. The name by which this reference system is identified. Description of a spatial and/or temporal reference system used by a dataset. Set of alterative identifications of this reference system. The first srsID, if any, is normally the primary identification code, and any others are aliases. Comments on or information about this reference system, including source information. An identification of a reference system. Association to a reference system, either referencing or containing the definition of that reference system. Abstract coordinate reference system, usually defined by a coordinate system and a datum. This abstract complexType 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. Association to a CRS abstract coordinate reference system, either referencing or containing the definition of that CRS. An identification of a CRS object. The first use of the IdentifierType for an object, if any, is normally the primary identification code, and any others are aliases. The code or name for this Identifier, often from a controlled list or pattern defined by a code space. The optional codeSpace attribute is normally included to identify or reference a code space within which one or more codes are defined. This code space is often defined by some authority organization, where one organization may define multiple code spaces. The range and format of each Code Space identifier is defined by that code space authority. Information about that code space authority can be included as metaDataProperty elements which are optionally allowed in all CRS objects. Remarks about this code or alias. Identifier of the version of the associated codeSpace or code, as specified by the codeSpace or code authority. This version is included only when the "code" or "codeSpace" uses versions. When appropriate, the version is identified by the effective date, coded using ISO 8601 date format. Information about this object or code. Contains text or refers to external text. Description of domain of usage, or limitations of usage, for which this CRS object is valid. Area or region in which this CRS object is valid. Information about the spatial, vertical, and/or temporal extent of a reference system object. Constraints: At least one of the elements "description", "boundingBox", "boundingPolygon", "verticalExtent", and temporalExtent" must be included, but more that one can be included when appropriate. Furthermore, more than one "boundingBox", "boundingPolygon", "verticalExtent", and/or temporalExtent" element can be included, with more than one meaning the union of the individual domains. Description of spatial and/or temporal extent of this object. Geographic domain of this reference system object. Unordered list of bounding boxes (or envelopes) whose union describes the spatial domain of this object. Unordered list of bounding polygons whose union describes the spatial domain of this object. Unordered list of vertical intervals whose union describes the spatial domain of this object. Unordered list of time periods whose union describes the spatial domain of this object. A bounding box (or envelope) defining the spatial domain of this object. A bounding polygon defining the horizontal spatial domain of this object. An interval defining the vertical spatial domain of this object. A time period defining the temporal domain of this object. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/temporal.xsd0000644000000000000000000000007413114323025023377 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/temporal.xsd0000644000175000001440000003635613114323025024356 0ustar00kalxasusers00000000000000 The temporal schema for GML 3.1 provides constructs for handling time-varying spatial data. This schema reflects a partial implementation of the model described in ISO 19108:2002. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . This abstract element acts as the head of the substitution group for temporal primitives and complexes. The abstract supertype for temporal objects. This abstract element acts as the head of the substitution group for temporal primitives. The abstract supertype for temporal primitives. This abstract element acts as the head of the substitution group for temporal complexes. Temporal complex is an aggregation of temporal primitives as its components, represents a temporal geometric complex and a temporal topology complex. N.B. Temporal geometric complex is not defined in this schema. The abstract supertype for temporal complexes. This abstract element acts as the head of the substitution group for temporal geometric primitives. The abstract supertype for temporal geometric primitives. A temporal geometry must be associated with a temporal reference system via URI. The Gregorian calendar with UTC is the default reference system, following ISO 8601. Other reference systems in common use include the GPS calendar and the Julian calendar. Omit back-pointers begunBy, endedBy. This model group is provided as an alternative to the abstract susbstitutionGroup head _timeLength. ISO 19136 comment 411 This element is an instance of the primitive xsd:duration simple type to enable use of the ISO 8601 syntax for temporal length (e.g. P5DT4H30M). It is a valid subtype of TimeDurationType according to section 3.14.6, rule 2.2.4 in XML Schema, Part 1. This element is a valid subtype of TimeDurationType according to section 3.14.6, rule 2.2.4 in XML Schema, Part 1. This type extends the built-in xsd:decimal simple type to allow floating-point values for temporal length. According to the ISO 11404 model you have to use 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 (e.g. unit="second", radix="10", factor="3" specifies a resolution of milliseconds). It is a subtype of TimeDurationType. Standard units for measuring time intervals (see ISO 31-1). Direct representation of a temporal position Direct representation of a temporal position. Indeterminate time values are also allowed, as described in ISO 19108. The indeterminatePosition attribute can be used alone or it can qualify a specific value for temporal position (e.g. before 2002-12, after 1019624400). For time values that identify position within a calendar, the calendarEraName attribute provides the name of the calendar era to which the date is referenced (e.g. the Meiji era of the Japanese calendar). The ISO 19108:2002 hierarchy of subtypes for temporal position are collapsed by defining a union of XML Schema simple types for indicating temporal position relative to a specific reference system. Dates and dateTime may be indicated with varying degrees of precision. dateTime by itself does not allow right-truncation, except for fractions of seconds. When used with non-Gregorian calendars based on years, months, days, the same lexical representation should still be used, with leading zeros added if the year value would otherwise have fewer than four digits. An ordinal position may be referenced via URI identifying the definition of an ordinal era. A time coordinate value is indicated as a decimal (e.g. UNIX time, GPS calendar). Calendar dates may be indicated with varying degrees of precision, using year, year-month, date. When used with non-Gregorian calendars based on years, months, days, the same lexical representation should still be used, with leading zeros added if the year value would otherwise have fewer than four digits. time is used for a position that recurs daily (see clause 5.4.4.2 of ISO 19108:2002). This enumerated data type specifies values for indeterminate positions. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/temporalReferenceSystems.xsd0000644000000000000000000000007413114323025026606 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/temporalReferenceSystems.xsd0000644000175000001440000003156013114323025027555 0ustar00kalxasusers00000000000000 The Temporal Reference Systems schema for GML 3.1 provides constructs for handling various styles of temporal reference system. This schema reflects a partial implementation of the model described in ISO 19108:2002. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Abstract element serves primarily as the head of a substitution group for temporal reference systems. 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, e.g. UNIX time). A temporal coordinate system is based on a continuous interval scale defined in terms of a single time interval. In an ordinal reference system the order of events in time can be well established, but the magnitude of the intervals between them can not be accurately determined (e.g. a stratigraphic sequence). Ordinal temporal reference systems are often hierarchically structured such that an ordinal era at a given level of the hierarchy includes a sequence of shorter, coterminous ordinal eras. This captured using the member/group properties. Note that in this schema, TIme Ordinal Era is patterned on TimeEdge, which is a variation from ISO 19108. This is in order to fulfill the requirements of ordinal reference systems based on eras delimited by named points or nodes, which are common in geology, archeology, etc. This change is subject of a change proposal to ISO An Era may be composed of several member Eras. The "member" element implements the association to the Era at the next level down the hierarchy. "member" follows the standard GML property pattern whereby its (complex) value may be either described fully inline, or may be the target of a link carried on the member element and described fully elsewhere, either in the same document or from another service. In a particular Time System, an Era may be a member of a group. The "group" element implements the back-pointer to the Era at the next level up in the hierarchy. If the hierarchy is represented by describing the nested components fully in the their nested position inside "member" elements, then the parent can be easily inferred, so the group property is unnecessary. However, if the hierarchy is represented by links carried on the "member" property elements, pointing to Eras described fully elsewhere, then it may be useful for a child (member) era to carry an explicit pointer back to its parent (group) Era. A calendar is a discrete temporal reference system that provides a basis for defining temporal position to a resolution of one day. A single calendar may reference more than one calendar era. Link to the CalendarEras that it uses as a reference for dating. In every calendar, years are numbered relative to the date of a reference event that defines a calendar era. In this implementation, we omit the back-pointer "datingSystem". Name or description of a mythical or historic event which fixes the position of the base scale of the calendar era. 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. Julian date that corresponds to the reference date. 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. 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. Period for which the calendar era was used as a basis for dating. A clock provides a basis for defining temporal position within a day. A clock must be used with a calendar in order to provide a complete description of a temporal position within a specific day. Name or description of an event, such as solar noon or sunrise, which fixes the position of the base scale of the clock. 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. 24 hour local or UTC time that corresponds to the reference time. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/temporalTopology.xsd0000644000000000000000000000007413114323025025134 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/temporalTopology.xsd0000644000175000001440000002356513114323025026111 0ustar00kalxasusers00000000000000 The temporal topology schema for ISO19136 provides constructs for handling topological complexes and temporal feature relationships. Temporal geometric characteristics of features are represented as instants and periods. While, temporal context of features that does not relate to the position of time is described as connectivity relationships among instants and periods. These relationships are called temporal topology as they do not change in time, as long as the direction of time does not change. It is used effectively in the case of describing 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. This schema reflects a partial yet consistent implementation of the model described in ISO 19108:2002. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . This element represents temporal topology complex. It shall be the connected acyclic directed graph composed of time nodes and time edges. A temporal topology complex. A time topology complex property can either be any time topology complex element encapsulated in an element of this type or an XLink reference to a remote time topology complex element (where remote includes elements located elsewhere in the same document). Note that either the reference or the contained element must be given, but not both or none. This abstract element acts as the head of the substitution group for temporal topology primitives. The element "complex" carries a reference to the complex containing this primitive. A time topology primitive property can either hold any time topology complex element eor carry an XLink reference to a remote time topology complex element (where remote includes elements located elsewhere in the same document). Note that either the reference or the contained element must be given, but not both or none. "TimeNode" is a zero dimensional temporal topology primitive, expresses a position in topological time, and is a start and an end of time edge, which represents states of time. Time node may be isolated. However, it cannot describe the ordering relationships with other primitives. An isolated node may not be an element of any temporal topology complex. Type declaration of the element "TimeNode". A time node property can either be any time node element encapsulated in an element of this type or an XLink reference to a remote time node element (where remote includes elements located elsewhere in the same document). Note that either the reference or the contained element must be given, but not both or none. TimeEdge is one dimensional temporal topology primitive, expresses a state in topological time. It has an orientation from its start toward the end, and its boundaries shall associate with two different time nodes. Type declaration of the element "TimeEdge". A time edge property can either be any time edge element encapsulated in an element of this type or an XLink reference to a remote time edge element (where remote includes elements located elsewhere in the same document). Note that either the reference or the contained element must be given, but not both or none. Feature succession is a semantic relationship derived from evaluation of observer, and Feature Substitution, Feature Division and Feature Fusion are defined as associations between previous features and next features in the temporal context. Successions shall be represented in either following two ways. * define a temporal topological complex element as a feature element * define an association same as temporal topological complex between features. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/topology.xsd0000644000000000000000000000007413114323025023430 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/topology.xsd0000644000175000001440000005244313114323025024402 0ustar00kalxasusers00000000000000 topology.xsd GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Substitution group branch for Topo Primitives, used by TopoPrimitiveArrayAssociationType Its optional co-boundary is a set of connected directedEdges. The orientation of one of these dirEdges is "+" if the Node is the "to" node of the Edge, and "-" if it is the "from" node. There is precisely one positively directed and one negatively directed node in the boundary of every edge. The negatively and positively directed nodes correspond to the start and end nodes respectively. The optional coboundary of an edge is a circular sequence of directed faces which are incident on this edge in document order. Faces which use a particular boundary edge in its positive orientation appear with positive orientation on the coboundary of the same edge. 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 "-". An edge may optionally be realised by a 1-dimensional (curve) geometric primitive. . The topological boundary of a face consists of a set of directed edges. Note that all edges associated with a Face, including dangling and interior edges, appear in the boundary. Dangling and interior edges are each referenced by pairs of directedEdges with opposing orientations. The optional coboundary of a face is a pair of directed solids which are bounded by this face. If present, there is precisely one positively directed and one negatively directed solid in the coboundary of every face. The positively directed solid corresponds to the solid which lies in the direction of the positively directed normal to the face in any geometric realisation. A face may optionally be realised by a 2-dimensional (surface) geometric primitive. The topological boundary of a TopoSolid consists of a set of directed faces. Note that all faces associated with the TopoSolid, including dangling faces, appear in the boundary. The coboundary of a TopoSolid is empty and hence requires no representation. The intended use of TopoPoint is to appear within a point feature to express the structural and possibly geometric relationships of this point to other features via shared node definitions. Note the orientation assigned to the directedNode has no meaning in this context. It is preserved for symmetry with the types and elements which follow. The end Node of each directedEdge of a TopoCurveType is the start Node of the next directedEdge of the TopoCurveType in document order. The TopoCurve type and element represent a homogeneous topological expression, a list of directed edges, which if realised are isomorphic to a geometric curve primitive. The intended use of TopoCurve is to appear within a line feature instance to express the structural and geometric relationships of this line to other features via the shared edge definitions. The TopoSurface type and element represent a homogeneous topological expression, a set of directed faces, which if realised are isomorphic to a geometric surface primitive. The intended use of TopoSurface is to appear within a surface feature instance to express the structural and possibly geometric relationships of this surface to other features via the shared face definitions. The TopoVolume type and element represent a homogeneous topological expression, a set of directed TopoSolids, which if realised are isomorphic to a geometric solid primitive. The intended use of TopoVolume is to appear within a 3D solid feature instance to express the structural and geometric relationships of this solid to other features via the shared TopoSolid definitions. . Note the orientation assigned to the directedSolid has no meaning in three dimensions. It is preserved for symmetry with the preceding types and elements. This type represents a TP_Complex capable of holding topological primitives. Need schamatron test here that isMaximal attribute value is true This Property can be used to embed a TopoComplex in a feature collection. This type supports embedding topological primitives in a TopoComplex. This type supports embedding an array of topological primitives in a TopoComplex pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/units.xsd0000644000000000000000000000007413114323025022716 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/units.xsd0000644000175000001440000002614613114323025023671 0ustar00kalxasusers00000000000000 Builds on gmlBase.xsd to encode units of measure (or uom), including definitions of units of measure and dictionaries of such definitions. GML 3.0 candidate schema, primary editor: Arliss Whiteside. Parts of this schema are based on Subclause 6.5.7 of ISO/CD 19103 Geographic information - Conceptual schema language, on Subclause A.5.2.2.3 of ISO/CD 19118 Geographic information - Encoding, and on most of OpenGIS Recommendation Paper OGC 02-007r4 Units of Measure Use and Definition Recommendations. GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Reference to a unit of measure definition that applies to all the numerical values described by the element containing this element. Notice that a complexType which needs to include the uom attribute can do so by extending this complexType. Alternately, this complexType can be used as a pattern for a new complexType. Reference to a unit of measure definition, usually within the same XML document but possibly outside the XML document which contains this reference. For a reference within the same XML document, the "#" symbol should be used, followed by a text abbreviation of the unit name. However, the "#" symbol may be optional, and still may be interpreted as a reference. Definition of a unit of measure (or uom). The definition includes a quantityType property, which indicates the phenomenon to which the units apply, and a catalogSymbol, which gives the short symbol used for this unit. This element is used when the relationship of this unit to other units or units systems is unknown. Definition of a unit of measure which is a base unit from the system of units. A base unit cannot be derived by combination of other base units within this system. Sometimes known as "fundamental unit". Definition of a unit of measure which is defined through algebraic combination of more primitive units, which are usually base units from a particular system of units. Derived units based directly on base units are usually preferred for quantities other than the base units or fundamental quantities within a system. If a derived unit is not the preferred unit, the ConventionalUnit element should be used instead. Definition of a unit of measure which is related to a preferred unit for this quantity type through a conversion formula. A method for deriving this unit by algebraic combination of more primitive units, may also be provided. Informal description of the phenomenon or type of quantity that is measured or observed. For example, "length", "angle", "time", "pressure", or "temperature". When the quantity is the result of an observation or measurement, this term is known as Observable Type or Measurand. For global understanding of a unit of measure, it is often possible to reference an item in a catalog of units, using a symbol in that catalog. The "codeSpace" attribute in "CodeType" identifies a namespace for the catalog symbol value, and might reference the catalog. The "string" value in "CodeType" contains the value of a symbol that is 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. For example, the symbol "cm" might indicate that it is the "m" symbol combined with the "c" prefix. Definition of one unit term for a derived unit of measure. 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 can be positive or negative, but not zero. This element is included when this unit has an accurate conversion to the preferred unit for this quantity type. This element is included when the correct definition of this unit is unknown, but this unit has a rough or inaccurate conversion to the preferred unit for this quantity type. Relation of a unit to the preferred unit for this quantity type, specified by an arithmetic conversion (scaling and/or offset). A preferred unit is either a base unit or a derived unit selected for all units of one quantity type. The mandatory attribute "uom" shall reference the preferred unit that this conversion applies to. The conversion is specified by one of two alternative elements: "factor" or "formula". Specification of the scale factor by which a value using this unit of measure can be multiplied to obtain the corresponding value using the preferred unit of measure. Specification of the formula by which a value using this unit of measure can be converted to obtain the corresponding value using the preferred unit of measure. Paremeters of a simple formula by which a value using this 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 preferred 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/PaxHeaders.23451/valueObjects.xsd0000644000000000000000000000007413114323025024202 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.1.1/base/valueObjects.xsd0000644000175000001440000004400513114323025025147 0ustar00kalxasusers00000000000000 valueObjects.xsd GML conformant schema for Values in which the * scalar Value types and lists have their values recorded in simpleContent elements * complex Value types are built recursively GML is an OGC Standard. Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Utility choice group which unifies generic Values defined in this schema document with Geometry and Temporal objects and the Measures described above, so that any of these may be used within aggregate Values. A value from two-valued logic, using the XML Schema boolean type. An instance may take the values {true, false, 1, 0}. XML List based on XML Schema boolean type. An element of this type contains a space-separated list of boolean values {0,1,true,false} A term representing a classification. It has an optional XML attribute codeSpace, whose value is a URI which identifies a dictionary, codelist or authority for the term. A space-separated list of terms or nulls. A single XML attribute codeSpace may be provided, which authorises all the terms in the list. A numeric value with a scale. The content of the element is an amount using the XML Schema type double which permits decimal or scientific notation. An XML attribute uom (unit of measure) is required, whose value is a URI which identifies the definition of the scale or units by which the numeric value must be multiplied. A space separated list of amounts or nulls. The amounts use the XML Schema type double. A single XML attribute uom (unit of measure) is required, whose value is a URI which identifies the definition of the scale or units by which all the amounts in the list must be multiplied. An integer representing a frequency of occurrence. A space-separated list of integers or nulls. Aggregate value built from other Values using the Composite pattern. It contains zero or an arbitrary number of valueComponent elements, and zero or one valueComponents elements. It may be used for strongly coupled aggregates (vectors, tensors) or for arbitrary collections of values. Aggregate value built using the Composite pattern. 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 must be homogeneous. The element declaration contains a Schematron constraint which expresses this restriction precisely. Since the members are homogeneous, the referenceSystem (uom, codeSpace) may be specified on the ValueArray itself and implicitly inherited by all the members if desired. Note that a_ScalarValueList is preferred for arrays of Scalar Values since this is a more efficient encoding. ValueArray may not carry both a reference to a codeSpace and a uom All components of must be of the same type All components of must be of the same type A Value Array is used for homogeneous arrays of primitive and aggregate values. _ScalarValueList is preferred for arrays of Scalar Values since this is more efficient. Since "choice" is not available for attribute groups, an external constraint (e.g. Schematron) would be required to enforce the selection of only one of these through schema validation Utility element to store a 2-point range of numeric values. If one member is a null, then this is a single ended interval. Restriction of list type to store a 2-point range of numeric values. If one member is a null, then this is a single ended interval. Utility element to store a 2-point range of ordinal values. If one member is a null, then this is a single ended interval. Restriction of list type to store a 2-point range of ordinal values. If one member is a null, then this is a single ended interval. Utility element to store a 2-point range of frequency values. If one member is a null, then this is a single ended interval. Restriction of list type to store a 2-point range of frequency values. If one member is a null, then this is a single ended interval. Element which refers to, or contains, a Value Element which refers to, or contains, a Value. This version is used in CompositeValues. GML property which refers to, or contains, a Value Element which refers to, or contains, a set of homogeneously typed Values. GML property which refers to, or contains, a set of homogeneously typed Values. Property whose content is a scalar value. Property whose content is a Boolean value. Property whose content is a Category. Property whose content is a Quantity. Property whose content is a Count. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/PaxHeaders.23451/3.2.10000644000000000000000000000007413114323025020046 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/0000755000175000001440000000000013114323025021065 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/SchematronConstraints.xml0000644000000000000000000000007413114323025025200 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/SchematronConstraints.xml0000644000175000001440000001266013114323025026147 0ustar00kalxasusers00000000000000 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/basicTypes.xsd0000644000000000000000000000007413114323025022751 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/basicTypes.xsd0000644000175000001440000003505613114323025023724 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/coordinateOperations.xsd0000644000000000000000000000007413114323025025036 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/coordinateOperations.xsd0000644000175000001440000010111413114323025025776 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/coordinateReferenceSystems.xsd0000644000000000000000000000007413114323025026201 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/coordinateReferenceSystems.xsd0000644000175000001440000004375113114323025027155 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/coordinateSystems.xsd0000644000000000000000000000007413114323025024362 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/coordinateSystems.xsd0000644000175000001440000004440213114323025025330 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/coverage.xsd0000644000000000000000000000007413114323025022436 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/coverage.xsd0000644000175000001440000005052013114323025023402 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/datums.xsd0000644000000000000000000000007413114323025022140 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/datums.xsd0000644000175000001440000003705013114323025023107 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/defaultStyle.xsd0000644000000000000000000000007413114323025023310 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/defaultStyle.xsd0000644000175000001440000004562213114323025024263 0ustar00kalxasusers00000000000000 defaultStyle.xsd GML is an OGC Standard. Copyright (c) 2007,2010 Open Geospatial Consortium. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/deprecatedTypes.xsd0000644000000000000000000000007413114323025023770 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/deprecatedTypes.xsd0000644000175000001440000010354713114323025024744 0ustar00kalxasusers00000000000000 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. 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 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/dictionary.xsd0000644000000000000000000000007413114323025023010 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/dictionary.xsd0000644000175000001440000001572613114323025023765 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/direction.xsd0000644000000000000000000000007413114323025022623 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/direction.xsd0000644000175000001440000001006613114323025023570 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/dynamicFeature.xsd0000644000000000000000000000007413114323025023603 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/dynamicFeature.xsd0000644000175000001440000001521413114323025024550 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/feature.xsd0000644000000000000000000000007413114323025022276 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/feature.xsd0000644000175000001440000001270513114323025023245 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/geometryAggregates.xsd0000644000000000000000000000007413114323025024470 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/geometryAggregates.xsd0000644000175000001440000002637013114323025025442 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/geometryBasic0d1d.xsd0000644000000000000000000000007413114323025024111 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/geometryBasic0d1d.xsd0000644000175000001440000004474613114323025025072 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/geometryBasic2d.xsd0000644000000000000000000000007413114323025023666 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/geometryBasic2d.xsd0000644000175000001440000001456213114323025024640 0ustar00kalxasusers00000000000000 geometryBasic2d.xsd See ISO/DIS 19136 Clause 10. GML is an OGC Standard. Copyright (c) 2007,2010 Open Geospatial Consortium. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/geometryComplexes.xsd0000644000000000000000000000007413114323025024356 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/geometryComplexes.xsd0000644000175000001440000001326513114323025025327 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/geometryPrimitives.xsd0000644000000000000000000000007413114323025024552 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/geometryPrimitives.xsd0000644000175000001440000012304013114323025025514 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/gml.xsd0000644000000000000000000000007413114323025021422 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/gml.xsd0000644000175000001440000000205113114323025022362 0ustar00kalxasusers00000000000000 gml.xsd GML is an OGC Standard. Copyright (c) 2007,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/gmlBase.xsd0000644000000000000000000000007413114323025022215 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/gmlBase.xsd0000644000175000001440000003072313114323025023164 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/gml_32_geometries.rdf0000644000000000000000000000007413114323025024126 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/gml_32_geometries.rdf0000644000175000001440000003253313114323025025076 0ustar00kalxasusers00000000000000 Point Abstract Gridded Surface Polyhedral Surface Arc Polynomial Spline Multi-Curve Composite Surface Arc String Cylinder Shell Polygon Triangulated Irregular Network Multi-Geometry Bezier Curve BSpline Line String Segment Geodesic Abstract Surface Patch Geometric Complex Arc by Bulge CircleByCenterPoint Multi-Point Arc by Center Point Offset Curve Spline Curve Composite Line String Circle Orientable Curve Orientable Surface Clothoid Arc String by Bulge Triangulated Surface Triangle Cubic Spline Abstract Geometry Cone Composite Solid Abstract Geometric Primitive Linear Ring Abstract Parametric Curve Surface Geodesic String Multi-Solid Solid Composite Curve Rectangle Sphere Ring Polygon Patch Multi-Surface Abstract Curve Segment Surface pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/gml_3_2_1-ReadMe.txt0000644000000000000000000000007413114323025023461 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/gml_3_2_1-ReadMe.txt0000644000175000001440000000460513114323025024430 0ustar00kalxasusers00000000000000OpenGIS(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-21 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. ------------------------------------------------------------------- pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/grids.xsd0000644000000000000000000000007413114323025021753 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/grids.xsd0000644000175000001440000001003113114323025022710 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/measures.xsd0000644000000000000000000000007413114323025022467 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/measures.xsd0000644000175000001440000000602513114323025023434 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/observation.xsd0000644000000000000000000000007413114323025023176 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/observation.xsd0000644000175000001440000001261713114323025024147 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/referenceSystems.xsd0000644000000000000000000000007413114323025024171 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/referenceSystems.xsd0000644000175000001440000001112413114323025025132 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/temporal.xsd0000644000000000000000000000007413114323025022466 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/temporal.xsd0000644000175000001440000003634313114323025023441 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/temporalReferenceSystems.xsd0000644000000000000000000000007413114323025025675 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/temporalReferenceSystems.xsd0000644000175000001440000003057413114323025026650 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/temporalTopology.xsd0000644000000000000000000000007413114323025024223 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/temporalTopology.xsd0000644000175000001440000001715013114323025025171 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/topology.xsd0000644000000000000000000000007413114323025022517 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/topology.xsd0000644000175000001440000005437313114323025023475 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/units.xsd0000644000000000000000000000007413114323025022005 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/units.xsd0000644000175000001440000002776013114323025022763 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/PaxHeaders.23451/valueObjects.xsd0000644000000000000000000000007413114323025023271 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/gml/3.2.1/valueObjects.xsd0000644000175000001440000002624313114323025024242 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/core/schemas/ogc/PaxHeaders.23451/ows0000644000000000000000000000007413114323025017436 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/0000755000175000001440000000000013114323025020455 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/ows/PaxHeaders.23451/1.0.00000644000000000000000000000007413114323025020072 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/0000755000175000001440000000000013114323025021111 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/PaxHeaders.23451/ows19115subset.xsd0000644000000000000000000000007413114323025023326 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/ows19115subset.xsd0000644000175000001440000003045413114323025024276 0ustar00kalxasusers00000000000000 ows19115subset.xsd 2010-01-30 This XML Schema Document encodes the parts of ISO 19115 used by the common "ServiceIdentification" and "ServiceProvider" sections of the GetCapabilities operation response, known as the service metadata XML document. The parts encoded here are the MD_Keywords, CI_ResponsibleParty, and related classes. This XML Schema largely follows the current draft for ISO 19139, with the addition of documentation text extracted and edited from Annex B of ISO 19115. The UML package prefixes were omitted from XML names, and the XML element names were all capitalized, for consistency with other OWS Schemas. Also, the optional smXML:id attributes were omitted, as not being useful in a service metadata document. OWS is an OGC Standard. Copyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Title of this resource, normally used for display to a human. Brief narrative description of this resource, normally used for display to a human. Unordered list of one or more commonly used or formalised word(s) or phrase(s) used to describe the subject. When needed, the optional "type" can name the type of the associated list of keywords that shall all have the same type. Also when needed, the codeSpace attribute of that "type" can reference the type name authority and/or thesaurus. For OWS use, the optional thesaurusName element was omitted as being complex information that could be referenced by the codeSpace attribute of the Type element. Name or code with an (optional) authority. If the codeSpace attribute is present, its value should reference a dictionary, thesaurus, or authority for the name or code, such as the organisation who assigned the value, or the dictionary from which it is taken. Type copied from basicTypes.xsd of GML 3 with documentation edited, for possible use outside the ServiceIdentification section of a service metadata document. Identification of, and means of communication with, person(s) responsible for the resource(s). For OWS use in the ServiceProvider section of a service metadata document, the optional organizationName element was removed, since this type is always used with the ProviderName element which provides that information. The optional individualName element was made mandatory, since either the organizationName or individualName element is mandatory. The mandatory "role" element was changed to optional, since no clear use of this information is known in the ServiceProvider section. Identification of, and means of communication with, person responsible for the server. At least one of IndividualName, OrganisationName, or PositionName shall be included. Identification of, and means of communication with, person responsible for the server. For OWS use in the ServiceProvider section of a service metadata document, the optional organizationName element was removed, since this type is always used with the ProviderName element which provides that information. The mandatory "role" element was changed to optional, since no clear use of this information is known in the ServiceProvider section. Name of the responsible person: surname, given name, title separated by a delimiter. Name of the responsible organization. Role or position of the responsible person. Function performed by the responsible party. Possible values of this Role shall include the values and the meanings listed in Subclause B.5.5 of ISO 19115:2003. Address of the responsible party. Information required to enable contact with the responsible person and/or organization. For OWS use in the service metadata document, the optional hoursOfService and contactInstructions elements were retained, as possibly being useful in the ServiceProvider section. Telephone numbers at which the organization or individual may be contacted. Physical and email address at which the organization or individual may be contacted. On-line information that can be used to contact the individual or organization. OWS specifics: The xlink:href attribute in the xlink:simpleAttrs attribute group shall be used to reference this resource. Whenever practical, the xlink:href attribute with type anyURI should be a URL from which more contact information can be electronically retrieved. The xlink:title attribute with type "string" can be used to name this set of information. The other attributes in the xlink:simpleAttrs attribute group should not be used. Time period (including time zone) when individuals can contact the organization or individual. Supplemental instructions on how or when to contact the individual or organization. Reference to on-line resource from which data can be obtained. For OWS use in the service metadata document, the CI_OnlineResource class was XML encoded as the attributeGroup "xlink:simpleAttrs", as used in GML. Telephone numbers for contacting the responsible individual or organization. Telephone number by which individuals can speak to the responsible organization or individual. Telephone number of a facsimile machine for the responsible organization or individual. Location of the responsible individual or organization. Address line for the location. City of the location. State or province of the location. ZIP or other postal code. Country of the physical address. Address of the electronic mailbox of the responsible organization or individual. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/PaxHeaders.23451/owsAll.xsd0000644000000000000000000000007413114323025022130 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/owsAll.xsd0000644000175000001440000000171113114323025023072 0ustar00kalxasusers00000000000000 owsAll.xsd 2010-01-30 This XML Schema Document includes and imports, directly and indirectly, all the XML Schemas defined by the OWS Common Implemetation Specification. OWS is an OGC Standard. Copyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/PaxHeaders.23451/owsCommon.xsd0000644000000000000000000000007413114323025022650 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/owsCommon.xsd0000644000175000001440000002715013114323025023617 0ustar00kalxasusers00000000000000 owsCommon.xsd 2010-01-30 This XML Schema Document encodes various parameters and parameter types that can be used in OWS operation requests and responses. OWS is an OGC Standard. Copyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . XML encoded identifier of a standard MIME type, possibly a parameterized MIME type. Specification version for OWS operation. The string value shall contain one x.y.z "version" value (e.g., "2.1.3"). A version number shall contain three non-negative integers separated by decimal points, in the form "x.y.z". The integers y and z shall not exceed 99. Each version shall be for the Implementation Specification (document) and the associated XML Schemas to which requested operations will conform. An Implementation Specification version normally specifies XML Schemas against which an XML encoded operation response must conform and should be validated. See Version negotiation subclause for more information. This element either references or contains more metadata about the element that includes this element. To reference metadata stored remotely, at least the xlinks:href attribute in xlink:simpleAttrs shall be included. Either at least one of the attributes in xlink:simpleAttrs or a substitute for the AbstractMetaData element shall be included, but not both. An Implementation Specification can restrict the contents of this element to always be a reference or always contain metadata. (Informative: This element was adapted from the metaDataProperty element in GML 3.0.) Reference to metadata recorded elsewhere, either external to this XML document or within it. Whenever practical, the xlink:href attribute with type anyURI should include a URL from which this metadata can be electronically retrieved. Optional reference to the aspect of the element which includes this "metadata" element that this metadata provides more information about. Abstract element containing more metadata about the element that includes the containing "metadata" element. A specific server implementation, or an Implementation Specification, can define concrete elements in the AbstractMetaData substitution group. XML encoded minimum rectangular bounding box (or region) parameter, surrounding all the associated data. This type is adapted from the EnvelopeType of GML 3.1, with modified contents and documentation for encoding a MINIMUM size box SURROUNDING all associated data. Position of the bounding box corner at which the value of each coordinate normally is the algebraic minimum within this bounding box. In some cases, this position is normally displayed at the top, such as the top left for some image coordinates. For more information, see Subclauses 10.2.5 and C.13. Position of the bounding box corner at which the value of each coordinate normally is the algebraic maximum within this bounding box. In some cases, this position is normally displayed at the bottom, such as the bottom right for some image coordinates. For more information, see Subclauses 10.2.5 and C.13. Usually references the definition of a CRS, as specified in [OGC Topic 2]. Such a CRS definition can be XML encoded using the gml:CoordinateReferenceSystemType in [GML 3.1]. For well known references, it is not required that a CRS definition exist at the location the URI points to. If no anyURI value is included, the applicable CRS must be either: a) Specified outside the bounding box, but inside a data structure that includes this bounding box, as specified for a specific OWS use of this bounding box type. b) Fixed and specified in the Implementation Specification for a specific OWS use of the bounding box type. The number of dimensions in this CRS (the length of a coordinate sequence in this use of the PositionType). This number is specified by the CRS definition, but can also be specified here. Position instances hold the coordinates of a position in a coordinate reference system (CRS) referenced by the related "crs" attribute or elsewhere. For an angular coordinate axis that is physically continuous for multiple revolutions, but whose recorded values can be discontinuous, special conditions apply when the bounding box is continuous across the value discontinuity: a) If the bounding box is continuous clear around this angular axis, then ordinate values of minus and plus infinity shall be used. b) If the bounding box is continuous across the value discontinuity but is not continuous clear around this angular axis, then some non-normal value can be used if specified for a specific OWS use of the BoundingBoxType. For more information, see Subclauses 10.2.5 and C.13. This type is adapted from DirectPositionType and doubleList of GML 3.1. The adaptations include omission of all the attributes, since the needed information is included in the BoundingBoxType. XML encoded minimum rectangular bounding box (or region) parameter, surrounding all the associated data. This box is specialized for use with the 2D WGS 84 coordinate reference system with decimal values of longitude and latitude. This type is adapted from the general BoundingBoxType, with modified contents and documentation for use with the 2D WGS 84 coordinate reference system. Position of the bounding box corner at which the values of longitude and latitude normally are the algebraic minimums within this bounding box. For more information, see Subclauses 10.4.5 and C.13. Position of the bounding box corner at which the values of longitude and latitude normally are the algebraic minimums within this bounding box. For more information, see Subclauses 10.4.5 and C.13. This attribute can be included when considered useful. When included, this attribute shall reference the 2D WGS 84 coordinate reference system with longitude before latitude and decimal values of longitude and latitude. The number of dimensions in this CRS (the length of a coordinate sequence in this use of the PositionType). This number is specified by the CRS definition, but can also be specified here. Two-dimensional position instances hold the longitude and latitude coordinates of a position in the 2D WGS 84 coordinate reference system. The longitude value shall be listed first, followed by the latitude value, both in decimal degrees. Latitude values shall range from -90 to +90 degrees, and longitude values shall normally range from -180 to +180 degrees. For the longitude axis, special conditions apply when the bounding box is continuous across the +/- 180 degrees meridian longitude value discontinuity: a) If the bounding box is continuous clear around the Earth, then longitude values of minus and plus infinity shall be used. b) If the bounding box is continuous across the value discontinuity but is not continuous clear around the Earth, then some non-normal value can be used if specified for a specific OWS use of the WGS84BoundingBoxType. For more information, see Subclauses 10.4.5 and C.13. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/PaxHeaders.23451/owsDataIdentification.xsd0000644000000000000000000000007413114323025025143 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/owsDataIdentification.xsd0000644000175000001440000001476713114323025026124 0ustar00kalxasusers00000000000000 owsDataIdentification.xsd 2010-01-30 This XML Schema Document encodes the parts of the MD_DataIdentification class of ISO 19115 (OGC Abstract Specification Topic 11) which are expected to be used for most datasets. This Schema also encodes the parts of this class that are expected to be useful for other metadata. Both are expected to be used within the Contents section of OWS service metadata (Capabilities) documents. OWS is an OGC Standard. Copyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Human-readable descriptive information for the object it is included within. This type shall be extended if needed for specific OWS use to include additional metadata for each type of information. This type shall not be restricted for a specific OWS to change the multiplicity (or optionality) of some elements. General metadata identifying and describing a set of data. This type shall be extended if needed for each specific OWS to include additional metadata for each type of dataset. If needed, this type should first be restricted for each specific OWS to change the multiplicity (or optionality) of some elements. Optional unique identifier or name of this dataset. Unordered list of zero or more bounding boxes whose union describes the extent of this dataset. Unordered list of zero or more references to data formats supported for server outputs. Unordered list of zero or more available coordinate reference systems. Optional unordered list of additional metadata about this data(set). A list of optional metadata elements for this data identification could be specified in the Implementation Specification for this service. Unique identifier or name of this dataset. Reference to a format in which this data can be encoded and transferred. More specific parameter names should be used by specific OWS specifications wherever applicable. More than one such parameter can be included for different purposes. Coordinate reference system in which data from this data(set) or resource is available or supported. More specific parameter names should be used by specific OWS specifications wherever applicable. More than one such parameter can be included for different purposes. Access constraint applied to assure the protection of privacy or intellectual property, or any other restrictions on retrieving or using data from or otherwise using this server. The reserved value NONE (case insensitive) shall be used to mean no access constraints are imposed. Fees and terms for retrieving data from or otherwise using this server, including the monetary units as specified in ISO 4217. The reserved value NONE (case insensitive) shall be used to mean no fees or terms. Identifier of a language used by the data(set) contents. This language identifier shall be as specified in IETF RFC 1766. When this element is omitted, the language used is not identified. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/PaxHeaders.23451/owsExceptionReport.xsd0000644000000000000000000000007413114323025024552 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/owsExceptionReport.xsd0000644000175000001440000001066513114323025025524 0ustar00kalxasusers00000000000000 owsExceptionReport.xsd 2010-01-30 This XML Schema Document encodes the Exception Report response to all OWS operations. OWS is an OGC Standard. Copyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Report message returned to the client that requested any OWS operation when the server detects an error while processing that operation request. Unordered list of one or more Exception elements that each describes an error. These Exception elements shall be interpreted by clients as being independent of one another (not hierarchical). Specification version for OWS operation. The string value shall contain one x.y.z "version" value (e.g., "2.1.3"). A version number shall contain three non-negative integers separated by decimal points, in the form "x.y.z". The integers y and z shall not exceed 99. Each version shall be for the Implementation Specification (document) and the associated XML Schemas to which requested operations will conform. An Implementation Specification version normally specifies XML Schemas against which an XML encoded operation response must conform and should be validated. See Version negotiation subclause for more information. Identifier of the language used by all included exception text values. These language identifiers shall be as specified in IETF RFC 1766. When this attribute is omitted, the language used is not identified. An Exception element describes one detected error that a server chooses to convey to the client. Ordered sequence of text strings that describe this specific exception or error. The contents of these strings are left open to definition by each server implementation. A server is strongly encouraged to include at least one ExceptionText value, to provide more information about the detected error than provided by the exceptionCode. When included, multiple ExceptionText values shall provide hierarchical information about one detected error, with the most significant information listed first. A code representing the type of this exception, which shall be selected from a set of exceptionCode values specified for the specific service operation and server. When included, this locator shall indicate to the client where an exception was encountered in servicing the client's operation request. This locator should be included whenever meaningful information can be provided by the server. The contents of this locator will depend on the specific exceptionCode and OWS service, and shall be specified in the OWS Implementation Specification. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/PaxHeaders.23451/owsGetCapabilities.xsd0000644000000000000000000000007413114323025024451 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/owsGetCapabilities.xsd0000644000175000001440000001537213114323025025423 0ustar00kalxasusers00000000000000 owsGetCapabilities.xsd 2010-01-30 This XML Schema Document defines the GetCapabilities operation request and response XML elements and types, which are common to all OWSs. This XML Schema shall be edited by each OWS, for example, to specify a specific value for the "service" attribute. OWS is an OGC Standard. Copyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . XML encoded GetCapabilities operation response. This document provides clients with service metadata about a specific service instance, usually including metadata about the tightly-coupled data served. If the server does not implement the updateSequence parameter, the server shall always return the complete Capabilities document, without the updateSequence parameter. When the server implements the updateSequence parameter and the GetCapabilities operation request included the updateSequence parameter with the current value, the server shall return this element with only the "version" and "updateSequence" attributes. Otherwise, all optional elements shall be included or not depending on the actual value of the Contents parameter in the GetCapabilities operation request. This base type shall be extended by each specific OWS to include the additional contents needed. XML encoded GetCapabilities operation request. This operation allows clients to retrieve service metadata about a specific service instance. In this XML encoding, no "request" parameter is included, since the element name specifies the specific operation. This base type shall be extended by each specific OWS to include the additional required "service" attribute, with the correct value for that OWS. When omitted, server shall return latest supported version. When omitted or not supported by server, server shall return complete service metadata (Capabilities) document. When omitted or not supported by server, server shall return service metadata document using the MIME type "text/xml". When omitted or not supported by server, server shall return latest complete service metadata document. Service type identifier, where the string value is the OWS type abbreviation, such as "WMS" or "WFS". Prioritized sequence of one or more specification versions accepted by client, with preferred versions listed first. See Version negotiation subclause for more information. Unordered list of zero or more names of requested sections in complete service metadata document. Each Section value shall contain an allowed section name as specified by each OWS specification. See Sections parameter subclause for more information. Service metadata document version, having values that are "increased" whenever any change is made in service metadata document. Values are selected by each server, and are always opaque to clients. See updateSequence parameter use subclause for more information. Prioritized sequence of zero or more GetCapabilities operation response formats desired by client, with preferred formats listed first. Each response format shall be identified by its MIME type. See AcceptFormats parameter use subclause for more information. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/PaxHeaders.23451/owsOperationsMetadata.xsd0000644000000000000000000000007413114323025025204 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/owsOperationsMetadata.xsd0000644000175000001440000002450713114323025026156 0ustar00kalxasusers00000000000000 owsOperationsMetadata.xsd 2010-01-30 This XML Schema Document encodes the basic contents of the "OperationsMetadata" section of the GetCapabilities operation response, also known as the Capabilities XML document. OWS is an OGC Standard. Copyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Metadata about the operations and related abilities specified by this service and implemented by this server, including the URLs for operation requests. The basic contents of this section shall be the same for all OWS types, but individual services can add elements and/or change the optionality of optional elements. Metadata for unordered list of all the (requests for) operations that this server interface implements. The list of required and optional operations implemented shall be specified in the Implementation Specification for this service. Optional unordered list of parameter valid domains that each apply to one or more operations which this server interface implements. The list of required and optional parameter domain limitations shall be specified in the Implementation Specification for this service. Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this server. The list of required and optional constraints shall be specified in the Implementation Specification for this service. Individual software vendors and servers can use this element to provide metadata about any additional server abilities. Metadata for one operation that this server implements. Unordered list of Distributed Computing Platforms (DCPs) supported for this operation. At present, only the HTTP DCP is defined, so this element will appear only once. Optional unordered list of parameter domains that each apply to this operation which this server implements. If one of these Parameter elements has the same "name" attribute as a Parameter element in the OperationsMetadata element, this Parameter element shall override the other one for this operation. The list of required and optional parameter domain limitations for this operation shall be specified in the Implementation Specification for this service. Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this operation. If one of these Constraint elements has the same "name" attribute as a Constraint element in the OperationsMetadata element, this Constraint element shall override the other one for this operation. The list of required and optional constraints for this operation shall be specified in the Implementation Specification for this service. Optional unordered list of additional metadata about this operation and its' implementation. A list of required and optional metadata elements for this operation should be specified in the Implementation Specification for this service. (Informative: This metadata might specify the operation request parameters or provide the XML Schemas for the operation request.) Name or identifier of this operation (request) (for example, GetCapabilities). The list of required and optional operations implemented shall be specified in the Implementation Specification for this service. Information for one distributed Computing Platform (DCP) supported for this operation. At present, only the HTTP DCP is defined, so this element only includes the HTTP element. Connect point URLs for the HTTP Distributed Computing Platform (DCP). Normally, only one Get and/or one Post is included in this element. More than one Get and/or Post is allowed to support including alternative URLs for uses such as load balancing or backup. Connect point URL prefix and any constraints for the HTTP "Get" request method for this operation request. Connect point URL and any constraints for the HTTP "Post" request method for this operation request. Connect point URL and any constraints for this HTTP request method for this operation request. In the OnlineResourceType, the xlink:href attribute in the xlink:simpleAttrs attribute group shall be used to contain this URL. The other attributes in the xlink:simpleAttrs attribute group should not be used. Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this request method for this operation. If one of these Constraint elements has the same "name" attribute as a Constraint element in the OperationsMetadata or Operation element, this Constraint element shall override the other one for this operation. The list of required and optional constraints for this request method for this operation shall be specified in the Implementation Specification for this service. Valid domain (or set of values) of one parameter or other quantity used by this server. A non-parameter quantity may not be explicitly represented in the server software. (Informative: An example is the outputFormat parameter of a WFS. Each WFS server should provide a Parameter element for the outputFormat parameter that lists the supported output formats, such as GML2, GML3, etc. as the allowed "Value" elements.) Unordered list of all the valid values for this parameter or other quantity. For those parameters that contain a list or sequence of values, these values shall be for individual values in the list. The allowed set of values and the allowed server restrictions on that set of values shall be specified in the Implementation Specification for this service. Optional unordered list of additional metadata about this parameter. A list of required and optional metadata elements for this domain should be specified in the Implementation Specification for this service. (Informative: This metadata might specify the meanings of the valid values.) Name or identifier of this parameter or other quantity. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/PaxHeaders.23451/owsServiceIdentification.xsd0000644000000000000000000000007413114323025025672 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/owsServiceIdentification.xsd0000644000175000001440000000600013114323025026630 0ustar00kalxasusers00000000000000 owsServiceIdentification.xsd 2010-01-30 This XML Schema Document encodes the common "ServiceIdentification" section of the GetCapabilities operation response, known as the Capabilities XML document. This section encodes the SV_ServiceIdentification class of ISO 19119 (OGC Abstract Specification Topic 12). OWS is an OGC Standard. Copyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . General metadata for this specific server. This XML Schema of this section shall be the same for all OWS. A service type name from a registry of services. For example, the values of the codeSpace URI and name and code string may be "OGC" and "catalogue." This type name is normally used for machine-to-machine communication. Unordered list of one or more versions of this service type implemented by this server. This information is not adequate for version negotiation, and shall not be used for that purpose. If this element is omitted, no meaning is implied. Unordered list of access constraints applied to assure the protection of privacy or intellectual property, and any other restrictions on retrieving or using data from or otherwise using this server. The reserved value NONE (case insensitive) shall be used to mean no access constraints are imposed. If this element is omitted, no meaning is implied. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/PaxHeaders.23451/owsServiceProvider.xsd0000644000000000000000000000007413114323025024533 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.0.0/owsServiceProvider.xsd0000644000175000001440000000426213114323025025501 0ustar00kalxasusers00000000000000 owsServiceProvider.xsd 2010-01-30 This XML Schema Document encodes the common "ServiceProvider" section of the GetCapabilities operation response, known as the Capabilities XML document. This section encodes the SV_ServiceProvider class of ISO 19119 (OGC Abstract Specification Topic 12). OWS is an OGC Standard. Copyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Metadata about the organization that provides this specific service instance or server. A unique identifier for the service provider organization. Reference to the most relevant web site of the service provider. Information for contacting the service provider. The OnlineResource element within this ServiceContact element should not be used to reference a web site of the service provider. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/PaxHeaders.23451/1.1.00000644000000000000000000000007413114323025020073 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/0000755000175000001440000000000013114323025021112 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/ows19115subset.xsd0000644000000000000000000000007413114323025023327 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/ows19115subset.xsd0000644000175000001440000003202313114323025024271 0ustar00kalxasusers00000000000000 ows19115subset.xsd This XML Schema Document encodes the parts of ISO 19115 used by the common "ServiceIdentification" and "ServiceProvider" sections of the GetCapabilities operation response, known as the service metadata XML document. The parts encoded here are the MD_Keywords, CI_ResponsibleParty, and related classes. The UML package prefixes were omitted from XML names, and the XML element names were all capitalized, for consistency with other OWS Schemas. This document also provides a simple coding of text in multiple languages, simplified from Annex J of ISO 19115. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Text string with the language of the string identified as recommended in the XML 1.0 W3C Recommendation, section 2.12. Title of this resource, normally used for display to a human. Brief narrative description of this resource, normally used for display to a human. Unordered list of one or more commonly used or formalised word(s) or phrase(s) used to describe the subject. When needed, the optional "type" can name the type of the associated list of keywords that shall all have the same type. Also when needed, the codeSpace attribute of that "type" can reference the type name authority and/or thesaurus. If the xml:lang attribute is not included in a Keyword element, then no language is specified for that element unless specified by another means. All Keyword elements in the same Keywords element that share the same xml:lang attribute value represent different keywords in that language. For OWS use, the optional thesaurusName element was omitted as being complex information that could be referenced by the codeSpace attribute of the Type element. Name or code with an (optional) authority. If the codeSpace attribute is present, its value shall reference a dictionary, thesaurus, or authority for the name or code, such as the organisation who assigned the value, or the dictionary from which it is taken. Type copied from basicTypes.xsd of GML 3 with documentation edited, for possible use outside the ServiceIdentification section of a service metadata document. Identification of, and means of communication with, person(s) responsible for the resource(s). For OWS use in the ServiceProvider section of a service metadata document, the optional organizationName element was removed, since this type is always used with the ProviderName element which provides that information. The optional individualName element was made mandatory, since either the organizationName or individualName element is mandatory. The mandatory "role" element was changed to optional, since no clear use of this information is known in the ServiceProvider section. Identification of, and means of communication with, person responsible for the server. At least one of IndividualName, OrganisationName, or PositionName shall be included. Identification of, and means of communication with, person responsible for the server. For OWS use in the ServiceProvider section of a service metadata document, the optional organizationName element was removed, since this type is always used with the ProviderName element which provides that information. The mandatory "role" element was changed to optional, since no clear use of this information is known in the ServiceProvider section. Name of the responsible person: surname, given name, title separated by a delimiter. Name of the responsible organization. Role or position of the responsible person. Function performed by the responsible party. Possible values of this Role shall include the values and the meanings listed in Subclause B.5.5 of ISO 19115:2003. Address of the responsible party. Information required to enable contact with the responsible person and/or organization. For OWS use in the service metadata document, the optional hoursOfService and contactInstructions elements were retained, as possibly being useful in the ServiceProvider section. Telephone numbers at which the organization or individual may be contacted. Physical and email address at which the organization or individual may be contacted. On-line information that can be used to contact the individual or organization. OWS specifics: The xlink:href attribute in the xlink:simpleAttrs attribute group shall be used to reference this resource. Whenever practical, the xlink:href attribute with type anyURI should be a URL from which more contact information can be electronically retrieved. The xlink:title attribute with type "string" can be used to name this set of information. The other attributes in the xlink:simpleAttrs attribute group should not be used. Time period (including time zone) when individuals can contact the organization or individual. Supplemental instructions on how or when to contact the individual or organization. Reference to on-line resource from which data can be obtained. For OWS use in the service metadata document, the CI_OnlineResource class was XML encoded as the attributeGroup "xlink:simpleAttrs", as used in GML. Telephone numbers for contacting the responsible individual or organization. Telephone number by which individuals can speak to the responsible organization or individual. Telephone number of a facsimile machine for the responsible organization or individual. Location of the responsible individual or organization. Address line for the location. City of the location. State or province of the location. ZIP or other postal code. Country of the physical address. Address of the electronic mailbox of the responsible organization or individual. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsAll.xsd0000644000000000000000000000007413114323025022131 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsAll.xsd0000644000175000001440000000206313114323025023074 0ustar00kalxasusers00000000000000 owsAll.xsd This XML Schema Document includes and imports, directly and indirectly, all the XML Schemas defined by the OWS Common Implemetation Specification. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsCommon.xsd0000644000000000000000000000007413114323025022651 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsCommon.xsd0000644000175000001440000002724513114323025023625 0ustar00kalxasusers00000000000000 owsCommon.xsd This XML Schema Document encodes various parameters and parameter types that can be used in OWS operation requests and responses. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . XML encoded identifier of a standard MIME type, possibly a parameterized MIME type. Specification version for OWS operation. The string value shall contain one x.y.z "version" value (e.g., "2.1.3"). A version number shall contain three non-negative integers separated by decimal points, in the form "x.y.z". The integers y and z shall not exceed 99. Each version shall be for the Implementation Specification (document) and the associated XML Schemas to which requested operations will conform. An Implementation Specification version normally specifies XML Schemas against which an XML encoded operation response must conform and should be validated. See Version negotiation subclause for more information. This element either references or contains more metadata about the element that includes this element. To reference metadata stored remotely, at least the xlinks:href attribute in xlink:simpleAttrs shall be included. Either at least one of the attributes in xlink:simpleAttrs or a substitute for the AbstractMetaData element shall be included, but not both. An Implementation Specification can restrict the contents of this element to always be a reference or always contain metadata. (Informative: This element was adapted from the metaDataProperty element in GML 3.0.) Reference to metadata recorded elsewhere, either external to this XML document or within it. Whenever practical, the xlink:href attribute with type anyURI should include a URL from which this metadata can be electronically retrieved. Optional reference to the aspect of the element which includes this "metadata" element that this metadata provides more information about. Abstract element containing more metadata about the element that includes the containing "metadata" element. A specific server implementation, or an Implementation Specification, can define concrete elements in the AbstractMetaData substitution group. XML encoded minimum rectangular bounding box (or region) parameter, surrounding all the associated data. This type is adapted from the EnvelopeType of GML 3.1, with modified contents and documentation for encoding a MINIMUM size box SURROUNDING all associated data. Position of the bounding box corner at which the value of each coordinate normally is the algebraic minimum within this bounding box. In some cases, this position is normally displayed at the top, such as the top left for some image coordinates. For more information, see Subclauses 10.2.5 and C.13. Position of the bounding box corner at which the value of each coordinate normally is the algebraic maximum within this bounding box. In some cases, this position is normally displayed at the bottom, such as the bottom right for some image coordinates. For more information, see Subclauses 10.2.5 and C.13. Usually references the definition of a CRS, as specified in [OGC Topic 2]. Such a CRS definition can be XML encoded using the gml:CoordinateReferenceSystemType in [GML 3.1]. For well known references, it is not required that a CRS definition exist at the location the URI points to. If no anyURI value is included, the applicable CRS must be either: a) Specified outside the bounding box, but inside a data structure that includes this bounding box, as specified for a specific OWS use of this bounding box type. b) Fixed and specified in the Implementation Specification for a specific OWS use of the bounding box type. The number of dimensions in this CRS (the length of a coordinate sequence in this use of the PositionType). This number is specified by the CRS definition, but can also be specified here. Position instances hold the coordinates of a position in a coordinate reference system (CRS) referenced by the related "crs" attribute or elsewhere. For an angular coordinate axis that is physically continuous for multiple revolutions, but whose recorded values can be discontinuous, special conditions apply when the bounding box is continuous across the value discontinuity: a) If the bounding box is continuous clear around this angular axis, then ordinate values of minus and plus infinity shall be used. b) If the bounding box is continuous across the value discontinuity but is not continuous clear around this angular axis, then some non-normal value can be used if specified for a specific OWS use of the BoundingBoxType. For more information, see Subclauses 10.2.5 and C.13. This type is adapted from DirectPositionType and doubleList of GML 3.1. The adaptations include omission of all the attributes, since the needed information is included in the BoundingBoxType. XML encoded minimum rectangular bounding box (or region) parameter, surrounding all the associated data. This box is specialized for use with the 2D WGS 84 coordinate reference system with decimal values of longitude and latitude. This type is adapted from the general BoundingBoxType, with modified contents and documentation for use with the 2D WGS 84 coordinate reference system. Position of the bounding box corner at which the values of longitude and latitude normally are the algebraic minimums within this bounding box. For more information, see Subclauses 10.4.5 and C.13. Position of the bounding box corner at which the values of longitude and latitude normally are the algebraic minimums within this bounding box. For more information, see Subclauses 10.4.5 and C.13. This attribute can be included when considered useful. When included, this attribute shall reference the 2D WGS 84 coordinate reference system with longitude before latitude and decimal values of longitude and latitude. The number of dimensions in this CRS (the length of a coordinate sequence in this use of the PositionType). This number is specified by the CRS definition, but can also be specified here. Two-dimensional position instances hold the longitude and latitude coordinates of a position in the 2D WGS 84 coordinate reference system. The longitude value shall be listed first, followed by the latitude value, both in decimal degrees. Latitude values shall range from -90 to +90 degrees, and longitude values shall normally range from -180 to +180 degrees. For the longitude axis, special conditions apply when the bounding box is continuous across the +/- 180 degrees meridian longitude value discontinuity: a) If the bounding box is continuous clear around the Earth, then longitude values of minus and plus infinity shall be used. b) If the bounding box is continuous across the value discontinuity but is not continuous clear around the Earth, then some non-normal value can be used if specified for a specific OWS use of the WGS84BoundingBoxType. For more information, see Subclauses 10.4.5 and C.13. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsContents.xsd0000644000000000000000000000007413114323025023216 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsContents.xsd0000644000175000001440000001551513114323025024167 0ustar00kalxasusers00000000000000 owsContents.xsd This XML Schema Document encodes the typical Contents section of an OWS service metadata (Capabilities) document. This Schema can be built upon to define the Contents section for a specific OWS. If the ContentsBaseType in this XML Schema cannot be restricted and extended to define the Contents section for a specific OWS, all other relevant parts defined in owsContents.xsd shall be used by the "ContentsType" in the wxsContents.xsd prepared for the specific OWS. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Contents of typical Contents section of an OWS service metadata (Capabilities) document. This type shall be extended and/or restricted if needed for specific OWS use to include the specific metadata needed. Unordered set of summary descriptions for the datasets available from this OWS server. This set shall be included unless another source is referenced and all this metadata is available from that source. Unordered set of references to other sources of metadata describing the coverage offerings available from this server. Reference to a source of metadata describing coverage offerings available from this server. This parameter can reference a catalogue server from which dataset metadata is available. This ability is expected to be used by servers with thousands or millions of datasets, for which searching a catalogue is more feasible than fetching a long Capabilities XML document. When no DatasetDescriptionSummaries are included, and one or more catalogue servers are referenced, this set of catalogues shall contain current metadata summaries for all the datasets currently available from this OWS server, with the metadata for each such dataset referencing this OWS server. Typical dataset metadata in typical Contents section of an OWS service metadata (Capabilities) document. This type shall be extended and/or restricted if needed for specific OWS use, to include the specific Dataset description metadata needed. Unordered list of zero or more minimum bounding rectangles surrounding coverage data, using the WGS 84 CRS with decimal degrees and longitude before latitude. If no WGS 84 bounding box is recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall apply to this coverage. If WGS 84 bounding box(es) are recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall be ignored. For each lowest-level coverage in a hierarchy, at least one applicable WGS84BoundingBox shall be either recorded or inherited, to simplify searching for datasets that might overlap a specified region. If multiple WGS 84 bounding boxes are included, this shall be interpreted as the union of the areas of these bounding boxes. Unambiguous identifier or name of this coverage, unique for this server. Unordered list of zero or more minimum bounding rectangles surrounding coverage data, in AvailableCRSs. Zero or more BoundingBoxes are allowed in addition to one or more WGS84BoundingBoxes to allow more precise specification of the Dataset area in AvailableCRSs. These Bounding Boxes shall not use any CRS not listed as an AvailableCRS. However, an AvailableCRS can be listed without a corresponding Bounding Box. If no such bounding box is recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall apply to this coverage. If such bounding box(es) are recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall be ignored. If multiple bounding boxes are included with the same CRS, this shall be interpreted as the union of the areas of these bounding boxes. Optional unordered list of additional metadata about this dataset. A list of optional metadata elements for this dataset description could be specified in the Implementation Specification for this service. Metadata describing zero or more unordered subsidiary datasets available from this server. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsDataIdentification.xsd0000644000000000000000000000007413114323025025144 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsDataIdentification.xsd0000644000175000001440000001676713114323025026127 0ustar00kalxasusers00000000000000 owsDataIdentification.xsd This XML Schema Document encodes the parts of the MD_DataIdentification class of ISO 19115 (OGC Abstract Specification Topic 11) which are expected to be used for most datasets. This Schema also encodes the parts of this class that are expected to be useful for other metadata. Both may be used within the Contents section of OWS service metadata (Capabilities) documents. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Human-readable descriptive information for the object it is included within. This type shall be extended if needed for specific OWS use to include additional metadata for each type of information. This type shall not be restricted for a specific OWS to change the multiplicity (or optionality) of some elements. If the xml:lang attribute is not included in a Title, Abstract or Keyword element, then no language is specified for that element unless specified by another means. All Title, Abstract and Keyword elements in the same Description that share the same xml:lang attribute value represent the description of the parent object in that language. Multiple Title or Abstract elements shall not exist in the same Description with the same xml:lang attribute value unless otherwise specified. Basic metadata identifying and describing a set of data. Optional unique identifier or name of this dataset. Optional unordered list of additional metadata about this data(set). A list of optional metadata elements for this data identification could be specified in the Implementation Specification for this service. Extended metadata identifying and describing a set of data. This type shall be extended if needed for each specific OWS to include additional metadata for each type of dataset. If needed, this type should first be restricted for each specific OWS to change the multiplicity (or optionality) of some elements. Unordered list of zero or more bounding boxes whose union describes the extent of this dataset. Unordered list of zero or more references to data formats supported for server outputs. Unordered list of zero or more available coordinate reference systems. Unique identifier or name of this dataset. Reference to a format in which this data can be encoded and transferred. More specific parameter names should be used by specific OWS specifications wherever applicable. More than one such parameter can be included for different purposes. Coordinate reference system in which data from this data(set) or resource is available or supported. More specific parameter names should be used by specific OWS specifications wherever applicable. More than one such parameter can be included for different purposes. Access constraint applied to assure the protection of privacy or intellectual property, or any other restrictions on retrieving or using data from or otherwise using this server. The reserved value NONE (case insensitive) shall be used to mean no access constraints are imposed. Fees and terms for retrieving data from or otherwise using this server, including the monetary units as specified in ISO 4217. The reserved value NONE (case insensitive) shall be used to mean no fees or terms. Identifier of a language used by the data(set) contents. This language identifier shall be as specified in IETF RFC 4646. When this element is omitted, the language used is not identified. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsDomainType.xsd0000644000000000000000000000007413114323025023472 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsDomainType.xsd0000644000175000001440000003402413114323025024437 0ustar00kalxasusers00000000000000 owsDomainType.xsd This XML Schema Document encodes the allowed values (or domain) of a quantity, often for an input or output parameter to an OWS. Such a parameter is sometimes called a variable, quantity, literal, or typed literal. Such a parameter can use one of many data types, including double, integer, boolean, string, or URI. The allowed values can also be encoded for a quantity that is not explicit or not transferred, but is constrained by a server implementation. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Valid domain (or allowed set of values) of one quantity, with its name or identifier. Name or identifier of this quantity. Valid domain (or allowed set of values) of one quantity, with needed metadata but without a quantity name or identifier. Optional default value for this quantity, which should be included when this quantity has a default value. Meaning metadata should be referenced or included for each quantity. This data type metadata should be referenced or included for each quantity. Unit of measure, which should be included when this set of PossibleValues has units or a more complete reference system. Optional unordered list of other metadata about this quantity. A list of required and optional other metadata elements for this quantity should be specified in the Implementation Specification for this service. Specifies the possible values of this quantity. Specifies that any value is allowed for this parameter. Specifies that no values are allowed for this parameter or quantity. Reference to externally specified list of all the valid values and/or ranges of values for this quantity. (Informative: This element was simplified from the metaDataProperty element in GML 3.0.) Human-readable name of the list of values provided by the referenced document. Can be empty string when this list has no name. Indicates that this quantity has units or a reference system, and identifies the unit or reference system used by the AllowedValues or ValuesReference. Identifier of unit of measure of this set of values. Should be included then this set of values has units (and not a more complete reference system). Identifier of reference system used by this set of values. Should be included then this set of values has a reference system (not just units). List of all the valid values and/or ranges of values for this quantity. For numeric quantities, signed values should be ordered from negative infinity to positive infinity. A single value, encoded as a string. This type can be used for one value, for a spacing between allowed values, or for the default value of a parameter. The default value for a quantity for which multiple values are allowed. A range of values of a numeric parameter. This range can be continuous or discrete, defined by a fixed spacing between adjacent valid values. If the MinimumValue or MaximumValue is not included, there is no value limit in that direction. Inclusion of the specified minimum and maximum values in the range shall be defined by the rangeClosure. Shall be included when the allowed values are NOT continuous in this range. Shall not be included when the allowed values are continuous in this range. Shall be included unless the default value applies. Minimum value of this numeric parameter. Maximum value of this numeric parameter. The regular distance or spacing between the allowed values in a range. Specifies which of the minimum and maximum values are included in the range. Note that plus and minus infinity are considered closed bounds. The specified minimum and maximum values are included in this range. The specified minimum and maximum values are NOT included in this range. The specified minimum value is NOT included in this range, and the specified maximum value IS included in this range. The specified minimum value IS included in this range, and the specified maximum value is NOT included in this range. References metadata about a quantity, and provides a name for this metadata. (Informative: This element was simplified from the metaDataProperty element in GML 3.0.) Human-readable name of the metadata described by associated referenced document. Reference to data or metadata recorded elsewhere, either external to this XML document or within it. Whenever practical, this attribute should be a URL from which this metadata can be electronically retrieved. Alternately, this attribute can reference a URN for well-known metadata. For example, such a URN could be a URN defined in the "ogc" URN namespace. Definition of the meaning or semantics of this set of values. This Meaning can provide more specific, complete, precise, machine accessible, and machine understandable semantics about this quantity, relative to other available semantic information. For example, other semantic information is often provided in "documentation" elements in XML Schemas or "description" elements in GML objects. Definition of the data type of this set of values. In this case, the xlink:href attribute can reference a URN for a well-known data type. For example, such a URN could be a data type identification URN defined in the "ogc" URN namespace. Definition of the reference system used by this set of values, including the unit of measure whenever applicable (as is normal). In this case, the xlink:href attribute can reference a URN for a well-known reference system, such as for a coordinate reference system (CRS). For example, such a URN could be a CRS identification URN defined in the "ogc" URN namespace. Definition of the unit of measure of this set of values. In this case, the xlink:href attribute can reference a URN for a well-known unit of measure (uom). For example, such a URN could be a UOM identification URN defined in the "ogc" URN namespace. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsExceptionReport.xsd0000644000000000000000000000007413114323025024553 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsExceptionReport.xsd0000644000175000001440000001145313114323025025521 0ustar00kalxasusers00000000000000 owsExceptionReport.xsd This XML Schema Document encodes the Exception Report response to all OWS operations. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Report message returned to the client that requested any OWS operation when the server detects an error while processing that operation request. Unordered list of one or more Exception elements that each describes an error. These Exception elements shall be interpreted by clients as being independent of one another (not hierarchical). Specification version for OWS operation. The string value shall contain one x.y.z "version" value (e.g., "2.1.3"). A version number shall contain three non-negative integers separated by decimal points, in the form "x.y.z". The integers y and z shall not exceed 99. Each version shall be for the Implementation Specification (document) and the associated XML Schemas to which requested operations will conform. An Implementation Specification version normally specifies XML Schemas against which an XML encoded operation response must conform and should be validated. See Version negotiation subclause for more information. Identifier of the language used by all included exception text values. These language identifiers shall be as specified in IETF RFC 4646. When this attribute is omitted, the language used is not identified. An Exception element describes one detected error that a server chooses to convey to the client. Ordered sequence of text strings that describe this specific exception or error. The contents of these strings are left open to definition by each server implementation. A server is strongly encouraged to include at least one ExceptionText value, to provide more information about the detected error than provided by the exceptionCode. When included, multiple ExceptionText values shall provide hierarchical information about one detected error, with the most significant information listed first. A code representing the type of this exception, which shall be selected from a set of exceptionCode values specified for the specific service operation and server. When included, this locator shall indicate to the client where an exception was encountered in servicing the client's operation request. This locator should be included whenever meaningful information can be provided by the server. The contents of this locator will depend on the specific exceptionCode and OWS service, and shall be specified in the OWS Implementation Specification. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsGetCapabilities.xsd0000644000000000000000000000007413114323025024452 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsGetCapabilities.xsd0000644000175000001440000001613313114323025025420 0ustar00kalxasusers00000000000000 owsGetCapabilities.xsd This XML Schema Document defines the GetCapabilities operation request and response XML elements and types, which are common to all OWSs. This XML Schema shall be edited by each OWS, for example, to specify a specific value for the "service" attribute. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . XML encoded GetCapabilities operation response. This document provides clients with service metadata about a specific service instance, usually including metadata about the tightly-coupled data served. If the server does not implement the updateSequence parameter, the server shall always return the complete Capabilities document, without the updateSequence parameter. When the server implements the updateSequence parameter and the GetCapabilities operation request included the updateSequence parameter with the current value, the server shall return this element with only the "version" and "updateSequence" attributes. Otherwise, all optional elements shall be included or not depending on the actual value of the Contents parameter in the GetCapabilities operation request. This base type shall be extended by each specific OWS to include the additional contents needed. Service metadata document version, having values that are "increased" whenever any change is made in service metadata document. Values are selected by each server, and are always opaque to clients. When not supported by server, server shall not return this attribute. XML encoded GetCapabilities operation request. This operation allows clients to retrieve service metadata about a specific service instance. In this XML encoding, no "request" parameter is included, since the element name specifies the specific operation. This base type shall be extended by each specific OWS to include the additional required "service" attribute, with the correct value for that OWS. When omitted, server shall return latest supported version. When omitted or not supported by server, server shall return complete service metadata (Capabilities) document. When omitted or not supported by server, server shall return service metadata document using the MIME type "text/xml". When omitted or not supported by server, server shall return latest complete service metadata document. Service type identifier, where the string value is the OWS type abbreviation, such as "WMS" or "WFS". Prioritized sequence of one or more specification versions accepted by client, with preferred versions listed first. See Version negotiation subclause for more information. Unordered list of zero or more names of requested sections in complete service metadata document. Each Section value shall contain an allowed section name as specified by each OWS specification. See Sections parameter subclause for more information. Service metadata document version, having values that are "increased" whenever any change is made in service metadata document. Values are selected by each server, and are always opaque to clients. See updateSequence parameter use subclause for more information. Prioritized sequence of zero or more GetCapabilities operation response formats desired by client, with preferred formats listed first. Each response format shall be identified by its MIME type. See AcceptFormats parameter use subclause for more information. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsGetResourceByID.xsd0000644000000000000000000000007413114323025024360 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsGetResourceByID.xsd0000644000175000001440000000633113114323025025325 0ustar00kalxasusers00000000000000 owsGetResourceByID.xsd This XML Schema Document encodes the GetResourceByID operation request message. This typical operation is specified as a base for profiling in specific OWS specifications. For information on the allowed changes and limitations in such profiling, see Subclause 9.4.1 of the OWS Common specification. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . XML encoded GetResourceByID operation response. The complexType used by this element shall be specified by each specific OWS. Request to a service to perform the GetResourceByID operation. This operation allows a client to retrieve one or more identified resources, including datasets and resources that describe datasets or parameters. In this XML encoding, no "request" parameter is included, since the element name specifies the specific operation. Unordered list of zero or more resource identifiers. These identifiers can be listed in the Contents section of the service metadata (Capabilities) document. For more information on this parameter, see Subclause 9.4.2.1 of the OWS Common specification. Optional reference to the data format to be used for response to this operation request. This element shall be included when multiple output formats are available for the selected resource(s), and the client desires a format other than the specified default, if any. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsInputOutputData.xsd0000644000000000000000000000007413114323025024533 xustar0030 atime=1496426292.488636048 30 ctime=1496426292.488636048 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsInputOutputData.xsd0000644000175000001440000001013013114323025025470 0ustar00kalxasusers00000000000000 owsInputOutputData.xsd This XML Schema Document specifies types and elements for input and output of operation data, allowing including multiple data items with each data item either included or referenced. The contents of each type and element specified here can be restricted and/or extended for each use in a specific OWS specification. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Response from an OWS operation, allowing including multiple output data items with each item either included or referenced. This OperationResponse element, or an element using the ManifestType with a more specific element name, shall be used whenever applicable for responses from OWS operations. This element is specified for use where the ManifestType contents are needed for an operation response, but the Manifest element name is not fully applicable. This element or the ManifestType shall be used instead of using the ows:ReferenceType proposed in OGC 04-105. Input data in a XML-encoded OWS operation request, allowing including multiple data items with each data item either included or referenced. This InputData element, or an element using the ManifestType with a more-specific element name (TBR), shall be used whenever applicable within XML-encoded OWS operation requests. Complete reference to a remote resource that needs to be retrieved from an OWS using an XML-encoded operation request. This element shall be used, within an InputData or Manifest element that is used for input data, when that input data needs to be retrieved from another web service using a XML-encoded OWS operation request. This element shall not be used for local payload input data or for requesting the resource from a web server using HTTP Get. The XML-encoded operation request message to be sent to request this input data from another web server using HTTP Post. Reference to the XML-encoded operation request message to be sent to request this input data from another web server using HTTP Post. The referenced message shall be attached to the same message (using the cid scheme), or be accessible using a URL. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsManifest.xsd0000644000000000000000000000007413114323025023167 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsManifest.xsd0000644000175000001440000001441513114323025024136 0ustar00kalxasusers00000000000000 owsManifest.xsd This XML Schema Document specifies types and elements for document or resource references and for package manifests that contain multiple references. The contents of each type and element specified here can be restricted and/or extended for each use in a specific OWS specification. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Base for a reference to a remote or local resource. This type contains only a restricted and annotated set of the attributes from the xlink:simpleAttrs attributeGroup. Reference to a remote resource or local payload. A remote resource is typically addressed by a URL. For a local payload (such as a multipart mime message), the xlink:href must start with the prefix cid:. Reference to a resource that describes the role of this reference. When no value is supplied, no particular role value is to be inferred. Although allowed, this attribute is not expected to be useful in this application of xlink:simpleAttrs. Describes the meaning of the referenced resource in a human-readable fashion. Although allowed, this attribute is not expected to be useful in this application of xlink:simpleAttrs. Although allowed, this attribute is not expected to be useful in this application of xlink:simpleAttrs. Complete reference to a remote or local resource, allowing including metadata about that resource. Optional unique identifier of the referenced resource. The format of the referenced resource. This element is omitted when the mime type is indicated in the http header of the reference. Optional unordered list of additional metadata about this resource. A list of optional metadata elements for this ReferenceType could be specified in the Implementation Specification for each use of this type in a specific OWS. Logical group of one or more references to remote and/or local resources, allowing including metadata about that group. A Group can be used instead of a Manifest that can only contain one group. Unordered list of one or more groups of references to remote and/or local resources. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsOperationsMetadata.xsd0000644000000000000000000000007413114323025025205 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsOperationsMetadata.xsd0000644000175000001440000002133213114323025026150 0ustar00kalxasusers00000000000000 owsOperationsMetadata.xsd This XML Schema Document encodes the basic contents of the "OperationsMetadata" section of the GetCapabilities operation response, also known as the Capabilities XML document. OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Metadata about the operations and related abilities specified by this service and implemented by this server, including the URLs for operation requests. The basic contents of this section shall be the same for all OWS types, but individual services can add elements and/or change the optionality of optional elements. Metadata for unordered list of all the (requests for) operations that this server interface implements. The list of required and optional operations implemented shall be specified in the Implementation Specification for this service. Optional unordered list of parameter valid domains that each apply to one or more operations which this server interface implements. The list of required and optional parameter domain limitations shall be specified in the Implementation Specification for this service. Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this server. The list of required and optional constraints shall be specified in the Implementation Specification for this service. Individual software vendors and servers can use this element to provide metadata about any additional server abilities. Metadata for one operation that this server implements. Unordered list of Distributed Computing Platforms (DCPs) supported for this operation. At present, only the HTTP DCP is defined, so this element will appear only once. Optional unordered list of parameter domains that each apply to this operation which this server implements. If one of these Parameter elements has the same "name" attribute as a Parameter element in the OperationsMetadata element, this Parameter element shall override the other one for this operation. The list of required and optional parameter domain limitations for this operation shall be specified in the Implementation Specification for this service. Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this operation. If one of these Constraint elements has the same "name" attribute as a Constraint element in the OperationsMetadata element, this Constraint element shall override the other one for this operation. The list of required and optional constraints for this operation shall be specified in the Implementation Specification for this service. Optional unordered list of additional metadata about this operation and its' implementation. A list of required and optional metadata elements for this operation should be specified in the Implementation Specification for this service. (Informative: This metadata might specify the operation request parameters or provide the XML Schemas for the operation request.) Name or identifier of this operation (request) (for example, GetCapabilities). The list of required and optional operations implemented shall be specified in the Implementation Specification for this service. Information for one distributed Computing Platform (DCP) supported for this operation. At present, only the HTTP DCP is defined, so this element only includes the HTTP element. Connect point URLs for the HTTP Distributed Computing Platform (DCP). Normally, only one Get and/or one Post is included in this element. More than one Get and/or Post is allowed to support including alternative URLs for uses such as load balancing or backup. Connect point URL prefix and any constraints for the HTTP "Get" request method for this operation request. Connect point URL and any constraints for the HTTP "Post" request method for this operation request. Connect point URL and any constraints for this HTTP request method for this operation request. In the OnlineResourceType, the xlink:href attribute in the xlink:simpleAttrs attribute group shall be used to contain this URL. The other attributes in the xlink:simpleAttrs attribute group should not be used. Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this request method for this operation. If one of these Constraint elements has the same "name" attribute as a Constraint element in the OperationsMetadata or Operation element, this Constraint element shall override the other one for this operation. The list of required and optional constraints for this request method for this operation shall be specified in the Implementation Specification for this service. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsServiceIdentification.xsd0000644000000000000000000000007413114323025025673 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsServiceIdentification.xsd0000644000175000001440000000675713114323025026654 0ustar00kalxasusers00000000000000 owsServiceIdentification.xsd This XML Schema Document encodes the common "ServiceIdentification" section of the GetCapabilities operation response, known as the Capabilities XML document. This section encodes the SV_ServiceIdentification class of ISO 19119 (OGC Abstract Specification Topic 12). OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . General metadata for this specific server. This XML Schema of this section shall be the same for all OWS. A service type name from a registry of services. For example, the values of the codeSpace URI and name and code string may be "OGC" and "catalogue." This type name is normally used for machine-to-machine communication. Unordered list of one or more versions of this service type implemented by this server. This information is not adequate for version negotiation, and shall not be used for that purpose. Unordered list of identifiers of Application Profiles that are implemented by this server. This element should be included for each specified application profile implemented by this server. The identifier value should be specified by each Application Profile. If this element is omitted, no meaning is implied. If this element is omitted, no meaning is implied. Unordered list of access constraints applied to assure the protection of privacy or intellectual property, and any other restrictions on retrieving or using data from or otherwise using this server. The reserved value NONE (case insensitive) shall be used to mean no access constraints are imposed. When this element is omitted, no meaning is implied. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/PaxHeaders.23451/owsServiceProvider.xsd0000644000000000000000000000007413114323025024534 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/1.1.0/owsServiceProvider.xsd0000644000175000001440000000434113114323025025500 0ustar00kalxasusers00000000000000 owsServiceProvider.xsd This XML Schema Document encodes the common "ServiceProvider" section of the GetCapabilities operation response, known as the Capabilities XML document. This section encodes the SV_ServiceProvider class of ISO 19119 (OGC Abstract Specification Topic 12). OWS is an OGC Standard. Copyright (c) 2006,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Metadata about the organization that provides this specific service instance or server. A unique identifier for the service provider organization. Reference to the most relevant web site of the service provider. Information for contacting the service provider. The OnlineResource element within this ServiceContact element should not be used to reference a web site of the service provider. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/PaxHeaders.23451/2.00000644000000000000000000000007413114323025017735 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/0000755000175000001440000000000013114323025020754 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/ows19115subset.xsd0000644000000000000000000000007413114323025023171 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/ows19115subset.xsd0000644000175000001440000003554613114323025024150 0ustar00kalxasusers00000000000000 ows19115subset.xsd This XML Schema Document encodes the parts of ISO 19115 used by the common "ServiceIdentification" and "ServiceProvider" sections of the GetCapabilities operation response, known as the service metadata XML document. The parts encoded here are the MD_Keywords, CI_ResponsibleParty, and related classes. The UML package prefixes were omitted from XML names, and the XML element names were all capitalized, for consistency with other OWS Schemas. This document also provides a simple coding of text in multiple languages, simplified from Annex J of ISO 19115. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Text string with the language of the string identified as recommended in the XML 1.0 W3C Recommendation, section 2.12. Title of this resource, normally used for display to humans. Brief narrative description of this resource, normally used for display to humans. Unordered list of one or more commonly used or formalised word(s) or phrase(s) used to describe the subject. When needed, the optional "type" can name the type of the associated list of keywords that shall all have the same type. Also when needed, the codeSpace attribute of that "type" can reference the type name authority and/or thesaurus. If the xml:lang attribute is not included in a Keyword element, then no language is specified for that element unless specified by another means. All Keyword elements in the same Keywords element that share the same xml:lang attribute value represent different keywords in that language. For OWS use, the optional thesaurusName element was omitted as being complex information that could be referenced by the codeSpace attribute of the Type element. Name or code with an (optional) authority. If the codeSpace attribute is present, its value shall reference a dictionary, thesaurus, or authority for the name or code, such as the organisation who assigned the value, or the dictionary from which it is taken. Type copied from basicTypes.xsd of GML 3 with documentation edited, for possible use outside the ServiceIdentification section of a service metadata document. Identification of, and means of communication with, person(s) responsible for the resource(s). For OWS use in the ServiceProvider section of a service metadata document, the optional organizationName element was removed, since this type is always used with the ProviderName element which provides that information. The optional individualName element was made mandatory, since either the organizationName or individualName element is mandatory. The mandatory "role" element was changed to optional, since no clear use of this information is known in the ServiceProvider section. Identification of, and means of communication with, person responsible for the server. At least one of IndividualName, OrganisationName, or PositionName shall be included. Identification of, and means of communication with, person responsible for the server. For OWS use in the ServiceProvider section of a service metadata document, the optional organizationName element was removed, since this type is always used with the ProviderName element which provides that information. The mandatory "role" element was changed to optional, since no clear use of this information is known in the ServiceProvider section. Name of the responsible person: surname, given name, title separated by a delimiter. Name of the responsible organization. Role or position of the responsible person. Function performed by the responsible party. Possible values of this Role shall include the values and the meanings listed in Subclause B.5.5 of ISO 19115:2003. Address of the responsible party. Information required to enable contact with the responsible person and/or organization. For OWS use in the service metadata document, the optional hoursOfService and contactInstructions elements were retained, as possibly being useful in the ServiceProvider section. Telephone numbers at which the organization or individual may be contacted. Physical and email address at which the organization or individual may be contacted. On-line information that can be used to contact the individual or organization. OWS specifics: The xlink:href attribute in the xlink:simpleAttrs attribute group shall be used to reference this resource. Whenever practical, the xlink:href attribute with type anyURI should be a URL from which more contact information can be electronically retrieved. The xlink:title attribute with type "string" can be used to name this set of information. The other attributes in the xlink:simpleAttrs attribute group should not be used. Time period (including time zone) when individuals can contact the organization or individual. Supplemental instructions on how or when to contact the individual or organization. Reference to on-line resource from which data can be obtained. For OWS use in the service metadata document, the CI_OnlineResource class was XML encoded as the attributeGroup "xlink:simpleAttrs", as used in GML. Telephone numbers for contacting the responsible individual or organization. Telephone number by which individuals can speak to the responsible organization or individual. Telephone number of a facsimile machine for the responsible organization or individual. Location of the responsible individual or organization. Address line for the location. City of the location. State or province of the location. ZIP or other postal code. Country of the physical address. Address of the electronic mailbox of the responsible organization or individual. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsAdditionalParameters.xsd0000644000000000000000000000007413114323025025357 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsAdditionalParameters.xsd0000644000175000001440000001056213114323025026325 0ustar00kalxasusers00000000000000 owsAdditionalParameters.xsd This XML Schema Document encodes a new AdditionalParameters element that contains one or more AdditionalParameter elements, which each contain a specific parameter name and one or more values of that parameter. This AdditionalParameters element is substitutable for ows:Metadata, anywhere that element is allowed. The document also encodes a new nilValue element of a newly defined NilValue type that allows the specification of a nilReason attribute. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Unordered list of one or more AdditionalParameters. One additional metadata parameter. Name or identifier of this AdditionalParameter, unique for this OGC Web Service. Unordered list of one or more values of this AdditionalParameter. The value used (e.g. -255) to represent a nil value with optional nilReason and codeSpace attributes. An anyURI value which refers to a resource that describes the reason for the nil value pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsAll.xsd0000644000000000000000000000007413114323025021773 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsAll.xsd0000644000175000001440000000226513114323025022742 0ustar00kalxasusers00000000000000 owsAll.xsd This XML Schema Document includes and imports, directly or indirectly, all the XML Schemas defined by the OWS Common Implemetation Specification. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsCommon.xsd0000644000000000000000000000007413114323025022513 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsCommon.xsd0000644000175000001440000003222113114323025023455 0ustar00kalxasusers00000000000000 owsCommon.xsd This XML Schema Document encodes various parameters and parameter types that can be used in OWS operation requests and responses. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ XML encoded identifier of a standard MIME type, possibly a parameterized MIME type. Specification version for OWS operation. The string value shall contain one x.y.z "version" value (e.g., "2.1.3"). A version number shall contain three non-negative integers separated by decimal points, in the form "x.y.z". The integers y and z shall not exceed 99. Each version shall be for the Implementation Specification (document) and the associated XML Schemas to which requested operations will conform. An Implementation Specification version normally specifies XML Schemas against which an XML encoded operation response must conform and should be validated. See Version negotiation subclause for more information. This element either references or contains more metadata about the element that includes this element. To reference metadata stored remotely, at least the xlinks:href attribute in xlink:simpleAttrs shall be included. Either at least one of the attributes in xlink:simpleAttrs or a substitute for the AbstractMetaData element shall be included, but not both. An Implementation Specification can restrict the contents of this element to always be a reference or always contain metadata. (Informative: This element was adapted from the metaDataProperty element in GML 3.0.) Reference to metadata recorded elsewhere, either external to this XML document or within it. Whenever practical, the xlink:href attribute with type anyURI should include a URL from which this metadata can be electronically retrieved. Optional reference to the aspect of the element which includes this "metadata" element that this metadata provides more information about. Abstract element containing more metadata about the element that includes the containing "metadata" element. A specific server implementation, or an Implementation Specification, can define concrete elements in the AbstractMetaData substitution group. XML encoded minimum rectangular bounding box (or region) parameter, surrounding all the associated data. This type is adapted from the EnvelopeType of GML 3.1, with modified contents and documentation for encoding a MINIMUM size box SURROUNDING all associated data. Position of the bounding box corner at which the value of each coordinate normally is the algebraic minimum within this bounding box. In some cases, this position is normally displayed at the top, such as the top left for some image coordinates. For more information, see Subclauses 10.2.5 and C.13. Position of the bounding box corner at which the value of each coordinate normally is the algebraic maximum within this bounding box. In some cases, this position is normally displayed at the bottom, such as the bottom right for some image coordinates. For more information, see Subclauses 10.2.5 and C.13. Usually references the definition of a CRS, as specified in [OGC Topic 2]. Such a CRS definition can be XML encoded using the gml:CoordinateReferenceSystemType in [GML 3.1]. For well known references, it is not required that a CRS definition exist at the location the URI points to. If no anyURI value is included, the applicable CRS must be either: a) Specified outside the bounding box, but inside a data structure that includes this bounding box, as specified for a specific OWS use of this bounding box type. b) Fixed and specified in the Implementation Specification for a specific OWS use of the bounding box type. The number of dimensions in this CRS (the length of a coordinate sequence in this use of the PositionType). This number is specified by the CRS definition, but can also be specified here. Position instances hold the coordinates of a position in a coordinate reference system (CRS) referenced by the related "crs" attribute or elsewhere. For an angular coordinate axis that is physically continuous for multiple revolutions, but whose recorded values can be discontinuous, special conditions apply when the bounding box is continuous across the value discontinuity: a) If the bounding box is continuous clear around this angular axis, then ordinate values of minus and plus infinity shall be used. b) If the bounding box is continuous across the value discontinuity but is not continuous clear around this angular axis, then some non-normal value can be used if specified for a specific OWS use of the BoundingBoxType. For more information, see Subclauses 10.2.5 and C.13. This type is adapted from DirectPositionType and doubleList of GML 3.1. The adaptations include omission of all the attributes, since the needed information is included in the BoundingBoxType. XML encoded minimum rectangular bounding box (or region) parameter, surrounding all the associated data. This box is specialized for use with the 2D WGS 84 coordinate reference system with decimal values of longitude and latitude. This type is adapted from the general BoundingBoxType, with modified contents and documentation for use with the 2D WGS 84 coordinate reference system. Position of the bounding box corner at which the values of longitude and latitude normally are the algebraic minimums within this bounding box. For more information, see Subclauses 10.4.5 and C.13. Position of the bounding box corner at which the values of longitude and latitude normally are the algebraic minimums within this bounding box. For more information, see Subclauses 10.4.5 and C.13. This attribute can be included when considered useful. When included, this attribute shall reference the 2D WGS 84 coordinate reference system with longitude before latitude and decimal values of longitude and latitude. The number of dimensions in this CRS (the length of a coordinate sequence in this use of the PositionType). This number is specified by the CRS definition, but can also be specified here. Two-dimensional position instances hold the longitude and latitude coordinates of a position in the 2D WGS 84 coordinate reference system. The longitude value shall be listed first, followed by the latitude value, both in decimal degrees. Latitude values shall range from -90 to +90 degrees, and longitude values shall normally range from -180 to +180 degrees. For the longitude axis, special conditions apply when the bounding box is continuous across the +/- 180 degrees meridian longitude value discontinuity: a) If the bounding box is continuous clear around the Earth, then longitude values of minus and plus infinity shall be used. b) If the bounding box is continuous across the value discontinuity but is not continuous clear around the Earth, then some non-normal value can be used if specified for a specific OWS use of the WGS84BoundingBoxType. For more information, see Subclauses 10.4.5 and C.13. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsContents.xsd0000644000000000000000000000007413114323025023060 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsContents.xsd0000644000175000001440000001776413114323025024041 0ustar00kalxasusers00000000000000 owsContents.xsd This XML Schema Document encodes the typical Contents section of an OWS service metadata (Capabilities) document. This Schema can be built upon to define the Contents section for a specific OWS. If the ContentsBaseType in this XML Schema cannot be restricted and extended to define the Contents section for a specific OWS, all other relevant parts defined in owsContents.xsd shall be used by the "ContentsType" in the wxsContents.xsd prepared for the specific OWS. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ Contents of typical Contents section of an OWS service metadata (Capabilities) document. This type shall be extended and/or restricted if needed for specific OWS use to include the specific metadata needed. Unordered set of summary descriptions for the datasets available from this OWS server. This set shall be included unless another source is referenced and all this metadata is available from that source. Unordered set of references to other sources of metadata describing the coverage offerings available from this server. Reference to a source of metadata describing coverage offerings available from this server. This parameter can reference a catalogue server from which dataset metadata is available. This ability is expected to be used by servers with thousands or millions of datasets, for which searching a catalogue is more feasible than fetching a long Capabilities XML document. When no DatasetDescriptionSummaries are included, and one or more catalogue servers are referenced, this set of catalogues shall contain current metadata summaries for all the datasets currently available from this OWS server, with the metadata for each such dataset referencing this OWS server. Typical dataset metadata in typical Contents section of an OWS service metadata (Capabilities) document. This type shall be extended and/or restricted if needed for specific OWS use, to include the specific Dataset description metadata needed. Unordered list of zero or more minimum bounding rectangles surrounding coverage data, using the WGS 84 CRS with decimal degrees and longitude before latitude. If no WGS 84 bounding box is recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall apply to this coverage. If WGS 84 bounding box(es) are recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall be ignored. For each lowest-level coverage in a hierarchy, at least one applicable WGS84BoundingBox shall be either recorded or inherited, to simplify searching for datasets that might overlap a specified region. If multiple WGS 84 bounding boxes are included, this shall be interpreted as the union of the areas of these bounding boxes. Unambiguous identifier or name of this coverage, unique for this server. Unordered list of zero or more minimum bounding rectangles surrounding coverage data, in AvailableCRSs. Zero or more BoundingBoxes are allowed in addition to one or more WGS84BoundingBoxes to allow more precise specification of the Dataset area in AvailableCRSs. These Bounding Boxes shall not use any CRS not listed as an AvailableCRS. However, an AvailableCRS can be listed without a corresponding Bounding Box. If no such bounding box is recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall apply to this coverage. If such bounding box(es) are recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall be ignored. If multiple bounding boxes are included with the same CRS, this shall be interpreted as the union of the areas of these bounding boxes. Optional unordered list of additional metadata about this dataset. A list of optional metadata elements for this dataset description could be specified in the Implementation Specification for this service. Metadata describing zero or more unordered subsidiary datasets available from this server. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsDataIdentification.xsd0000644000000000000000000000007413114323025025006 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsDataIdentification.xsd0000644000175000001440000002140013114323025025745 0ustar00kalxasusers00000000000000 owsDataIdentification.xsd This XML Schema Document encodes the parts of the MD_DataIdentification class of ISO 19115 (OGC Abstract Specification Topic 11) which are expected to be used for most datasets. This Schema also encodes the parts of this class that are expected to be useful for other metadata. Both may be used within the Contents section of OWS service metadata (Capabilities) documents. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ Human-readable descriptive information for the object it is included within. This type shall be extended if needed for specific OWS use to include additional metadata for each type of information. This type shall not be restricted for a specific OWS to change the multiplicity (or optionality) of some elements. If the xml:lang attribute is not included in a Title, Abstract or Keyword element, then no language is specified for that element unless specified by another means. All Title, Abstract and Keyword elements in the same Description that share the same xml:lang attribute value represent the description of the parent object in that language. Multiple Title or Abstract elements shall not exist in the same Description with the same xml:lang attribute value unless otherwise specified. Basic metadata identifying and describing a set of data. Optional unique identifier or name of this dataset. Optional unordered list of additional metadata about this data(set). A list of optional metadata elements for this data identification could be specified in the Implementation Specification for this service. Extended metadata identifying and describing a set of data. This type shall be extended if needed for each specific OWS to include additional metadata for each type of dataset. If needed, this type should first be restricted for each specific OWS to change the multiplicity (or optionality) of some elements. Unordered list of zero or more bounding boxes whose union describes the extent of this dataset. Unordered list of zero or more references to data formats supported for server outputs. Unordered list of zero or more available coordinate reference systems. Unique identifier or name of this dataset. Reference to a format in which this data can be encoded and transferred. More specific parameter names should be used by specific OWS specifications wherever applicable. More than one such parameter can be included for different purposes. Coordinate reference system in which data from this data(set) or resource is available or supported. More specific parameter names should be used by specific OWS specifications wherever applicable. More than one such parameter can be included for different purposes. Access constraint applied to assure the protection of privacy or intellectual property, or any other restrictions on retrieving or using data from or otherwise using this server. The reserved value NONE (case insensitive) shall be used to mean no access constraints are imposed. Fees and terms for retrieving data from or otherwise using this server, including the monetary units as specified in ISO 4217. The reserved value NONE (case insensitive) shall be used to mean no fees or terms. Identifier of a language used by the data(set) contents. This language identifier shall be as specified in IETF RFC 4646. The language tags shall be either complete 5 character codes (e.g. "en-CA"), or abbreviated 2 character codes (e.g. "en"). In addition to the RFC 4646 codes, the server shall support the single special value "*" which is used to indicate "any language". pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsDomainType.xsd0000644000000000000000000000007413114323025023334 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsDomainType.xsd0000644000175000001440000003706113114323025024305 0ustar00kalxasusers00000000000000 owsDomainType.xsd This XML Schema Document encodes the allowed values (or domain) of a quantity, often for an input or output parameter to an OWS. Such a parameter is sometimes called a variable, quantity, literal, or typed literal. Such a parameter can use one of many data types, including double, integer, boolean, string, or URI. The allowed values can also be encoded for a quantity that is not explicit or not transferred, but is constrained by a server implementation. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ Valid domain (or allowed set of values) of one quantity, with its name or identifier. Name or identifier of this quantity. Valid domain (or allowed set of values) of one quantity, with needed metadata but without a quantity name or identifier. Optional default value for this quantity, which should be included when this quantity has a default value. Meaning metadata should be referenced or included for each quantity. This data type metadata should be referenced or included for each quantity. Unit of measure, which should be included when this set of PossibleValues has units or a more complete reference system. Optional unordered list of other metadata about this quantity. A list of required and optional other metadata elements for this quantity should be specified in the Implementation Specification for this service. Specifies the possible values of this quantity. Specifies that any value is allowed for this parameter. Specifies that no values are allowed for this parameter or quantity. Reference to externally specified list of all the valid values and/or ranges of values for this quantity. (Informative: This element was simplified from the metaDataProperty element in GML 3.0.) Human-readable name of the list of values provided by the referenced document. Can be empty string when this list has no name. Indicates that this quantity has units or a reference system, and identifies the unit or reference system used by the AllowedValues or ValuesReference. Identifier of unit of measure of this set of values. Should be included then this set of values has units (and not a more complete reference system). Identifier of reference system used by this set of values. Should be included then this set of values has a reference system (not just units). List of all the valid values and/or ranges of values for this quantity. For numeric quantities, signed values should be ordered from negative infinity to positive infinity. A single value, encoded as a string. This type can be used for one value, for a spacing between allowed values, or for the default value of a parameter. The default value for a quantity for which multiple values are allowed. A range of values of a numeric parameter. This range can be continuous or discrete, defined by a fixed spacing between adjacent valid values. If the MinimumValue or MaximumValue is not included, there is no value limit in that direction. Inclusion of the specified minimum and maximum values in the range shall be defined by the rangeClosure. Shall be included when the allowed values are NOT continuous in this range. Shall not be included when the allowed values are continuous in this range. Shall be included unless the default value applies. Minimum value of this numeric parameter. Maximum value of this numeric parameter. The regular distance or spacing between the allowed values in a range. Specifies which of the minimum and maximum values are included in the range. Note that plus and minus infinity are considered closed bounds. The specified minimum and maximum values are included in this range. The specified minimum and maximum values are NOT included in this range. The specified minimum value is NOT included in this range, and the specified maximum value IS included in this range. The specified minimum value IS included in this range, and the specified maximum value is NOT included in this range. References metadata about a quantity, and provides a name for this metadata. (Informative: This element was simplified from the metaDataProperty element in GML 3.0.) Human-readable name of the metadata described by associated referenced document. Reference to data or metadata recorded elsewhere, either external to this XML document or within it. Whenever practical, this attribute should be a URL from which this metadata can be electronically retrieved. Alternately, this attribute can reference a URN for well-known metadata. For example, such a URN could be a URN defined in the "ogc" URN namespace. Definition of the meaning or semantics of this set of values. This Meaning can provide more specific, complete, precise, machine accessible, and machine understandable semantics about this quantity, relative to other available semantic information. For example, other semantic information is often provided in "documentation" elements in XML Schemas or "description" elements in GML objects. Definition of the data type of this set of values. In this case, the xlink:href attribute can reference a URN for a well-known data type. For example, such a URN could be a data type identification URN defined in the "ogc" URN namespace. Definition of the reference system used by this set of values, including the unit of measure whenever applicable (as is normal). In this case, the xlink:href attribute can reference a URN for a well-known reference system, such as for a coordinate reference system (CRS). For example, such a URN could be a CRS identification URN defined in the "ogc" URN namespace. Definition of the unit of measure of this set of values. In this case, the xlink:href attribute can reference a URN for a well-known unit of measure (uom). For example, such a URN could be a UOM identification URN defined in the "ogc" URN namespace. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsExceptionReport.xsd0000644000000000000000000000007413114323025024415 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsExceptionReport.xsd0000644000175000001440000001301013114323025025352 0ustar00kalxasusers00000000000000 owsExceptionReport.xsd This XML Schema Document encodes the Exception Report response to all OWS operations. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Report message returned to the client that requested any OWS operation when the server detects an error while processing that operation request. Unordered list of one or more Exception elements that each describes an error. These Exception elements shall be interpreted by clients as being independent of one another (not hierarchical). Specification version for OWS operation. The string value shall contain one x.y.z "version" value (e.g., "2.1.3"). A version number shall contain three non-negative integers separated by decimal points, in the form "x.y.z". The integers y and z shall not exceed 99. Each version shall be for the Implementation Specification (document) and the associated XML Schemas to which requested operations will conform. An Implementation Specification version normally specifies XML Schemas against which an XML encoded operation response must conform and should be validated. See Version negotiation subclause for more information. Identifier of the language used by all included exception text values. These language identifiers shall be as specified in IETF RFC 4646. When this attribute is omitted, the language used is not identified. An Exception element describes one detected error that a server chooses to convey to the client. Ordered sequence of text strings that describe this specific exception or error. The contents of these strings are left open to definition by each server implementation. A server is strongly encouraged to include at least one ExceptionText value, to provide more information about the detected error than provided by the exceptionCode. When included, multiple ExceptionText values shall provide hierarchical information about one detected error, with the most significant information listed first. A code representing the type of this exception, which shall be selected from a set of exceptionCode values specified for the specific service operation and server. When included, this locator shall indicate to the client where an exception was encountered in servicing the client's operation request. This locator should be included whenever meaningful information can be provided by the server. The contents of this locator will depend on the specific exceptionCode and OWS service, and shall be specified in the OWS Implementation Specification. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsGetCapabilities.xsd0000644000000000000000000000007413114323025024314 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsGetCapabilities.xsd0000644000175000001440000002311413114323025025257 0ustar00kalxasusers00000000000000 owsGetCapabilities.xsd This XML Schema Document defines the GetCapabilities operation request and response XML elements and types, which are common to all OWSs. This XML Schema shall be edited by each OWS, for example, to specify a specific value for the "service" attribute. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . XML encoded GetCapabilities operation response. This document provides clients with service metadata about a specific service instance, usually including metadata about the tightly-coupled data served. If the server does not implement the updateSequence parameter, the server shall always return the complete Capabilities document, without the updateSequence parameter. When the server implements the updateSequence parameter and the GetCapabilities operation request included the updateSequence parameter with the current value, the server shall return this element with only the "version" and "updateSequence" attributes. Otherwise, all optional elements shall be included or not depending on the actual value of the Contents parameter in the GetCapabilities operation request. This base type shall be extended by each specific OWS to include the additional contents needed. The list of languages that this service is able to fully support. That is, if one of the listed languages is requested using the AcceptLanguages parameter in future requests to the server, all text strings contained in the response are guaranteed to be in that language. This list does not necessarily constitute a complete list of all languages that may be (at least partially) supported by the server. It only states the languages that are fully supported. If a server cannot guarantee full support of any particular language, it shall omit it from the list of supported languages in the capabilities document. Service metadata document version, having values that are "increased" whenever any change is made in service metadata document. Values are selected by each server, and are always opaque to clients. When not supported by server, server shall not return this attribute. XML encoded GetCapabilities operation request. This operation allows clients to retrieve service metadata about a specific service instance. In this XML encoding, no "request" parameter is included, since the element name specifies the specific operation. This base type shall be extended by each specific OWS to include the additional required "service" attribute, with the correct value for that OWS. When omitted, server shall return latest supported version. When omitted or not supported by server, server shall return complete service metadata (Capabilities) document. When omitted or not supported by server, server shall return service metadata document using the MIME type "text/xml". Ordered list of languages desired by the client for all human readable text in the response, in order of preference. For every element, the first matching language available from the server shall be present in the response. When omitted or not supported by server, server shall return latest complete service metadata document. Service type identifier, where the string value is the OWS type abbreviation, such as "WMS" or "WFS". Prioritized sequence of one or more specification versions accepted by client, with preferred versions listed first. See Version negotiation subclause for more information. Unordered list of zero or more names of requested sections in complete service metadata document. Each Section value shall contain an allowed section name as specified by each OWS specification. See Sections parameter subclause for more information. Service metadata document version, having values that are "increased" whenever any change is made in service metadata document. Values are selected by each server, and are always opaque to clients. See updateSequence parameter use subclause for more information. Prioritized sequence of zero or more GetCapabilities operation response formats desired by client, with preferred formats listed first. Each response format shall be identified by its MIME type. See AcceptFormats parameter use subclause for more information. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsGetResourceByID.xsd0000644000000000000000000000007413114323025024222 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsGetResourceByID.xsd0000644000175000001440000000713713114323025025174 0ustar00kalxasusers00000000000000 owsGetResourceByID.xsd This XML Schema Document encodes the GetResourceByID operation request message. This typical operation is specified as a base for profiling in specific OWS specifications. For information on the allowed changes and limitations in such profiling, see Subclause 9.4.1 of the OWS Common specification. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . XML encoded GetResourceByID operation response. The complexType used by this element shall be specified by each specific OWS. Request to a service to perform the GetResourceByID operation. This operation allows a client to retrieve one or more identified resources, including datasets and resources that describe datasets or parameters. In this XML encoding, no "request" parameter is included, since the element name specifies the specific operation. Unordered list of zero or more resource identifiers. These identifiers can be listed in the Contents section of the service metadata (Capabilities) document. For more information on this parameter, see Subclause 9.4.2.1 of the OWS Common specification. Optional reference to the data format to be used for response to this operation request. This element shall be included when multiple output formats are available for the selected resource(s), and the client desires a format other than the specified default, if any. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsInputOutputData.xsd0000644000000000000000000000007413114323025024375 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsInputOutputData.xsd0000644000175000001440000001110613114323025025336 0ustar00kalxasusers00000000000000 owsInputOutputData.xsd This XML Schema Document specifies types and elements for input and output of operation data, allowing including multiple data items with each data item either included or referenced. The contents of each type and element specified here can be restricted and/or extended for each use in a specific OWS specification. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Response from an OWS operation, allowing including multiple output data items with each item either included or referenced. This OperationResponse element, or an element using the ManifestType with a more specific element name, shall be used whenever applicable for responses from OWS operations. This element is specified for use where the ManifestType contents are needed for an operation response, but the Manifest element name is not fully applicable. This element or the ManifestType shall be used instead of using the ows:ReferenceType proposed in OGC 04-105. Input data in a XML-encoded OWS operation request, allowing including multiple data items with each data item either included or referenced. This InputData element, or an element using the ManifestType with a more-specific element name (TBR), shall be used whenever applicable within XML-encoded OWS operation requests. Complete reference to a remote resource that needs to be retrieved from an OWS using an XML-encoded operation request. This element shall be used, within an InputData or Manifest element that is used for input data, when that input data needs to be retrieved from another web service using a XML-encoded OWS operation request. This element shall not be used for local payload input data or for requesting the resource from a web server using HTTP Get. The XML-encoded operation request message to be sent to request this input data from another web server using HTTP Post. Reference to the XML-encoded operation request message to be sent to request this input data from another web server using HTTP Post. The referenced message shall be attached to the same message (using the cid scheme), or be accessible using a URL. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsManifest.xsd0000644000000000000000000000007413114323025023031 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsManifest.xsd0000644000175000001440000001642713114323025024005 0ustar00kalxasusers00000000000000 owsManifest.xsd This XML Schema Document specifies types and elements for document or resource references and for package manifests that contain multiple references. The contents of each type and element specified here can be restricted and/or extended for each use in a specific OWS specification. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Base for a reference to a remote or local resource. This type contains only a restricted and annotated set of the attributes from the xlink:simpleAttrs attributeGroup. Reference to a remote resource or local payload. A remote resource is typically addressed by a URL. For a local payload (such as a multipart mime message), the xlink:href must start with the prefix cid:. Reference to a resource that describes the role of this reference. When no value is supplied, no particular role value is to be inferred. Although allowed, this attribute is not expected to be useful in this application of xlink:simpleAttrs. Describes the meaning of the referenced resource in a human-readable fashion. Although allowed, this attribute is not expected to be useful in this application of xlink:simpleAttrs. Although allowed, this attribute is not expected to be useful in this application of xlink:simpleAttrs. Complete reference to a remote or local resource, allowing including metadata about that resource. Optional unique identifier of the referenced resource. The format of the referenced resource. This element is omitted when the mime type is indicated in the http header of the reference. Optional unordered list of additional metadata about this resource. A list of optional metadata elements for this ReferenceType could be specified in the Implementation Specification for each use of this type in a specific OWS. Logical group of one or more references to remote and/or local resources, allowing including metadata about that group. A Group can be used instead of a Manifest that can only contain one group. Unordered list of one or more groups of references to remote and/or local resources. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsOperationsMetadata.xsd0000644000000000000000000000007413114323025025047 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsOperationsMetadata.xsd0000644000175000001440000002440513114323025026016 0ustar00kalxasusers00000000000000 owsOperationsMetadata.xsd This XML Schema Document encodes the basic contents of the "OperationsMetadata" section of the GetCapabilities operation response, also known as the Capabilities XML document. OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Metadata about the operations and related abilities specified by this service and implemented by this server, including the URLs for operation requests. The basic contents of this section shall be the same for all OWS types, but individual services can add elements and/or change the optionality of optional elements. Metadata for unordered list of all the (requests for) operations that this server interface implements. The list of required and optional operations implemented shall be specified in the Implementation Specification for this service. Optional unordered list of parameter valid domains that each apply to one or more operations which this server interface implements. The list of required and optional parameter domain limitations shall be specified in the Implementation Specification for this service. Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this server. The list of required and optional constraints shall be specified in the Implementation Specification for this service. Individual software vendors and servers can use this element to provide metadata about any additional server abilities. Metadata for one operation that this server implements. Unordered list of Distributed Computing Platforms (DCPs) supported for this operation. At present, only the HTTP DCP is defined, so this element will appear only once. Optional unordered list of parameter domains that each apply to this operation which this server implements. If one of these Parameter elements has the same "name" attribute as a Parameter element in the OperationsMetadata element, this Parameter element shall override the other one for this operation. The list of required and optional parameter domain limitations for this operation shall be specified in the Implementation Specification for this service. Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this operation. If one of these Constraint elements has the same "name" attribute as a Constraint element in the OperationsMetadata element, this Constraint element shall override the other one for this operation. The list of required and optional constraints for this operation shall be specified in the Implementation Specification for this service. Optional unordered list of additional metadata about this operation and its' implementation. A list of required and optional metadata elements for this operation should be specified in the Implementation Specification for this service. (Informative: This metadata might specify the operation request parameters or provide the XML Schemas for the operation request.) Name or identifier of this operation (request) (for example, GetCapabilities). The list of required and optional operations implemented shall be specified in the Implementation Specification for this service. Information for one distributed Computing Platform (DCP) supported for this operation. At present, only the HTTP DCP is defined, so this element only includes the HTTP element. Connect point URLs for the HTTP Distributed Computing Platform (DCP). Normally, only one Get and/or one Post is included in this element. More than one Get and/or Post is allowed to support including alternative URLs for uses such as load balancing or backup. Connect point URL prefix and any constraints for the HTTP "Get" request method for this operation request. Connect point URL and any constraints for the HTTP "Post" request method for this operation request. Connect point URL and any constraints for this HTTP request method for this operation request. In the OnlineResourceType, the xlink:href attribute in the xlink:simpleAttrs attribute group shall be used to contain this URL. The other attributes in the xlink:simpleAttrs attribute group should not be used. Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this request method for this operation. If one of these Constraint elements has the same "name" attribute as a Constraint element in the OperationsMetadata or Operation element, this Constraint element shall override the other one for this operation. The list of required and optional constraints for this request method for this operation shall be specified in the Implementation Specification for this service. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsServiceIdentification.xsd0000644000000000000000000000007413114323025025535 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsServiceIdentification.xsd0000644000175000001440000001043213114323025026477 0ustar00kalxasusers00000000000000 owsServiceIdentification.xsd This XML Schema Document encodes the common "ServiceIdentification" section of the GetCapabilities operation response, known as the Capabilities XML document. This section encodes the SV_ServiceIdentification class of ISO 19119 (OGC Abstract Specification Topic 12). OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . General metadata for this specific server. This XML Schema of this section shall be the same for all OWS. A service type name from a registry of services. For example, the values of the codeSpace URI and name and code string may be "OGC" and "catalogue." This type name is normally used for machine-to-machine communication. Unordered list of one or more versions of this service type implemented by this server. This information is not adequate for version negotiation, and shall not be used for that purpose. Unordered list of identifiers of Application Profiles that are implemented by this server. This element should be included for each specified application profile implemented by this server. The identifier value should be specified by each Application Profile. If this element is omitted, no meaning is implied. If this element is omitted, no meaning is implied. Unordered list of access constraints applied to assure the protection of privacy or intellectual property, and any other restrictions on retrieving or using data from or otherwise using this server. The reserved value NONE (case insensitive) shall be used to mean no access constraints are imposed. When this element is omitted, no meaning is implied. pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/PaxHeaders.23451/owsServiceProvider.xsd0000644000000000000000000000007413114323025024376 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/ogc/ows/2.0/owsServiceProvider.xsd0000644000175000001440000000505313114323025025343 0ustar00kalxasusers00000000000000 owsServiceProvider.xsd This XML Schema Document encodes the common "ServiceProvider" section of the GetCapabilities operation response, known as the Capabilities XML document. This section encodes the SV_ServiceProvider class of ISO 19119 (OGC Abstract Specification Topic 12). OWS is an OGC Standard. Copyright (c) 2009 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . Metadata about the organization that provides this specific service instance or server. A unique identifier for the service provider organization. Reference to the most relevant web site of the service provider. Information for contacting the service provider. The OnlineResource element within this ServiceContact element should not be used to reference a web site of the service provider. pycsw-2.0.3/pycsw/core/schemas/PaxHeaders.23451/w3c0000644000000000000000000000007413114323025016552 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/w3c/0000755000175000001440000000000013114323025017571 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/w3c/PaxHeaders.23451/19990000644000000000000000000000007413114323025017165 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/w3c/1999/0000755000175000001440000000000013114323025020204 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/w3c/1999/PaxHeaders.23451/xlink.xsd0000644000000000000000000000007413114323025021107 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/w3c/1999/xlink.xsd0000644000175000001440000001754613114323025022066 0ustar00kalxasusers00000000000000 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 pycsw-2.0.3/pycsw/core/schemas/w3c/PaxHeaders.23451/20010000644000000000000000000000007413114323025017134 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/w3c/2001/0000755000175000001440000000000013114323025020153 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/core/schemas/w3c/2001/PaxHeaders.23451/xml.xsd0000644000000000000000000000007413114323025020531 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/schemas/w3c/2001/xml.xsd0000644000175000001440000002120413114323025021472 0ustar00kalxasusers00000000000000

About the XML namespace

This schema document describes the XML namespace, in a form suitable for import by other schema documents.

See http://www.w3.org/XML/1998/namespace.html and http://www.w3.org/TR/REC-xml for information about this namespace.

Note that local names in this namespace are intended to be defined only by the World Wide Web Consortium or its subgroups. The names currently defined in this namespace are listed below. They should not be used with conflicting semantics by any Working Group, specification, or document instance.

See further below in this document for more information about how to refer to this schema document from your own XSD schema documents and about the namespace-versioning policy governing this schema document.

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.

Notes

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 BCP 47 at http://www.rfc-editor.org/rfc/bcp/bcp47.txt and the IANA language subtag registry at http://www.iana.org/assignments/language-subtag-registry for further information.

The union allows for the 'un-declaration' of xml:lang with the empty string.

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.

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.

See http://www.w3.org/TR/xmlbase/ for information about this attribute.

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.

See http://www.w3.org/TR/xml-id/ for information about this attribute.

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".

About this schema document

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"/>
     

or

           <import namespace="http://www.w3.org/XML/1998/namespace"
                      schemaLocation="http://www.w3.org/2009/01/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.

Versioning policy for this schema document

In keeping with the XML Schema WG's standard versioning policy, this schema document will persist at http://www.w3.org/2009/01/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/2009/01/xml.xsd will not change.

Previous dated (and unchanging) versions of this schema document are at:

pycsw-2.0.3/pycsw/core/PaxHeaders.23451/util.py0000644000000000000000000000007413114323025016037 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/core/util.py0000644000175000001440000003340013114323025017001 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # Angelos Tzotsos # # Copyright (c) 2015 Tom Kralidis # Copyright (c) 2015 Angelos Tzotsos # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import time import datetime import logging from six.moves.urllib.request import Request, urlopen from shapely.wkt import loads from owslib.util import http_post from pycsw.core.etree import etree from six import binary_type, text_type LOGGER = logging.getLogger(__name__) #Global variables for spatial ranking algorithm ranking_enabled = False ranking_pass = False ranking_query_geometry = '' PARSER = etree.XMLParser(resolve_entities=False) def get_today_and_now(): """Get the date, right now, in ISO8601""" return time.strftime('%Y-%m-%dT%H:%M:%SZ', time.localtime()) def datetime2iso8601(value): """Return a datetime value as ISO8601""" if value is None: return None if isinstance(value, datetime.date): return value.strftime('%Y-%m-%d') if value.hour == 0 and value.minute == 0 and value.second == 0: # YYYY-MM-DD only return value.strftime('%Y-%m-%d') else: return value.strftime('%Y-%m-%dT%H:%M:%SZ') def get_time_iso2unix(isotime): """Convert ISO8601 to UNIX timestamp""" return int(time.mktime(time.strptime( isotime, '%Y-%m-%dT%H:%M:%SZ'))) - time.timezone def get_version_integer(version): """Get an integer of the OGC version value x.y.z""" if version is not None: # split and make integer xyz = version.split('.') if len(xyz) != 3: return -1 try: return int(xyz[0]) * 10000 + int(xyz[1]) * 100 + int(xyz[2]) except Exception as err: raise RuntimeError('%s' % str(err)) else: # not a valid version string return -1 def find_exml(val, attrib=False): """Test that the XML value exists, return value, else return None""" if val is not None: if attrib: # it's an XML attribute return val else: # it's an XML value return val.text else: return None def nspath_eval(xpath, nsmap): """Return an etree friendly xpath""" out = [] for chunks in xpath.split('/'): namespace, element = chunks.split(':') out.append('{%s}%s' % (nsmap[namespace], element)) return '/'.join(out) def xmltag_split(tag): """Return XML element bare tag name (without prefix)""" try: return tag.split('}')[1] except: return tag def xmltag_split2(tag, namespaces, colon=False): """Return XML namespace prefix of element""" try: nsuri = tag.split('}')[0].split('{')[1] nsprefix = [key for key, value in namespaces.items() if value == nsuri] value = nsprefix[0] if colon: return '%s:' % nsprefix[0] else: return nsprefix[0] except: return '' def wkt2geom(wkt, bounds=True): """return Shapely geometry object based on WKT/EWKT""" geometry = None if wkt.find('SRID') != -1: wkt = wkt.split(';')[-1] geometry = loads(wkt) if bounds: return geometry.envelope.bounds else: return geometry def bbox2wktpolygon(bbox): """Return OGC WKT Polygon of a simple bbox string""" tmp = bbox.split(',') minx = float(tmp[0]) miny = float(tmp[1]) maxx = float(tmp[2]) maxy = float(tmp[3]) return 'POLYGON((%.2f %.2f, %.2f %.2f, %.2f %.2f, %.2f %.2f, %.2f %.2f))' \ % (minx, miny, minx, maxy, maxx, maxy, maxx, miny, minx, miny) def query_spatial(bbox_data_wkt, bbox_input_wkt, predicate, distance): """perform spatial query""" if bbox_data_wkt is None or bbox_input_wkt is None: return 'false' if predicate in ['beyond', 'dwithin'] and distance == 'false': return 'false' if bbox_data_wkt.find('SRID') != -1: # it's EWKT; chop off 'SRID=\d+;' bbox1 = loads(bbox_data_wkt.split(';')[-1]) else: bbox1 = loads(bbox_data_wkt) bbox2 = loads(bbox_input_wkt) # map query to Shapely Binary Predicates: if predicate == 'bbox': result = bbox1.intersects(bbox2) elif predicate == 'beyond': result = bbox1.distance(bbox2) > float(distance) elif predicate == 'contains': result = bbox1.contains(bbox2) elif predicate == 'crosses': result = bbox1.crosses(bbox2) elif predicate == 'disjoint': result = bbox1.disjoint(bbox2) elif predicate == 'dwithin': result = bbox1.distance(bbox2) <= float(distance) elif predicate == 'equals': result = bbox1.equals(bbox2) elif predicate == 'intersects': result = bbox1.intersects(bbox2) elif predicate == 'overlaps': if bbox1.intersects(bbox2) and not bbox1.touches(bbox2): result = True else: result = False elif predicate == 'touches': result = bbox1.touches(bbox2) elif predicate == 'within': result = bbox1.within(bbox2) else: raise RuntimeError('Invalid spatial query predicate: %s' % predicate) if result: return 'true' else: return 'false' def get_geometry_area(geometry): """Derive area of a given geometry""" try: if geometry is not None: return str(loads(geometry).area) return '0' except: return '0' def get_spatial_overlay_rank(target_geometry, query_geometry): """Derive spatial overlay rank for geospatial search as per Lanfear (2006) http://pubs.usgs.gov/of/2006/1279/2006-1279.pdf""" from shapely.geometry.base import BaseGeometry #TODO: Add those parameters to config file kt = 1.0 kq = 1.0 if target_geometry is not None and query_geometry is not None: try: q_geom = loads(query_geometry) t_geom = loads(target_geometry) Q = q_geom.area T = t_geom.area if any(item == 0.0 for item in [Q, T]): LOGGER.warn('Geometry has no area') return '0' X = t_geom.intersection(q_geom).area if kt == 1.0 and kq == 1.0: LOGGER.debug('Spatial Rank: %s', str((X/Q)*(X/T))) return str((X/Q)*(X/T)) else: LOGGER.debug('Spatial Rank: %s', str(((X/Q)**kq)*((X/T)**kt))) return str(((X/Q)**kq)*((X/T)**kt)) except Exception as err: LOGGER.warn('Cannot derive spatial overlay ranking %s', err) return '0' return '0' def bbox_from_polygons(bboxs): """Derive an aggregated bbox from n polygons""" from shapely.geometry import MultiPolygon polys = [] for bbx in bboxs: polys.append(loads(bbx)) try: bbx = MultiPolygon(polys).bounds bstr = '%.2f,%.2f,%.2f,%.2f' % (bbx[0], bbx[1], bbx[2], bbx[3]) return bbox2wktpolygon(bstr) except Exception as err: raise RuntimeError('Cannot aggregate polygons: %s' % str(err)) def update_xpath(nsmap, xml, recprop): """Update XML document XPath values""" if isinstance(xml, binary_type) or isinstance(xml, text_type): # serialize to lxml xml = etree.fromstring(xml, PARSER) recprop = eval(recprop) nsmap = eval(nsmap) try: nodes = xml.xpath(recprop['rp']['xpath'], namespaces=nsmap) if len(nodes) > 0: # matches for node1 in nodes: if node1.text != recprop['value']: # values differ, update node1.text = recprop['value'] except Exception as err: print(err) raise RuntimeError('ERROR: %s' % str(err)) return etree.tostring(xml) def transform_mappings(queryables, typename, reverse=False): """transform metadata model mappings""" if reverse: # from csw:Record for qbl in queryables.keys(): if qbl in typename.values(): tmp = next(k for k, v in typename.items() if v == qbl) val = queryables[tmp] queryables[qbl] = {} queryables[qbl]['xpath'] = val['xpath'] queryables[qbl]['dbcol'] = val['dbcol'] else: # to csw:Record for qbl in queryables.keys(): if qbl in typename.keys(): queryables[qbl] = queryables[qbl] def get_anytext(bag): """ generate bag of text for free text searches accepts list of words, string of XML, or etree.Element """ if isinstance(bag, list): # list of words return ' '.join([_f for _f in bag if _f]).strip() else: # xml if isinstance(bag, binary_type) or isinstance(bag, text_type): # serialize to lxml bag = etree.fromstring(bag, PARSER) # get all XML element content return ' '.join([value.strip() for value in bag.xpath('//text()')]) def xml2dict(xml_string, namespaces): """Convert an lxml object to a dictionary""" import xmltodict namespaces_reverse = dict((v, k) for k, v in namespaces.items()) return xmltodict.parse(xml_string, process_namespaces=True, namespaces=namespaces_reverse) def getqattr(obj, name): """get value of an object, safely""" try: value = getattr(obj, name) if hasattr(value, '__call__'): # function generated value LOGGER.debug('attribute is a function') if name.find('link') != -1: # list of link tuple quadruplets LOGGER.debug('attribute is a link') return _linkify(value()) return value() elif (isinstance(value, datetime.datetime) or isinstance(value, datetime.date)): # datetime object LOGGER.debug('attribute is a date') return datetime2iso8601(value) return value except: return None def _linkify(value): """create link format""" out = [] for link in value: out.append(','.join(list(link))) return '^'.join(out) def http_request(method, url, request=None, timeout=30): """Perform HTTP request""" if method == 'POST': return http_post(url, request, timeout=timeout) else: # GET request = Request(url) request.add_header('User-Agent', 'pycsw (http://pycsw.org/)') return urlopen(request, timeout=timeout).read() def bind_url(url): """binds an HTTP GET query string endpoint""" if url.find('?') == -1: # like http://host/wms binder = '?' # if like http://host/wms?foo=bar& or http://host/wms?foo=bar if url.find('=') != -1: if url.find('&', -1) != -1: # like http://host/wms?foo=bar& binder = '' else: # like http://host/wms?foo=bar binder = '&' # if like http://host/wms?foo if url.find('?') != -1: if url.find('?', -1) != -1: # like http://host/wms? binder = '' elif url.find('&', -1) == -1: # like http://host/wms?foo=bar binder = '&' return '%s%s' % (url, binder) def ip_in_network_cidr(ip, net): """decipher whether IP is within CIDR range""" ipaddr = int(''.join([ '%02x' % int(x) for x in ip.split('.') ]), 16) netstr, bits = net.split('/') netaddr = int(''.join([ '%02x' % int(x) for x in netstr.split('.') ]), 16) mask = (0xffffffff << (32 - int(bits))) & 0xffffffff return (ipaddr & mask) == (netaddr & mask) def ipaddress_in_whitelist(ipaddress, whitelist): """ decipher whether IP is in IP whitelist IP whitelist is a list supporting: - single IP address (e.g. 192.168.0.1) - IP range using CIDR (e.g. 192.168.0/22) - IP range using subnet wildcard (e.g. 192.168.0.*, 192.168.*) """ if ipaddress in whitelist: return True else: for white in whitelist: if white.find('/') != -1: # CIDR if ip_in_network_cidr(ipaddress, white): return True elif white.find('*') != -1: # subnet wildcard if ipaddress.startswith(white.split('*')[0]): return True return False def sniff_table(table): """Checks whether repository.table is a schema namespaced""" schema = None table = table if table.find('.') != - 1: schema, table = table.split('.') return [schema, table] def validate_4326(bbox_list): ''' Helper function to validate 4326 ''' is_valid = False if ((-180.0 <= float(bbox_list[0]) <= 180.0) and (-90.0 <= float(bbox_list[1]) <= 90.0) and (-180.0 <= float(bbox_list[2]) <= 180.0) and (-90.0 <= float(bbox_list[3]) <= 90.0)): is_valid = True return is_valid def get_elapsed_time(begin, end): ''' Helper function to calculate elapsed time in milliseconds''' return int((end - begin) * 1000) pycsw-2.0.3/pycsw/PaxHeaders.23451/oaipmh.py0000644000000000000000000000007413114323025015407 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/oaipmh.py0000644000175000001440000003534013114323025016356 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import logging from pycsw.core import util from pycsw.core.etree import etree LOGGER = logging.getLogger(__name__) class OAIPMH(object): """OAI-PMH wrapper class""" def __init__(self, context, config): LOGGER.debug('Initializing OAI-PMH constants') self.oaipmh_version = '2.0' self.namespaces = { 'oai': 'http://www.openarchives.org/OAI/2.0/', 'oai_dc': 'http://www.openarchives.org/OAI/2.0/oai_dc/', 'xsi': 'http://www.w3.org/2001/XMLSchema-instance' } self.request_model = { 'Identify': [], 'ListSets': ['resumptiontoken'], 'ListMetadataFormats': ['identifier'], 'GetRecord': ['identifier', 'metadataprefix'], 'ListRecords': ['from', 'until', 'set', 'resumptiontoken', 'metadataprefix'], 'ListIdentifiers': ['from', 'until', 'set', 'resumptiontoken', 'metadataprefix'], } self.metadata_formats = { 'iso19139': { 'namespace': 'http://www.isotc211.org/2005/gmd', 'schema': 'http://www.isotc211.org/2005/gmd/gmd.xsd', 'identifier': '//gmd:fileIdentifier/gco:CharacterString', 'dateStamp': '//gmd:dateStamp/gco:DateTime|//gmd:dateStamp/gco:Date', 'setSpec': '//gmd:hierarchyLevel/gmd:MD_ScopeCode' }, 'csw-record': { 'namespace': 'http://www.opengis.net/cat/csw/2.0.2', 'schema': 'http://schemas.opengis.net/csw/2.0.2/record.xsd', 'identifier': '//dc:identifier', 'dateStamp': '//dct:modified', 'setSpec': '//dc:type' }, 'fgdc-std': { 'namespace': 'http://www.opengis.net/cat/csw/csdgm', 'schema': 'http://www.fgdc.gov/metadata/fgdc-std-001-1998.xsd', 'identifier': '//idinfo/datasetid', 'dateStamp': '//metainfo/metd', 'setSpec': '//dataset' }, 'oai_dc': { 'namespace': '%soai_dc/' % self.namespaces['oai'], 'schema': 'http://www.openarchives.org/OAI/2.0/oai_dc.xsd', 'identifier': '//dc:identifier', 'dateStamp': '//dct:modified', 'setSpec': '//dc:type' }, 'dif': { 'namespace': 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/', 'schema': 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.xsd', 'identifier': '//dif:Entry_ID', 'dateStamp': '//dif:Last_DIF_Revision_Date', 'setSpec': '//dataset' }, 'gm03': { 'namespace': 'http://www.interlis.ch/INTERLIS2.3', 'schema': 'http://www.geocat.ch/internet/geocat/en/home/documentation/gm03.parsys.50316.downloadList.86742.DownloadFile.tmp/gm0321.zip', 'identifier': '//gm03:DATASECTION//gm03:fileIdentifer', 'dateStamp': '//gm03:DATASECTION//gm03:dateStamp', 'setSpec': '//dataset' } } self.metadata_sets = { 'datasets': ('Datasets', 'dataset'), 'interactiveResources': ('Interactive Resources', 'service') } self.error_codes = { 'badArgument': 'InvalidParameterValue', 'badVerb': 'OperationNotSupported', 'idDoesNotExist': None, 'noRecordsMatch': None, } self.context = context self.context.namespaces.update(self.namespaces) self.context.namespaces.update({'gco': 'http://www.isotc211.org/2005/gco'}) self.config = config def request(self, kvp): """process OAI-PMH request""" kvpout = {'service': 'CSW', 'version': '2.0.2', 'mode': 'oaipmh'} LOGGER.debug('Incoming kvp: %s' % kvp) if 'verb' in kvp: if 'metadataprefix' in kvp: self.metadata_prefix = kvp['metadataprefix'] try: kvpout['outputschema'] = self._get_metadata_prefix(kvp['metadataprefix']) except KeyError: kvpout['outputschema'] = kvp['metadataprefix'] else: self.metadata_prefix = 'csw-record' LOGGER.info('metadataPrefix: %s' % self.metadata_prefix) if kvp['verb'] in ['ListRecords', 'ListIdentifiers', 'GetRecord']: kvpout['request'] = 'GetRecords' kvpout['resulttype'] = 'results' kvpout['typenames'] = 'csw:Record' kvpout['elementsetname'] = 'full' if kvp['verb'] in ['Identify', 'ListMetadataFormats', 'ListSets']: kvpout['request'] = 'GetCapabilities' elif kvp['verb'] == 'GetRecord': kvpout['request'] = 'GetRecordById' if 'identifier' in kvp: kvpout['id'] = kvp['identifier'] if ('outputschema' in kvpout and kvp['metadataprefix'] == 'oai_dc'): # just use default DC del kvpout['outputschema'] elif kvp['verb'] in ['ListRecords', 'ListIdentifiers']: if 'resumptiontoken' in kvp: kvpout['startposition'] = kvp['resumptiontoken'] if ('outputschema' in kvpout and kvp['verb'] == 'ListIdentifiers'): # simple output only pass #del kvpout['outputschema'] if ('outputschema' in kvpout and kvp['metadataprefix'] in ['dc', 'oai_dc']): # just use default DC del kvpout['outputschema'] start = end = None LOGGER.info('Scanning temporal parameters') if 'from' in kvp: start = 'dc:date >= %s' % kvp['from'] if 'until' in kvp: end = 'dc:date <= %s' % kvp['until'] if any([start is not None, end is not None]): if all([start is not None, end is not None]): time_query = '%s and %s' % (start, end) elif end is None: time_query = start elif start is None: time_query = end kvpout['constraintlanguage'] = 'CQL_TEXT' kvpout['constraint'] = time_query LOGGER.debug('Resulting parameters: %s' % kvpout) return kvpout def response(self, response, kvp, repository, server_url): """process OAI-PMH request""" mode = kvp.pop('mode', None) if 'config' in kvp: config_val = kvp.pop('config') url = '%smode=oaipmh' % util.bind_url(server_url) node = etree.Element(util.nspath_eval('oai:OAI-PMH', self.namespaces), nsmap=self.namespaces) node.set(util.nspath_eval('xsi:schemaLocation', self.namespaces), '%s http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd' % self.namespaces['oai']) LOGGER.info(etree.tostring(node)) etree.SubElement(node, util.nspath_eval('oai:responseDate', self.namespaces)).text = util.get_today_and_now() etree.SubElement(node, util.nspath_eval('oai:request', self.namespaces), attrib=kvp).text = url if 'verb' not in kvp: etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Missing \'verb\' parameter' return node if kvp['verb'] not in self.request_model.keys(): etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Unknown verb \'%s\'' % kvp['verb'] return node if util.xmltag_split(response.tag) == 'ExceptionReport': etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = response.xpath('//ows:ExceptionText|//ows20:ExceptionText', namespaces=self.context.namespaces)[0].text return node verb = kvp.pop('verb') if verb in ['GetRecord', 'ListIdentifiers', 'ListRecords']: if 'metadataprefix' not in kvp: etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Missing metadataPrefix parameter' return node elif kvp['metadataprefix'] not in self.metadata_formats.keys(): etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Invalid metadataPrefix parameter' return node for key, value in kvp.items(): if key != 'mode' and key not in self.request_model[verb]: etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Illegal parameter \'%s\'' % key return node verbnode = etree.SubElement(node, util.nspath_eval('oai:%s' % verb, self.namespaces)) if verb == 'Identify': etree.SubElement(verbnode, util.nspath_eval('oai:repositoryName', self.namespaces)).text = self.config.get('metadata:main', 'identification_title') etree.SubElement(verbnode, util.nspath_eval('oai:baseURL', self.namespaces)).text = url etree.SubElement(verbnode, util.nspath_eval('oai:protocolVersion', self.namespaces)).text = '2.0' etree.SubElement(verbnode, util.nspath_eval('oai:adminEmail', self.namespaces)).text = self.config.get('metadata:main', 'contact_email') etree.SubElement(verbnode, util.nspath_eval('oai:earliestDatestamp', self.namespaces)).text = repository.query_insert('min') etree.SubElement(verbnode, util.nspath_eval('oai:deletedRecord', self.namespaces)).text = 'no' etree.SubElement(verbnode, util.nspath_eval('oai:granularity', self.namespaces)).text = 'YYYY-MM-DDThh:mm:ssZ' elif verb == 'ListSets': for key, value in sorted(self.metadata_sets.items()): setnode = etree.SubElement(verbnode, util.nspath_eval('oai:set', self.namespaces)) etree.SubElement(setnode, util.nspath_eval('oai:setSpec', self.namespaces)).text = key etree.SubElement(setnode, util.nspath_eval('oai:setName', self.namespaces)).text = value[0] elif verb == 'ListMetadataFormats': for key, value in sorted(self.metadata_formats.items()): mdfnode = etree.SubElement(verbnode, util.nspath_eval('oai:metadataFormat', self.namespaces)) etree.SubElement(mdfnode, util.nspath_eval('oai:metadataPrefix', self.namespaces)).text = key etree.SubElement(mdfnode, util.nspath_eval('oai:schema', self.namespaces)).text = value['schema'] etree.SubElement(mdfnode, util.nspath_eval('oai:metadataNamespace', self.namespaces)).text = value['namespace'] elif verb in ['GetRecord', 'ListIdentifiers', 'ListRecords']: if verb == 'GetRecord': # GetRecordById records = response.getchildren() else: # GetRecords records = response.getchildren()[1].getchildren() for child in records: recnode = etree.SubElement(verbnode, util.nspath_eval('oai:record', self.namespaces)) header = etree.SubElement(recnode, util.nspath_eval('oai:header', self.namespaces)) self._transform_element(header, response, 'oai:identifier') self._transform_element(header, response, 'oai:dateStamp') self._transform_element(header, response, 'oai:setSpec') if verb in ['GetRecord', 'ListRecords']: metadata = etree.SubElement(recnode, util.nspath_eval('oai:metadata', self.namespaces)) if 'metadataprefix' in kvp and kvp['metadataprefix'] == 'oai_dc': child.tag = util.nspath_eval('oai_dc:dc', self.namespaces) metadata.append(child) if verb != 'GetRecord': complete_list_size = response.xpath('//@numberOfRecordsMatched')[0] next_record = response.xpath('//@nextRecord')[0] cursor = str(int(complete_list_size) - int(next_record) - 1) resumption_token = etree.SubElement(verbnode, util.nspath_eval('oai:resumptionToken', self.namespaces), completeListSize=complete_list_size, cursor=cursor).text = next_record return node def _get_metadata_prefix(self, prefix): """Convenience function to return metadataPrefix as CSW outputschema""" try: outputschema = self.metadata_formats[prefix]['namespace'] except KeyError: outputschema = prefix return outputschema def _transform_element(self, parent, element, elname): """tests for existence of a given xpath, writes out text if exists""" xpath = self.metadata_formats[self.metadata_prefix][elname.split(':')[1]] if xpath.startswith('//'): value = element.xpath(xpath, namespaces=self.context.namespaces) if value: value = value[0].text else: # bare string literal value = xpath el = etree.SubElement(parent, util.nspath_eval(elname, self.context.namespaces)) if value: if elname == 'oai:setSpec': value = None for k, v in self.metadata_sets.items(): if v[1] == elname: value = k break el.text = value pycsw-2.0.3/pycsw/PaxHeaders.23451/ogc0000644000000000000000000000007413114323025014253 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/0000755000175000001440000000000013114323025015272 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/ogc/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025016441 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/__init__.py0000644000175000001440000000243713114323025017411 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/ogc/PaxHeaders.23451/csw0000644000000000000000000000007413114323025015047 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/csw/0000755000175000001440000000000013114323025016066 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/ogc/csw/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025017235 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/csw/__init__.py0000644000175000001440000000243713114323025020205 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/ogc/csw/PaxHeaders.23451/cql.py0000644000000000000000000000007413114323025016255 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/csw/cql.py0000644000175000001440000000724313114323025017225 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2016 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import logging from pycsw.core.etree import etree from pycsw.core import util from pycsw.ogc.fes.fes1 import MODEL as fes1_model LOGGER = logging.getLogger(__name__) def cql2fes1(cql, namespaces): """transforms Common Query Language (CQL) query into OGC fes1 syntax""" filters = [] tmp_list = [] logical_op = None LOGGER.debug('CQL: %s', cql) if ' or ' in cql: logical_op = etree.Element(util.nspath_eval('ogc:Or', namespaces)) tmp_list = cql.split(' or ') elif ' OR ' in cql: logical_op = etree.Element(util.nspath_eval('ogc:Or', namespaces)) tmp_list = cql.split(' OR ') elif ' and ' in cql: logical_op = etree.Element(util.nspath_eval('ogc:And', namespaces)) tmp_list = cql.split(' and ') elif ' AND ' in cql: logical_op = etree.Element(util.nspath_eval('ogc:And', namespaces)) tmp_list = cql.split(' AND ') if tmp_list: LOGGER.debug('Logical operator found (AND/OR)') else: tmp_list.append(cql) for t in tmp_list: filters.append(_parse_condition(t)) root = etree.Element(util.nspath_eval('ogc:Filter', namespaces)) if logical_op is not None: root.append(logical_op) for flt in filters: condition = etree.Element(util.nspath_eval(flt[0], namespaces)) etree.SubElement( condition, util.nspath_eval('ogc:PropertyName', namespaces)).text = flt[1] etree.SubElement( condition, util.nspath_eval('ogc:Literal', namespaces)).text = flt[2] if logical_op is not None: logical_op.append(condition) else: root.append(condition) LOGGER.debug('Resulting OGC Filter: %s', etree.tostring(root, pretty_print=1)) return root def _parse_condition(condition): """parses a single condition""" LOGGER.debug('condition: %s', condition) # split at the most 2 times to take into account literals with # spaces in them property_name, operator, literal = condition.split(None, 2) literal = literal.replace('"', '').replace('\'', '') for k, v in fes1_model['ComparisonOperators'].items(): if v['opvalue'] == operator: fes1_predicate = k LOGGER.debug('parsed condition: %s %s %s', property_name, fes1_predicate, literal) return (fes1_predicate, property_name, literal) pycsw-2.0.3/pycsw/ogc/csw/PaxHeaders.23451/csw2.py0000644000000000000000000000007413114323025016354 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/csw/csw2.py0000644000175000001440000027047713114323025017337 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # Angelos Tzotsos # # Copyright (c) 2016 Tom Kralidis # Copyright (c) 2015 Angelos Tzotsos # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import os import sys import cgi from six.moves.urllib.parse import quote, unquote from six import StringIO from six.moves.configparser import SafeConfigParser from pycsw.core.etree import etree from pycsw import oaipmh, opensearch, sru from pycsw.ogc.csw.cql import cql2fes1 from pycsw.plugins.profiles import profile as pprofile import pycsw.plugins.outputschemas from pycsw.core import config, log, metadata, util from pycsw.ogc.fes import fes1 import logging LOGGER = logging.getLogger(__name__) class Csw2(object): ''' CSW 2.x server ''' def __init__(self, server_csw): ''' Initialize CSW2 ''' self.parent = server_csw self.version = '2.0.2' def getcapabilities(self): ''' Handle GetCapabilities request ''' serviceidentification = True serviceprovider = True operationsmetadata = True if 'sections' in self.parent.kvp: serviceidentification = False serviceprovider = False operationsmetadata = False for section in self.parent.kvp['sections'].split(','): if section == 'ServiceIdentification': serviceidentification = True if section == 'ServiceProvider': serviceprovider = True if section == 'OperationsMetadata': operationsmetadata = True # check extra parameters that may be def'd by profiles if self.parent.profiles is not None: for prof in self.parent.profiles['loaded'].keys(): result = \ self.parent.profiles['loaded'][prof].check_parameters(self.parent.kvp) if result is not None: return self.exceptionreport(result['code'], result['locator'], result['text']) # @updateSequence: get latest update to repository try: updatesequence = \ util.get_time_iso2unix(self.parent.repository.query_insert()) except: updatesequence = None node = etree.Element(util.nspath_eval('csw:Capabilities', self.parent.context.namespaces), nsmap=self.parent.context.namespaces, version='2.0.2', updateSequence=str(updatesequence)) if 'updatesequence' in self.parent.kvp: if int(self.parent.kvp['updatesequence']) == updatesequence: return node elif int(self.parent.kvp['updatesequence']) > updatesequence: return self.exceptionreport('InvalidUpdateSequence', 'updatesequence', 'outputsequence specified (%s) is higher than server\'s \ updatesequence (%s)' % (self.parent.kvp['updatesequence'], updatesequence)) node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-discovery.xsd' % \ (self.parent.context.namespaces['csw'], self.parent.config.get('server', 'ogc_schemas_base')) metadata_main = dict(self.parent.config.items('metadata:main')) if serviceidentification: LOGGER.debug('Writing section ServiceIdentification.') serviceidentification = etree.SubElement(node, \ util.nspath_eval('ows:ServiceIdentification', self.parent.context.namespaces)) etree.SubElement(serviceidentification, util.nspath_eval('ows:Title', self.parent.context.namespaces)).text = \ metadata_main.get('identification_title', 'missing') etree.SubElement(serviceidentification, util.nspath_eval('ows:Abstract', self.parent.context.namespaces)).text = \ metadata_main.get('identification_abstract', 'missing') keywords = etree.SubElement(serviceidentification, util.nspath_eval('ows:Keywords', self.parent.context.namespaces)) for k in \ metadata_main.get('identification_keywords').split(','): etree.SubElement( keywords, util.nspath_eval('ows:Keyword', self.parent.context.namespaces)).text = k etree.SubElement(keywords, util.nspath_eval('ows:Type', self.parent.context.namespaces), codeSpace='ISOTC211/19115').text = \ metadata_main.get('identification_keywords_type', 'missing') etree.SubElement(serviceidentification, util.nspath_eval('ows:ServiceType', self.parent.context.namespaces), codeSpace='OGC').text = 'CSW' for stv in self.parent.context.model['parameters']['version']['values']: etree.SubElement(serviceidentification, util.nspath_eval('ows:ServiceTypeVersion', self.parent.context.namespaces)).text = stv etree.SubElement(serviceidentification, util.nspath_eval('ows:Fees', self.parent.context.namespaces)).text = \ metadata_main.get('identification_fees', 'missing') etree.SubElement(serviceidentification, util.nspath_eval('ows:AccessConstraints', self.parent.context.namespaces)).text = \ metadata_main.get('identification_accessconstraints', 'missing') if serviceprovider: LOGGER.debug('Writing section ServiceProvider.') serviceprovider = etree.SubElement(node, util.nspath_eval('ows:ServiceProvider', self.parent.context.namespaces)) etree.SubElement(serviceprovider, util.nspath_eval('ows:ProviderName', self.parent.context.namespaces)).text = \ metadata_main.get('provider_name', 'missing') providersite = etree.SubElement(serviceprovider, util.nspath_eval('ows:ProviderSite', self.parent.context.namespaces)) providersite.attrib[util.nspath_eval('xlink:type', self.parent.context.namespaces)] = 'simple' providersite.attrib[util.nspath_eval('xlink:href', self.parent.context.namespaces)] = \ metadata_main.get('provider_url', 'missing') servicecontact = etree.SubElement(serviceprovider, util.nspath_eval('ows:ServiceContact', self.parent.context.namespaces)) etree.SubElement(servicecontact, util.nspath_eval('ows:IndividualName', self.parent.context.namespaces)).text = \ metadata_main.get('contact_name', 'missing') etree.SubElement(servicecontact, util.nspath_eval('ows:PositionName', self.parent.context.namespaces)).text = \ metadata_main.get('contact_position', 'missing') contactinfo = etree.SubElement(servicecontact, util.nspath_eval('ows:ContactInfo', self.parent.context.namespaces)) phone = etree.SubElement(contactinfo, util.nspath_eval('ows:Phone', self.parent.context.namespaces)) etree.SubElement(phone, util.nspath_eval('ows:Voice', self.parent.context.namespaces)).text = \ metadata_main.get('contact_phone', 'missing') etree.SubElement(phone, util.nspath_eval('ows:Facsimile', self.parent.context.namespaces)).text = \ metadata_main.get('contact_fax', 'missing') address = etree.SubElement(contactinfo, util.nspath_eval('ows:Address', self.parent.context.namespaces)) etree.SubElement(address, util.nspath_eval('ows:DeliveryPoint', self.parent.context.namespaces)).text = \ metadata_main.get('contact_address', 'missing') etree.SubElement(address, util.nspath_eval('ows:City', self.parent.context.namespaces)).text = \ metadata_main.get('contact_city', 'missing') etree.SubElement(address, util.nspath_eval('ows:AdministrativeArea', self.parent.context.namespaces)).text = \ metadata_main.get('contact_stateorprovince', 'missing') etree.SubElement(address, util.nspath_eval('ows:PostalCode', self.parent.context.namespaces)).text = \ metadata_main.get('contact_postalcode', 'missing') etree.SubElement(address, util.nspath_eval('ows:Country', self.parent.context.namespaces)).text = \ metadata_main.get('contact_country', 'missing') etree.SubElement(address, util.nspath_eval('ows:ElectronicMailAddress', self.parent.context.namespaces)).text = \ metadata_main.get('contact_email', 'missing') url = etree.SubElement(contactinfo, util.nspath_eval('ows:OnlineResource', self.parent.context.namespaces)) url.attrib[util.nspath_eval('xlink:type', self.parent.context.namespaces)] = 'simple' url.attrib[util.nspath_eval('xlink:href', self.parent.context.namespaces)] = \ metadata_main.get('contact_url', 'missing') etree.SubElement(contactinfo, util.nspath_eval('ows:HoursOfService', self.parent.context.namespaces)).text = \ metadata_main.get('contact_hours', 'missing') etree.SubElement(contactinfo, util.nspath_eval('ows:ContactInstructions', self.parent.context.namespaces)).text = \ metadata_main.get('contact_instructions', 'missing') etree.SubElement(servicecontact, util.nspath_eval('ows:Role', self.parent.context.namespaces), codeSpace='ISOTC211/19115').text = \ metadata_main.get('contact_role', 'missing') if operationsmetadata: LOGGER.debug('Writing section OperationsMetadata.') operationsmetadata = etree.SubElement(node, util.nspath_eval('ows:OperationsMetadata', self.parent.context.namespaces)) for operation in self.parent.context.model['operations_order']: oper = etree.SubElement(operationsmetadata, util.nspath_eval('ows:Operation', self.parent.context.namespaces), name=operation) dcp = etree.SubElement(oper, util.nspath_eval('ows:DCP', self.parent.context.namespaces)) http = etree.SubElement(dcp, util.nspath_eval('ows:HTTP', self.parent.context.namespaces)) if self.parent.context.model['operations'][operation]['methods']['get']: get = etree.SubElement(http, util.nspath_eval('ows:Get', self.parent.context.namespaces)) get.attrib[util.nspath_eval('xlink:type',\ self.parent.context.namespaces)] = 'simple' get.attrib[util.nspath_eval('xlink:href',\ self.parent.context.namespaces)] = self.parent.config.get('server', 'url') if self.parent.context.model['operations'][operation]['methods']['post']: post = etree.SubElement(http, util.nspath_eval('ows:Post', self.parent.context.namespaces)) post.attrib[util.nspath_eval('xlink:type', self.parent.context.namespaces)] = 'simple' post.attrib[util.nspath_eval('xlink:href', self.parent.context.namespaces)] = \ self.parent.config.get('server', 'url') for parameter in \ sorted(self.parent.context.model['operations'][operation]['parameters']): param = etree.SubElement(oper, util.nspath_eval('ows:Parameter', self.parent.context.namespaces), name=parameter) for val in \ sorted(self.parent.context.model['operations'][operation]\ ['parameters'][parameter]['values']): etree.SubElement(param, util.nspath_eval('ows:Value', self.parent.context.namespaces)).text = val if operation == 'GetRecords': # advertise queryables for qbl in sorted(self.parent.repository.queryables.keys()): if qbl != '_all': param = etree.SubElement(oper, util.nspath_eval('ows:Constraint', self.parent.context.namespaces), name=qbl) for qbl2 in sorted(self.parent.repository.queryables[qbl]): etree.SubElement(param, util.nspath_eval('ows:Value', self.parent.context.namespaces)).text = qbl2 if self.parent.profiles is not None: for con in sorted(self.parent.context.model[\ 'operations']['GetRecords']['constraints'].keys()): param = etree.SubElement(oper, util.nspath_eval('ows:Constraint', self.parent.context.namespaces), name = con) for val in self.parent.context.model['operations']\ ['GetRecords']['constraints'][con]['values']: etree.SubElement(param, util.nspath_eval('ows:Value', self.parent.context.namespaces)).text = val for parameter in sorted(self.parent.context.model['parameters'].keys()): param = etree.SubElement(operationsmetadata, util.nspath_eval('ows:Parameter', self.parent.context.namespaces), name=parameter) for val in self.parent.context.model['parameters'][parameter]['values']: etree.SubElement(param, util.nspath_eval('ows:Value', self.parent.context.namespaces)).text = val for constraint in sorted(self.parent.context.model['constraints'].keys()): param = etree.SubElement(operationsmetadata, util.nspath_eval('ows:Constraint', self.parent.context.namespaces), name=constraint) for val in self.parent.context.model['constraints'][constraint]['values']: etree.SubElement(param, util.nspath_eval('ows:Value', self.parent.context.namespaces)).text = val if self.parent.profiles is not None: for prof in self.parent.profiles['loaded'].keys(): ecnode = \ self.parent.profiles['loaded'][prof].get_extendedcapabilities() if ecnode is not None: operationsmetadata.append(ecnode) # always write out Filter_Capabilities LOGGER.debug('Writing section Filter_Capabilities.') fltcaps = etree.SubElement(node, util.nspath_eval('ogc:Filter_Capabilities', self.parent.context.namespaces)) spatialcaps = etree.SubElement(fltcaps, util.nspath_eval('ogc:Spatial_Capabilities', self.parent.context.namespaces)) geomops = etree.SubElement(spatialcaps, util.nspath_eval('ogc:GeometryOperands', self.parent.context.namespaces)) for geomtype in \ fes1.MODEL['GeometryOperands']['values']: etree.SubElement(geomops, util.nspath_eval('ogc:GeometryOperand', self.parent.context.namespaces)).text = geomtype spatialops = etree.SubElement(spatialcaps, util.nspath_eval('ogc:SpatialOperators', self.parent.context.namespaces)) for spatial_comparison in \ fes1.MODEL['SpatialOperators']['values']: etree.SubElement(spatialops, util.nspath_eval('ogc:SpatialOperator', self.parent.context.namespaces), name=spatial_comparison) scalarcaps = etree.SubElement(fltcaps, util.nspath_eval('ogc:Scalar_Capabilities', self.parent.context.namespaces)) etree.SubElement(scalarcaps, util.nspath_eval('ogc:LogicalOperators', self.parent.context.namespaces)) cmpops = etree.SubElement(scalarcaps, util.nspath_eval('ogc:ComparisonOperators', self.parent.context.namespaces)) for cmpop in sorted(fes1.MODEL['ComparisonOperators'].keys()): etree.SubElement(cmpops, util.nspath_eval('ogc:ComparisonOperator', self.parent.context.namespaces)).text = \ fes1.MODEL['ComparisonOperators'][cmpop]['opname'] arithops = etree.SubElement(scalarcaps, util.nspath_eval('ogc:ArithmeticOperators', self.parent.context.namespaces)) functions = etree.SubElement(arithops, util.nspath_eval('ogc:Functions', self.parent.context.namespaces)) functionames = etree.SubElement(functions, util.nspath_eval('ogc:FunctionNames', self.parent.context.namespaces)) for fnop in sorted(fes1.MODEL['Functions'].keys()): etree.SubElement(functionames, util.nspath_eval('ogc:FunctionName', self.parent.context.namespaces), nArgs=fes1.MODEL['Functions'][fnop]['args']).text = fnop idcaps = etree.SubElement(fltcaps, util.nspath_eval('ogc:Id_Capabilities', self.parent.context.namespaces)) for idcap in fes1.MODEL['Ids']['values']: etree.SubElement(idcaps, util.nspath_eval('ogc:%s' % idcap, self.parent.context.namespaces)) return node def describerecord(self): ''' Handle DescribeRecord request ''' if 'typename' not in self.parent.kvp or \ len(self.parent.kvp['typename']) == 0: # missing typename # set to return all typenames self.parent.kvp['typename'] = ['csw:Record'] if self.parent.profiles is not None: for prof in self.parent.profiles['loaded'].keys(): self.parent.kvp['typename'].append( self.parent.profiles['loaded'][prof].typename) elif self.parent.requesttype == 'GET': # pass via GET self.parent.kvp['typename'] = self.parent.kvp['typename'].split(',') if ('outputformat' in self.parent.kvp and self.parent.kvp['outputformat'] not in self.parent.context.model['operations']['DescribeRecord'] ['parameters']['outputFormat']['values']): # bad outputformat return self.exceptionreport('InvalidParameterValue', 'outputformat', 'Invalid value for outputformat: %s' % self.parent.kvp['outputformat']) if ('schemalanguage' in self.parent.kvp and self.parent.kvp['schemalanguage'] not in self.parent.context.model['operations']['DescribeRecord']['parameters'] ['schemaLanguage']['values']): # bad schemalanguage return self.exceptionreport('InvalidParameterValue', 'schemalanguage', 'Invalid value for schemalanguage: %s' % self.parent.kvp['schemalanguage']) node = etree.Element(util.nspath_eval('csw:DescribeRecordResponse', self.parent.context.namespaces), nsmap=self.parent.context.namespaces) node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = \ '%s %s/csw/2.0.2/CSW-discovery.xsd' % (self.parent.context.namespaces['csw'], self.parent.config.get('server', 'ogc_schemas_base')) for typename in self.parent.kvp['typename']: if typename.find(':') == -1: # unqualified typename return self.exceptionreport('InvalidParameterValue', 'typename', 'Typename not qualified: %s' % typename) if typename == 'csw:Record': # load core schema LOGGER.debug('Writing csw:Record schema.') schemacomponent = etree.SubElement(node, util.nspath_eval('csw:SchemaComponent', self.parent.context.namespaces), schemaLanguage='XMLSCHEMA', targetNamespace=self.parent.context.namespaces['csw']) path = os.path.join(self.parent.config.get('server', 'home'), 'core', 'schemas', 'ogc', 'csw', '2.0.2', 'record.xsd') dublincore = etree.parse(path, self.parent.context.parser).getroot() schemacomponent.append(dublincore) if self.parent.profiles is not None: for prof in self.parent.profiles['loaded'].keys(): if self.parent.profiles['loaded'][prof].typename == typename: scnodes = \ self.parent.profiles['loaded'][prof].get_schemacomponents() if scnodes: for scn in scnodes: node.append(scn) return node def getdomain(self): ''' Handle GetDomain request ''' if ('parametername' not in self.parent.kvp and 'propertyname' not in self.parent.kvp): return self.exceptionreport('MissingParameterValue', 'parametername', 'Missing value. \ One of propertyname or parametername must be specified') node = etree.Element(util.nspath_eval('csw:GetDomainResponse', self.parent.context.namespaces), nsmap=self.parent.context.namespaces) node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-discovery.xsd' % \ (self.parent.context.namespaces['csw'], self.parent.config.get('server', 'ogc_schemas_base')) if 'parametername' in self.parent.kvp: for pname in self.parent.kvp['parametername'].split(','): LOGGER.debug('Parsing parametername %s.' % pname) domainvalue = etree.SubElement(node, util.nspath_eval('csw:DomainValues', self.parent.context.namespaces), type='csw:Record') etree.SubElement(domainvalue, util.nspath_eval('csw:ParameterName', self.parent.context.namespaces)).text = pname try: operation, parameter = pname.split('.') except: return node if (operation in self.parent.context.model['operations'].keys() and parameter in self.parent.context.model['operations'][operation]['parameters'].keys()): listofvalues = etree.SubElement(domainvalue, util.nspath_eval('csw:ListOfValues', self.parent.context.namespaces)) for val in \ sorted(self.parent.context.model['operations'][operation]\ ['parameters'][parameter]['values']): etree.SubElement(listofvalues, util.nspath_eval('csw:Value', self.parent.context.namespaces)).text = val if 'propertyname' in self.parent.kvp: for pname in self.parent.kvp['propertyname'].split(','): LOGGER.debug('Parsing propertyname %s.' % pname) if pname.find('/') == 0: # it's an XPath pname2 = pname else: # it's a core queryable, map to internal typename model try: pname2 = self.parent.repository.queryables['_all'][pname]['dbcol'] except: pname2 = pname # decipher typename dvtype = None if self.parent.profiles is not None: for prof in self.parent.profiles['loaded'].keys(): for prefix in self.parent.profiles['loaded'][prof].prefixes: if pname2.find(prefix) != -1: dvtype = self.parent.profiles['loaded'][prof].typename break if not dvtype: dvtype = 'csw:Record' domainvalue = etree.SubElement(node, util.nspath_eval('csw:DomainValues', self.parent.context.namespaces), type=dvtype) etree.SubElement(domainvalue, util.nspath_eval('csw:PropertyName', self.parent.context.namespaces)).text = pname try: LOGGER.debug( 'Querying repository property %s, typename %s, \ domainquerytype %s.' % \ (pname2, dvtype, self.parent.domainquerytype)) count = False if (self.parent.config.has_option('server', 'domaincounts') and self.parent.config.get('server', 'domaincounts') == 'true'): count = True results = self.parent.repository.query_domain( pname2, dvtype, self.parent.domainquerytype, count) LOGGER.debug('Results: %s' % str(len(results))) if self.parent.domainquerytype == 'range': rangeofvalues = etree.SubElement(domainvalue, util.nspath_eval('csw:RangeOfValues', self.parent.context.namespaces)) etree.SubElement(rangeofvalues, util.nspath_eval('csw:MinValue', self.parent.context.namespaces)).text = results[0][0] etree.SubElement(rangeofvalues, util.nspath_eval('csw:MaxValue', self.parent.context.namespaces)).text = results[0][1] else: listofvalues = etree.SubElement(domainvalue, util.nspath_eval('csw:ListOfValues', self.parent.context.namespaces)) for result in results: LOGGER.debug(str(result)) if (result is not None and result[0] is not None): # drop null values if count: # show counts val = '%s (%s)' % (result[0], result[1]) else: val = result[0] etree.SubElement(listofvalues, util.nspath_eval('csw:Value', self.parent.context.namespaces)).text = val except Exception as err: LOGGER.debug('No results for propertyname %s: %s.' % (pname2, str(err))) return node def getrecords(self): ''' Handle GetRecords request ''' timestamp = util.get_today_and_now() if ('elementsetname' not in self.parent.kvp and 'elementname' not in self.parent.kvp): # mutually exclusive required return self.exceptionreport('MissingParameterValue', 'elementsetname', 'Missing one of ElementSetName or ElementName parameter(s)') if 'outputschema' not in self.parent.kvp: self.parent.kvp['outputschema'] = self.parent.context.namespaces['csw'] if (self.parent.kvp['outputschema'] not in self.parent.context.model['operations'] ['GetRecords']['parameters']['outputSchema']['values']): return self.exceptionreport('InvalidParameterValue', 'outputschema', 'Invalid outputSchema parameter value: %s' % self.parent.kvp['outputschema']) if 'outputformat' not in self.parent.kvp: self.parent.kvp['outputformat'] = 'application/xml' if (self.parent.kvp['outputformat'] not in self.parent.context.model['operations'] ['GetRecords']['parameters']['outputFormat']['values']): return self.exceptionreport('InvalidParameterValue', 'outputformat', 'Invalid outputFormat parameter value: %s' % self.parent.kvp['outputformat']) if 'resulttype' not in self.parent.kvp: self.parent.kvp['resulttype'] = 'hits' if self.parent.kvp['resulttype'] is not None: if (self.parent.kvp['resulttype'] not in self.parent.context.model['operations'] ['GetRecords']['parameters']['resultType']['values']): return self.exceptionreport('InvalidParameterValue', 'resulttype', 'Invalid resultType parameter value: %s' % self.parent.kvp['resulttype']) if (('elementname' not in self.parent.kvp or len(self.parent.kvp['elementname']) == 0) and self.parent.kvp['elementsetname'] not in self.parent.context.model['operations']['GetRecords']['parameters'] ['ElementSetName']['values']): return self.exceptionreport('InvalidParameterValue', 'elementsetname', 'Invalid ElementSetName parameter value: %s' % self.parent.kvp['elementsetname']) if ('elementname' in self.parent.kvp and self.parent.requesttype == 'GET'): # passed via GET self.parent.kvp['elementname'] = self.parent.kvp['elementname'].split(',') self.parent.kvp['elementsetname'] = 'summary' if 'typenames' not in self.parent.kvp: return self.exceptionreport('MissingParameterValue', 'typenames', 'Missing typenames parameter') if ('typenames' in self.parent.kvp and self.parent.requesttype == 'GET'): # passed via GET self.parent.kvp['typenames'] = self.parent.kvp['typenames'].split(',') if 'typenames' in self.parent.kvp: for tname in self.parent.kvp['typenames']: if (tname not in self.parent.context.model['operations']['GetRecords'] ['parameters']['typeNames']['values']): return self.exceptionreport('InvalidParameterValue', 'typenames', 'Invalid typeNames parameter value: %s' % tname) # check elementname's if 'elementname' in self.parent.kvp: for ename in self.parent.kvp['elementname']: enamelist = self.parent.repository.queryables['_all'].keys() if ename not in enamelist: return self.exceptionreport('InvalidParameterValue', 'elementname', 'Invalid ElementName parameter value: %s' % ename) if self.parent.kvp['resulttype'] == 'validate': return self._write_acknowledgement() maxrecords_cfg = -1 # not set in config server.maxrecords if self.parent.config.has_option('server', 'maxrecords'): maxrecords_cfg = int(self.parent.config.get('server', 'maxrecords')) if 'maxrecords' not in self.parent.kvp: # not specified by client if maxrecords_cfg > -1: # specified in config self.parent.kvp['maxrecords'] = maxrecords_cfg else: # spec default self.parent.kvp['maxrecords'] = 10 else: # specified by client if self.parent.kvp['maxrecords'] == '': self.parent.kvp['maxrecords'] = 10 if maxrecords_cfg > -1: # set in config if int(self.parent.kvp['maxrecords']) > maxrecords_cfg: self.parent.kvp['maxrecords'] = maxrecords_cfg if any(x in ['bbox', 'q', 'time'] for x in self.parent.kvp): LOGGER.debug('OpenSearch Geo/Time parameters detected.') self.parent.kvp['constraintlanguage'] = 'FILTER' tmp_filter = opensearch.kvp2filterxml(self.parent.kvp, self.parent.context) if tmp_filter is not "": self.parent.kvp['constraint'] = tmp_filter LOGGER.debug('OpenSearch Geo/Time parameters to Filter: %s.' % self.parent.kvp['constraint']) if self.parent.requesttype == 'GET': if 'constraint' in self.parent.kvp: # GET request LOGGER.debug('csw:Constraint passed over HTTP GET.') if 'constraintlanguage' not in self.parent.kvp: return self.exceptionreport('MissingParameterValue', 'constraintlanguage', 'constraintlanguage required when constraint specified') if (self.parent.kvp['constraintlanguage'] not in self.parent.context.model['operations']['GetRecords']['parameters'] ['CONSTRAINTLANGUAGE']['values']): return self.exceptionreport('InvalidParameterValue', 'constraintlanguage', 'Invalid constraintlanguage: %s' % self.parent.kvp['constraintlanguage']) if self.parent.kvp['constraintlanguage'] == 'CQL_TEXT': tmp = self.parent.kvp['constraint'] try: LOGGER.debug('Transforming CQL into fes1') LOGGER.debug('CQL: %s', tmp) self.parent.kvp['constraint'] = {} self.parent.kvp['constraint']['type'] = 'filter' cql = cql2fes1(tmp, self.parent.context.namespaces) self.parent.kvp['constraint']['where'], self.parent.kvp['constraint']['values'] = fes1.parse(cql, self.parent.repository.queryables['_all'], self.parent.repository.dbtype, self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts) except Exception as err: LOGGER.error('Invalid CQL query %s', tmp) LOGGER.error('Error message: %s', err, exc_info=True) return self.exceptionreport('InvalidParameterValue', 'constraint', 'Invalid Filter syntax') elif self.parent.kvp['constraintlanguage'] == 'FILTER': # validate filter XML try: schema = os.path.join(self.parent.config.get('server', 'home'), 'core', 'schemas', 'ogc', 'filter', '1.1.0', 'filter.xsd') LOGGER.debug('Validating Filter %s.' % self.parent.kvp['constraint']) schema = etree.XMLSchema(file=schema) parser = etree.XMLParser(schema=schema, resolve_entities=False) doc = etree.fromstring(self.parent.kvp['constraint'], parser) LOGGER.debug('Filter is valid XML.') self.parent.kvp['constraint'] = {} self.parent.kvp['constraint']['type'] = 'filter' self.parent.kvp['constraint']['where'], self.parent.kvp['constraint']['values'] = \ fes1.parse(doc, self.parent.repository.queryables['_all'], self.parent.repository.dbtype, self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts) except Exception as err: errortext = \ 'Exception: document not valid.\nError: %s.' % str(err) LOGGER.debug(errortext) return self.exceptionreport('InvalidParameterValue', 'constraint', 'Invalid Filter query: %s' % errortext) else: self.parent.kvp['constraint'] = {} if 'sortby' not in self.parent.kvp: self.parent.kvp['sortby'] = None elif 'sortby' in self.parent.kvp and self.parent.requesttype == 'GET': LOGGER.debug('Sorted query specified.') tmp = self.parent.kvp['sortby'] self.parent.kvp['sortby'] = {} try: name, order = tmp.rsplit(':', 1) except: return self.exceptionreport('InvalidParameterValue', 'sortby', 'Invalid SortBy value: must be in the format\ propertyname:A or propertyname:D') try: self.parent.kvp['sortby']['propertyname'] = \ self.parent.repository.queryables['_all'][name]['dbcol'] if name.find('BoundingBox') != -1 or name.find('Envelope') != -1: # it's a spatial sort self.parent.kvp['sortby']['spatial'] = True except Exception as err: return self.exceptionreport('InvalidParameterValue', 'sortby', 'Invalid SortBy propertyname: %s' % name) if order not in ['A', 'D']: return self.exceptionreport('InvalidParameterValue', 'sortby', 'Invalid SortBy value: sort order must be "A" or "D"') if order == 'D': self.parent.kvp['sortby']['order'] = 'DESC' else: self.parent.kvp['sortby']['order'] = 'ASC' if 'startposition' not in self.parent.kvp: self.parent.kvp['startposition'] = 1 # query repository LOGGER.debug('Querying repository with constraint: %s,\ sortby: %s, typenames: %s, maxrecords: %s, startposition: %s.' % (self.parent.kvp['constraint'], self.parent.kvp['sortby'], self.parent.kvp['typenames'], self.parent.kvp['maxrecords'], self.parent.kvp['startposition'])) try: matched, results = self.parent.repository.query( constraint=self.parent.kvp['constraint'], sortby=self.parent.kvp['sortby'], typenames=self.parent.kvp['typenames'], maxrecords=self.parent.kvp['maxrecords'], startposition=int(self.parent.kvp['startposition'])-1) except Exception as err: LOGGER.debug('Invalid query syntax. Query: %s', self.parent.kvp['constraint']) LOGGER.debug('Invalid query syntax. Result: %s', err) return self.exceptionreport('InvalidParameterValue', 'constraint', 'Invalid query syntax') dsresults = [] if (self.parent.config.has_option('server', 'federatedcatalogues') and 'distributedsearch' in self.parent.kvp and self.parent.kvp['distributedsearch'] and self.parent.kvp['hopcount'] > 0): # do distributed search LOGGER.debug('DistributedSearch specified (hopCount: %s).' % self.parent.kvp['hopcount']) from owslib.csw import CatalogueServiceWeb from owslib.ows import ExceptionReport for fedcat in \ self.parent.config.get('server', 'federatedcatalogues').split(','): LOGGER.debug('Performing distributed search on federated \ catalogue: %s.' % fedcat) remotecsw = CatalogueServiceWeb(fedcat, skip_caps=True) try: remotecsw.getrecords2(xml=self.parent.request, esn=self.parent.kvp['elementsetname'], outputschema=self.parent.kvp['outputschema']) if hasattr(remotecsw, 'results'): LOGGER.debug( 'Distributed search results from catalogue \ %s: %s.' % (fedcat, remotecsw.results)) remotecsw_matches = int(remotecsw.results['matches']) plural = 's' if remotecsw_matches != 1 else '' if remotecsw_matches > 0: matched = str(int(matched) + remotecsw_matches) dsresults.append(etree.Comment( ' %d result%s from %s ' % (remotecsw_matches, plural, fedcat))) dsresults.append(remotecsw.records) except ExceptionReport as err: error_string = 'remote CSW %s returned exception: ' % fedcat dsresults.append(etree.Comment( ' %s\n\n%s ' % (error_string, err))) LOGGER.debug(str(err)) except Exception as err: error_string = 'remote CSW %s returned error: ' % fedcat dsresults.append(etree.Comment( ' %s\n\n%s ' % (error_string, err))) LOGGER.debug(str(err)) if int(matched) == 0: returned = nextrecord = '0' else: if int(matched) < int(self.parent.kvp['maxrecords']): returned = matched nextrecord = '0' else: returned = str(self.parent.kvp['maxrecords']) if int(self.parent.kvp['startposition']) + int(self.parent.kvp['maxrecords']) >= int(matched): nextrecord = '0' else: nextrecord = str(int(self.parent.kvp['startposition']) + \ int(self.parent.kvp['maxrecords'])) LOGGER.debug('Results: matched: %s, returned: %s, next: %s.' % \ (matched, returned, nextrecord)) node = etree.Element(util.nspath_eval('csw:GetRecordsResponse', self.parent.context.namespaces), nsmap=self.parent.context.namespaces, version='2.0.2') node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = \ '%s %s/csw/2.0.2/CSW-discovery.xsd' % \ (self.parent.context.namespaces['csw'], self.parent.config.get('server', 'ogc_schemas_base')) if 'requestid' in self.parent.kvp and self.parent.kvp['requestid'] is not None: etree.SubElement(node, util.nspath_eval('csw:RequestId', self.parent.context.namespaces)).text = self.parent.kvp['requestid'] etree.SubElement(node, util.nspath_eval('csw:SearchStatus', self.parent.context.namespaces), timestamp=timestamp) if 'where' not in self.parent.kvp['constraint'] and \ self.parent.kvp['resulttype'] is None: returned = '0' searchresults = etree.SubElement(node, util.nspath_eval('csw:SearchResults', self.parent.context.namespaces), numberOfRecordsMatched=matched, numberOfRecordsReturned=returned, nextRecord=nextrecord, recordSchema=self.parent.kvp['outputschema']) if self.parent.kvp['elementsetname'] is not None: searchresults.attrib['elementSet'] = self.parent.kvp['elementsetname'] if 'where' not in self.parent.kvp['constraint'] \ and self.parent.kvp['resulttype'] is None: LOGGER.debug('Empty result set returned.') return node if self.parent.kvp['resulttype'] == 'hits': return node if results is not None: if len(results) < int(self.parent.kvp['maxrecords']): max1 = len(results) else: max1 = int(self.parent.kvp['startposition']) + (int(self.parent.kvp['maxrecords'])-1) LOGGER.debug('Presenting records %s - %s.' % (self.parent.kvp['startposition'], max1)) for res in results: try: if (self.parent.kvp['outputschema'] == 'http://www.opengis.net/cat/csw/2.0.2' and 'csw:Record' in self.parent.kvp['typenames']): # serialize csw:Record inline searchresults.append(self._write_record( res, self.parent.repository.queryables['_all'])) elif (self.parent.kvp['outputschema'] == 'http://www.opengis.net/cat/csw/2.0.2' and 'csw:Record' not in self.parent.kvp['typenames']): # serialize into csw:Record model for prof in self.parent.profiles['loaded']: # find source typename if self.parent.profiles['loaded'][prof].typename in \ self.parent.kvp['typenames']: typename = self.parent.profiles['loaded'][prof].typename break util.transform_mappings(self.parent.repository.queryables['_all'], self.parent.context.model['typenames'][typename]\ ['mappings']['csw:Record'], reverse=True) searchresults.append(self._write_record( res, self.parent.repository.queryables['_all'])) elif self.parent.kvp['outputschema'] in self.parent.outputschemas.keys(): # use outputschema serializer searchresults.append(self.parent.outputschemas[self.parent.kvp['outputschema']].write_record(res, self.parent.kvp['elementsetname'], self.parent.context, self.parent.config.get('server', 'url'))) else: # use profile serializer searchresults.append( self.parent.profiles['loaded'][self.parent.kvp['outputschema']].\ write_record(res, self.parent.kvp['elementsetname'], self.parent.kvp['outputschema'], self.parent.repository.queryables['_all'])) except Exception as err: self.parent.response = self.exceptionreport( 'NoApplicableCode', 'service', 'Record serialization failed: %s' % str(err)) return self.parent.response if len(dsresults) > 0: # return DistributedSearch results for resultset in dsresults: if isinstance(resultset, etree._Comment): searchresults.append(resultset) for rec in resultset: searchresults.append(etree.fromstring(resultset[rec].xml, self.parent.context.parser)) if 'responsehandler' in self.parent.kvp: # process the handler self.parent._process_responsehandler(etree.tostring(node, pretty_print=self.parent.pretty_print)) else: return node def getrecordbyid(self, raw=False): ''' Handle GetRecordById request ''' if 'id' not in self.parent.kvp: return self.exceptionreport('MissingParameterValue', 'id', 'Missing id parameter') if len(self.parent.kvp['id']) < 1: return self.exceptionreport('InvalidParameterValue', 'id', 'Invalid id parameter') if 'outputschema' not in self.parent.kvp: self.parent.kvp['outputschema'] = self.parent.context.namespaces['csw'] if self.parent.requesttype == 'GET': self.parent.kvp['id'] = self.parent.kvp['id'].split(',') if ('outputformat' in self.parent.kvp and self.parent.kvp['outputformat'] not in self.parent.context.model['operations']['GetRecordById']['parameters'] ['outputFormat']['values']): return self.exceptionreport('InvalidParameterValue', 'outputformat', 'Invalid outputformat parameter %s' % self.parent.kvp['outputformat']) if ('outputschema' in self.parent.kvp and self.parent.kvp['outputschema'] not in self.parent.context.model['operations']['GetRecordById']['parameters'] ['outputSchema']['values']): return self.exceptionreport('InvalidParameterValue', 'outputschema', 'Invalid outputschema parameter %s' % self.parent.kvp['outputschema']) if 'elementsetname' not in self.parent.kvp: self.parent.kvp['elementsetname'] = 'summary' else: if (self.parent.kvp['elementsetname'] not in self.parent.context.model['operations']['GetRecordById']['parameters'] ['ElementSetName']['values']): return self.exceptionreport('InvalidParameterValue', 'elementsetname', 'Invalid elementsetname parameter %s' % self.parent.kvp['elementsetname']) node = etree.Element(util.nspath_eval('csw:GetRecordByIdResponse', self.parent.context.namespaces), nsmap=self.parent.context.namespaces) node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-discovery.xsd' % \ (self.parent.context.namespaces['csw'], self.parent.config.get('server', 'ogc_schemas_base')) # query repository LOGGER.debug('Querying repository with ids: %s.' % self.parent.kvp['id'][0]) results = self.parent.repository.query_ids(self.parent.kvp['id']) if raw: # GetRepositoryItem request LOGGER.debug('GetRepositoryItem request.') if len(results) > 0: return etree.fromstring(util.getqattr(results[0], self.parent.context.md_core_model['mappings']['pycsw:XML']), self.parent.context.parser) for result in results: if (util.getqattr(result, self.parent.context.md_core_model['mappings']['pycsw:Typename']) == 'csw:Record' and self.parent.kvp['outputschema'] == 'http://www.opengis.net/cat/csw/2.0.2'): # serialize record inline node.append(self._write_record( result, self.parent.repository.queryables['_all'])) elif (self.parent.kvp['outputschema'] == 'http://www.opengis.net/cat/csw/2.0.2'): # serialize into csw:Record model typename = None for prof in self.parent.profiles['loaded']: # find source typename if self.parent.profiles['loaded'][prof].typename in \ [util.getqattr(result, self.parent.context.md_core_model['mappings']['pycsw:Typename'])]: typename = self.parent.profiles['loaded'][prof].typename break if typename is not None: util.transform_mappings(self.parent.repository.queryables['_all'], self.parent.context.model['typenames'][typename]\ ['mappings']['csw:Record'], reverse=True) node.append(self._write_record( result, self.parent.repository.queryables['_all'])) elif self.parent.kvp['outputschema'] in self.parent.outputschemas.keys(): # use outputschema serializer node.append(self.parent.outputschemas[self.parent.kvp['outputschema']].write_record(result, self.parent.kvp['elementsetname'], self.parent.context, self.parent.config.get('server', 'url'))) else: # it's a profile output node.append( self.parent.profiles['loaded'][self.parent.kvp['outputschema']].write_record( result, self.parent.kvp['elementsetname'], self.parent.kvp['outputschema'], self.parent.repository.queryables['_all'])) if raw and len(results) == 0: return None return node def getrepositoryitem(self): ''' Handle GetRepositoryItem request ''' # similar to GetRecordById without csw:* wrapping node = self.parent.getrecordbyid(raw=True) if node is None: return self.exceptionreport('NotFound', 'id', 'No repository item found for \'%s\'' % self.parent.kvp['id']) else: return node def transaction(self): ''' Handle Transaction request ''' try: self.parent._test_manager() except Exception as err: return self.exceptionreport('NoApplicableCode', 'transaction', str(err)) inserted = 0 updated = 0 deleted = 0 insertresults = [] LOGGER.debug('Transaction list: %s' % self.parent.kvp['transactions']) for ttype in self.parent.kvp['transactions']: if ttype['type'] == 'insert': try: record = metadata.parse_record(self.parent.context, ttype['xml'], self.parent.repository)[0] except Exception as err: return self.exceptionreport('NoApplicableCode', 'insert', 'Transaction (insert) failed: record parsing failed: %s' \ % str(err)) LOGGER.debug('Transaction operation: %s' % record) if not hasattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier']): return self.exceptionreport('NoApplicableCode', 'insert', 'Record requires an identifier') # insert new record try: self.parent.repository.insert(record, 'local', util.get_today_and_now()) inserted += 1 insertresults.append( {'identifier': getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier']), 'title': getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Title'])}) except Exception as err: return self.exceptionreport('NoApplicableCode', 'insert', 'Transaction (insert) failed: %s.' % str(err)) elif ttype['type'] == 'update': if 'constraint' not in ttype: # update full existing resource in repository try: record = metadata.parse_record(self.parent.context, ttype['xml'], self.parent.repository)[0] identifier = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier']) except Exception as err: return self.exceptionreport('NoApplicableCode', 'insert', 'Transaction (update) failed: record parsing failed: %s' \ % str(err)) # query repository to see if record already exists LOGGER.debug('checking if record exists (%s)' % \ identifier) results = self.parent.repository.query_ids(ids=[identifier]) if len(results) == 0: LOGGER.debug('id %s does not exist in repository' % \ identifier) else: # existing record, it's an update try: self.parent.repository.update(record) updated += 1 except Exception as err: return self.exceptionreport('NoApplicableCode', 'update', 'Transaction (update) failed: %s.' % str(err)) else: # update by record property and constraint # get / set XPath for property names for rp in ttype['recordproperty']: if rp['name'] not in self.parent.repository.queryables['_all']: # is it an XPath? if rp['name'].find('/') != -1: # scan outputschemas; if match, bind for osch in self.parent.outputschemas.values(): for key, value in osch.XPATH_MAPPINGS.items(): if value == rp['name']: # match rp['rp'] = {'xpath': value, 'name': key} rp['rp']['dbcol'] = self.parent.repository.queryables['_all'][key] break else: return self.exceptionreport('NoApplicableCode', 'update', 'Transaction (update) failed: invalid property2: %s.' % str(rp['name'])) else: rp['rp']= \ self.parent.repository.queryables['_all'][rp['name']] LOGGER.debug('Record Properties: %s.' % ttype['recordproperty']) try: updated += self.parent.repository.update(record=None, recprops=ttype['recordproperty'], constraint=ttype['constraint']) except Exception as err: return self.exceptionreport('NoApplicableCode', 'update', 'Transaction (update) failed: %s.' % str(err)) elif ttype['type'] == 'delete': deleted += self.parent.repository.delete(ttype['constraint']) node = etree.Element(util.nspath_eval('csw:TransactionResponse', self.parent.context.namespaces), nsmap=self.parent.context.namespaces, version='2.0.2') node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-publication.xsd' % \ (self.parent.context.namespaces['csw'], self.parent.config.get('server', 'ogc_schemas_base')) node.append( self._write_transactionsummary( inserted=inserted, updated=updated, deleted=deleted)) if (len(insertresults) > 0 and self.parent.kvp['verboseresponse']): # show insert result identifiers node.append(self._write_verboseresponse(insertresults)) return node def harvest(self): ''' Handle Harvest request ''' service_identifier = None old_identifier = None deleted = [] try: self.parent._test_manager() except Exception as err: return self.exceptionreport('NoApplicableCode', 'harvest', str(err)) if self.parent.requesttype == 'GET': if 'resourcetype' not in self.parent.kvp: return self.exceptionreport('MissingParameterValue', 'resourcetype', 'Missing resourcetype parameter') if 'source' not in self.parent.kvp: return self.exceptionreport('MissingParameterValue', 'source', 'Missing source parameter') # validate resourcetype if (self.parent.kvp['resourcetype'] not in self.parent.context.model['operations']['Harvest']['parameters']['ResourceType'] ['values']): return self.exceptionreport('InvalidParameterValue', 'resourcetype', 'Invalid resource type parameter: %s.\ Allowable resourcetype values: %s' % (self.parent.kvp['resourcetype'], ','.join(self.parent.context.model['operations']['Harvest']['parameters'] ['ResourceType']['values']))) if (self.parent.kvp['resourcetype'].find('opengis.net') == -1 and self.parent.kvp['resourcetype'].find('urn:geoss:waf') == -1): # fetch content-based resource LOGGER.debug('Fetching resource %s' % self.parent.kvp['source']) try: content = util.http_request('GET', self.parent.kvp['source']) except Exception as err: errortext = 'Error fetching resource %s.\nError: %s.' % \ (self.parent.kvp['source'], str(err)) LOGGER.debug(errortext) return self.exceptionreport('InvalidParameterValue', 'source', errortext) else: # it's a service URL content = self.parent.kvp['source'] # query repository to see if service already exists LOGGER.debug('checking if service exists (%s)' % content) results = self.parent.repository.query_source(content) if len(results) > 0: # exists, keep identifier for update LOGGER.debug('Service already exists, keeping identifier and results') service_identifier = getattr(results[0], self.parent.context.md_core_model['mappings']['pycsw:Identifier']) service_results = results LOGGER.debug('Identifier is %s' % service_identifier) # return self.exceptionreport('NoApplicableCode', 'source', # 'Insert failed: service %s already in repository' % content) if hasattr(self.parent.repository, 'local_ingest') and self.parent.repository.local_ingest: updated = 0 deleted = [] try: ir = self.parent.repository.insert(self.parent.kvp['resourcetype'], self.parent.kvp['source']) inserted = len(ir) except Exception as err: return self.exceptionreport('NoApplicableCode', 'source', 'Harvest (insert) failed: %s.' % str(err)) else: # parse resource into record try: records_parsed = metadata.parse_record(self.parent.context, content, self.parent.repository, self.parent.kvp['resourcetype'], pagesize=self.parent.csw_harvest_pagesize) except Exception as err: LOGGER.exception(err) return self.exceptionreport('NoApplicableCode', 'source', 'Harvest failed: record parsing failed: %s' % str(err)) inserted = 0 updated = 0 ir = [] LOGGER.debug('Total Records parsed: %d' % len(records_parsed)) for record in records_parsed: if self.parent.kvp['resourcetype'] == 'urn:geoss:waf': src = record.source else: src = self.parent.kvp['source'] setattr(record, self.parent.context.md_core_model['mappings']['pycsw:Source'], src) setattr(record, self.parent.context.md_core_model['mappings']['pycsw:InsertDate'], util.get_today_and_now()) identifier = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier']) source = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Source']) insert_date = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:InsertDate']) title = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Title']) record_type = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Type']) record_identifier = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier']) if record_type == 'service' and service_identifier is not None: # service endpoint LOGGER.debug('Replacing service identifier from %s to %s' % (record_identifier, service_identifier)) old_identifier = record_identifier identifier = record_identifier = service_identifier if (record_type != 'service' and service_identifier is not None and old_identifier is not None): # service resource if record_identifier.find(old_identifier) != -1: new_identifier = record_identifier.replace(old_identifier, service_identifier) LOGGER.debug('Replacing service resource identifier from %s to %s' % (record_identifier, new_identifier)) identifier = record_identifier = new_identifier ir.append({'identifier': identifier, 'title': title}) results = [] if not self.parent.config.has_option('repository', 'source'): # query repository to see if record already exists LOGGER.debug('checking if record exists (%s)' % identifier) results = self.parent.repository.query_ids(ids=[identifier]) if len(results) == 0: # check for service identifier LOGGER.debug('checking if service id exists (%s)' % service_identifier) results = self.parent.repository.query_ids(ids=[service_identifier]) LOGGER.debug(str(results)) if len(results) == 0: # new record, it's a new insert inserted += 1 try: tmp = self.parent.repository.insert(record, source, insert_date) if tmp is not None: ir = tmp except Exception as err: return self.exceptionreport('NoApplicableCode', 'source', 'Harvest (insert) failed: %s.' % str(err)) else: # existing record, it's an update if source != results[0].source: # same identifier, but different source return self.exceptionreport('NoApplicableCode', 'source', 'Insert failed: identifier %s in repository\ has source %s.' % (identifier, source)) try: self.parent.repository.update(record) except Exception as err: return self.exceptionreport('NoApplicableCode', 'source', 'Harvest (update) failed: %s.' % str(err)) updated += 1 if service_identifier is not None: fresh_records = [str(i['identifier']) for i in ir] existing_records = [str(i.identifier) for i in service_results] deleted = set(existing_records) - set(fresh_records) LOGGER.debug('Records to delete: %s', deleted) for to_delete in deleted: delete_constraint = { 'type': 'filter', 'values': [to_delete], 'where': 'identifier = :pvalue0' } self.parent.repository.delete(delete_constraint) node = etree.Element(util.nspath_eval('csw:HarvestResponse', self.parent.context.namespaces), nsmap=self.parent.context.namespaces) node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = \ '%s %s/csw/2.0.2/CSW-publication.xsd' % (self.parent.context.namespaces['csw'], self.parent.config.get('server', 'ogc_schemas_base')) node2 = etree.SubElement(node, util.nspath_eval('csw:TransactionResponse', self.parent.context.namespaces), version='2.0.2') node2.append( self._write_transactionsummary(inserted=len(ir), updated=updated, deleted=len(deleted))) if inserted > 0: # show insert result identifiers node2.append(self._write_verboseresponse(ir)) if 'responsehandler' in self.parent.kvp: # process the handler self.parent._process_responsehandler(etree.tostring(node, pretty_print=self.parent.pretty_print)) else: return node def _write_record(self, recobj, queryables): ''' Generate csw:Record ''' if self.parent.kvp['elementsetname'] == 'brief': elname = 'BriefRecord' elif self.parent.kvp['elementsetname'] == 'summary': elname = 'SummaryRecord' else: elname = 'Record' record = etree.Element(util.nspath_eval('csw:%s' % elname, self.parent.context.namespaces)) if ('elementname' in self.parent.kvp and len(self.parent.kvp['elementname']) > 0): for elemname in self.parent.kvp['elementname']: if (elemname.find('BoundingBox') != -1 or elemname.find('Envelope') != -1): bboxel = write_boundingbox(util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:BoundingBox']), self.parent.context.namespaces) if bboxel is not None: record.append(bboxel) else: value = util.getqattr(recobj, queryables[elemname]['dbcol']) if value: etree.SubElement(record, util.nspath_eval(elemname, self.parent.context.namespaces)).text = value elif 'elementsetname' in self.parent.kvp: if (self.parent.kvp['elementsetname'] == 'full' and util.getqattr(recobj, self.parent.context.md_core_model['mappings']\ ['pycsw:Typename']) == 'csw:Record' and util.getqattr(recobj, self.parent.context.md_core_model['mappings']\ ['pycsw:Schema']) == 'http://www.opengis.net/cat/csw/2.0.2' and util.getqattr(recobj, self.parent.context.md_core_model['mappings']\ ['pycsw:Type']) != 'service'): # dump record as is and exit return etree.fromstring(util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:XML']), self.parent.context.parser) etree.SubElement(record, util.nspath_eval('dc:identifier', self.parent.context.namespaces)).text = \ util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:Identifier']) for i in ['dc:title', 'dc:type']: val = util.getqattr(recobj, queryables[i]['dbcol']) if not val: val = '' etree.SubElement(record, util.nspath_eval(i, self.parent.context.namespaces)).text = val if self.parent.kvp['elementsetname'] in ['summary', 'full']: # add summary elements keywords = util.getqattr(recobj, queryables['dc:subject']['dbcol']) if keywords is not None: for keyword in keywords.split(','): etree.SubElement(record, util.nspath_eval('dc:subject', self.parent.context.namespaces)).text = keyword val = util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:TopicCategory']) if val: etree.SubElement(record, util.nspath_eval('dc:subject', self.parent.context.namespaces), scheme='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode').text = val val = util.getqattr(recobj, queryables['dc:format']['dbcol']) if val: etree.SubElement(record, util.nspath_eval('dc:format', self.parent.context.namespaces)).text = val # links rlinks = util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:Links']) if rlinks: links = rlinks.split('^') for link in links: linkset = link.split(',') etree.SubElement(record, util.nspath_eval('dct:references', self.parent.context.namespaces), scheme=linkset[2]).text = linkset[-1] for i in ['dc:relation', 'dct:modified', 'dct:abstract']: val = util.getqattr(recobj, queryables[i]['dbcol']) if val is not None: etree.SubElement(record, util.nspath_eval(i, self.parent.context.namespaces)).text = val if self.parent.kvp['elementsetname'] == 'full': # add full elements for i in ['dc:date', 'dc:creator', \ 'dc:publisher', 'dc:contributor', 'dc:source', \ 'dc:language', 'dc:rights', 'dct:alternative']: val = util.getqattr(recobj, queryables[i]['dbcol']) if val: etree.SubElement(record, util.nspath_eval(i, self.parent.context.namespaces)).text = val val = util.getqattr(recobj, queryables['dct:spatial']['dbcol']) if val: etree.SubElement(record, util.nspath_eval('dct:spatial', self.parent.context.namespaces), scheme='http://www.opengis.net/def/crs').text = val # always write out ows:BoundingBox bboxel = write_boundingbox(getattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:BoundingBox']), self.parent.context.namespaces) if bboxel is not None: record.append(bboxel) return record def _parse_constraint(self, element): ''' Parse csw:Constraint ''' query = {} tmp = element.find(util.nspath_eval('ogc:Filter', self.parent.context.namespaces)) if tmp is not None: LOGGER.debug('Filter constraint specified.') try: query['type'] = 'filter' query['where'], query['values'] = fes1.parse(tmp, self.parent.repository.queryables['_all'], self.parent.repository.dbtype, self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts) except Exception as err: return 'Invalid Filter request: %s' % err tmp = element.find(util.nspath_eval('csw:CqlText', self.parent.context.namespaces)) if tmp is not None: LOGGER.debug('CQL specified: %s.', tmp.text) try: LOGGER.debug('Transforming CQL into OGC Filter') query['type'] = 'filter' cql = cql2fes1(tmp.text, self.parent.context.namespaces) query['where'], query['values'] = fes1.parse(cql, self.parent.repository.queryables['_all'], self.parent.repository.dbtype, self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts) except Exception as err: LOGGER.error('Invalid CQL request: %s', tmp.text) LOGGER.error('Error message: %s', err, exc_info=True) return 'Invalid CQL request' return query def parse_postdata(self, postdata): ''' Parse POST XML ''' request = {} try: LOGGER.debug('Parsing %s.' % postdata) doc = etree.fromstring(postdata, self.parent.context.parser) except Exception as err: errortext = \ 'Exception: document not well-formed.\nError: %s.' % str(err) LOGGER.debug(errortext) return errortext # if this is a SOAP request, get to SOAP-ENV:Body/csw:* if (doc.tag == util.nspath_eval('soapenv:Envelope', self.parent.context.namespaces)): LOGGER.debug('SOAP request specified.') self.parent.soap = True doc = doc.find( util.nspath_eval('soapenv:Body', self.parent.context.namespaces)).xpath('child::*')[0] if (doc.tag in [util.nspath_eval('csw:Transaction', self.parent.context.namespaces), util.nspath_eval('csw:Harvest', self.parent.context.namespaces)]): schema = os.path.join(self.parent.config.get('server', 'home'), 'core', 'schemas', 'ogc', 'csw', '2.0.2', 'CSW-publication.xsd') else: schema = os.path.join(self.parent.config.get('server', 'home'), 'core', 'schemas', 'ogc', 'csw', '2.0.2', 'CSW-discovery.xsd') try: # it is virtually impossible to validate a csw:Transaction # csw:Insert|csw:Update (with single child) XML document. # Only validate non csw:Transaction XML if doc.find('.//%s' % util.nspath_eval('csw:Insert', self.parent.context.namespaces)) is None and \ len(doc.xpath('//csw:Update/child::*', namespaces=self.parent.context.namespaces)) == 0: LOGGER.debug('Validating %s.' % postdata) schema = etree.XMLSchema(file=schema) parser = etree.XMLParser(schema=schema, resolve_entities=False) if hasattr(self.parent, 'soap') and self.parent.soap: # validate the body of the SOAP request doc = etree.fromstring(etree.tostring(doc), parser) else: # validate the request normally doc = etree.fromstring(postdata, parser) LOGGER.debug('Request is valid XML.') else: # parse Transaction without validation doc = etree.fromstring(postdata, self.parent.context.parser) except Exception as err: errortext = \ 'Exception: the document is not valid.\nError: %s' % str(err) LOGGER.debug(errortext) return errortext request['request'] = util.xmltag_split(doc.tag) LOGGER.debug('Request operation %s specified.' % request['request']) tmp = doc.find('.').attrib.get('service') if tmp is not None: request['service'] = tmp tmp = doc.find('.').attrib.get('version') if tmp is not None: request['version'] = tmp tmp = doc.find('.//%s' % util.nspath_eval('ows:Version', self.parent.context.namespaces)) if tmp is not None: request['version'] = tmp.text tmp = doc.find('.').attrib.get('updateSequence') if tmp is not None: request['updatesequence'] = tmp # GetCapabilities if request['request'] == 'GetCapabilities': tmp = doc.find(util.nspath_eval('ows:Sections', self.parent.context.namespaces)) if tmp is not None: request['sections'] = ','.join([section.text for section in \ doc.findall(util.nspath_eval('ows:Sections/ows:Section', self.parent.context.namespaces))]) # DescribeRecord if request['request'] == 'DescribeRecord': request['typename'] = [typename.text for typename in \ doc.findall(util.nspath_eval('csw:TypeName', self.parent.context.namespaces))] tmp = doc.find('.').attrib.get('schemaLanguage') if tmp is not None: request['schemalanguage'] = tmp tmp = doc.find('.').attrib.get('outputFormat') if tmp is not None: request['outputformat'] = tmp # GetDomain if request['request'] == 'GetDomain': tmp = doc.find(util.nspath_eval('csw:ParameterName', self.parent.context.namespaces)) if tmp is not None: request['parametername'] = tmp.text tmp = doc.find(util.nspath_eval('csw:PropertyName', self.parent.context.namespaces)) if tmp is not None: request['propertyname'] = tmp.text # GetRecords if request['request'] == 'GetRecords': tmp = doc.find('.').attrib.get('outputSchema') request['outputschema'] = tmp if tmp is not None \ else self.parent.context.namespaces['csw'] tmp = doc.find('.').attrib.get('resultType') request['resulttype'] = tmp if tmp is not None else None tmp = doc.find('.').attrib.get('outputFormat') request['outputformat'] = tmp if tmp is not None \ else 'application/xml' tmp = doc.find('.').attrib.get('startPosition') request['startposition'] = tmp if tmp is not None else 1 tmp = doc.find('.').attrib.get('requestId') request['requestid'] = tmp if tmp is not None else None tmp = doc.find('.').attrib.get('maxRecords') if tmp is not None: request['maxrecords'] = tmp tmp = doc.find(util.nspath_eval('csw:DistributedSearch', self.parent.context.namespaces)) if tmp is not None: request['distributedsearch'] = True hopcount = tmp.attrib.get('hopCount') request['hopcount'] = int(hopcount)-1 if hopcount is not None \ else 1 else: request['distributedsearch'] = False tmp = doc.find(util.nspath_eval('csw:ResponseHandler', self.parent.context.namespaces)) if tmp is not None: request['responsehandler'] = tmp.text tmp = doc.find(util.nspath_eval('csw:Query/csw:ElementSetName', self.parent.context.namespaces)) request['elementsetname'] = tmp.text if tmp is not None else None tmp = doc.find(util.nspath_eval( 'csw:Query', self.parent.context.namespaces)).attrib.get('typeNames') request['typenames'] = tmp.split() if tmp is not None \ else 'csw:Record' request['elementname'] = [elname.text for elname in \ doc.findall(util.nspath_eval('csw:Query/csw:ElementName', self.parent.context.namespaces))] request['constraint'] = {} tmp = doc.find(util.nspath_eval('csw:Query/csw:Constraint', self.parent.context.namespaces)) if tmp is not None: request['constraint'] = self._parse_constraint(tmp) if isinstance(request['constraint'], str): # parse error return 'Invalid Constraint: %s' % request['constraint'] else: LOGGER.debug('No csw:Constraint (ogc:Filter or csw:CqlText) \ specified.') tmp = doc.find(util.nspath_eval('csw:Query/ogc:SortBy', self.parent.context.namespaces)) if tmp is not None: LOGGER.debug('Sorted query specified.') request['sortby'] = {} try: elname = tmp.find(util.nspath_eval( 'ogc:SortProperty/ogc:PropertyName', self.parent.context.namespaces)).text request['sortby']['propertyname'] = \ self.parent.repository.queryables['_all'][elname]['dbcol'] if (elname.find('BoundingBox') != -1 or elname.find('Envelope') != -1): # it's a spatial sort request['sortby']['spatial'] = True except Exception as err: errortext = \ 'Invalid ogc:SortProperty/ogc:PropertyName: %s' % str(err) LOGGER.debug(errortext) return errortext tmp2 = tmp.find(util.nspath_eval( 'ogc:SortProperty/ogc:SortOrder', self.parent.context.namespaces)) request['sortby']['order'] = tmp2.text if tmp2 is not None \ else 'ASC' else: request['sortby'] = None # GetRecordById if request['request'] == 'GetRecordById': request['id'] = [id1.text for id1 in \ doc.findall(util.nspath_eval('csw:Id', self.parent.context.namespaces))] tmp = doc.find(util.nspath_eval('csw:ElementSetName', self.parent.context.namespaces)) request['elementsetname'] = tmp.text if tmp is not None \ else 'summary' tmp = doc.find('.').attrib.get('outputSchema') request['outputschema'] = tmp if tmp is not None \ else self.parent.context.namespaces['csw'] tmp = doc.find('.').attrib.get('outputFormat') if tmp is not None: request['outputformat'] = tmp # Transaction if request['request'] == 'Transaction': request['verboseresponse'] = True tmp = doc.find('.').attrib.get('verboseResponse') if tmp is not None: if tmp in ['false', '0']: request['verboseresponse'] = False tmp = doc.find('.').attrib.get('requestId') request['requestid'] = tmp if tmp is not None else None request['transactions'] = [] for ttype in \ doc.xpath('//csw:Insert', namespaces=self.parent.context.namespaces): tname = ttype.attrib.get('typeName') for mdrec in ttype.xpath('child::*'): xml = mdrec request['transactions'].append( {'type': 'insert', 'typename': tname, 'xml': xml}) for ttype in \ doc.xpath('//csw:Update', namespaces=self.parent.context.namespaces): child = ttype.xpath('child::*') update = {'type': 'update'} if len(child) == 1: # it's a wholesale update update['xml'] = child[0] else: # it's a RecordProperty with Constraint Update update['recordproperty'] = [] for recprop in ttype.findall( util.nspath_eval('csw:RecordProperty', self.parent.context.namespaces)): rpname = recprop.find(util.nspath_eval('csw:Name', self.parent.context.namespaces)).text rpvalue = recprop.find( util.nspath_eval('csw:Value', self.parent.context.namespaces)).text update['recordproperty'].append( {'name': rpname, 'value': rpvalue}) update['constraint'] = self._parse_constraint( ttype.find(util.nspath_eval('csw:Constraint', self.parent.context.namespaces))) request['transactions'].append(update) for ttype in \ doc.xpath('//csw:Delete', namespaces=self.parent.context.namespaces): tname = ttype.attrib.get('typeName') constraint = self._parse_constraint( ttype.find(util.nspath_eval('csw:Constraint', self.parent.context.namespaces))) if isinstance(constraint, str): # parse error return 'Invalid Constraint: %s' % constraint request['transactions'].append( {'type': 'delete', 'typename': tname, 'constraint': constraint}) # Harvest if request['request'] == 'Harvest': request['source'] = doc.find(util.nspath_eval('csw:Source', self.parent.context.namespaces)).text request['resourcetype'] = \ doc.find(util.nspath_eval('csw:ResourceType', self.parent.context.namespaces)).text tmp = doc.find(util.nspath_eval('csw:ResourceFormat', self.parent.context.namespaces)) if tmp is not None: request['resourceformat'] = tmp.text else: request['resourceformat'] = 'application/xml' tmp = doc.find(util.nspath_eval('csw:HarvestInterval', self.parent.context.namespaces)) if tmp is not None: request['harvestinterval'] = tmp.text tmp = doc.find(util.nspath_eval('csw:ResponseHandler', self.parent.context.namespaces)) if tmp is not None: request['responsehandler'] = tmp.text return request def _write_transactionsummary(self, inserted=0, updated=0, deleted=0): ''' Write csw:TransactionSummary construct ''' node = etree.Element(util.nspath_eval('csw:TransactionSummary', self.parent.context.namespaces)) if 'requestid' in self.parent.kvp and self.parent.kvp['requestid'] is not None: node.attrib['requestId'] = self.parent.kvp['requestid'] etree.SubElement(node, util.nspath_eval('csw:totalInserted', self.parent.context.namespaces)).text = str(inserted) etree.SubElement(node, util.nspath_eval('csw:totalUpdated', self.parent.context.namespaces)).text = str(updated) etree.SubElement(node, util.nspath_eval('csw:totalDeleted', self.parent.context.namespaces)).text = str(deleted) return node def _write_acknowledgement(self, root=True): ''' Generate csw:Acknowledgement ''' node = etree.Element(util.nspath_eval('csw:Acknowledgement', self.parent.context.namespaces), nsmap = self.parent.context.namespaces, timeStamp=util.get_today_and_now()) if root: node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = \ '%s %s/csw/2.0.2/CSW-discovery.xsd' % (self.parent.context.namespaces['csw'], \ self.parent.config.get('server', 'ogc_schemas_base')) node1 = etree.SubElement(node, util.nspath_eval('csw:EchoedRequest', self.parent.context.namespaces)) if self.parent.requesttype == 'POST': node1.append(etree.fromstring(self.parent.request, self.parent.context.parser)) else: # GET node2 = etree.SubElement(node1, util.nspath_eval('ows:Get', self.parent.context.namespaces)) node2.text = self.parent.request if self.parent.async: etree.SubElement(node, util.nspath_eval('csw:RequestId', self.parent.context.namespaces)).text = self.kvp['requestid'] return node def _write_verboseresponse(self, insertresults): ''' show insert result identifiers ''' insertresult = etree.Element(util.nspath_eval('csw:InsertResult', self.parent.context.namespaces)) for ir in insertresults: briefrec = etree.SubElement(insertresult, util.nspath_eval('csw:BriefRecord', self.parent.context.namespaces)) etree.SubElement(briefrec, util.nspath_eval('dc:identifier', self.parent.context.namespaces)).text = ir['identifier'] etree.SubElement(briefrec, util.nspath_eval('dc:title', self.parent.context.namespaces)).text = ir['title'] return insertresult def exceptionreport(self, code, locator, text): ''' Generate ExceptionReport ''' self.parent.exception = True self.parent.status = 'OK' try: language = self.parent.config.get('server', 'language') ogc_schemas_base = self.parent.config.get('server', 'ogc_schemas_base') except: language = 'en-US' ogc_schemas_base = self.parent.context.ogc_schemas_base node = etree.Element(util.nspath_eval('ows:ExceptionReport', self.parent.context.namespaces), nsmap=self.parent.context.namespaces, version='1.2.0', language=language) node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = \ '%s %s/ows/1.0.0/owsExceptionReport.xsd' % \ (self.parent.context.namespaces['ows'], ogc_schemas_base) exception = etree.SubElement(node, util.nspath_eval('ows:Exception', self.parent.context.namespaces), exceptionCode=code, locator=locator) exception_text = etree.SubElement(exception, util.nspath_eval('ows:ExceptionText', self.parent.context.namespaces)) try: exception_text.text = text except ValueError as err: exception_text.text = repr(text) return node def write_boundingbox(bbox, nsmap): ''' Generate ows:BoundingBox ''' if bbox is not None: try: bbox2 = util.wkt2geom(bbox) except: return None if len(bbox2) == 4: boundingbox = etree.Element(util.nspath_eval('ows:BoundingBox', nsmap), crs='urn:x-ogc:def:crs:EPSG:6.11:4326', dimensions='2') etree.SubElement(boundingbox, util.nspath_eval('ows:LowerCorner', nsmap)).text = '%s %s' % (bbox2[1], bbox2[0]) etree.SubElement(boundingbox, util.nspath_eval('ows:UpperCorner', nsmap)).text = '%s %s' % (bbox2[3], bbox2[2]) return boundingbox else: return None else: return None pycsw-2.0.3/pycsw/ogc/csw/PaxHeaders.23451/csw3.py0000644000000000000000000000007413114323025016355 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/csw/csw3.py0000644000175000001440000031115513114323025017325 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2016 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import os import sys import cgi from time import time from six.moves.urllib.parse import quote, unquote from six import StringIO from six.moves.configparser import SafeConfigParser from pycsw.core.etree import etree from pycsw.ogc.csw.cql import cql2fes1 from pycsw import oaipmh, opensearch, sru from pycsw.plugins.profiles import profile as pprofile import pycsw.plugins.outputschemas from pycsw.core import config, log, metadata, util from pycsw.ogc.fes import fes2 import logging LOGGER = logging.getLogger(__name__) class Csw3(object): ''' CSW 3.x server ''' def __init__(self, server_csw): ''' Initialize CSW3 ''' self.parent = server_csw self.version = '3.0.0' def getcapabilities(self): ''' Handle GetCapabilities request ''' serviceidentification = True serviceprovider = True operationsmetadata = True filtercaps = False languages = False # validate acceptformats LOGGER.debug('Validating ows20:AcceptFormats') LOGGER.debug(self.parent.context.model['operations']['GetCapabilities']['parameters']['acceptFormats']['values']) if 'acceptformats' in self.parent.kvp: bfound = False for fmt in self.parent.kvp['acceptformats'].split(','): if fmt in self.parent.context.model['operations']['GetCapabilities']['parameters']['acceptFormats']['values']: self.parent.mimetype = fmt bfound = True break if not bfound: return self.exceptionreport('InvalidParameterValue', 'acceptformats', 'Invalid acceptFormats parameter value: %s' % self.parent.kvp['acceptformats']) if 'sections' in self.parent.kvp and self.parent.kvp['sections'] != '': serviceidentification = False serviceprovider = False operationsmetadata = False for section in self.parent.kvp['sections'].split(','): if section == 'ServiceIdentification': serviceidentification = True if section == 'ServiceProvider': serviceprovider = True if section == 'OperationsMetadata': operationsmetadata = True if section == 'All': serviceidentification = True serviceprovider = True operationsmetadata = True filtercaps = True languages = True else: filtercaps = True languages = True # check extra parameters that may be def'd by profiles if self.parent.profiles is not None: for prof in self.parent.profiles['loaded'].keys(): result = \ self.parent.profiles['loaded'][prof].check_parameters(self.parent.kvp) if result is not None: return self.exceptionreport(result['code'], result['locator'], result['text']) # @updateSequence: get latest update to repository try: updatesequence = \ util.get_time_iso2unix(self.parent.repository.query_insert()) except: updatesequence = None node = etree.Element(util.nspath_eval('csw30:Capabilities', self.parent.context.namespaces), nsmap=self.parent.context.namespaces, version='3.0.0', updateSequence=str(updatesequence)) if 'updatesequence' in self.parent.kvp: if int(self.parent.kvp['updatesequence']) == updatesequence: return node elif int(self.parent.kvp['updatesequence']) > updatesequence: return self.exceptionreport('InvalidUpdateSequence', 'updatesequence', 'outputsequence specified (%s) is higher than server\'s \ updatesequence (%s)' % (self.parent.kvp['updatesequence'], updatesequence)) node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = '%s %s/csw/3.0/cswGetCapabilities.xsd' % \ (self.parent.context.namespaces['csw30'], self.parent.config.get('server', 'ogc_schemas_base')) metadata_main = dict(self.parent.config.items('metadata:main')) if serviceidentification: LOGGER.debug('Writing section ServiceIdentification.') serviceidentification = etree.SubElement(node, \ util.nspath_eval('ows20:ServiceIdentification', self.parent.context.namespaces)) etree.SubElement(serviceidentification, util.nspath_eval('ows20:Title', self.parent.context.namespaces)).text = \ metadata_main.get('identification_title', 'missing') etree.SubElement(serviceidentification, util.nspath_eval('ows20:Abstract', self.parent.context.namespaces)).text = \ metadata_main.get('identification_abstract', 'missing') keywords = etree.SubElement(serviceidentification, util.nspath_eval('ows20:Keywords', self.parent.context.namespaces)) for k in \ metadata_main.get('identification_keywords').split(','): etree.SubElement( keywords, util.nspath_eval('ows20:Keyword', self.parent.context.namespaces)).text = k etree.SubElement(keywords, util.nspath_eval('ows20:Type', self.parent.context.namespaces), codeSpace='ISOTC211/19115').text = \ metadata_main.get('identification_keywords_type', 'missing') etree.SubElement(serviceidentification, util.nspath_eval('ows20:ServiceType', self.parent.context.namespaces), codeSpace='OGC').text = 'CSW' for stv in self.parent.context.model['parameters']['version']['values']: etree.SubElement(serviceidentification, util.nspath_eval('ows20:ServiceTypeVersion', self.parent.context.namespaces)).text = stv if self.parent.profiles is not None: for prof in self.parent.profiles['loaded'].keys(): prof_name = self.parent.profiles['loaded'][prof].name prof_val = self.parent.profiles['loaded'][prof].namespaces[prof_name] etree.SubElement(serviceidentification, util.nspath_eval('ows20:Profile', self.parent.context.namespaces)).text = prof_val etree.SubElement(serviceidentification, util.nspath_eval('ows20:Fees', self.parent.context.namespaces)).text = \ metadata_main.get('identification_fees', 'missing') etree.SubElement(serviceidentification, util.nspath_eval('ows20:AccessConstraints', self.parent.context.namespaces)).text = \ metadata_main.get('identification_accessconstraints', 'missing') if serviceprovider: LOGGER.debug('Writing section ServiceProvider.') serviceprovider = etree.SubElement(node, util.nspath_eval('ows20:ServiceProvider', self.parent.context.namespaces)) etree.SubElement(serviceprovider, util.nspath_eval('ows20:ProviderName', self.parent.context.namespaces)).text = \ metadata_main.get('provider_name', 'missing') providersite = etree.SubElement(serviceprovider, util.nspath_eval('ows20:ProviderSite', self.parent.context.namespaces)) providersite.attrib[util.nspath_eval('xlink:type', self.parent.context.namespaces)] = 'simple' providersite.attrib[util.nspath_eval('xlink:href', self.parent.context.namespaces)] = \ metadata_main.get('provider_url', 'missing') servicecontact = etree.SubElement(serviceprovider, util.nspath_eval('ows20:ServiceContact', self.parent.context.namespaces)) etree.SubElement(servicecontact, util.nspath_eval('ows20:IndividualName', self.parent.context.namespaces)).text = \ metadata_main.get('contact_name', 'missing') etree.SubElement(servicecontact, util.nspath_eval('ows20:PositionName', self.parent.context.namespaces)).text = \ metadata_main.get('contact_position', 'missing') contactinfo = etree.SubElement(servicecontact, util.nspath_eval('ows20:ContactInfo', self.parent.context.namespaces)) phone = etree.SubElement(contactinfo, util.nspath_eval('ows20:Phone', self.parent.context.namespaces)) etree.SubElement(phone, util.nspath_eval('ows20:Voice', self.parent.context.namespaces)).text = \ metadata_main.get('contact_phone', 'missing') etree.SubElement(phone, util.nspath_eval('ows20:Facsimile', self.parent.context.namespaces)).text = \ metadata_main.get('contact_fax', 'missing') address = etree.SubElement(contactinfo, util.nspath_eval('ows20:Address', self.parent.context.namespaces)) etree.SubElement(address, util.nspath_eval('ows20:DeliveryPoint', self.parent.context.namespaces)).text = \ metadata_main.get('contact_address', 'missing') etree.SubElement(address, util.nspath_eval('ows20:City', self.parent.context.namespaces)).text = \ metadata_main.get('contact_city', 'missing') etree.SubElement(address, util.nspath_eval('ows20:AdministrativeArea', self.parent.context.namespaces)).text = \ metadata_main.get('contact_stateorprovince', 'missing') etree.SubElement(address, util.nspath_eval('ows20:PostalCode', self.parent.context.namespaces)).text = \ metadata_main.get('contact_postalcode', 'missing') etree.SubElement(address, util.nspath_eval('ows20:Country', self.parent.context.namespaces)).text = \ metadata_main.get('contact_country', 'missing') etree.SubElement(address, util.nspath_eval('ows20:ElectronicMailAddress', self.parent.context.namespaces)).text = \ metadata_main.get('contact_email', 'missing') url = etree.SubElement(contactinfo, util.nspath_eval('ows20:OnlineResource', self.parent.context.namespaces)) url.attrib[util.nspath_eval('xlink:type', self.parent.context.namespaces)] = 'simple' url.attrib[util.nspath_eval('xlink:href', self.parent.context.namespaces)] = \ metadata_main.get('contact_url', 'missing') etree.SubElement(contactinfo, util.nspath_eval('ows20:HoursOfService', self.parent.context.namespaces)).text = \ metadata_main.get('contact_hours', 'missing') etree.SubElement(contactinfo, util.nspath_eval('ows20:ContactInstructions', self.parent.context.namespaces)).text = \ metadata_main.get('contact_instructions', 'missing') etree.SubElement(servicecontact, util.nspath_eval('ows20:Role', self.parent.context.namespaces), codeSpace='ISOTC211/19115').text = \ metadata_main.get('contact_role', 'missing') if operationsmetadata: LOGGER.debug('Writing section OperationsMetadata.') operationsmetadata = etree.SubElement(node, util.nspath_eval('ows20:OperationsMetadata', self.parent.context.namespaces)) for operation in self.parent.context.model['operations_order']: oper = etree.SubElement(operationsmetadata, util.nspath_eval('ows20:Operation', self.parent.context.namespaces), name=operation) dcp = etree.SubElement(oper, util.nspath_eval('ows20:DCP', self.parent.context.namespaces)) http = etree.SubElement(dcp, util.nspath_eval('ows20:HTTP', self.parent.context.namespaces)) if self.parent.context.model['operations'][operation]['methods']['get']: get = etree.SubElement(http, util.nspath_eval('ows20:Get', self.parent.context.namespaces)) get.attrib[util.nspath_eval('xlink:type',\ self.parent.context.namespaces)] = 'simple' get.attrib[util.nspath_eval('xlink:href',\ self.parent.context.namespaces)] = self.parent.config.get('server', 'url') if self.parent.context.model['operations'][operation]['methods']['post']: post = etree.SubElement(http, util.nspath_eval('ows20:Post', self.parent.context.namespaces)) post.attrib[util.nspath_eval('xlink:type', self.parent.context.namespaces)] = 'simple' post.attrib[util.nspath_eval('xlink:href', self.parent.context.namespaces)] = \ self.parent.config.get('server', 'url') for parameter in \ sorted(self.parent.context.model['operations'][operation]['parameters']): param = etree.SubElement(oper, util.nspath_eval('ows20:Parameter', self.parent.context.namespaces), name=parameter) param.append(self._write_allowed_values(self.parent.context.model['operations'][operation]['parameters'][parameter]['values'])) if operation == 'GetRecords': # advertise queryables, MaxRecordDefault for qbl in sorted(self.parent.repository.queryables.keys()): if qbl not in ['_all', 'SupportedDublinCoreQueryables']: param = etree.SubElement(oper, util.nspath_eval('ows20:Constraint', self.parent.context.namespaces), name=qbl) param.append(self._write_allowed_values(self.parent.repository.queryables[qbl])) if self.parent.profiles is not None: for con in sorted(self.parent.context.model[\ 'operations']['GetRecords']['constraints'].keys()): param = etree.SubElement(oper, util.nspath_eval('ows20:Constraint', self.parent.context.namespaces), name=con) param.append(self._write_allowed_values(self.parent.context.model['operations']['GetRecords']['constraints'][con]['values'])) extra_constraints = { 'OpenSearchDescriptionDocument': ['%s?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities' % self.parent.config.get('server', 'url')], 'MaxRecordDefault': self.parent.context.model['constraints']['MaxRecordDefault']['values'], } for key in sorted(extra_constraints.keys()): param = etree.SubElement(oper, util.nspath_eval('ows20:Constraint', self.parent.context.namespaces), name=key) param.append(self._write_allowed_values(extra_constraints[key])) if 'FederatedCatalogues' in self.parent.context.model['constraints']: param = etree.SubElement(oper, util.nspath_eval('ows20:Constraint', self.parent.context.namespaces), name='FederatedCatalogues') param.append(self._write_allowed_values(self.parent.context.model['constraints']['FederatedCatalogues']['values'])) for parameter in sorted(self.parent.context.model['parameters'].keys()): param = etree.SubElement(operationsmetadata, util.nspath_eval('ows20:Parameter', self.parent.context.namespaces), name=parameter) param.append(self._write_allowed_values(self.parent.context.model['parameters'][parameter]['values'])) for qbl in sorted(self.parent.repository.queryables.keys()): if qbl == 'SupportedDublinCoreQueryables': param = etree.SubElement(operationsmetadata, util.nspath_eval('ows20:Constraint', self.parent.context.namespaces), name='CoreQueryables') param.append(self._write_allowed_values(self.parent.repository.queryables[qbl])) for constraint in sorted(self.parent.context.model['constraints'].keys()): param = etree.SubElement(operationsmetadata, util.nspath_eval('ows20:Constraint', self.parent.context.namespaces), name=constraint) param.append(self._write_allowed_values(self.parent.context.model['constraints'][constraint]['values'])) if self.parent.profiles is not None: for prof in self.parent.profiles['loaded'].keys(): ecnode = \ self.parent.profiles['loaded'][prof].get_extendedcapabilities() if ecnode is not None: operationsmetadata.append(ecnode) if languages: LOGGER.debug('Writing section ows:Languages') langs = etree.SubElement(node, util.nspath_eval('ows20:Languages', self.parent.context.namespaces)) etree.SubElement(langs, util.nspath_eval('ows20:Language', self.parent.context.namespaces)).text = self.parent.language['639_code'] if not filtercaps: return node # always write out Filter_Capabilities LOGGER.debug('Writing section Filter_Capabilities.') fltcaps = etree.SubElement(node, util.nspath_eval('fes20:Filter_Capabilities', self.parent.context.namespaces)) conformance = etree.SubElement(fltcaps, util.nspath_eval('fes20:Conformance', self.parent.context.namespaces)) for value in fes2.MODEL['Conformance']['values']: constraint = etree.SubElement(conformance, util.nspath_eval('fes20:Constraint', self.parent.context.namespaces), name=value) etree.SubElement(constraint, util.nspath_eval('ows11:NoValues', self.parent.context.namespaces)) etree.SubElement(constraint, util.nspath_eval('ows11:DefaultValue', self.parent.context.namespaces)).text = 'TRUE' idcaps = etree.SubElement(fltcaps, util.nspath_eval('fes20:Id_Capabilities', self.parent.context.namespaces)) for idcap in fes2.MODEL['Ids']['values']: etree.SubElement(idcaps, util.nspath_eval('fes20:ResourceIdentifier', self.parent.context.namespaces), name=idcap) scalarcaps = etree.SubElement(fltcaps, util.nspath_eval('fes20:Scalar_Capabilities', self.parent.context.namespaces)) etree.SubElement(scalarcaps, util.nspath_eval('fes20:LogicalOperators', self.parent.context.namespaces)) cmpops = etree.SubElement(scalarcaps, util.nspath_eval('fes20:ComparisonOperators', self.parent.context.namespaces)) for cmpop in sorted(fes2.MODEL['ComparisonOperators'].keys()): etree.SubElement(cmpops, util.nspath_eval('fes20:ComparisonOperator', self.parent.context.namespaces), name=fes2.MODEL['ComparisonOperators'][cmpop]['opname']) spatialcaps = etree.SubElement(fltcaps, util.nspath_eval('fes20:Spatial_Capabilities', self.parent.context.namespaces)) geomops = etree.SubElement(spatialcaps, util.nspath_eval('fes20:GeometryOperands', self.parent.context.namespaces)) for geomtype in \ fes2.MODEL['GeometryOperands']['values']: etree.SubElement(geomops, util.nspath_eval('fes20:GeometryOperand', self.parent.context.namespaces), name=geomtype) spatialops = etree.SubElement(spatialcaps, util.nspath_eval('fes20:SpatialOperators', self.parent.context.namespaces)) for spatial_comparison in \ fes2.MODEL['SpatialOperators']['values']: etree.SubElement(spatialops, util.nspath_eval('fes20:SpatialOperator', self.parent.context.namespaces), name=spatial_comparison) functions = etree.SubElement(fltcaps, util.nspath_eval('fes20:Functions', self.parent.context.namespaces)) for fnop in sorted(fes2.MODEL['Functions'].keys()): fn = etree.SubElement(functions, util.nspath_eval('fes20:Function', self.parent.context.namespaces), name=fnop) etree.SubElement(fn, util.nspath_eval('fes20:Returns', self.parent.context.namespaces)).text = \ fes2.MODEL['Functions'][fnop]['returns'] return node def getdomain(self): ''' Handle GetDomain request ''' if ('parametername' not in self.parent.kvp and 'valuereference' not in self.parent.kvp): return self.exceptionreport('MissingParameterValue', 'parametername', 'Missing value. \ One of valuereference or parametername must be specified') node = etree.Element(util.nspath_eval('csw30:GetDomainResponse', self.parent.context.namespaces), nsmap=self.parent.context.namespaces) node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = '%s %s/csw/3.0/cswGetDomain.xsd' % \ (self.parent.context.namespaces['csw30'], self.parent.config.get('server', 'ogc_schemas_base')) if 'parametername' in self.parent.kvp: for pname in self.parent.kvp['parametername'].split(','): LOGGER.debug('Parsing parametername %s.' % pname) domainvalue = etree.SubElement(node, util.nspath_eval('csw30:DomainValues', self.parent.context.namespaces), type='csw30:Record', resultType='available') etree.SubElement(domainvalue, util.nspath_eval('csw30:ParameterName', self.parent.context.namespaces)).text = pname try: operation, parameter = pname.split('.') except: return node if (operation in self.parent.context.model['operations'] and parameter in self.parent.context.model['operations'][operation]['parameters']): listofvalues = etree.SubElement(domainvalue, util.nspath_eval('csw30:ListOfValues', self.parent.context.namespaces)) for val in \ sorted(self.parent.context.model['operations'][operation]\ ['parameters'][parameter]['values']): etree.SubElement(listofvalues, util.nspath_eval('csw30:Value', self.parent.context.namespaces)).text = val if 'valuereference' in self.parent.kvp: for pname in self.parent.kvp['valuereference'].split(','): LOGGER.debug('Parsing valuereference %s.' % pname) if pname.find('/') == 0: # it's an XPath pname2 = pname else: # it's a core queryable, map to internal typename model try: pname2 = self.parent.repository.queryables['_all'][pname]['dbcol'] except: pname2 = pname # decipher typename dvtype = None if self.parent.profiles is not None: for prof in self.parent.profiles['loaded'].keys(): for prefix in self.parent.profiles['loaded'][prof].prefixes: if pname2.find(prefix) != -1: dvtype = self.parent.profiles['loaded'][prof].typename break if not dvtype: dvtype = 'csw30:Record' domainvalue = etree.SubElement(node, util.nspath_eval('csw30:DomainValues', self.parent.context.namespaces), type=dvtype, resultType='available') etree.SubElement(domainvalue, util.nspath_eval('csw30:ValueReference', self.parent.context.namespaces)).text = pname try: LOGGER.debug( 'Querying repository property %s, typename %s, \ domainquerytype %s.' % \ (pname2, dvtype, self.parent.domainquerytype)) results = self.parent.repository.query_domain( pname2, dvtype, self.parent.domainquerytype, True) LOGGER.debug('Results: %s' % str(len(results))) if self.parent.domainquerytype == 'range': rangeofvalues = etree.SubElement(domainvalue, util.nspath_eval('csw30:RangeOfValues', self.parent.context.namespaces)) etree.SubElement(rangeofvalues, util.nspath_eval('csw30:MinValue', self.parent.context.namespaces)).text = results[0][0] etree.SubElement(rangeofvalues, util.nspath_eval('csw30:MaxValue', self.parent.context.namespaces)).text = results[0][1] else: listofvalues = etree.SubElement(domainvalue, util.nspath_eval('csw30:ListOfValues', self.parent.context.namespaces)) for result in results: LOGGER.debug(str(result)) if (result is not None and result[0] is not None): # drop null values etree.SubElement(listofvalues, util.nspath_eval('csw30:Value', self.parent.context.namespaces), count=str(result[1])).text = result[0] except Exception as err: LOGGER.debug('No results for propertyname %s: %s.' % (pname2, str(err))) return node def getrecords(self): ''' Handle GetRecords request ''' timestamp = util.get_today_and_now() if ('elementsetname' not in self.parent.kvp and 'elementname' not in self.parent.kvp): if self.parent.requesttype == 'GET': LOGGER.debug(self.parent.requesttype) self.parent.kvp['elementsetname'] = 'summary' else: # mutually exclusive required return self.exceptionreport('MissingParameterValue', 'elementsetname', 'Missing one of ElementSetName or ElementName parameter(s)') if 'elementsetname' in self.parent.kvp and 'elementname' in self.parent.kvp: # mutually exclusive required return self.exceptionreport('NoApplicableCode', 'elementsetname', 'Only ONE of ElementSetName or ElementName parameter(s) is permitted') if 'elementsetname' not in self.parent.kvp: self.parent.kvp['elementsetname'] = 'summary' if 'outputschema' not in self.parent.kvp: self.parent.kvp['outputschema'] = self.parent.context.namespaces['csw30'] LOGGER.debug(self.parent.context.model['operations']['GetRecords']['parameters']['outputSchema']['values']) if (self.parent.kvp['outputschema'] not in self.parent.context.model['operations'] ['GetRecords']['parameters']['outputSchema']['values']): return self.exceptionreport('InvalidParameterValue', 'outputschema', 'Invalid outputSchema parameter value: %s' % self.parent.kvp['outputschema']) if 'outputformat' not in self.parent.kvp: self.parent.kvp['outputformat'] = 'application/xml' if 'HTTP_ACCEPT' in self.parent.environ: LOGGER.debug('Detected HTTP Accept header: %s', self.parent.environ['HTTP_ACCEPT']) formats_match = False if 'outputformat' in self.parent.kvp: LOGGER.debug(self.parent.kvp['outputformat']) for ofmt in self.parent.environ['HTTP_ACCEPT'].split(','): LOGGER.debug('Comparing %s and %s', ofmt, self.parent.kvp['outputformat']) if ofmt.split('/')[0] in self.parent.kvp['outputformat']: LOGGER.debug('FOUND OUTPUT MATCH') formats_match = True if not formats_match: return self.exceptionreport('InvalidParameterValue', 'outputformat', 'HTTP Accept header (%s) and outputformat (%s) must agree' % (self.parent.environ['HTTP_ACCEPT'], self.parent.kvp['outputformat'])) else: for ofmt in self.parent.environ['HTTP_ACCEPT'].split(','): if ofmt in self.parent.context.model['operations']['GetRecords']['parameters']['outputFormat']['values']: self.parent.kvp['outputformat'] = ofmt break if (self.parent.kvp['outputformat'] not in self.parent.context.model['operations'] ['GetRecords']['parameters']['outputFormat']['values']): return self.exceptionreport('InvalidParameterValue', 'outputformat', 'Invalid outputFormat parameter value: %s' % self.parent.kvp['outputformat']) if 'outputformat' in self.parent.kvp: LOGGER.debug('Setting content type') self.parent.contenttype = self.parent.kvp['outputformat'] if self.parent.kvp['outputformat'] == 'application/atom+xml': self.parent.kvp['outputschema'] = self.parent.context.namespaces['atom'] self.parent.mode = 'opensearch' if (('elementname' not in self.parent.kvp or len(self.parent.kvp['elementname']) == 0) and self.parent.kvp['elementsetname'] not in self.parent.context.model['operations']['GetRecords']['parameters'] ['ElementSetName']['values']): return self.exceptionreport('InvalidParameterValue', 'elementsetname', 'Invalid ElementSetName parameter value: %s' % self.parent.kvp['elementsetname']) if 'typenames' not in self.parent.kvp: return self.exceptionreport('MissingParameterValue', 'typenames', 'Missing typenames parameter') if ('typenames' in self.parent.kvp and self.parent.requesttype == 'GET'): # passed via GET #self.parent.kvp['typenames'] = self.parent.kvp['typenames'].split(',') self.parent.kvp['typenames'] = ['csw:Record' if x=='Record' else x for x in self.parent.kvp['typenames'].split(',')] if 'namespace' in self.parent.kvp: LOGGER.debug('resolving KVP namespace bindings') LOGGER.debug(self.parent.kvp['typenames']) self.parent.kvp['typenames'] = self.resolve_nsmap(self.parent.kvp['typenames']) if 'elementname' in self.parent.kvp: LOGGER.debug(self.parent.kvp['elementname']) self.parent.kvp['elementname'] = self.resolve_nsmap(self.parent.kvp['elementname'].split(',')) if 'typenames' in self.parent.kvp: for tname in self.parent.kvp['typenames']: #if tname == 'Record': # tname = 'csw:Record' if (tname not in self.parent.context.model['operations']['GetRecords'] ['parameters']['typeNames']['values']): return self.exceptionreport('InvalidParameterValue', 'typenames', 'Invalid typeNames parameter value: %s' % tname) # check elementname's if 'elementname' in self.parent.kvp: for ename in self.parent.kvp['elementname']: if ename not in self.parent.repository.queryables['_all']: return self.exceptionreport('InvalidParameterValue', 'elementname', 'Invalid ElementName parameter value: %s' % ename) maxrecords_cfg = -1 # not set in config server.maxrecords if self.parent.config.has_option('server', 'maxrecords'): maxrecords_cfg = int(self.parent.config.get('server', 'maxrecords')) if 'maxrecords' in self.parent.kvp and self.parent.kvp['maxrecords'] == 'unlimited': LOGGER.debug('Detected maxrecords=unlimited') self.parent.kvp.pop('maxrecords') if 'maxrecords' not in self.parent.kvp: # not specified by client if maxrecords_cfg > -1: # specified in config self.parent.kvp['maxrecords'] = maxrecords_cfg else: # spec default self.parent.kvp['maxrecords'] = 10 else: # specified by client if self.parent.kvp['maxrecords'] == '': self.parent.kvp['maxrecords'] = 10 if maxrecords_cfg > -1: # set in config if int(self.parent.kvp['maxrecords']) > maxrecords_cfg: self.parent.kvp['maxrecords'] = maxrecords_cfg if any(x in ['bbox', 'q', 'time'] for x in self.parent.kvp): LOGGER.debug('OpenSearch Geo/Time parameters detected.') self.parent.kvp['constraintlanguage'] = 'FILTER' try: tmp_filter = opensearch.kvp2filterxml(self.parent.kvp, self.parent.context) except Exception as err: return self.exceptionreport('InvalidParameterValue', 'bbox', str(err)) if tmp_filter is not "": self.parent.kvp['constraint'] = tmp_filter LOGGER.debug('OpenSearch Geo/Time parameters to Filter: %s.' % self.parent.kvp['constraint']) if self.parent.requesttype == 'GET': if 'constraint' in self.parent.kvp: # GET request LOGGER.debug('csw:Constraint passed over HTTP GET.') if 'constraintlanguage' not in self.parent.kvp: return self.exceptionreport('MissingParameterValue', 'constraintlanguage', 'constraintlanguage required when constraint specified') if (self.parent.kvp['constraintlanguage'] not in self.parent.context.model['operations']['GetRecords']['parameters'] ['CONSTRAINTLANGUAGE']['values']): return self.exceptionreport('InvalidParameterValue', 'constraintlanguage', 'Invalid constraintlanguage: %s' % self.parent.kvp['constraintlanguage']) if self.parent.kvp['constraintlanguage'] == 'CQL_TEXT': tmp = self.parent.kvp['constraint'] try: LOGGER.debug('Transforming CQL into fes1') LOGGER.debug('CQL: %s', tmp) self.parent.kvp['constraint'] = {} self.parent.kvp['constraint']['type'] = 'filter' cql = cql2fes1(tmp, self.parent.context.namespaces) self.parent.kvp['constraint']['where'], self.parent.kvp['constraint']['values'] = fes1.parse(cql, self.parent.repository.queryables['_all'], self.parent.repository.dbtype, self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts) except Exception as err: LOGGER.error('Invalid CQL query %s', tmp) LOGGER.error('Error message: %s', err, exc_info=True) return self.exceptionreport('InvalidParameterValue', 'constraint', 'Invalid Filter syntax') elif self.parent.kvp['constraintlanguage'] == 'FILTER': # validate filter XML try: schema = os.path.join(self.parent.config.get('server', 'home'), 'core', 'schemas', 'ogc', 'filter', '1.1.0', 'filter.xsd') LOGGER.debug('Validating Filter %s.' % self.parent.kvp['constraint']) schema = etree.XMLSchema(file=schema) parser = etree.XMLParser(schema=schema, resolve_entities=False) doc = etree.fromstring(self.parent.kvp['constraint'], parser) LOGGER.debug('Filter is valid XML.') self.parent.kvp['constraint'] = {} self.parent.kvp['constraint']['type'] = 'filter' self.parent.kvp['constraint']['where'], self.parent.kvp['constraint']['values'] = \ fes2.parse(doc, self.parent.repository.queryables['_all'], self.parent.repository.dbtype, self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts) except Exception as err: errortext = \ 'Exception: document not valid.\nError: %s.' % str(err) LOGGER.debug(errortext) return self.exceptionreport('InvalidParameterValue', 'bbox', 'Invalid Filter query: %s' % errortext) else: self.parent.kvp['constraint'] = {} if 'sortby' not in self.parent.kvp: self.parent.kvp['sortby'] = None elif 'sortby' in self.parent.kvp and self.parent.requesttype == 'GET': LOGGER.debug('Sorted query specified.') tmp = self.parent.kvp['sortby'] self.parent.kvp['sortby'] = {} try: name, order = tmp.rsplit(':', 1) except: return self.exceptionreport('InvalidParameterValue', 'sortby', 'Invalid SortBy value: must be in the format\ propertyname:A or propertyname:D') try: self.parent.kvp['sortby']['propertyname'] = \ self.parent.repository.queryables['_all'][name]['dbcol'] if name.find('BoundingBox') != -1 or name.find('Envelope') != -1: # it's a spatial sort self.parent.kvp['sortby']['spatial'] = True except Exception as err: return self.exceptionreport('InvalidParameterValue', 'sortby', 'Invalid SortBy propertyname: %s' % name) if order not in ['A', 'D']: return self.exceptionreport('InvalidParameterValue', 'sortby', 'Invalid SortBy value: sort order must be "A" or "D"') if order == 'D': self.parent.kvp['sortby']['order'] = 'DESC' else: self.parent.kvp['sortby']['order'] = 'ASC' if 'startposition' not in self.parent.kvp: self.parent.kvp['startposition'] = 1 if 'recordids' in self.parent.kvp and self.parent.kvp['recordids'] != '': # query repository LOGGER.debug('Querying repository with RECORD ids: %s.' % self.parent.kvp['recordids']) results = self.parent.repository.query_ids(self.parent.kvp['recordids'].split(',')) matched = str(len(results)) if len(results) == 0: return self.exceptionreport('NotFound', 'recordids', 'No records found for \'%s\'' % self.parent.kvp['recordids']) else: # query repository LOGGER.debug('Querying repository with constraint: %s,\ sortby: %s, typenames: %s, maxrecords: %s, startposition: %s.' % (self.parent.kvp['constraint'], self.parent.kvp['sortby'], self.parent.kvp['typenames'], self.parent.kvp['maxrecords'], self.parent.kvp['startposition'])) try: matched, results = self.parent.repository.query( constraint=self.parent.kvp['constraint'], sortby=self.parent.kvp['sortby'], typenames=self.parent.kvp['typenames'], maxrecords=self.parent.kvp['maxrecords'], startposition=int(self.parent.kvp['startposition'])-1) except Exception as err: LOGGER.debug('Invalid query syntax. Query: %s', self.parent.kvp['constraint']) LOGGER.debug('Invalid query syntax. Result: %s', err) return self.exceptionreport('InvalidParameterValue', 'constraint', 'Invalid query syntax') if int(matched) == 0: returned = nextrecord = '0' else: if int(matched) < int(self.parent.kvp['maxrecords']): returned = matched nextrecord = '0' else: returned = str(self.parent.kvp['maxrecords']) if int(self.parent.kvp['startposition']) + int(self.parent.kvp['maxrecords']) >= int(matched): nextrecord = '0' else: nextrecord = str(int(self.parent.kvp['startposition']) + \ int(self.parent.kvp['maxrecords'])) LOGGER.debug('Results: matched: %s, returned: %s, next: %s.' % \ (matched, returned, nextrecord)) node = etree.Element(util.nspath_eval('csw30:GetRecordsResponse', self.parent.context.namespaces), nsmap=self.parent.context.namespaces, version='3.0.0') node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = \ '%s %s/csw/3.0/cswGetRecordsResponse.xsd' % \ (self.parent.context.namespaces['csw30'], self.parent.config.get('server', 'ogc_schemas_base')) if 'requestid' in self.parent.kvp and self.parent.kvp['requestid'] is not None: etree.SubElement(node, util.nspath_eval('csw:RequestId', self.parent.context.namespaces)).text = self.parent.kvp['requestid'] etree.SubElement(node, util.nspath_eval('csw30:SearchStatus', self.parent.context.namespaces), timestamp=timestamp) #if 'where' not in self.parent.kvp['constraint'] and \ #self.parent.kvp['resulttype'] is None: # returned = '0' searchresults = etree.SubElement(node, util.nspath_eval('csw30:SearchResults', self.parent.context.namespaces), numberOfRecordsMatched=matched, numberOfRecordsReturned=returned, nextRecord=nextrecord, recordSchema=self.parent.kvp['outputschema'], expires=timestamp, status=get_resultset_status(matched, nextrecord)) if self.parent.kvp['elementsetname'] is not None: searchresults.attrib['elementSet'] = self.parent.kvp['elementsetname'] #if 'where' not in self.parent.kvp['constraint'] \ #and self.parent.kvp['resulttype'] is None: # LOGGER.debug('Empty result set returned.') # return node if results is not None: if len(results) < int(self.parent.kvp['maxrecords']): max1 = len(results) else: max1 = int(self.parent.kvp['startposition']) + (int(self.parent.kvp['maxrecords'])-1) LOGGER.debug('Presenting records %s - %s.' % (self.parent.kvp['startposition'], max1)) for res in results: try: if (self.parent.kvp['outputschema'] == 'http://www.opengis.net/cat/csw/3.0' and 'csw:Record' in self.parent.kvp['typenames']): # serialize csw:Record inline searchresults.append(self._write_record( res, self.parent.repository.queryables['_all'])) elif (self.parent.kvp['outputschema'] == 'http://www.opengis.net/cat/csw/3.0' and 'csw:Record' not in self.parent.kvp['typenames']): # serialize into csw:Record model for prof in self.parent.profiles['loaded']: # find source typename if self.parent.profiles['loaded'][prof].typename in \ self.parent.kvp['typenames']: typename = self.parent.profiles['loaded'][prof].typename break util.transform_mappings(self.parent.repository.queryables['_all'], self.parent.context.model['typenames'][typename]\ ['mappings']['csw:Record'], reverse=True) searchresults.append(self._write_record( res, self.parent.repository.queryables['_all'])) elif self.parent.kvp['outputschema'] in self.parent.outputschemas: # use outputschema serializer searchresults.append(self.parent.outputschemas[self.parent.kvp['outputschema']].write_record(res, self.parent.kvp['elementsetname'], self.parent.context, self.parent.config.get('server', 'url'))) else: # use profile serializer searchresults.append( self.parent.profiles['loaded'][self.parent.kvp['outputschema']].\ write_record(res, self.parent.kvp['elementsetname'], self.parent.kvp['outputschema'], self.parent.repository.queryables['_all'])) except Exception as err: self.parent.response = self.exceptionreport( 'NoApplicableCode', 'service', 'Record serialization failed: %s' % str(err)) return self.parent.response if (self.parent.config.has_option('server', 'federatedcatalogues') and 'distributedsearch' in self.parent.kvp and self.parent.kvp['distributedsearch'] and self.parent.kvp['hopcount'] > 0): # do distributed search LOGGER.debug('DistributedSearch specified (hopCount: %s).' % self.parent.kvp['hopcount']) from owslib.csw import CatalogueServiceWeb from owslib.ows import ExceptionReport for fedcat in \ self.parent.config.get('server', 'federatedcatalogues').split(','): LOGGER.debug('Performing distributed search on federated \ catalogue: %s.' % fedcat) try: start_time = time() remotecsw = CatalogueServiceWeb(fedcat, skip_caps=True) remotecsw.getrecords2(xml=self.parent.request, esn=self.parent.kvp['elementsetname'], outputschema=self.parent.kvp['outputschema']) fsr = etree.SubElement(searchresults, util.nspath_eval( 'csw30:FederatedSearchResult', self.parent.context.namespaces), catalogueURL=fedcat.request) msg = 'Distributed search results from catalogue %s: %s.' % (fedcat, remotecsw.results) LOGGER.debug(msg) fsr.append(etree.Comment(msg)) search_result = etree.SubElement(fsr, util.nspath_eval( 'csw30:searchResult', self.parent.context.namespaces), recordSchema=self.parent.kvp['outputschema'], elementSetName=self.parent.kvp['elementsetname'], numberOfRecordsMatched=fedcat.results['matches'], numberOfRecordsReturned=fedcat.results['returned'], nextRecord=fedcat.results['nextrecord'], elapsedTime=str(util.get_elapsed_time(start_time, time())), status=get_resultset_status( fedcat.results['matches'], fedcat.results['nextrecord'])) search_result.append(remotecsw.records) except ExceptionReport as err: error_string = 'remote CSW %s returned exception: ' % fedcat searchresults.append(etree.Comment( ' %s\n\n%s ' % (error_string, err))) LOGGER.debug(str(err)) except Exception as err: error_string = 'remote CSW %s returned error: ' % fedcat searchresults.append(etree.Comment( ' %s\n\n%s ' % (error_string, err))) LOGGER.debug(str(err)) # if len(dsresults) > 0: # return DistributedSearch results # for resultset in dsresults: # if isinstance(resultset, etree._Comment): # searchresults.append(resultset) # for rec in resultset: # searchresults.append(etree.fromstring(resultset[rec].xml, self.parent.context.parser)) searchresults.attrib['elapsedTime'] = str(util.get_elapsed_time(self.parent.process_time_start, time())) if 'responsehandler' in self.parent.kvp: # process the handler self.parent._process_responsehandler(etree.tostring(node, pretty_print=self.parent.pretty_print)) else: return node def getrecordbyid(self, raw=False): ''' Handle GetRecordById request ''' if 'id' not in self.parent.kvp: return self.exceptionreport('MissingParameterValue', 'id', 'Missing id parameter') if len(self.parent.kvp['id']) < 1: return self.exceptionreport('InvalidParameterValue', 'id', 'Invalid id parameter') if 'outputschema' not in self.parent.kvp: self.parent.kvp['outputschema'] = self.parent.context.namespaces['csw30'] if 'HTTP_ACCEPT' in self.parent.environ: LOGGER.debug('Detected HTTP Accept header: %s', self.parent.environ['HTTP_ACCEPT']) formats_match = False if 'outputformat' in self.parent.kvp: LOGGER.debug(self.parent.kvp['outputformat']) for ofmt in self.parent.environ['HTTP_ACCEPT'].split(','): LOGGER.debug('Comparing %s and %s', ofmt, self.parent.kvp['outputformat']) if ofmt.split('/')[0] in self.parent.kvp['outputformat']: LOGGER.debug('FOUND OUTPUT MATCH') formats_match = True if not formats_match: return self.exceptionreport('InvalidParameterValue', 'outputformat', 'HTTP Accept header (%s) and outputformat (%s) must agree' % (self.parent.environ['HTTP_ACCEPT'], self.parent.kvp['outputformat'])) else: for ofmt in self.parent.environ['HTTP_ACCEPT'].split(','): if ofmt in self.parent.context.model['operations']['GetRecords']['parameters']['outputFormat']['values']: self.parent.kvp['outputformat'] = ofmt break if ('outputformat' in self.parent.kvp and self.parent.kvp['outputformat'] not in self.parent.context.model['operations']['GetRecordById']['parameters'] ['outputFormat']['values']): return self.exceptionreport('InvalidParameterValue', 'outputformat', 'Invalid outputformat parameter %s' % self.parent.kvp['outputformat']) if ('outputschema' in self.parent.kvp and self.parent.kvp['outputschema'] not in self.parent.context.model['operations']['GetRecordById']['parameters'] ['outputSchema']['values']): return self.exceptionreport('InvalidParameterValue', 'outputschema', 'Invalid outputschema parameter %s' % self.parent.kvp['outputschema']) if 'outputformat' in self.parent.kvp: self.parent.contenttype = self.parent.kvp['outputformat'] if self.parent.kvp['outputformat'] == 'application/atom+xml': self.parent.kvp['outputschema'] = self.parent.context.namespaces['atom'] self.parent.mode = 'opensearch' if 'elementsetname' not in self.parent.kvp: self.parent.kvp['elementsetname'] = 'summary' else: if (self.parent.kvp['elementsetname'] not in self.parent.context.model['operations']['GetRecordById']['parameters'] ['ElementSetName']['values']): return self.exceptionreport('InvalidParameterValue', 'elementsetname', 'Invalid elementsetname parameter %s' % self.parent.kvp['elementsetname']) # query repository LOGGER.debug('Querying repository with ids: %s.' % self.parent.kvp['id']) results = self.parent.repository.query_ids([self.parent.kvp['id']]) if raw: # GetRepositoryItem request LOGGER.debug('GetRepositoryItem request.') if len(results) > 0: return etree.fromstring(util.getqattr(results[0], self.parent.context.md_core_model['mappings']['pycsw:XML']), self.parent.context.parser) for result in results: if (util.getqattr(result, self.parent.context.md_core_model['mappings']['pycsw:Typename']) == 'csw:Record' and self.parent.kvp['outputschema'] == 'http://www.opengis.net/cat/csw/3.0'): # serialize record inline node = self._write_record( result, self.parent.repository.queryables['_all']) elif (self.parent.kvp['outputschema'] == 'http://www.opengis.net/cat/csw/3.0'): # serialize into csw:Record model typename = None for prof in self.parent.profiles['loaded']: # find source typename if self.parent.profiles['loaded'][prof].typename in \ [util.getqattr(result, self.parent.context.md_core_model['mappings']['pycsw:Typename'])]: typename = self.parent.profiles['loaded'][prof].typename break if typename is not None: util.transform_mappings(self.parent.repository.queryables['_all'], self.parent.context.model['typenames'][typename]\ ['mappings']['csw:Record'], reverse=True) node = self._write_record( result, self.parent.repository.queryables['_all']) elif self.parent.kvp['outputschema'] in self.parent.outputschemas: # use outputschema serializer node = self.parent.outputschemas[self.parent.kvp['outputschema']].write_record(result, self.parent.kvp['elementsetname'], self.parent.context, self.parent.config.get('server', 'url')) else: # it's a profile output node = self.parent.profiles['loaded'][self.parent.kvp['outputschema']].write_record( result, self.parent.kvp['elementsetname'], self.parent.kvp['outputschema'], self.parent.repository.queryables['_all']) if raw and len(results) == 0: return None if len(results) == 0: return self.exceptionreport('NotFound', 'id', 'No repository item found for \'%s\'' % self.parent.kvp['id']) return node def getrepositoryitem(self): ''' Handle GetRepositoryItem request ''' # similar to GetRecordById without csw:* wrapping node = self.parent.getrecordbyid(raw=True) if node is None: return self.exceptionreport('NotFound', 'id', 'No repository item found for \'%s\'' % self.parent.kvp['id']) else: return node def transaction(self): ''' Handle Transaction request ''' try: self.parent._test_manager() except Exception as err: return self.exceptionreport('NoApplicableCode', 'transaction', str(err)) inserted = 0 updated = 0 deleted = 0 insertresults = [] LOGGER.debug('Transaction list: %s' % self.parent.kvp['transactions']) for ttype in self.parent.kvp['transactions']: if ttype['type'] == 'insert': try: record = metadata.parse_record(self.parent.context, ttype['xml'], self.parent.repository)[0] except Exception as err: return self.exceptionreport('NoApplicableCode', 'insert', 'Transaction (insert) failed: record parsing failed: %s' \ % str(err)) LOGGER.debug('Transaction operation: %s' % record) if not hasattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier']): return self.exceptionreport('NoApplicableCode', 'insert', 'Record requires an identifier') # insert new record try: self.parent.repository.insert(record, 'local', util.get_today_and_now()) inserted += 1 insertresults.append( {'identifier': getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier']), 'title': getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Title'])}) except Exception as err: return self.exceptionreport('NoApplicableCode', 'insert', 'Transaction (insert) failed: %s.' % str(err)) elif ttype['type'] == 'update': if 'constraint' not in ttype: # update full existing resource in repository try: record = metadata.parse_record(self.parent.context, ttype['xml'], self.parent.repository)[0] identifier = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier']) except Exception as err: return self.exceptionreport('NoApplicableCode', 'insert', 'Transaction (update) failed: record parsing failed: %s' \ % str(err)) # query repository to see if record already exists LOGGER.debug('checking if record exists (%s)' % \ identifier) results = self.parent.repository.query_ids(ids=[identifier]) if len(results) == 0: LOGGER.debug('id %s does not exist in repository' % \ identifier) else: # existing record, it's an update try: self.parent.repository.update(record) updated += 1 except Exception as err: return self.exceptionreport('NoApplicableCode', 'update', 'Transaction (update) failed: %s.' % str(err)) else: # update by record property and constraint # get / set XPath for property names for rp in ttype['recordproperty']: if rp['name'] not in self.parent.repository.queryables['_all']: # is it an XPath? if rp['name'].find('/') != -1: # scan outputschemas; if match, bind for osch in self.parent.outputschemas.values(): for key, value in osch.XPATH_MAPPINGS.items(): if value == rp['name']: # match rp['rp'] = {'xpath': value, 'name': key} rp['rp']['dbcol'] = self.parent.repository.queryables['_all'][key] break else: return self.exceptionreport('NoApplicableCode', 'update', 'Transaction (update) failed: invalid property2: %s.' % str(rp['name'])) else: rp['rp']= \ self.parent.repository.queryables['_all'][rp['name']] LOGGER.debug('Record Properties: %s.' % ttype['recordproperty']) try: updated += self.parent.repository.update(record=None, recprops=ttype['recordproperty'], constraint=ttype['constraint']) except Exception as err: return self.exceptionreport('NoApplicableCode', 'update', 'Transaction (update) failed: %s.' % str(err)) elif ttype['type'] == 'delete': deleted += self.parent.repository.delete(ttype['constraint']) node = etree.Element(util.nspath_eval('csw30:TransactionResponse', self.parent.context.namespaces), nsmap=self.parent.context.namespaces, version='3.0.0') node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = '%s %s/csw/3.0/cswTransaction.xsd' % \ (self.parent.context.namespaces['csw30'], self.parent.config.get('server', 'ogc_schemas_base')) node.append( self._write_transactionsummary( inserted=inserted, updated=updated, deleted=deleted)) if (len(insertresults) > 0 and self.parent.kvp['verboseresponse']): # show insert result identifiers node.append(self._write_verboseresponse(insertresults)) return node def harvest(self): ''' Handle Harvest request ''' service_identifier = None old_identifier = None deleted = [] try: self.parent._test_manager() except Exception as err: return self.exceptionreport('NoApplicableCode', 'harvest', str(err)) if self.parent.requesttype == 'GET': if 'resourcetype' not in self.parent.kvp: return self.exceptionreport('MissingParameterValue', 'resourcetype', 'Missing resourcetype parameter') if 'source' not in self.parent.kvp: return self.exceptionreport('MissingParameterValue', 'source', 'Missing source parameter') # validate resourcetype if (self.parent.kvp['resourcetype'] not in self.parent.context.model['operations']['Harvest']['parameters']['ResourceType'] ['values']): return self.exceptionreport('InvalidParameterValue', 'resourcetype', 'Invalid resource type parameter: %s.\ Allowable resourcetype values: %s' % (self.parent.kvp['resourcetype'], ','.join(self.parent.context.model['operations']['Harvest']['parameters'] ['ResourceType']['values']))) if (self.parent.kvp['resourcetype'].find('opengis.net') == -1 and self.parent.kvp['resourcetype'].find('urn:geoss:waf') == -1): # fetch content-based resource LOGGER.debug('Fetching resource %s' % self.parent.kvp['source']) try: content = util.http_request('GET', self.parent.kvp['source']) except Exception as err: errortext = 'Error fetching resource %s.\nError: %s.' % \ (self.parent.kvp['source'], str(err)) LOGGER.debug(errortext) return self.exceptionreport('InvalidParameterValue', 'source', errortext) else: # it's a service URL content = self.parent.kvp['source'] # query repository to see if service already exists LOGGER.debug('checking if service exists (%s)' % content) results = self.parent.repository.query_source(content) if len(results) > 0: # exists, keep identifier for update LOGGER.debug('Service already exists, keeping identifier and results') service_identifier = getattr(results[0], self.parent.context.md_core_model['mappings']['pycsw:Identifier']) service_results = results LOGGER.debug('Identifier is %s' % service_identifier) # return self.exceptionreport('NoApplicableCode', 'source', # 'Insert failed: service %s already in repository' % content) if hasattr(self.parent.repository, 'local_ingest') and self.parent.repository.local_ingest: updated = 0 deleted = [] try: ir = self.parent.repository.insert(self.parent.kvp['resourcetype'], self.parent.kvp['source']) inserted = len(ir) except Exception as err: return self.exceptionreport('NoApplicableCode', 'source', 'Harvest (insert) failed: %s.' % str(err)) else: # parse resource into record try: records_parsed = metadata.parse_record(self.parent.context, content, self.parent.repository, self.parent.kvp['resourcetype'], pagesize=self.parent.csw_harvest_pagesize) except Exception as err: LOGGER.exception(err) return self.exceptionreport('NoApplicableCode', 'source', 'Harvest failed: record parsing failed: %s' % str(err)) inserted = 0 updated = 0 ir = [] LOGGER.debug('Total Records parsed: %d' % len(records_parsed)) for record in records_parsed: if self.parent.kvp['resourcetype'] == 'urn:geoss:waf': src = record.source else: src = self.parent.kvp['source'] setattr(record, self.parent.context.md_core_model['mappings']['pycsw:Source'], src) setattr(record, self.parent.context.md_core_model['mappings']['pycsw:InsertDate'], util.get_today_and_now()) identifier = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier']) source = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Source']) insert_date = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:InsertDate']) title = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Title']) record_type = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Type']) record_identifier = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier']) if record_type == 'service' and service_identifier is not None: # service endpoint LOGGER.debug('Replacing service identifier from %s to %s' % (record_identifier, service_identifier)) old_identifier = record_identifier identifier = record_identifier = service_identifier if (record_type != 'service' and service_identifier is not None and old_identifier is not None): # service resource if record_identifier.find(old_identifier) != -1: new_identifier = record_identifier.replace(old_identifier, service_identifier) LOGGER.debug('Replacing service resource identifier from %s to %s' % (record_identifier, new_identifier)) identifier = record_identifier = new_identifier ir.append({'identifier': identifier, 'title': title}) results = [] if not self.parent.config.has_option('repository', 'source'): # query repository to see if record already exists LOGGER.debug('checking if record exists (%s)' % identifier) results = self.parent.repository.query_ids(ids=[identifier]) if len(results) == 0: # check for service identifier LOGGER.debug('checking if service id exists (%s)' % service_identifier) results = self.parent.repository.query_ids(ids=[service_identifier]) LOGGER.debug(str(results)) if len(results) == 0: # new record, it's a new insert inserted += 1 try: tmp = self.parent.repository.insert(record, source, insert_date) if tmp is not None: ir = tmp except Exception as err: return self.exceptionreport('NoApplicableCode', 'source', 'Harvest (insert) failed: %s.' % str(err)) else: # existing record, it's an update if source != results[0].source: # same identifier, but different source return self.exceptionreport('NoApplicableCode', 'source', 'Insert failed: identifier %s in repository\ has source %s.' % (identifier, source)) try: self.parent.repository.update(record) except Exception as err: return self.exceptionreport('NoApplicableCode', 'source', 'Harvest (update) failed: %s.' % str(err)) updated += 1 if service_identifier is not None: fresh_records = [str(i['identifier']) for i in ir] existing_records = [str(i.identifier) for i in service_results] deleted = set(existing_records) - set(fresh_records) LOGGER.debug('Records to delete: %s', deleted) for to_delete in deleted: delete_constraint = { 'type': 'filter', 'values': [to_delete], 'where': 'identifier = :pvalue0' } self.parent.repository.delete(delete_constraint) node = etree.Element(util.nspath_eval('csw:HarvestResponse', self.parent.context.namespaces), nsmap=self.parent.context.namespaces) node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = \ '%s %s/csw/2.0.2/CSW-publication.xsd' % (self.parent.context.namespaces['csw'], self.parent.config.get('server', 'ogc_schemas_base')) node2 = etree.SubElement(node, util.nspath_eval('csw:TransactionResponse', self.parent.context.namespaces), version='2.0.2') node2.append( self._write_transactionsummary(inserted=len(ir), updated=updated, deleted=len(deleted))) if inserted > 0: # show insert result identifiers node2.append(self._write_verboseresponse(ir)) if 'responsehandler' in self.parent.kvp: # process the handler self.parent._process_responsehandler(etree.tostring(node, pretty_print=self.parent.pretty_print)) else: return node def _write_record(self, recobj, queryables): ''' Generate csw30:Record ''' if self.parent.kvp['elementsetname'] == 'brief': elname = 'BriefRecord' elif self.parent.kvp['elementsetname'] == 'summary': elname = 'SummaryRecord' else: elname = 'Record' record = etree.Element(util.nspath_eval('csw30:%s' % elname, self.parent.context.namespaces), nsmap=self.parent.context.namespaces) if ('elementname' in self.parent.kvp and len(self.parent.kvp['elementname']) > 0): for req_term in ['dc:identifier', 'dc:title']: if req_term not in self.parent.kvp['elementname']: value = util.getqattr(recobj, queryables[req_term]['dbcol']) etree.SubElement(record, util.nspath_eval(req_term, self.parent.context.namespaces)).text = value for elemname in self.parent.kvp['elementname']: if (elemname.find('BoundingBox') != -1 or elemname.find('Envelope') != -1): bboxel = write_boundingbox(util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:BoundingBox']), self.parent.context.namespaces) if bboxel is not None: record.append(bboxel) else: value = util.getqattr(recobj, queryables[elemname]['dbcol']) elem = etree.SubElement(record, util.nspath_eval(elemname, self.parent.context.namespaces)) if value: elem.text = value elif 'elementsetname' in self.parent.kvp: if (self.parent.kvp['elementsetname'] == 'full' and util.getqattr(recobj, self.parent.context.md_core_model['mappings']\ ['pycsw:Typename']) == 'csw:Record' and util.getqattr(recobj, self.parent.context.md_core_model['mappings']\ ['pycsw:Schema']) == 'http://www.opengis.net/cat/csw/3.0' and util.getqattr(recobj, self.parent.context.md_core_model['mappings']\ ['pycsw:Type']) != 'service'): # dump record as is and exit return etree.fromstring(util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:XML']), self.parent.context.parser) etree.SubElement(record, util.nspath_eval('dc:identifier', self.parent.context.namespaces)).text = \ util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:Identifier']) for i in ['dc:title', 'dc:type']: val = util.getqattr(recobj, queryables[i]['dbcol']) if not val: val = '' etree.SubElement(record, util.nspath_eval(i, self.parent.context.namespaces)).text = val if self.parent.kvp['elementsetname'] in ['summary', 'full']: # add summary elements keywords = util.getqattr(recobj, queryables['dc:subject']['dbcol']) if keywords is not None: for keyword in keywords.split(','): etree.SubElement(record, util.nspath_eval('dc:subject', self.parent.context.namespaces)).text = keyword val = util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:TopicCategory']) if val: etree.SubElement(record, util.nspath_eval('dc:subject', self.parent.context.namespaces), scheme='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode').text = val val = util.getqattr(recobj, queryables['dc:format']['dbcol']) if val: etree.SubElement(record, util.nspath_eval('dc:format', self.parent.context.namespaces)).text = val # links rlinks = util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:Links']) if rlinks: links = rlinks.split('^') for link in links: linkset = link.split(',') etree.SubElement(record, util.nspath_eval('dct:references', self.parent.context.namespaces), scheme=linkset[2]).text = linkset[-1] for i in ['dc:relation', 'dct:modified', 'dct:abstract']: val = util.getqattr(recobj, queryables[i]['dbcol']) if val is not None: etree.SubElement(record, util.nspath_eval(i, self.parent.context.namespaces)).text = val if self.parent.kvp['elementsetname'] == 'full': # add full elements for i in ['dc:date', 'dc:creator', \ 'dc:publisher', 'dc:contributor', 'dc:source', \ 'dc:language', 'dc:rights', 'dct:alternative']: val = util.getqattr(recobj, queryables[i]['dbcol']) if val: etree.SubElement(record, util.nspath_eval(i, self.parent.context.namespaces)).text = val val = util.getqattr(recobj, queryables['dct:spatial']['dbcol']) if val: etree.SubElement(record, util.nspath_eval('dct:spatial', self.parent.context.namespaces), scheme='http://www.opengis.net/def/crs').text = val # always write out ows:BoundingBox bboxel = write_boundingbox(getattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:BoundingBox']), self.parent.context.namespaces) if bboxel is not None: record.append(bboxel) if self.parent.kvp['elementsetname'] != 'brief': # add temporal extent begin = util.getqattr(record, self.parent.context.md_core_model['mappings']['pycsw:TempExtent_begin']) end = util.getqattr(record, self.parent.context.md_core_model['mappings']['pycsw:TempExtent_end']) if begin or end: tempext = etree.SubElement(record, util.nspath_eval('csw30:TemporalExtent', self.parent.context.namespaces)) if begin: etree.SubElement(record, util.nspath_eval('csw30:begin', self.parent.context.namespaces)).text = begin if end: etree.SubElement(record, util.nspath_eval('csw30:end', self.parent.context.namespaces)).text = end return record def _parse_constraint(self, element): ''' Parse csw:Constraint ''' query = {} tmp = element.find(util.nspath_eval('fes20:Filter', self.parent.context.namespaces)) if tmp is not None: LOGGER.debug('Filter constraint specified.') try: query['type'] = 'filter' query['where'], query['values'] = fes2.parse(tmp, self.parent.repository.queryables['_all'], self.parent.repository.dbtype, self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts) except Exception as err: return 'Invalid Filter request: %s' % err tmp = element.find(util.nspath_eval('csw30:CqlText', self.parent.context.namespaces)) if tmp is not None: LOGGER.debug('CQL specified: %s.', tmp.text) try: LOGGER.debug('Transforming CQL into OGC Filter') query['type'] = 'filter' cql = cql2fes1(tmp.text, self.parent.context.namespaces) query['where'], query['values'] = fes1.parse(cql, self.parent.repository.queryables['_all'], self.parent.repository.dbtype, self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts) except Exception as err: LOGGER.error('Invalid CQL request: %s', tmp.text) LOGGER.error('Error message: %s', err, exc_info=True) return 'Invalid CQL request' return query def parse_postdata(self, postdata): ''' Parse POST XML ''' request = {} try: LOGGER.debug('Parsing %s.' % postdata) doc = etree.fromstring(postdata, self.parent.context.parser) except Exception as err: errortext = \ 'Exception: document not well-formed.\nError: %s.' % str(err) LOGGER.debug(errortext) return errortext # if this is a SOAP request, get to SOAP-ENV:Body/csw:* if (doc.tag == util.nspath_eval('soapenv:Envelope', self.parent.context.namespaces)): LOGGER.debug('SOAP request specified.') self.parent.soap = True doc = doc.find( util.nspath_eval('soapenv:Body', self.parent.context.namespaces)).xpath('child::*')[0] xsd_filename = 'csw%s.xsd' % util.xmltag_split(doc.tag) schema = os.path.join(self.parent.config.get('server', 'home'), 'core', 'schemas', 'ogc', 'csw', '3.0', xsd_filename) try: # it is virtually impossible to validate a csw:Transaction # csw:Insert|csw:Update (with single child) XML document. # Only validate non csw:Transaction XML if doc.find('.//%s' % util.nspath_eval('csw30:Insert', self.parent.context.namespaces)) is None and \ len(doc.xpath('//csw30:Update/child::*', namespaces=self.parent.context.namespaces)) == 0: LOGGER.debug('Validating %s.' % postdata) schema = etree.XMLSchema(file=schema) parser = etree.XMLParser(schema=schema, resolve_entities=False) if hasattr(self.parent, 'soap') and self.parent.soap: # validate the body of the SOAP request doc = etree.fromstring(etree.tostring(doc), parser) else: # validate the request normally doc = etree.fromstring(postdata, parser) LOGGER.debug('Request is valid XML.') else: # parse Transaction without validation doc = etree.fromstring(postdata, self.parent.context.parser) except Exception as err: errortext = \ 'Exception: the document is not valid.\nError: %s' % str(err) LOGGER.debug(errortext) return errortext request['request'] = util.xmltag_split(doc.tag) LOGGER.debug('Request operation %s specified.' % request['request']) tmp = doc.find('.').attrib.get('service') if tmp is not None: request['service'] = tmp tmp = doc.find('.').attrib.get('version') if tmp is not None: request['version'] = tmp tmp = doc.find('.//%s' % util.nspath_eval('ows20:Version', self.parent.context.namespaces)) if tmp is not None: request['version'] = tmp.text tmp = doc.find('.').attrib.get('updateSequence') if tmp is not None: request['updatesequence'] = tmp # GetCapabilities if request['request'] == 'GetCapabilities': tmp = doc.find(util.nspath_eval('ows20:Sections', self.parent.context.namespaces)) if tmp is not None: request['sections'] = ','.join([section.text for section in \ doc.findall(util.nspath_eval('ows20:Sections/ows20:Section', self.parent.context.namespaces))]) tmp = doc.find(util.nspath_eval('ows20:AcceptFormats', self.parent.context.namespaces)) if tmp is not None: request['acceptformats'] = ','.join([aformat.text for aformat in \ doc.findall(util.nspath_eval('ows20:AcceptFormats/ows20:OutputFormat', self.parent.context.namespaces))]) tmp = doc.find(util.nspath_eval('ows20:AcceptVersions', self.parent.context.namespaces)) if tmp is not None: request['acceptversions'] = ','.join([version.text for version in \ doc.findall(util.nspath_eval('ows20:AcceptVersions/ows20:Version', self.parent.context.namespaces))]) # GetDomain if request['request'] == 'GetDomain': tmp = doc.find(util.nspath_eval('csw30:ParameterName', self.parent.context.namespaces)) if tmp is not None: request['parametername'] = tmp.text tmp = doc.find(util.nspath_eval('csw30:ValueReference', self.parent.context.namespaces)) if tmp is not None: request['valuereference'] = tmp.text # GetRecords if request['request'] == 'GetRecords': tmp = doc.find('.').attrib.get('outputSchema') request['outputschema'] = tmp if tmp is not None \ else self.parent.context.namespaces['csw30'] tmp = doc.find('.').attrib.get('outputFormat') request['outputformat'] = tmp if tmp is not None \ else 'application/xml' tmp = doc.find('.').attrib.get('startPosition') request['startposition'] = tmp if tmp is not None else 1 tmp = doc.find('.').attrib.get('requestId') request['requestid'] = tmp if tmp is not None else None tmp = doc.find('.').attrib.get('maxRecords') if tmp is not None: request['maxrecords'] = tmp tmp = doc.find(util.nspath_eval('csw30:DistributedSearch', self.parent.context.namespaces)) if tmp is not None: request['distributedsearch'] = True hopcount = tmp.attrib.get('hopCount') request['hopcount'] = int(hopcount)-1 if hopcount is not None \ else 1 else: request['distributedsearch'] = False tmp = doc.find(util.nspath_eval('csw30:ResponseHandler', self.parent.context.namespaces)) if tmp is not None: request['responsehandler'] = tmp.text tmp = doc.find(util.nspath_eval('csw30:Query/csw30:ElementSetName', self.parent.context.namespaces)) request['elementsetname'] = tmp.text if tmp is not None else None tmp = doc.find(util.nspath_eval( 'csw30:Query', self.parent.context.namespaces)).attrib.get('typeNames') request['typenames'] = tmp.split() if tmp is not None \ else 'csw:Record' request['elementname'] = [elname.text for elname in \ doc.findall(util.nspath_eval('csw30:Query/csw30:ElementName', self.parent.context.namespaces))] request['constraint'] = {} tmp = doc.find(util.nspath_eval('csw30:Query/csw30:Constraint', self.parent.context.namespaces)) if tmp is not None: request['constraint'] = self._parse_constraint(tmp) if isinstance(request['constraint'], str): # parse error return 'Invalid Constraint: %s' % request['constraint'] else: LOGGER.debug('No csw30:Constraint (fes20:Filter or csw30:CqlText) \ specified.') tmp = doc.find(util.nspath_eval('csw30:Query/fes20:SortBy', self.parent.context.namespaces)) if tmp is not None: LOGGER.debug('Sorted query specified.') request['sortby'] = {} try: elname = tmp.find(util.nspath_eval( 'fes20:SortProperty/fes20:ValueReference', self.parent.context.namespaces)).text request['sortby']['propertyname'] = \ self.parent.repository.queryables['_all'][elname]['dbcol'] if (elname.find('BoundingBox') != -1 or elname.find('Envelope') != -1): # it's a spatial sort request['sortby']['spatial'] = True except Exception as err: errortext = \ 'Invalid fes20:SortProperty/fes20:ValueReference: %s' % str(err) LOGGER.debug(errortext) return errortext tmp2 = tmp.find(util.nspath_eval( 'fes20:SortProperty/fes20:SortOrder', self.parent.context.namespaces)) request['sortby']['order'] = tmp2.text if tmp2 is not None \ else 'ASC' else: request['sortby'] = None # GetRecordById if request['request'] == 'GetRecordById': request['id'] = None tmp = doc.find(util.nspath_eval('csw30:Id', self.parent.context.namespaces)) if tmp is not None: request['id'] = tmp.text tmp = doc.find(util.nspath_eval('csw30:ElementSetName', self.parent.context.namespaces)) request['elementsetname'] = tmp.text if tmp is not None \ else 'summary' tmp = doc.find('.').attrib.get('outputSchema') request['outputschema'] = tmp if tmp is not None \ else self.parent.context.namespaces['csw30'] tmp = doc.find('.').attrib.get('outputFormat') if tmp is not None: request['outputformat'] = tmp # Transaction if request['request'] == 'Transaction': request['verboseresponse'] = True tmp = doc.find('.').attrib.get('verboseResponse') if tmp is not None: if tmp in ['false', '0']: request['verboseresponse'] = False tmp = doc.find('.').attrib.get('requestId') request['requestid'] = tmp if tmp is not None else None request['transactions'] = [] for ttype in \ doc.xpath('//csw30:Insert', namespaces=self.parent.context.namespaces): tname = ttype.attrib.get('typeName') for mdrec in ttype.xpath('child::*'): xml = mdrec request['transactions'].append( {'type': 'insert', 'typename': tname, 'xml': xml}) for ttype in \ doc.xpath('//csw30:Update', namespaces=self.parent.context.namespaces): child = ttype.xpath('child::*') update = {'type': 'update'} if len(child) == 1: # it's a wholesale update update['xml'] = child[0] else: # it's a RecordProperty with Constraint Update update['recordproperty'] = [] for recprop in ttype.findall( util.nspath_eval('csw:RecordProperty', self.parent.context.namespaces)): rpname = recprop.find(util.nspath_eval('csw30:Name', self.parent.context.namespaces)).text rpvalue = recprop.find( util.nspath_eval('csw30:Value', self.parent.context.namespaces)).text update['recordproperty'].append( {'name': rpname, 'value': rpvalue}) update['constraint'] = self._parse_constraint( ttype.find(util.nspath_eval('csw30:Constraint', self.parent.context.namespaces))) request['transactions'].append(update) for ttype in \ doc.xpath('//csw30:Delete', namespaces=self.parent.context.namespaces): tname = ttype.attrib.get('typeName') constraint = self._parse_constraint( ttype.find(util.nspath_eval('csw30:Constraint', self.parent.context.namespaces))) if isinstance(constraint, str): # parse error return 'Invalid Constraint: %s' % constraint request['transactions'].append( {'type': 'delete', 'typename': tname, 'constraint': constraint}) # Harvest if request['request'] == 'Harvest': request['source'] = doc.find(util.nspath_eval('csw30:Source', self.parent.context.namespaces)).text request['resourcetype'] = \ doc.find(util.nspath_eval('csw30:ResourceType', self.parent.context.namespaces)).text tmp = doc.find(util.nspath_eval('csw30:ResourceFormat', self.parent.context.namespaces)) if tmp is not None: request['resourceformat'] = tmp.text else: request['resourceformat'] = 'application/xml' tmp = doc.find(util.nspath_eval('csw30:HarvestInterval', self.parent.context.namespaces)) if tmp is not None: request['harvestinterval'] = tmp.text tmp = doc.find(util.nspath_eval('csw30:ResponseHandler', self.parent.context.namespaces)) if tmp is not None: request['responsehandler'] = tmp.text return request def _write_transactionsummary(self, inserted=0, updated=0, deleted=0): ''' Write csw:TransactionSummary construct ''' node = etree.Element(util.nspath_eval('csw30:TransactionSummary', self.parent.context.namespaces)) if 'requestid' in self.parent.kvp and self.parent.kvp['requestid'] is not None: node.attrib['requestId'] = self.parent.kvp['requestid'] etree.SubElement(node, util.nspath_eval('csw30:totalInserted', self.parent.context.namespaces)).text = str(inserted) etree.SubElement(node, util.nspath_eval('csw30:totalUpdated', self.parent.context.namespaces)).text = str(updated) etree.SubElement(node, util.nspath_eval('csw30:totalDeleted', self.parent.context.namespaces)).text = str(deleted) return node def _write_acknowledgement(self, root=True): ''' Generate csw:Acknowledgement ''' node = etree.Element(util.nspath_eval('csw30:Acknowledgement', self.parent.context.namespaces), nsmap = self.parent.context.namespaces, timeStamp=util.get_today_and_now()) if root: node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = \ '%s %s/csw/3.0/cswAll.xsd' % (self.parent.context.namespaces['csw30'], \ self.parent.config.get('server', 'ogc_schemas_base')) node1 = etree.SubElement(node, util.nspath_eval('csw30:EchoedRequest', self.parent.context.namespaces)) if self.parent.requesttype == 'POST': node1.append(etree.fromstring(self.parent.request, self.parent.context.parser)) else: # GET node2 = etree.SubElement(node1, util.nspath_eval('ows:Get', self.parent.context.namespaces)) node2.text = self.parent.request if self.parent.async: etree.SubElement(node, util.nspath_eval('csw30:RequestId', self.parent.context.namespaces)).text = self.parent.kvp['requestid'] return node def _write_verboseresponse(self, insertresults): ''' show insert result identifiers ''' insertresult = etree.Element(util.nspath_eval('csw30:InsertResult', self.parent.context.namespaces)) for ir in insertresults: briefrec = etree.SubElement(insertresult, util.nspath_eval('csw30:BriefRecord', self.parent.context.namespaces)) etree.SubElement(briefrec, util.nspath_eval('dc:identifier', self.parent.context.namespaces)).text = ir['identifier'] etree.SubElement(briefrec, util.nspath_eval('dc:title', self.parent.context.namespaces)).text = ir['title'] return insertresult def _write_allowed_values(self, values): ''' design pattern to write ows20:AllowedValues ''' allowed_values = etree.Element(util.nspath_eval('ows20:AllowedValues', self.parent.context.namespaces)) for value in sorted(values): etree.SubElement(allowed_values, util.nspath_eval('ows20:Value', self.parent.context.namespaces)).text = value return allowed_values def exceptionreport(self, code, locator, text): ''' Generate ExceptionReport ''' self.parent.exception = True self.parent.status = code try: language = self.parent.config.get('server', 'language') ogc_schemas_base = self.parent.config.get('server', 'ogc_schemas_base') except: language = 'en-US' ogc_schemas_base = self.parent.context.ogc_schemas_base node = etree.Element(util.nspath_eval('ows20:ExceptionReport', self.parent.context.namespaces), nsmap=self.parent.context.namespaces, version='3.0.0') node.attrib['{http://www.w3.org/XML/1998/namespace}lang'] = language node.attrib[util.nspath_eval('xsi:schemaLocation', self.parent.context.namespaces)] = \ '%s %s/ows/2.0/owsExceptionReport.xsd' % \ (self.parent.context.namespaces['ows20'], ogc_schemas_base) exception = etree.SubElement(node, util.nspath_eval('ows20:Exception', self.parent.context.namespaces), exceptionCode=code, locator=locator) exception_text = etree.SubElement(exception, util.nspath_eval('ows20:ExceptionText', self.parent.context.namespaces)) try: exception_text.text = text except ValueError as err: exception_text.text = repr(text) return node def resolve_nsmap(self, list_): '''' Resolve typename bindings based on default and KVP namespaces ''' nsmap = {} tns = [] LOGGER.debug('Namespace list pairs: %s', list_) # bind KVP namespaces into typenames for ns in self.parent.kvp['namespace'].split(','): nspair = ns.split('(')[1].split(')')[0].split('=') if len(nspair) == 1: # default namespace nsmap['csw'] = nspair[1] else: nsmap[nspair[0]] = nspair[1] LOGGER.debug('Namespace pairs: %s', nsmap) for tn in list_: LOGGER.debug(tn) if tn.find(':') != -1: # resolve prefix prefix = tn.split(':')[0] if prefix in nsmap.keys(): # get uri uri = nsmap[prefix] newprefix = next(k for k, v in self.parent.context.namespaces.items() if v == uri) LOGGER.debug(uri) LOGGER.debug(prefix) LOGGER.debug(newprefix) #if prefix == 'csw30': newprefix = 'csw' newvalue = tn.replace(prefix, newprefix).replace('csw30', 'csw') else: newvalue = tn else: # default namespace newvalue = tn tns.append(newvalue) LOGGER.debug(tns) return tns def write_boundingbox(bbox, nsmap): ''' Generate ows20:BoundingBox ''' if bbox is not None: try: bbox2 = util.wkt2geom(bbox) except: return None if len(bbox2) == 4: boundingbox = etree.Element(util.nspath_eval('ows20:BoundingBox', nsmap), crs='http://www.opengis.net/def/crs/EPSG/0/4326', dimensions='2') etree.SubElement(boundingbox, util.nspath_eval('ows20:LowerCorner', nsmap)).text = '%s %s' % (bbox2[1], bbox2[0]) etree.SubElement(boundingbox, util.nspath_eval('ows20:UpperCorner', nsmap)).text = '%s %s' % (bbox2[3], bbox2[2]) return boundingbox else: return None else: return None if nextrecord == 0: searchresult_status = 'complete' elif nextrecord > 0: searchresult_status = 'subset' elif matched == 0: searchresult_status = 'none' def get_resultset_status(matched, nextrecord): ''' Helper function to assess status of a result set ''' status = 'subset' # default if nextrecord == 0: status = 'complete' elif matched == 0: status = 'none' return status pycsw-2.0.3/pycsw/ogc/PaxHeaders.23451/fes0000644000000000000000000000007413114323025015030 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/fes/0000755000175000001440000000000013114323025016047 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/ogc/fes/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025017216 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/fes/__init__.py0000644000175000001440000000243713114323025020166 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/ogc/fes/PaxHeaders.23451/fes1.py0000644000000000000000000000007413114323025016315 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/fes/fes1.py0000644000175000001440000004322713114323025017267 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # Angelos Tzotsos # # Copyright (c) 2015 Tom Kralidis # Copyright (c) 2015 Angelos Tzotsos # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import logging from pycsw.core import util from pycsw.ogc.gml import gml3 LOGGER = logging.getLogger(__name__) MODEL = { 'GeometryOperands': { 'values': gml3.TYPES }, 'SpatialOperators': { 'values': ['BBOX', 'Beyond', 'Contains', 'Crosses', 'Disjoint', 'DWithin', 'Equals', 'Intersects', 'Overlaps', 'Touches', 'Within'] }, 'ComparisonOperators': { 'ogc:PropertyIsBetween': {'opname': 'Between', 'opvalue': 'and'}, 'ogc:PropertyIsEqualTo': {'opname': 'EqualTo', 'opvalue': '='}, 'ogc:PropertyIsGreaterThan': {'opname': 'GreaterThan', 'opvalue': '>'}, 'ogc:PropertyIsGreaterThanOrEqualTo': { 'opname': 'GreaterThanEqualTo', 'opvalue': '>='}, 'ogc:PropertyIsLessThan': {'opname': 'LessThan', 'opvalue': '<'}, 'ogc:PropertyIsLessThanOrEqualTo': { 'opname': 'LessThanEqualTo', 'opvalue': '<='}, 'ogc:PropertyIsLike': {'opname': 'Like', 'opvalue': 'like'}, 'ogc:PropertyIsNotEqualTo': {'opname': 'NotEqualTo', 'opvalue': '!='}, 'ogc:PropertyIsNull': {'opname': 'NullCheck', 'opvalue': 'is null'}, }, 'Functions': { 'length': {'args': '1'}, 'lower': {'args': '1'}, 'ltrim': {'args': '1'}, 'rtrim': {'args': '1'}, 'trim': {'args': '1'}, 'upper': {'args': '1'}, }, 'Ids': { 'values': ['EID', 'FID'] } } def parse(element, queryables, dbtype, nsmap, orm='sqlalchemy', language='english', fts=False): """OGC Filter object support""" boq = None is_pg = dbtype.startswith('postgresql') tmp = element.xpath('ogc:And|ogc:Or|ogc:Not', namespaces=nsmap) if len(tmp) > 0: # this is binary logic query boq = ' %s ' % util.xmltag_split(tmp[0].tag).lower() LOGGER.debug('Binary logic detected; operator=%s' % boq) tmp = tmp[0] else: tmp = element pvalue_serial = [0] # in list as python 2 has no nonlocal variable def assign_param(): if orm == 'django': return '%s' param = ':pvalue%d' % pvalue_serial[0] pvalue_serial[0] += 1 return param def _get_comparison_expression(elem): """return the SQL expression based on Filter query""" fname = None matchcase = elem.attrib.get('matchCase') wildcard = elem.attrib.get('wildCard') singlechar = elem.attrib.get('singleChar') expression = None if wildcard is None: wildcard = '%' if singlechar is None: singlechar = '_' if (elem.xpath('child::*')[0].tag == util.nspath_eval('ogc:Function', nsmap)): LOGGER.debug('ogc:Function detected') if (elem.xpath('child::*')[0].attrib['name'] not in MODEL['Functions']): raise RuntimeError('Invalid ogc:Function: %s' % (elem.xpath('child::*')[0].attrib['name'])) fname = elem.xpath('child::*')[0].attrib['name'] try: LOGGER.debug('Testing existence of ogc:PropertyName') pname = queryables[elem.find(util.nspath_eval('ogc:Function/ogc:PropertyName', nsmap)).text]['dbcol'] except Exception as err: raise RuntimeError('Invalid PropertyName: %s. %s' % (elem.find(util.nspath_eval('ogc:Function/ogc:PropertyName', nsmap)).text, str(err))) else: try: LOGGER.debug('Testing existence of ogc:PropertyName') pname = queryables[elem.find( util.nspath_eval('ogc:PropertyName', nsmap)).text]['dbcol'] except Exception as err: raise RuntimeError('Invalid PropertyName: %s. %s' % (elem.find(util.nspath_eval('ogc:PropertyName', nsmap)).text, str(err))) if (elem.tag != util.nspath_eval('ogc:PropertyIsBetween', nsmap)): if elem.tag in [util.nspath_eval('ogc:%s' % n, nsmap) for n in MODEL['SpatialOperators']['values']]: boolean_true = '\'true\'' boolean_false = '\'false\'' if dbtype == 'mysql': boolean_true = 'true' boolean_false = 'false' return "%s = %s" % (_get_spatial_operator(queryables['pycsw:BoundingBox'], elem, dbtype, nsmap), boolean_true) else: pval = elem.find(util.nspath_eval('ogc:Literal', nsmap)).text com_op = _get_comparison_operator(elem) LOGGER.debug('Comparison operator: %s' % com_op) # if this is a case insensitive search # then set the DB-specific LIKE comparison operator LOGGER.debug('Setting csw:AnyText property') anytext = queryables['csw:AnyText']['dbcol'] if ((matchcase is not None and matchcase == 'false') or pname == anytext): com_op = 'ilike' if is_pg else 'like' if (elem.tag == util.nspath_eval('ogc:PropertyIsBetween', nsmap)): com_op = 'between' lower_boundary = elem.find( util.nspath_eval('ogc:LowerBoundary/ogc:Literal', nsmap)).text upper_boundary = elem.find( util.nspath_eval('ogc:UpperBoundary/ogc:Literal', nsmap)).text expression = "%s %s %s and %s" % \ (pname, com_op, assign_param(), assign_param()) values.append(lower_boundary) values.append(upper_boundary) else: if pname == anytext and is_pg and fts: LOGGER.debug('PostgreSQL FTS specific search') # do nothing, let FTS do conversion (#212) pvalue = pval else: LOGGER.debug('PostgreSQL non-FTS specific search') pvalue = pval.replace(wildcard, '%').replace(singlechar, '_') if pname == anytext: # pad anytext with wildcards LOGGER.debug('PostgreSQL non-FTS specific anytext search') LOGGER.debug('old value: %s', pval) pvalue = '%%%s%%' % pvalue.rstrip('%').lstrip('%') LOGGER.debug('new value: %s', pvalue) values.append(pvalue) if boq == ' not ': if fname is not None: expression = "%s is null or not %s(%s) %s %s" % \ (pname, fname, pname, com_op, assign_param()) elif pname == anytext and is_pg and fts: LOGGER.debug('PostgreSQL FTS specific search') expression = ("%s is null or not plainto_tsquery('%s', %s) @@ anytext_tsvector" % (anytext, language, assign_param())) else: LOGGER.debug('PostgreSQL non-FTS specific search') expression = "%s is null or not %s %s %s" % \ (pname, pname, com_op, assign_param()) else: if fname is not None: expression = "%s(%s) %s %s" % \ (fname, pname, com_op, assign_param()) elif pname == anytext and is_pg and fts: LOGGER.debug('PostgreSQL FTS specific search') expression = ("plainto_tsquery('%s', %s) @@ anytext_tsvector" % (language, assign_param())) else: LOGGER.debug('PostgreSQL non-FTS specific search') expression = "%s %s %s" % (pname, com_op, assign_param()) return expression queries = [] queries_nested = [] values = [] LOGGER.debug('Scanning children elements') for child in tmp.xpath('child::*'): com_op = '' boolean_true = '\'true\'' boolean_false = '\'false\'' if dbtype == 'mysql': boolean_true = 'true' boolean_false = 'false' if child.tag == util.nspath_eval('ogc:Not', nsmap): LOGGER.debug('ogc:Not query detected') child_not = child.xpath('child::*')[0] if child_not.tag in \ [util.nspath_eval('ogc:%s' % n, nsmap) for n in MODEL['SpatialOperators']['values']]: LOGGER.debug('ogc:Not / spatial operator detected: %s' % child.tag) queries.append("%s = %s" % (_get_spatial_operator( queryables['pycsw:BoundingBox'], child.xpath('child::*')[0], dbtype, nsmap), boolean_false)) else: LOGGER.debug('ogc:Not / comparison operator detected: %s' % child.tag) queries.append('not %s' % _get_comparison_expression(child_not)) elif child.tag in \ [util.nspath_eval('ogc:%s' % n, nsmap) for n in MODEL['SpatialOperators']['values']]: LOGGER.debug('spatial operator detected: %s' % child.tag) if boq is not None and boq == ' not ': # for ogc:Not spatial queries in PostGIS we must explictly # test that pycsw:BoundingBox is null as well # TODO: Do we need the same for 'postgresql+postgis+native'??? if dbtype == 'postgresql+postgis+wkt': LOGGER.debug('Setting bbox is null test in PostgreSQL') queries.append("%s = %s or %s is null" % (_get_spatial_operator( queryables['pycsw:BoundingBox'], child, dbtype, nsmap), boolean_false, queryables['pycsw:BoundingBox'])) else: queries.append("%s = %s" % (_get_spatial_operator( queryables['pycsw:BoundingBox'], child, dbtype, nsmap), boolean_false)) else: queries.append("%s = %s" % (_get_spatial_operator( queryables['pycsw:BoundingBox'], child, dbtype, nsmap), boolean_true)) elif child.tag == util.nspath_eval('ogc:FeatureId', nsmap): LOGGER.debug('ogc:FeatureId filter detected') queries.append("%s = %s" % (queryables['pycsw:Identifier'], assign_param())) values.append(child.attrib.get('fid')) else: # comparison operator LOGGER.debug('Comparison operator processing') tagname = ' %s ' % util.xmltag_split(child.tag).lower() if tagname in [' or ', ' and ']: # this is a nested binary logic query LOGGER.debug('Nested binary logic detected; operator=%s' % tagname) for child2 in child.xpath('child::*'): queries_nested.append(_get_comparison_expression(child2)) queries.append('(%s)' % tagname.join(queries_nested)) else: queries.append(_get_comparison_expression(child)) where = boq.join(queries) if (boq is not None and boq != ' not ') \ else queries[0] return where, values def _get_spatial_operator(geomattr, element, dbtype, nsmap, postgis_geometry_column='wkb_geometry'): """return the spatial predicate function""" property_name = element.find(util.nspath_eval('ogc:PropertyName', nsmap)) distance = element.find(util.nspath_eval('ogc:Distance', nsmap)) distance = 'false' if distance is None else distance.text LOGGER.debug('Scanning for spatial property name') if property_name is None: raise RuntimeError('Missing ogc:PropertyName in spatial filter') if (property_name.text.find('BoundingBox') == -1 and property_name.text.find('Envelope') == -1): raise RuntimeError('Invalid ogc:PropertyName in spatial filter: %s' % property_name.text) geometry = gml3.Geometry(element, nsmap) #make decision to apply spatial ranking to results set_spatial_ranking(geometry) spatial_predicate = util.xmltag_split(element.tag).lower() LOGGER.debug('Spatial predicate: %s' % spatial_predicate) if dbtype == 'mysql': # adjust spatial query for MySQL LOGGER.debug('Adjusting spatial query for MySQL') if spatial_predicate == 'bbox': spatial_predicate = 'intersects' if spatial_predicate == 'beyond': spatial_query = "ifnull(distance(geomfromtext(%s), \ geomfromtext('%s')) > convert(%s, signed),false)" % \ (geomattr, geometry.wkt, distance) elif spatial_predicate == 'dwithin': spatial_query = "ifnull(distance(geomfromtext(%s), \ geomfromtext('%s')) <= convert(%s, signed),false)" % \ (geomattr, geometry.wkt, distance) else: spatial_query = "ifnull(%s(geomfromtext(%s), \ geomfromtext('%s')),false)" % \ (spatial_predicate, geomattr, geometry.wkt) elif dbtype == 'postgresql+postgis+wkt': # adjust spatial query for PostGIS with WKT geometry column LOGGER.debug('Adjusting spatial query for PostgreSQL+PostGIS+WKT') if spatial_predicate == 'bbox': spatial_predicate = 'intersects' if spatial_predicate == 'beyond': spatial_query = "not st_dwithin(st_geomfromtext(%s), \ st_geomfromtext('%s'), %f)" % \ (geomattr, geometry.wkt, float(distance)) elif spatial_predicate == 'dwithin': spatial_query = "st_dwithin(st_geomfromtext(%s), \ st_geomfromtext('%s'), %f)" % \ (geomattr, geometry.wkt, float(distance)) else: spatial_query = "st_%s(st_geomfromtext(%s), \ st_geomfromtext('%s'))" % \ (spatial_predicate, geomattr, geometry.wkt) elif dbtype == 'postgresql+postgis+native': # adjust spatial query for PostGIS with native geometry LOGGER.debug('Adjusting spatial query for PostgreSQL+PostGIS+native') if spatial_predicate == 'bbox': spatial_predicate = 'intersects' if spatial_predicate == 'beyond': spatial_query = "not st_dwithin(%s, \ st_geomfromtext('%s',4326), %f)" % \ (postgis_geometry_column, geometry.wkt, float(distance)) elif spatial_predicate == 'dwithin': spatial_query = "st_dwithin(%s, \ st_geomfromtext('%s',4326), %f)" % \ (postgis_geometry_column, geometry.wkt, float(distance)) else: spatial_query = "st_%s(%s, \ st_geomfromtext('%s',4326))" % \ (spatial_predicate, postgis_geometry_column, geometry.wkt) else: LOGGER.debug('Adjusting spatial query') spatial_query = "query_spatial(%s,'%s','%s','%s')" % \ (geomattr, geometry.wkt, spatial_predicate, distance) return spatial_query def _get_comparison_operator(element): """return the SQL operator based on Filter query""" return MODEL['ComparisonOperators']['ogc:%s' % util.xmltag_split(element.tag)]['opvalue'] def set_spatial_ranking(geometry): """Given that we have a spatial query in ogc:Filter we check the type of geometry and set the ranking variables""" if util.ranking_enabled: if geometry.type in ['Polygon', 'Envelope']: util.ranking_pass = True util.ranking_query_geometry = geometry.wkt elif geometry.type in ['LineString', 'Point']: from shapely.geometry.base import BaseGeometry from shapely.geometry import box from shapely.wkt import loads,dumps ls = loads(geometry.wkt) b = ls.bounds if geometry.type == 'LineString': tmp_box = box(b[0],b[1],b[2],b[3]) tmp_wkt = dumps(tmp_box) if tmp_box.area > 0: util.ranking_pass = True util.ranking_query_geometry = tmp_wkt elif geometry.type == 'Point': tmp_box = box((float(b[0])-1.0),(float(b[1])-1.0),(float(b[2])+1.0),(float(b[3])+1.0)) tmp_wkt = dumps(tmp_box) util.ranking_pass = True util.ranking_query_geometry = tmp_wkt pycsw-2.0.3/pycsw/ogc/fes/PaxHeaders.23451/fes2.py0000644000000000000000000000007413114323025016316 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/fes/fes2.py0000644000175000001440000004465313114323025017274 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # Angelos Tzotsos # # Copyright (c) 2015 Tom Kralidis # Copyright (c) 2015 Angelos Tzotsos # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import logging from pycsw.core import util from pycsw.ogc.gml import gml3 LOGGER = logging.getLogger(__name__) MODEL = { 'Conformance': { 'values': [ 'ImplementsQuery', 'ImplementsAdHocQuery', 'ImplementsFunctions', 'ImplementsResourceld', 'ImplementsMinStandardFilter', 'ImplementsStandardFilter', 'ImplementsMinSpatialFilter', 'ImplementsSpatialFilter', 'ImplementsMinTemporalFilter', 'ImplementsTemporalFilter', 'ImplementsVersionNav', 'ImplementsSorting', 'ImplementsExtendedOperators', 'ImplementsMinimumXPath', 'ImplementsSchemaElementFunc' ] }, 'GeometryOperands': { 'values': gml3.TYPES }, 'SpatialOperators': { 'values': ['BBOX', 'Beyond', 'Contains', 'Crosses', 'Disjoint', 'DWithin', 'Equals', 'Intersects', 'Overlaps', 'Touches', 'Within'] }, 'ComparisonOperators': { 'ogc:PropertyIsBetween': {'opname': 'PropertyIsBetween', 'opvalue': 'and'}, 'ogc:PropertyIsEqualTo': {'opname': 'PropertyIsEqualTo', 'opvalue': '='}, 'ogc:PropertyIsGreaterThan': {'opname': 'PropertyIsGreaterThan', 'opvalue': '>'}, 'ogc:PropertyIsGreaterThanOrEqualTo': { 'opname': 'PropertyIsGreaterThanOrEqualTo', 'opvalue': '>='}, 'ogc:PropertyIsLessThan': {'opname': 'PropertyIsLessThan', 'opvalue': '<'}, 'ogc:PropertyIsLessThanOrEqualTo': { 'opname': 'PropertyIsLessThanOrEqualTo', 'opvalue': '<='}, 'ogc:PropertyIsLike': {'opname': 'PropertyIsLike', 'opvalue': 'like'}, 'ogc:PropertyIsNotEqualTo': {'opname': 'PropertyIsNotEqualTo', 'opvalue': '!='}, 'ogc:PropertyIsNull': {'opname': 'PropertyIsNull', 'opvalue': 'is null'}, }, 'Functions': { 'length': {'returns': 'xs:string'}, 'lower': {'returns': 'xs:string'}, 'ltrim': {'returns': 'xs:string'}, 'rtrim': {'returns': 'xs:string'}, 'trim': {'returns': 'xs:string'}, 'upper': {'returns': 'xs:string'}, }, 'Ids': { 'values': ['csw30:id'] } } def parse(element, queryables, dbtype, nsmap, orm='sqlalchemy', language='english', fts=False): """OGC Filter object support""" boq = None is_pg = dbtype.startswith('postgresql') tmp = element.xpath('ogc:And|ogc:Or|ogc:Not', namespaces=nsmap) if len(tmp) > 0: # this is binary logic query boq = ' %s ' % util.xmltag_split(tmp[0].tag).lower() LOGGER.debug('Binary logic detected; operator=%s' % boq) tmp = tmp[0] else: tmp = element pvalue_serial = [0] # in list as python 2 has no nonlocal variable def assign_param(): if orm == 'django': return '%s' param = ':pvalue%d' % pvalue_serial[0] pvalue_serial[0] += 1 return param def _get_comparison_expression(elem): """return the SQL expression based on Filter query""" fname = None matchcase = elem.attrib.get('matchCase') wildcard = elem.attrib.get('wildCard') singlechar = elem.attrib.get('singleChar') expression = None if wildcard is None: wildcard = '%' if singlechar is None: singlechar = '_' if (elem.xpath('child::*')[0].tag == util.nspath_eval('ogc:Function', nsmap)): LOGGER.debug('ogc:Function detected') if (elem.xpath('child::*')[0].attrib['name'] not in MODEL['Functions']): raise RuntimeError('Invalid ogc:Function: %s' % (elem.xpath('child::*')[0].attrib['name'])) fname = elem.xpath('child::*')[0].attrib['name'] try: LOGGER.debug('Testing existence of ogc:PropertyName') pname = queryables[elem.find(util.nspath_eval('ogc:Function/ogc:PropertyName', nsmap)).text]['dbcol'] except Exception as err: raise RuntimeError('Invalid PropertyName: %s. %s' % (elem.find(util.nspath_eval('ogc:Function/ogc:PropertyName', nsmap)).text, str(err))) else: try: LOGGER.debug('Testing existence of ogc:PropertyName') pname = queryables[elem.find( util.nspath_eval('ogc:PropertyName', nsmap)).text]['dbcol'] except Exception as err: raise RuntimeError('Invalid PropertyName: %s. %s' % (elem.find(util.nspath_eval('ogc:PropertyName', nsmap)).text, str(err))) if (elem.tag != util.nspath_eval('ogc:PropertyIsBetween', nsmap)): if elem.tag in [util.nspath_eval('ogc:%s' % n, nsmap) for n in MODEL['SpatialOperators']['values']]: boolean_true = '\'true\'' boolean_false = '\'false\'' if dbtype == 'mysql': boolean_true = 'true' boolean_false = 'false' return "%s = %s" % (_get_spatial_operator(queryables['pycsw:BoundingBox'], elem, dbtype, nsmap), boolean_true) else: pval = elem.find(util.nspath_eval('ogc:Literal', nsmap)).text com_op = _get_comparison_operator(elem) LOGGER.debug('Comparison operator: %s' % com_op) # if this is a case insensitive search # then set the DB-specific LIKE comparison operator LOGGER.debug('Setting csw:AnyText property') anytext = queryables['csw:AnyText']['dbcol'] if ((matchcase is not None and matchcase == 'false') or pname == anytext): com_op = 'ilike' if is_pg else 'like' if (elem.tag == util.nspath_eval('ogc:PropertyIsBetween', nsmap)): com_op = 'between' lower_boundary = elem.find( util.nspath_eval('ogc:LowerBoundary/ogc:Literal', nsmap)).text upper_boundary = elem.find( util.nspath_eval('ogc:UpperBoundary/ogc:Literal', nsmap)).text expression = "%s %s %s and %s" % \ (pname, com_op, assign_param(), assign_param()) values.append(lower_boundary) values.append(upper_boundary) else: if pname == anytext and is_pg and fts: LOGGER.debug('PostgreSQL FTS specific search') # do nothing, let FTS do conversion (#212) pvalue = pval else: LOGGER.debug('PostgreSQL non-FTS specific search') pvalue = pval.replace(wildcard, '%').replace(singlechar, '_') if pname == anytext: # pad anytext with wildcards LOGGER.debug('PostgreSQL non-FTS specific anytext search') LOGGER.debug('old value: %s', pval) pvalue = '%%%s%%' % pvalue.rstrip('%').lstrip('%') LOGGER.debug('new value: %s', pvalue) values.append(pvalue) if boq == ' not ': if fname is not None: expression = "%s is null or not %s(%s) %s %s" % \ (pname, fname, pname, com_op, assign_param()) elif pname == anytext and is_pg and fts: LOGGER.debug('PostgreSQL FTS specific search') expression = ("%s is null or not plainto_tsquery('%s', %s) @@ anytext_tsvector" % (anytext, language, assign_param())) else: LOGGER.debug('PostgreSQL non-FTS specific search') expression = "%s is null or not %s %s %s" % \ (pname, pname, com_op, assign_param()) else: if fname is not None: expression = "%s(%s) %s %s" % \ (fname, pname, com_op, assign_param()) elif pname == anytext and is_pg and fts: LOGGER.debug('PostgreSQL FTS specific search') expression = ("plainto_tsquery('%s', %s) @@ anytext_tsvector" % (language, assign_param())) else: LOGGER.debug('PostgreSQL non-FTS specific search') expression = "%s %s %s" % (pname, com_op, assign_param()) return expression queries = [] queries_nested = [] values = [] LOGGER.debug('Scanning children elements') for child in tmp.xpath('child::*'): com_op = '' boolean_true = '\'true\'' boolean_false = '\'false\'' if dbtype == 'mysql': boolean_true = 'true' boolean_false = 'false' if child.tag == util.nspath_eval('ogc:Not', nsmap): LOGGER.debug('ogc:Not query detected') child_not = child.xpath('child::*')[0] if child_not.tag in \ [util.nspath_eval('ogc:%s' % n, nsmap) for n in MODEL['SpatialOperators']['values']]: LOGGER.debug('ogc:Not / spatial operator detected: %s' % child.tag) queries.append("%s = %s" % (_get_spatial_operator( queryables['pycsw:BoundingBox'], child.xpath('child::*')[0], dbtype, nsmap), boolean_false)) else: LOGGER.debug('ogc:Not / comparison operator detected: %s' % child.tag) queries.append('not %s' % _get_comparison_expression(child_not)) elif child.tag in \ [util.nspath_eval('ogc:%s' % n, nsmap) for n in MODEL['SpatialOperators']['values']]: LOGGER.debug('spatial operator detected: %s' % child.tag) if boq is not None and boq == ' not ': # for ogc:Not spatial queries in PostGIS we must explictly # test that pycsw:BoundingBox is null as well # TODO: Do we need the same for 'postgresql+postgis+native'??? if dbtype == 'postgresql+postgis+wkt': LOGGER.debug('Setting bbox is null test in PostgreSQL') queries.append("%s = %s or %s is null" % (_get_spatial_operator( queryables['pycsw:BoundingBox'], child, dbtype, nsmap), boolean_false, queryables['pycsw:BoundingBox'])) else: queries.append("%s = %s" % (_get_spatial_operator( queryables['pycsw:BoundingBox'], child, dbtype, nsmap), boolean_false)) else: queries.append("%s = %s" % (_get_spatial_operator( queryables['pycsw:BoundingBox'], child, dbtype, nsmap), boolean_true)) elif child.tag == util.nspath_eval('ogc:FeatureId', nsmap): LOGGER.debug('ogc:FeatureId filter detected') queries.append("%s = %s" % (queryables['pycsw:Identifier'], assign_param())) values.append(child.attrib.get('fid')) else: # comparison operator LOGGER.debug('Comparison operator processing') tagname = ' %s ' % util.xmltag_split(child.tag).lower() if tagname in [' or ', ' and ']: # this is a nested binary logic query LOGGER.debug('Nested binary logic detected; operator=%s' % tagname) for child2 in child.xpath('child::*'): queries_nested.append(_get_comparison_expression(child2)) queries.append('(%s)' % tagname.join(queries_nested)) else: queries.append(_get_comparison_expression(child)) where = boq.join(queries) if (boq is not None and boq != ' not ') \ else queries[0] return where, values def _get_spatial_operator(geomattr, element, dbtype, nsmap, postgis_geometry_column='wkb_geometry'): """return the spatial predicate function""" property_name = element.find(util.nspath_eval('ogc:PropertyName', nsmap)) distance = element.find(util.nspath_eval('ogc:Distance', nsmap)) distance = 'false' if distance is None else distance.text LOGGER.debug('Scanning for spatial property name') if property_name is None: raise RuntimeError('Missing ogc:PropertyName in spatial filter') if (property_name.text.find('BoundingBox') == -1 and property_name.text.find('Envelope') == -1): raise RuntimeError('Invalid ogc:PropertyName in spatial filter: %s' % property_name.text) geometry = gml3.Geometry(element, nsmap) #make decision to apply spatial ranking to results set_spatial_ranking(geometry) spatial_predicate = util.xmltag_split(element.tag).lower() LOGGER.debug('Spatial predicate: %s' % spatial_predicate) if dbtype == 'mysql': # adjust spatial query for MySQL LOGGER.debug('Adjusting spatial query for MySQL') if spatial_predicate == 'bbox': spatial_predicate = 'intersects' if spatial_predicate == 'beyond': spatial_query = "ifnull(distance(geomfromtext(%s), \ geomfromtext('%s')) > convert(%s, signed),false)" % \ (geomattr, geometry.wkt, distance) elif spatial_predicate == 'dwithin': spatial_query = "ifnull(distance(geomfromtext(%s), \ geomfromtext('%s')) <= convert(%s, signed),false)" % \ (geomattr, geometry.wkt, distance) else: spatial_query = "ifnull(%s(geomfromtext(%s), \ geomfromtext('%s')),false)" % \ (spatial_predicate, geomattr, geometry.wkt) elif dbtype == 'postgresql+postgis+wkt': # adjust spatial query for PostGIS with WKT geometry column LOGGER.debug('Adjusting spatial query for PostgreSQL+PostGIS+WKT') if spatial_predicate == 'bbox': spatial_predicate = 'intersects' if spatial_predicate == 'beyond': spatial_query = "not st_dwithin(st_geomfromtext(%s), \ st_geomfromtext('%s'), %f)" % \ (geomattr, geometry.wkt, float(distance)) elif spatial_predicate == 'dwithin': spatial_query = "st_dwithin(st_geomfromtext(%s), \ st_geomfromtext('%s'), %f)" % \ (geomattr, geometry.wkt, float(distance)) else: spatial_query = "st_%s(st_geomfromtext(%s), \ st_geomfromtext('%s'))" % \ (spatial_predicate, geomattr, geometry.wkt) elif dbtype == 'postgresql+postgis+native': # adjust spatial query for PostGIS with native geometry LOGGER.debug('Adjusting spatial query for PostgreSQL+PostGIS+native') if spatial_predicate == 'bbox': spatial_predicate = 'intersects' if spatial_predicate == 'beyond': spatial_query = "not st_dwithin(%s, \ st_geomfromtext('%s',4326), %f)" % \ (postgis_geometry_column, geometry.wkt, float(distance)) elif spatial_predicate == 'dwithin': spatial_query = "st_dwithin(%s, \ st_geomfromtext('%s',4326), %f)" % \ (postgis_geometry_column, geometry.wkt, float(distance)) else: spatial_query = "st_%s(%s, \ st_geomfromtext('%s',4326))" % \ (spatial_predicate, postgis_geometry_column, geometry.wkt) else: LOGGER.debug('Adjusting spatial query') spatial_query = "query_spatial(%s,'%s','%s','%s')" % \ (geomattr, geometry.wkt, spatial_predicate, distance) return spatial_query def _get_comparison_operator(element): """return the SQL operator based on Filter query""" return MODEL['ComparisonOperators']['ogc:%s' % util.xmltag_split(element.tag)]['opvalue'] def set_spatial_ranking(geometry): """Given that we have a spatial query in ogc:Filter we check the type of geometry and set the ranking variables""" if util.ranking_enabled: if geometry.type in ['Polygon', 'Envelope']: util.ranking_pass = True util.ranking_query_geometry = geometry.wkt elif geometry.type in ['LineString', 'Point']: from shapely.geometry.base import BaseGeometry from shapely.geometry import box from shapely.wkt import loads,dumps ls = loads(geometry.wkt) b = ls.bounds if geometry.type == 'LineString': tmp_box = box(b[0],b[1],b[2],b[3]) tmp_wkt = dumps(tmp_box) if tmp_box.area > 0: util.ranking_pass = True util.ranking_query_geometry = tmp_wkt elif geometry.type == 'Point': tmp_box = box((float(b[0])-1.0),(float(b[1])-1.0),(float(b[2])+1.0),(float(b[3])+1.0)) tmp_wkt = dumps(tmp_box) util.ranking_pass = True util.ranking_query_geometry = tmp_wkt pycsw-2.0.3/pycsw/ogc/PaxHeaders.23451/gml0000644000000000000000000000007413114323025015032 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/gml/0000755000175000001440000000000013114323025016051 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/ogc/gml/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025017220 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/gml/__init__.py0000644000175000001440000000243713114323025020170 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/ogc/gml/PaxHeaders.23451/gml3.py0000644000000000000000000000007413114323025016323 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/ogc/gml/gml3.py0000644000175000001440000001754413114323025017300 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= from six.moves import zip import logging from owslib import crs from pycsw.core import util LOGGER = logging.getLogger(__name__) TYPES = ['gml:Point', 'gml:LineString', 'gml:Polygon', 'gml:Envelope'] DEFAULT_SRS = crs.Crs('urn:x-ogc:def:crs:EPSG:6.11:4326') def _poslist2wkt(poslist, axisorder): """Repurpose gml:posList into WKT aware list""" tmp = poslist.split() poslist2 = [] xlist = tmp[1::2] ylist = tmp[::2] if axisorder == 'yx': for i, j in zip(ylist, xlist): poslist2.append('%s %s' % (i, j)) else: for i, j in zip(xlist, ylist): poslist2.append('%s %s' % (i, j)) return ', '.join(poslist2) class Geometry(object): """base geometry class""" def __init__(self, element, nsmap): """initialize geometry parser""" self.nsmap = nsmap self.type = None self.wkt = None self.crs = None self._exml = element # return OGC WKT for GML geometry operand = element.xpath( '|'.join(TYPES), namespaces={'gml': 'http://www.opengis.net/gml'})[0] if 'srsName' in operand.attrib: LOGGER.debug('geometry srsName detected') self.crs = crs.Crs(operand.attrib['srsName']) else: LOGGER.debug('setting default geometry srsName %s' % DEFAULT_SRS) self.crs = DEFAULT_SRS self.type = util.xmltag_split(operand.tag) if self.type == 'Point': self._get_point() elif self.type == 'LineString': self._get_linestring() elif self.type == 'Polygon': self._get_polygon() elif self.type == 'Envelope': self._get_envelope() else: raise RuntimeError('Unsupported geometry type (Must be one of %s)' % ','.join(TYPES)) # reproject data if needed if self.crs is not None and self.crs.code not in [4326, 'CRS84']: LOGGER.debug('transforming geometry to 4326') try: self.wkt = self.transform(self.crs.code, DEFAULT_SRS.code) except Exception as err: raise RuntimeError('Reprojection error: Invalid srsName ' '"%s": %s' % (self.crs.id, str(err))) def _get_point(self): """Parse gml:Point""" tmp = self._exml.find(util.nspath_eval('gml:Point/gml:pos', self.nsmap)) if tmp is None: raise RuntimeError('Invalid gml:Point geometry. Missing gml:pos') else: xypoint = tmp.text.split() if self.crs.axisorder == 'yx': self.wkt = 'POINT(%s %s)' % (xypoint[1], xypoint[0]) else: self.wkt = 'POINT(%s %s)' % (xypoint[0], xypoint[1]) def _get_linestring(self): """Parse gml:LineString""" tmp = self._exml.find(util.nspath_eval('gml:LineString/gml:posList', self.nsmap)) if tmp is None: raise RuntimeError('Invalid gml:LineString geometry.\ Missing gml:posList') else: self.wkt = 'LINESTRING(%s)' % _poslist2wkt(tmp.text, self.crs.axisorder) def _get_polygon(self): """Parse gml:Polygon""" tmp = self._exml.find('.//%s' % util.nspath_eval('gml:posList', self.nsmap)) if tmp is None: raise RuntimeError('Invalid gml:LineString geometry.\ Missing gml:posList') else: self.wkt = 'POLYGON((%s))' % _poslist2wkt(tmp.text, self.crs.axisorder) def _get_envelope(self): """Parse gml:Envelope""" tmp = self._exml.find(util.nspath_eval('gml:Envelope/gml:lowerCorner', self.nsmap)) if tmp is None: raise RuntimeError('Invalid gml:Envelope geometry.\ Missing gml:lowerCorner') else: lower_left = tmp.text tmp = self._exml.find(util.nspath_eval('gml:Envelope/gml:upperCorner', self.nsmap)) if tmp is None: raise RuntimeError('Invalid gml:Envelope geometry.\ Missing gml:upperCorner') else: upper_right = tmp.text llmin = lower_left.split() urmax = upper_right.split() if len(llmin) < 2 or len(urmax) < 2: raise RuntimeError('Invalid gml:Envelope geometry. \ gml:lowerCorner and gml:upperCorner must hold at least x and y') if self.crs.axisorder == 'yx': self.wkt = util.bbox2wktpolygon('%s,%s,%s,%s' % (llmin[1], llmin[0], urmax[1], urmax[0])) else: self.wkt = util.bbox2wktpolygon('%s,%s,%s,%s' % (llmin[0], llmin[1], urmax[0], urmax[1])) def transform(self, src, dest): """transform coordinates from one CRS to another""" import pyproj from shapely.geometry import Point, LineString, Polygon from shapely.wkt import loads LOGGER.debug('Transforming geometry from %s to %s' % (src, dest)) vertices = [] try: proj_src = pyproj.Proj(init='epsg:%s' % src) except: raise RuntimeError('Invalid source projection') try: proj_dst = pyproj.Proj(init='epsg:%s' % dest) except: raise RuntimeError('Invalid destination projection') geom = loads(self.wkt) if geom.type == 'Point': newgeom = Point(pyproj.transform(proj_src, proj_dst, geom.x, geom.y)) wkt2 = newgeom.wkt elif geom.type == 'LineString': for vertice in list(geom.coords): newgeom = pyproj.transform(proj_src, proj_dst, vertice[0], vertice[1]) vertices.append(newgeom) linestring = LineString(vertices) wkt2 = linestring.wkt elif geom.type == 'Polygon': for vertice in list(geom.exterior.coords): newgeom = pyproj.transform(proj_src, proj_dst, vertice[0], vertice[1]) vertices.append(newgeom) polygon = Polygon(vertices) wkt2 = polygon.wkt return wkt2 pycsw-2.0.3/pycsw/PaxHeaders.23451/opensearch.py0000644000000000000000000000007413114323025016261 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/opensearch.py0000644000175000001440000005166613114323025017241 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # Angelos Tzotsos # # Copyright (c) 2015 Tom Kralidis # Copyright (c) 2015 Angelos Tzotsos # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import six import logging from pycsw.core import util from pycsw.core.etree import etree LOGGER = logging.getLogger(__name__) class OpenSearch(object): """OpenSearch wrapper class""" def __init__(self, context): """initialize""" self.namespaces = { 'atom': 'http://www.w3.org/2005/Atom', 'geo': 'http://a9.com/-/opensearch/extensions/geo/1.0/', 'os': 'http://a9.com/-/spec/opensearch/1.1/', 'time': 'http://a9.com/-/opensearch/extensions/time/1.0/' } self.context = context self.context.namespaces.update(self.namespaces) def response_csw2opensearch(self, element, cfg): """transform a CSW response into an OpenSearch response""" root_tag = util.xmltag_split(element.tag) if root_tag == 'ExceptionReport': return element LOGGER.debug('RESPONSE: %s', root_tag) try: version = element.xpath('//@version')[0] except Exception as err: version = '3.0.0' self.exml = element self.cfg = cfg self.bind_url = util.bind_url(self.cfg.get('server', 'url')) if version == '2.0.2': return self._csw2_2_os() elif version == '3.0.0': return self._csw3_2_os() def _csw2_2_os(self): """CSW 2.0.2 Capabilities to OpenSearch Description""" if util.xmltag_split(self.exml.tag) == 'GetRecordsResponse': startindex = int(self.exml.xpath('//@nextRecord')[0]) - int( self.exml.xpath('//@numberOfRecordsReturned')[0]) if startindex < 1: startindex = 1 node = etree.Element(util.nspath_eval('atom:feed', self.context.namespaces), nsmap=self.namespaces) etree.SubElement(node, util.nspath_eval('atom:id', self.context.namespaces)).text = self.cfg.get('server', 'url') etree.SubElement(node, util.nspath_eval('atom:title', self.context.namespaces)).text = self.cfg.get('metadata:main', 'identification_title') #etree.SubElement(node, util.nspath_eval('atom:updated', # self.context.namespaces)).text = self.exml.xpath('//@timestamp')[0] etree.SubElement(node, util.nspath_eval('os:totalResults', self.context.namespaces)).text = self.exml.xpath( '//@numberOfRecordsMatched')[0] etree.SubElement(node, util.nspath_eval('os:startIndex', self.context.namespaces)).text = str(startindex) etree.SubElement(node, util.nspath_eval('os:itemsPerPage', self.context.namespaces)).text = self.exml.xpath( '//@numberOfRecordsReturned')[0] for rec in self.exml.xpath('//atom:entry', namespaces=self.context.namespaces): node.append(rec) elif util.xmltag_split(self.exml.tag) == 'Capabilities': node = etree.Element(util.nspath_eval('os:OpenSearchDescription', self.namespaces), nsmap=self.namespaces) etree.SubElement(node, util.nspath_eval('os:ShortName', self.namespaces)).text = self.exml.xpath('//ows:Title', namespaces=self.context.namespaces)[0].text etree.SubElement(node, util.nspath_eval('os:LongName', self.namespaces)).text = self.exml.xpath('//ows:Title', namespaces=self.context.namespaces)[0].text etree.SubElement(node, util.nspath_eval('os:Description', self.namespaces)).text = self.exml.xpath('//ows:Abstract', namespaces=self.context.namespaces)[0].text etree.SubElement(node, util.nspath_eval('os:Tags', self.namespaces)).text = ' '.join(x.text for x in self.exml.xpath('//ows:Keyword', namespaces=self.context.namespaces)) node1 = etree.SubElement(node, util.nspath_eval('os:Url', self.namespaces)) node1.set('type', 'application/atom+xml') node1.set('method', 'get') node1.set('template', '%smode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q={searchTerms?}&bbox={geo:box?}&time={time:start?}/{time:end?}&startposition={startIndex?}&maxrecords={count?}' % self.bind_url) node1 = etree.SubElement(node, util.nspath_eval('os:Image', self.namespaces)) node1.set('type', 'image/vnd.microsoft.icon') node1.set('width', '16') node1.set('height', '16') node1.text = 'http://pycsw.org/img/favicon.ico' etree.SubElement(node, util.nspath_eval('os:Developer', self.namespaces)).text = self.exml.xpath('//ows:IndividualName', namespaces=self.context.namespaces)[0].text etree.SubElement(node, util.nspath_eval('os:Context', self.namespaces)).text = self.exml.xpath('//ows:ElectronicMailAddress', namespaces=self.context.namespaces)[0].text etree.SubElement(node, util.nspath_eval('os:Attribution', self.namespaces)).text = self.exml.xpath('//ows:ProviderName', namespaces=self.context.namespaces)[0].text elif util.xmltag_split(self.exml.tag) == 'ExceptionReport': node = self.exml else: # return Description document node = etree.Element(util.nspath_eval('os:Description', self.context.namespaces)) return node def _csw3_2_os(self): """CSW 3.0.0 Capabilities to OpenSearch Description""" if util.xmltag_split(self.exml.tag) == 'GetRecordsResponse': startindex = int(self.exml.xpath('//@nextRecord')[0]) - int( self.exml.xpath('//@numberOfRecordsReturned')[0]) if startindex < 1: startindex = 1 node = etree.Element(util.nspath_eval('atom:feed', self.context.namespaces), nsmap=self.namespaces) etree.SubElement(node, util.nspath_eval('atom:id', self.context.namespaces)).text = self.cfg.get('server', 'url') etree.SubElement(node, util.nspath_eval('atom:title', self.context.namespaces)).text = self.cfg.get('metadata:main', 'identification_title') author = etree.SubElement(node, util.nspath_eval('atom:author', self.context.namespaces)) etree.SubElement(author, util.nspath_eval('atom:name', self.context.namespaces)).text = self.cfg.get('metadata:main', 'provider_name') etree.SubElement(node, util.nspath_eval('atom:link', self.context.namespaces), rel='search', type='application/opensearchdescription+xml', href='%smode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities' % self.bind_url) etree.SubElement(node, util.nspath_eval('atom:updated', self.context.namespaces)).text = self.exml.xpath('//@timestamp')[0] etree.SubElement(node, util.nspath_eval('os:Query', self.context.namespaces), role='request') etree.SubElement(node, util.nspath_eval('os:totalResults', self.context.namespaces)).text = self.exml.xpath( '//@numberOfRecordsMatched')[0] etree.SubElement(node, util.nspath_eval('os:startIndex', self.context.namespaces)).text = str(startindex) etree.SubElement(node, util.nspath_eval('os:itemsPerPage', self.context.namespaces)).text = self.exml.xpath( '//@numberOfRecordsReturned')[0] for rec in self.exml.xpath('//atom:entry', namespaces=self.context.namespaces): node.append(rec) elif util.xmltag_split(self.exml.tag) == 'Capabilities': node = etree.Element(util.nspath_eval('os:OpenSearchDescription', self.namespaces), nsmap=self.namespaces) etree.SubElement(node, util.nspath_eval('os:ShortName', self.namespaces)).text = self.exml.xpath('//ows20:Title', namespaces=self.context.namespaces)[0].text[:16] etree.SubElement(node, util.nspath_eval('os:LongName', self.namespaces)).text = self.exml.xpath('//ows20:Title', namespaces=self.context.namespaces)[0].text etree.SubElement(node, util.nspath_eval('os:Description', self.namespaces)).text = self.exml.xpath('//ows20:Abstract', namespaces=self.context.namespaces)[0].text etree.SubElement(node, util.nspath_eval('os:Tags', self.namespaces)).text = ' '.join(x.text for x in self.exml.xpath('//ows20:Keyword', namespaces=self.context.namespaces)) # Requirement-022 node1 = etree.SubElement(node, util.nspath_eval('os:Url', self.namespaces)) node1.set('type', 'application/xml') node1.set('template', '%sservice=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q={searchTerms?}&bbox={geo:box?}&time={time:start?}/{time:end?}&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition={startIndex?}&maxrecords={count?}&recordids={geo:uid}' % self.bind_url) # Requirement-023 node1 = etree.SubElement(node, util.nspath_eval('os:Url', self.namespaces)) node1.set('type', 'application/atom+xml') node1.set('template', '%smode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q={searchTerms?}&bbox={geo:box?}&time={time:start?}/{time:end?}&outputformat=application/atom%%2Bxml&startposition={startIndex?}&maxrecords={count?}&recordids={geo:uid}' % self.bind_url) node1 = etree.SubElement(node, util.nspath_eval('os:Image', self.namespaces)) node1.set('type', 'image/vnd.microsoft.icon') node1.set('width', '16') node1.set('height', '16') node1.text = 'http://pycsw.org/img/favicon.ico' os_query = etree.SubElement(node, util.nspath_eval('os:Query', self.namespaces), role='example') os_query.attrib[util.nspath_eval('geo:box', self.namespaces)] = '-180,-90,180,90' etree.SubElement(node, util.nspath_eval('os:Developer', self.namespaces)).text = self.exml.xpath('//ows20:IndividualName', namespaces=self.context.namespaces)[0].text etree.SubElement(node, util.nspath_eval('os:Contact', self.namespaces)).text = self.exml.xpath('//ows20:ElectronicMailAddress', namespaces=self.context.namespaces)[0].text etree.SubElement(node, util.nspath_eval('os:Attribution', self.namespaces)).text = self.exml.xpath('//ows20:ProviderName', namespaces=self.context.namespaces)[0].text elif util.xmltag_split(self.exml.tag) == 'ExceptionReport': node = self.exml else: # GetRecordById output node = etree.Element(util.nspath_eval('atom:feed', self.context.namespaces), nsmap=self.namespaces) etree.SubElement(node, util.nspath_eval('atom:id', self.context.namespaces)).text = self.cfg.get('server', 'url') etree.SubElement(node, util.nspath_eval('atom:title', self.context.namespaces)).text = self.cfg.get('metadata:main', 'identification_title') #etree.SubElement(node, util.nspath_eval('atom:updated', # self.context.namespaces)).text = self.exml.xpath('//@timestamp')[0] etree.SubElement(node, util.nspath_eval('os:totalResults', self.context.namespaces)).text = '1' etree.SubElement(node, util.nspath_eval('os:startIndex', self.context.namespaces)).text = '1' etree.SubElement(node, util.nspath_eval('os:itemsPerPage', self.context.namespaces)).text = '1' for rec in self.exml.xpath('//atom:entry', namespaces=self.context.namespaces): #node.append(rec) node = rec return node def kvp2filterxml(kvp, context): ''' transform kvp to filter XML string ''' bbox_element = None time_element = None anytext_elements = [] # Count parameters par_count = 0 for p in ['q','bbox','time']: if p in kvp and kvp[p] != '': par_count += 1 # Create root element for FilterXML root = etree.Element(util.nspath_eval('ogc:Filter', context.namespaces)) # bbox to FilterXML if 'bbox' in kvp and kvp['bbox'] != '': LOGGER.debug('Detected bbox parameter') bbox_list = [x.strip() for x in kvp['bbox'].split(',')] bbox_element = etree.Element(util.nspath_eval('ogc:BBOX', context.namespaces)) el = etree.Element(util.nspath_eval('ogc:PropertyName', context.namespaces)) el.text = 'ows:BoundingBox' bbox_element.append(el) env = etree.Element(util.nspath_eval('gml:Envelope', context.namespaces)) el = etree.Element(util.nspath_eval('gml:lowerCorner', context.namespaces)) if len(bbox_list) == 5: # add srsName LOGGER.debug('Found CRS') env.attrib['srsName'] = bbox_list[4] else: LOGGER.debug('Assuming 4326') env.attrib['srsName'] = 'urn:ogc:def:crs:OGC:1.3:CRS84' if not util.validate_4326(bbox_list): msg = '4326 coordinates out of range: %s' % bbox_list LOGGER.debug(msg) raise RuntimeError(msg) try: el.text = "%s %s" % (bbox_list[0], bbox_list[1]) except Exception as err: errortext = 'Exception: OpenSearch bbox not valid.\nError: %s.' % str(err) LOGGER.debug(errortext) env.append(el) el = etree.Element(util.nspath_eval('gml:upperCorner', context.namespaces)) try: el.text = "%s %s" % (bbox_list[2], bbox_list[3]) except Exception as err: errortext = 'Exception: OpenSearch bbox not valid.\nError: %s.' % str(err) LOGGER.debug(errortext) env.append(el) bbox_element.append(env) # q to FilterXML if 'q' in kvp and kvp['q'] != '': LOGGER.debug('Detected q parameter') qvals = kvp['q'].split() LOGGER.debug(qvals) if len(qvals) > 1: par_count += 1 for qval in qvals: LOGGER.debug('processing q token') anytext_element = etree.Element(util.nspath_eval('ogc:PropertyIsEqualTo', context.namespaces)) el = etree.Element(util.nspath_eval('ogc:PropertyName', context.namespaces)) el.text = 'csw:AnyText' anytext_element.append(el) el = etree.Element(util.nspath_eval('ogc:Literal', context.namespaces)) if six.PY2: el.text = qval.decode('utf8') else: el.text = qval anytext_element.append(el) anytext_elements.append(anytext_element) # time to FilterXML if 'time' in kvp and kvp['time'] != '': LOGGER.debug('Detected time parameter %s', kvp['time']) time_list = kvp['time'].split("/") if (len(time_list) == 2): LOGGER.debug('TIMELIST: %s', time_list) # This is a normal request if '' not in time_list: LOGGER.debug('Both dates present') # Both dates are present time_element = etree.Element(util.nspath_eval('ogc:PropertyIsBetween', context.namespaces)) el = etree.Element(util.nspath_eval('ogc:PropertyName', context.namespaces)) el.text = 'dc:date' time_element.append(el) el = etree.Element(util.nspath_eval('ogc:LowerBoundary', context.namespaces)) el2 = etree.Element(util.nspath_eval('ogc:Literal', context.namespaces)) el2.text = time_list[0] el.append(el2) time_element.append(el) el = etree.Element(util.nspath_eval('ogc:UpperBoundary', context.namespaces)) el2 = etree.Element(util.nspath_eval('ogc:Literal', context.namespaces)) el2.text = time_list[1] el.append(el2) time_element.append(el) else: if time_list == ['', '']: par_count -= 1 # One of two is empty elif time_list[1] is '': time_element = etree.Element(util.nspath_eval('ogc:PropertyIsGreaterThanOrEqualTo', context.namespaces)) el = etree.Element(util.nspath_eval('ogc:PropertyName', context.namespaces)) el.text = 'dc:date' time_element.append(el) el = etree.Element(util.nspath_eval('ogc:Literal', context.namespaces)) el.text = time_list[0] time_element.append(el) else: time_element = etree.Element(util.nspath_eval('ogc:PropertyIsLessThanOrEqualTo', context.namespaces)) el = etree.Element(util.nspath_eval('ogc:PropertyName', context.namespaces)) el.text = 'dc:date' time_element.append(el) el = etree.Element(util.nspath_eval('ogc:Literal', context.namespaces)) el.text = time_list[1] time_element.append(el) elif ((len(time_list) == 1) and ('' not in time_list)): # This is an equal request time_element = etree.Element(util.nspath_eval('ogc:PropertyIsEqualTo', context.namespaces)) el = etree.Element(util.nspath_eval('ogc:PropertyName', context.namespaces)) el.text = 'dc:date' time_element.append(el) el = etree.Element(util.nspath_eval('ogc:Literal', context.namespaces)) el.text = time_list[0] time_element.append(el) else: # Error errortext = 'Exception: OpenSearch time not valid: %s.' % str(kvp['time']) LOGGER.debug(errortext) if par_count == 0: return '' elif par_count == 1: LOGGER.debug('Single predicate filter') # Only one OpenSearch parameter exists if 'bbox' in kvp and kvp['bbox'] != '': LOGGER.debug('Adding bbox') root.append(bbox_element) elif time_element is not None: LOGGER.debug('Adding time') root.append(time_element) elif anytext_elements: LOGGER.debug('Adding anytext') root.extend(anytext_elements) elif (par_count > 1): LOGGER.debug('ogc:And query (%d predicates)', par_count) # Since more than 1 parameter, append the AND logical operator logical_and = etree.Element(util.nspath_eval('ogc:And', context.namespaces)) if bbox_element is not None: logical_and.append(bbox_element) if time_element is not None: logical_and.append(time_element) if anytext_elements is not None: logical_and.extend(anytext_elements) root.append(logical_and) # Render etree to string XML LOGGER.debug(etree.tostring(root, encoding='unicode')) return etree.tostring(root, encoding='unicode') pycsw-2.0.3/pycsw/PaxHeaders.23451/plugins0000644000000000000000000000007413114323025015164 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/0000755000175000001440000000000013114323025016203 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025017352 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/__init__.py0000644000175000001440000000243713114323025020322 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/plugins/PaxHeaders.23451/outputschemas0000644000000000000000000000007413114323025020070 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/outputschemas/0000755000175000001440000000000013114323025021107 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/outputschemas/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025022256 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/outputschemas/__init__.py0000644000175000001440000000251213114323025023220 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= __all__ = ['atom', 'dif', 'fgdc', 'gm03'] pycsw-2.0.3/pycsw/plugins/outputschemas/PaxHeaders.23451/atom.py0000644000000000000000000000007413114323025021457 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/outputschemas/atom.py0000644000175000001440000001327413114323025022430 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import os from pycsw.core import util from pycsw.core.etree import etree NAMESPACE = 'http://www.w3.org/2005/Atom' NAMESPACES = {'atom': NAMESPACE, 'georss': 'http://www.georss.org/georss'} XPATH_MAPPINGS = { 'pycsw:Identifier': 'atom:id', 'pycsw:Title': 'atom:title', 'pycsw:Creator': 'atom:author', 'pycsw:Abstract': 'atom:summary', 'pycsw:PublicationDate': 'atom:published', 'pycsw:Keywords': 'atom:category', 'pycsw:Contributor': 'atom:contributor', 'pycsw:AccessConstraints': 'atom:rights', 'pycsw:Modified': 'atom:updated', 'pycsw:Source': 'atom:source', } def write_record(result, esn, context, url=None): ''' Return csw:SearchResults child as lxml.etree.Element ''' typename = util.getqattr(result, context.md_core_model['mappings']['pycsw:Typename']) if esn == 'full' and typename == 'atom:entry': # dump record as is and exit return etree.fromstring(util.getqattr(result, context.md_core_model['mappings']['pycsw:XML']), context.parser) node = etree.Element(util.nspath_eval('atom:entry', NAMESPACES), nsmap=NAMESPACES) node.attrib[util.nspath_eval('xsi:schemaLocation', context.namespaces)] = \ '%s http://www.kbcafe.com/rss/atom.xsd.xml' % NAMESPACES['atom'] # author val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Creator']) if val: author = etree.SubElement(node, util.nspath_eval('atom:author', NAMESPACES)) etree.SubElement(author, util.nspath_eval('atom:name', NAMESPACES)).text = val # category val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Keywords']) if val: for kw in val.split(','): etree.SubElement(node, util.nspath_eval('atom:category', NAMESPACES), term=kw) for qval in ['pycsw:Contributor', 'pycsw:Identifier']: val = util.getqattr(result, context.md_core_model['mappings'][qval]) if val: etree.SubElement(node, util.nspath_eval(XPATH_MAPPINGS[qval], NAMESPACES)).text = val if qval == 'pycsw:Identifier': etree.SubElement(node, util.nspath_eval('dc:identifier', context.namespaces)).text = val rlinks = util.getqattr(result, context.md_core_model['mappings']['pycsw:Links']) if rlinks: for link in rlinks.split('^'): linkset = link.split(',') url2 = etree.SubElement(node, util.nspath_eval('atom:link', NAMESPACES), href=linkset[-1], type=linkset[2], title=linkset[1]) etree.SubElement(node, util.nspath_eval('atom:link', NAMESPACES), href='%s?service=CSW&version=2.0.2&request=GetRepositoryItem&id=%s' % (url, util.getqattr(result, context.md_core_model['mappings']['pycsw:Identifier']))) # atom:title el = etree.SubElement(node, util.nspath_eval(XPATH_MAPPINGS['pycsw:Title'], NAMESPACES)) val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Title']) if val: el.text =val # atom:updated el = etree.SubElement(node, util.nspath_eval(XPATH_MAPPINGS['pycsw:Modified'], NAMESPACES)) val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Modified']) if val: el.text =val else: val = util.getqattr(result, context.md_core_model['mappings']['pycsw:InsertDate']) el.text = val for qval in ['pycsw:PublicationDate', 'pycsw:AccessConstraints', 'pycsw:Source', 'pycsw:Abstract']: val = util.getqattr(result, context.md_core_model['mappings'][qval]) if val: etree.SubElement(node, util.nspath_eval(XPATH_MAPPINGS[qval], NAMESPACES)).text = val # bbox extent val = util.getqattr(result, context.md_core_model['mappings']['pycsw:BoundingBox']) bboxel = write_extent(val, context.namespaces) if bboxel is not None: node.append(bboxel) return node def write_extent(bbox, nsmap): ''' Generate BBOX extent ''' if bbox is not None: try: bbox2 = util.wkt2geom(bbox) except: return None where = etree.Element(util.nspath_eval('georss:where', NAMESPACES)) envelope = etree.SubElement(where, util.nspath_eval('gml:Envelope', nsmap), srsName='http://www.opengis.net/def/crs/EPSG/0/4326') etree.SubElement(envelope, util.nspath_eval('gml:lowerCorner', nsmap)).text = '%s %s' % (bbox2[1], bbox2[0]) etree.SubElement(envelope, util.nspath_eval('gml:upperCorner', nsmap)).text = '%s %s' % (bbox2[3], bbox2[2]) return where return None pycsw-2.0.3/pycsw/plugins/outputschemas/PaxHeaders.23451/dif.py0000644000000000000000000000007413114323025021261 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/outputschemas/dif.py0000644000175000001440000002020713114323025022224 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= from pycsw.core import util from pycsw.core.etree import etree NAMESPACE = 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/' NAMESPACES = {'dif': NAMESPACE} XPATH_MAPPINGS = { 'pycsw:Title': 'dif:Entry_Title', 'pycsw:Creator': 'dif:Data_Set_Citation/dif:Dataset_Creator', 'pycsw:TopicCategory': 'dif:ISO_Topic_Category', 'pycsw:Keywords': 'dif:Keyword', 'pycsw:Abstract': 'dif:Summary', 'pycsw:Publisher': 'dif:Data_Set_Citation/dif:Dataset_Publisher', 'pycsw:OrganizationName': 'dif:Originating_Center', 'pycsw:CreationDate': 'dif:DIF_Creation_Date','pycsw:PublicationDate': 'dif:Data_Set_Citation/dif:Dataset_Release_Date', 'pycsw:Format': 'dif:Data_Set_Citation/dif:Data_Presentation_Form', 'pycsw:ResourceLanguage': 'dif:Data_Set_Language', 'pycsw:Relation': 'dif:Related_URL/dif:URL', 'pycsw:AccessConstraints': 'dif:Access_Constraints', 'pycsw:TempExtent_begin': 'dif:Temporal_Coverage/dif:Start_Date', 'pycsw:TempExtent_end': 'dif:Temporal_Coverage/dif:Stop_Date', } def write_record(result, esn, context, url=None): ''' Return csw:SearchResults child as lxml.etree.Element ''' typename = util.getqattr(result, context.md_core_model['mappings']['pycsw:Typename']) if esn == 'full' and typename == 'dif:DIF': # dump record as is and exit return etree.fromstring(util.getqattr(result, context.md_core_model['mappings']['pycsw:XML']), context.parser) node = etree.Element(util.nspath_eval('dif:DIF', NAMESPACES)) node.attrib[util.nspath_eval('xsi:schemaLocation', context.namespaces)] = \ '%s http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.xsd' % NAMESPACE # identifier etree.SubElement(node, util.nspath_eval('dif:Entry_ID', NAMESPACES)).text = util.getqattr(result, context.md_core_model['mappings']['pycsw:Identifier']) # title val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Title']) if not val: val = '' etree.SubElement(node, util.nspath_eval('dif:Entry_Title', NAMESPACES)).text = val # citation citation = etree.SubElement(node, util.nspath_eval('dif:Data_Set_Citation', NAMESPACES)) # creator val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Creator']) etree.SubElement(citation, util.nspath_eval('dif:Dataset_Creator', NAMESPACES)).text = val # date val = util.getqattr(result, context.md_core_model['mappings']['pycsw:PublicationDate']) etree.SubElement(citation, util.nspath_eval('dif:Dataset_Release_Date', NAMESPACES)).text = val # publisher val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Publisher']) etree.SubElement(citation, util.nspath_eval('dif:Dataset_Publisher', NAMESPACES)).text = val # format val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Format']) etree.SubElement(citation, util.nspath_eval('dif:Data_Presentation_Form', NAMESPACES)).text = val # iso topic category val = util.getqattr(result, context.md_core_model['mappings']['pycsw:TopicCategory']) etree.SubElement(node, util.nspath_eval('dif:ISO_Topic_Category', NAMESPACES)).text = val # keywords val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Keywords']) if val: for kw in val.split(','): etree.SubElement(node, util.nspath_eval('dif:Keyword', NAMESPACES)).text = kw # temporal temporal = etree.SubElement(node, util.nspath_eval('dif:Temporal_Coverage', NAMESPACES)) val = util.getqattr(result, context.md_core_model['mappings']['pycsw:TempExtent_begin']) val2 = util.getqattr(result, context.md_core_model['mappings']['pycsw:TempExtent_end']) etree.SubElement(temporal, util.nspath_eval('dif:Start_Date', NAMESPACES)).text = val etree.SubElement(temporal, util.nspath_eval('dif:End_Date', NAMESPACES)).text = val2 # bbox extent val = util.getqattr(result, context.md_core_model['mappings']['pycsw:BoundingBox']) bboxel = write_extent(val, NAMESPACES) if bboxel is not None: node.append(bboxel) # access constraints val = util.getqattr(result, context.md_core_model['mappings']['pycsw:AccessConstraints']) etree.SubElement(node, util.nspath_eval('dif:Access_Constraints', NAMESPACES)).text = val # language val = util.getqattr(result, context.md_core_model['mappings']['pycsw:ResourceLanguage']) etree.SubElement(node, util.nspath_eval('dif:Data_Set_Language', NAMESPACES)).text = val # contributor val = util.getqattr(result, context.md_core_model['mappings']['pycsw:OrganizationName']) etree.SubElement(node, util.nspath_eval('dif:Originating_Center', NAMESPACES)).text = val # abstract val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Abstract']) if not val: val = '' etree.SubElement(node, util.nspath_eval('dif:Summary', NAMESPACES)).text = val # date val = util.getqattr(result, context.md_core_model['mappings']['pycsw:CreationDate']) etree.SubElement(node, util.nspath_eval('dif:DIF_Creation_Date', NAMESPACES)).text = val # URL val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Relation']) url = etree.SubElement(node, util.nspath_eval('dif:Related_URL', NAMESPACES)) etree.SubElement(url, util.nspath_eval('dif:URL', NAMESPACES)).text = val rlinks = util.getqattr(result, context.md_core_model['mappings']['pycsw:Links']) if rlinks: for link in rlinks.split('^'): linkset = link.split(',') url2 = etree.SubElement(node, util.nspath_eval('dif:Related_URL', NAMESPACES)) urltype = etree.SubElement(url2, util.nspath_eval('dif:URL_Content_Type', NAMESPACES)) etree.SubElement(urltype, util.nspath_eval('dif:Type', NAMESPACES)).text = linkset[2] etree.SubElement(url2, util.nspath_eval('dif:URL', NAMESPACES)).text = linkset[-1] etree.SubElement(url2, util.nspath_eval('dif:Description', NAMESPACES)).text = linkset[1] etree.SubElement(node, util.nspath_eval('dif:Metadata_Name', NAMESPACES)).text = 'CEOS IDN DIF' etree.SubElement(node, util.nspath_eval('dif:Metadata_Version', NAMESPACES)).text = '9.7' return node def write_extent(bbox, nsmap): ''' Generate BBOX extent ''' from shapely.wkt import loads if bbox is not None: try: bbox2 = util.wkt2geom(bbox) except: return None extent = etree.Element(util.nspath_eval('dif:Spatial_Coverage', nsmap)) etree.SubElement(extent, util.nspath_eval('dif:Southernmost_Latitude', nsmap)).text = str(bbox2[1]) etree.SubElement(extent, util.nspath_eval('dif:Northernmost_Latitude', nsmap)).text = str(bbox2[3]) etree.SubElement(extent, util.nspath_eval('dif:Westernmost_Longitude', nsmap)).text = str(bbox2[0]) etree.SubElement(extent, util.nspath_eval('dif:Easternmost_Longitude', nsmap)).text = str(bbox2[2]) return extent return None pycsw-2.0.3/pycsw/plugins/outputschemas/PaxHeaders.23451/fgdc.py0000644000000000000000000000007413114323025021422 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/outputschemas/fgdc.py0000644000175000001440000001674213114323025022376 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= from pycsw.core import util from pycsw.core.etree import etree #NAMESPACE = 'http://www.fgdc.gov/metadata/csdgm' NAMESPACE = 'http://www.opengis.net/cat/csw/csdgm' NAMESPACES = {'fgdc': NAMESPACE} XPATH_MAPPINGS = { 'pycsw:Identifier': 'idinfo/datasetid', 'pycsw:Title': 'idinfo/citation/citeinfo/title', 'pycsw:Creator': 'idinfo/citation/citeinfo/origin', 'pycsw:Publisher': 'idinfo/citation/citeinfo/publinfo/publish', 'pycsw:Abstract': 'idinfo/descript/abstract', 'pycsw:Format': 'idinfo/citation/citeinfo/geoform', 'pycsw:PublicationDate': 'idinfo/citation/citeinfo/pubdate', 'pycsw:Keywords': 'idinfo/keywords/theme/themekey', 'pycsw:TempExtent_begin': 'idinfo/timeperd/timeinfo/rngdates/begdate', 'pycsw:TempExtent_end': 'idinfo/timeperd/timeinfo/rngdates/enddate', 'pycsw:Contributor': 'idinfo/datacred', 'pycsw:AccessConstraints': 'idinfo/accconst', 'pycsw:Modified': 'metainfo/metd', 'pycsw:Type': 'spdoinfo/direct', 'pycsw:Source': 'lineage/srcinfo/srccite/citeinfo/title', 'pycsw:Relation': 'idinfo/citation/citeinfo/onlink', } def write_record(recobj, esn, context, url=None): ''' Return csw:SearchResults child as lxml.etree.Element ''' typename = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Typename']) if esn == 'full' and typename == 'fgdc:metadata': # dump record as is and exit return etree.fromstring(util.getqattr(recobj, context.md_core_model['mappings']['pycsw:XML']), context.parser) node = etree.Element('metadata') node.attrib[util.nspath_eval('xsi:noNamespaceSchemaLocation', context.namespaces)] = \ 'http://www.fgdc.gov/metadata/fgdc-std-001-1998.xsd' idinfo = etree.SubElement(node, 'idinfo') # identifier etree.SubElement(idinfo, 'datasetid').text = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Identifier']) citation = etree.SubElement(idinfo, 'citation') citeinfo = etree.SubElement(citation, 'citeinfo') # title val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Title']) etree.SubElement(citeinfo, 'title').text = val # publisher publinfo = etree.SubElement(citeinfo, 'publinfo') val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Publisher']) or '' etree.SubElement(publinfo, 'publish').text = val # origin val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Creator']) or '' etree.SubElement(citeinfo, 'origin').text = val # keywords val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Keywords']) if val: keywords = etree.SubElement(idinfo, 'keywords') theme = etree.SubElement(keywords, 'theme') for v in val.split(','): etree.SubElement(theme, 'themekey').text = v # accessconstraints val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:AccessConstraints']) or '' etree.SubElement(idinfo, 'accconst').text = val # abstract descript = etree.SubElement(idinfo, 'descript') val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Abstract']) or '' etree.SubElement(descript, 'abstract').text = val # time datebegin = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:TempExtent_begin']) dateend = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:TempExtent_end']) if all([datebegin, dateend]): timeperd = etree.SubElement(idinfo, 'timeperd') timeinfo = etree.SubElement(timeperd, 'timeinfo') rngdates = etree.SubElement(timeinfo, 'timeinfo') begdate = etree.SubElement(rngdates, 'begdate').text = datebegin enddate = etree.SubElement(rngdates, 'enddate').text = dateend # bbox extent val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:BoundingBox']) bboxel = write_extent(val) if bboxel is not None: idinfo.append(bboxel) # contributor val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Contributor']) or '' etree.SubElement(idinfo, 'datacred').text = val # direct spdoinfo = etree.SubElement(idinfo, 'spdoinfo') val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Type']) or '' etree.SubElement(spdoinfo, 'direct').text = val # formname distinfo = etree.SubElement(node, 'distinfo') stdorder = etree.SubElement(distinfo, 'stdorder') digform = etree.SubElement(stdorder, 'digform') digtinfo = etree.SubElement(digform, 'digtinfo') val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Format']) or '' etree.SubElement(digtinfo, 'formname').text = val etree.SubElement(citeinfo, 'geoform').text = val # source lineage = etree.SubElement(node, 'lineage') srcinfo = etree.SubElement(lineage, 'srcinfo') srccite = etree.SubElement(srcinfo, 'srccite') sciteinfo = etree.SubElement(srccite, 'citeinfo') val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Source']) or '' etree.SubElement(sciteinfo, 'title').text = val val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Relation']) or '' etree.SubElement(citeinfo, 'onlink').text = val # links rlinks = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Links']) if rlinks: for link in rlinks.split('^'): linkset = link.split(',') etree.SubElement(citeinfo, 'onlink', type=linkset[2]).text = linkset[-1] # metd metainfo = etree.SubElement(node, 'metainfo') val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Modified']) or '' etree.SubElement(metainfo, 'metd').text = val return node def write_extent(bbox): ''' Generate BBOX extent ''' if bbox is not None: try: bbox2 = util.wkt2geom(bbox) except: return None spdom = etree.Element('spdom') bounding = etree.SubElement(spdom, 'bounding') etree.SubElement(bounding, 'westbc').text = str(bbox2[0]) etree.SubElement(bounding, 'eastbc').text = str(bbox2[2]) etree.SubElement(bounding, 'northbc').text = str(bbox2[3]) etree.SubElement(bounding, 'southbc').text = str(bbox2[1]) return spdom return None pycsw-2.0.3/pycsw/plugins/outputschemas/PaxHeaders.23451/gm03.py0000644000000000000000000000007413114323025021265 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/outputschemas/gm03.py0000644000175000001440000003072313114323025022234 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= from pycsw.core import util from pycsw.core.etree import etree NAMESPACE = 'http://www.interlis.ch/INTERLIS2.3' NAMESPACES = {'gm03': NAMESPACE} XPATH_MAPPINGS = {} def write_record(result, esn, context, url=None): ''' Return csw:SearchResults child as lxml.etree.Element ''' typename = util.getqattr(result, context.md_core_model['mappings']['pycsw:Typename']) if typename == 'gm03:TRANSFER': # dump record as is and exit # TODO: provide brief and summary elementsetname's return etree.fromstring(util.getqattr(result, context.md_core_model['mappings']['pycsw:XML']), context.parser) node = etree.Element(util.nspath_eval('gm03:TRANSFER', NAMESPACES), nsmap=NAMESPACES) header = etree.SubElement(node, util.nspath_eval('gm03:HEADERSECTION', NAMESPACES)) header.attrib['version'] = '2.3' header.attrib['sender'] = 'pycsw' etree.SubElement(header, util.nspath_eval('gm03:MODELS', NAMESPACES)) data = etree.SubElement(node, util.nspath_eval('gm03:DATASECTION', NAMESPACES)) core = etree.SubElement(data, util.nspath_eval('gm03:GM03_2_1Core.Core', NAMESPACES)) core_meta = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_Metadata', NAMESPACES)) val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Identifier']) etree.SubElement(core_meta, util.nspath_eval('gm03:fileIdentifier', NAMESPACES)).text = val language = util.getqattr(result, context.md_core_model['mappings']['pycsw:Language']) etree.SubElement(core_meta, util.nspath_eval('gm03:language', NAMESPACES)).text = language val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Modified']) etree.SubElement(core_meta, util.nspath_eval('gm03:dateStamp', NAMESPACES)).text = val hierarchy_level_val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Type']) # metadata standard name standard = etree.SubElement(core_meta, util.nspath_eval('gm03:metadataStandardName', NAMESPACES)).text = 'GM03' # metadata standard version standardver = etree.SubElement(core_meta, util.nspath_eval('gm03:metadataStandardVersion', NAMESPACES)).text = '2.3' # hierarchy level hierarchy_level = etree.SubElement(core_meta, util.nspath_eval('gm03:hierarchyLevel', NAMESPACES)) scope_code = etree.SubElement(hierarchy_level, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_ScopeCode_', NAMESPACES)) etree.SubElement(scope_code, util.nspath_eval('gm03:value', NAMESPACES)).text = hierarchy_level_val # parent identifier val = util.getqattr(result, context.md_core_model['mappings']['pycsw:ParentIdentifier']) parent_identifier = etree.SubElement(core_meta, util.nspath_eval('gm03:parentIdentifier', NAMESPACES)) scope_code = etree.SubElement(parent_identifier, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_ScopeCode_', NAMESPACES)) etree.SubElement(scope_code, util.nspath_eval('gm03:value', NAMESPACES)).text = val # title val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Title']) citation = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.CI_Citation', NAMESPACES)) title = etree.SubElement(citation, util.nspath_eval('gm03:title', NAMESPACES)) title.append(_get_pt_freetext(val, language)) # abstract val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Abstract']) data_ident = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_DataIdentification', NAMESPACES)) abstract = etree.SubElement(data_ident, util.nspath_eval('gm03:abstract', NAMESPACES)) abstract.append(_get_pt_freetext(val, language)) # resource language val = util.getqattr(result, context.md_core_model['mappings']['pycsw:ResourceLanguage']) if val: topicategory = etree.SubElement(data_ident, util.nspath_eval('gm03:language', NAMESPACES)) cat_code = etree.SubElement(topicategory, util.nspath_eval('gm03:CodeISO.LanguageCodeISO_', NAMESPACES)) etree.SubElement(cat_code, util.nspath_eval('gm03:value', NAMESPACES)).text = val # topic category val = util.getqattr(result, context.md_core_model['mappings']['pycsw:TopicCategory']) if val: topicategory = etree.SubElement(data_ident, util.nspath_eval('gm03:topicCategory', NAMESPACES)) cat_code = etree.SubElement(topicategory, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_TopicCategoryCode_', NAMESPACES)) etree.SubElement(cat_code, util.nspath_eval('gm03:value', NAMESPACES)).text = val # keywords keywords_val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Keywords']) if keywords_val: md_keywords = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_Keywords', NAMESPACES)) val = util.getqattr(result, context.md_core_model['mappings']['pycsw:KeywordType']) if val: etree.SubElement(md_keywords, util.nspath_eval('gm03:type', NAMESPACES)).text = val keyword = etree.SubElement(md_keywords, util.nspath_eval('gm03:keyword', NAMESPACES)) for kw in keywords_val.split(','): keyword.append(_get_pt_freetext(kw, language)) # format val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Format']) if val: md_format = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_Format', NAMESPACES)) etree.SubElement(md_format, util.nspath_eval('gm03:name', NAMESPACES)).text = val # creation date val = util.getqattr(result, context.md_core_model['mappings']['pycsw:CreationDate']) if val: ci_date = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.CI_Date', NAMESPACES)) etree.SubElement(ci_date, util.nspath_eval('gm03:date', NAMESPACES)).text = val etree.SubElement(ci_date, util.nspath_eval('gm03:dateType', NAMESPACES)).text = 'creation' # revision date val = util.getqattr(result, context.md_core_model['mappings']['pycsw:RevisionDate']) if val: ci_date = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.CI_Date', NAMESPACES)) etree.SubElement(ci_date, util.nspath_eval('gm03:date', NAMESPACES)).text = val etree.SubElement(ci_date, util.nspath_eval('gm03:dateType', NAMESPACES)).text = 'revision' # publication date val = util.getqattr(result, context.md_core_model['mappings']['pycsw:PublicationDate']) if val: ci_date = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.CI_Date', NAMESPACES)) etree.SubElement(ci_date, util.nspath_eval('gm03:date', NAMESPACES)).text = val etree.SubElement(ci_date, util.nspath_eval('gm03:dateType', NAMESPACES)).text = 'publication' # bbox extent val = util.getqattr(result, context.md_core_model['mappings']['pycsw:BoundingBox']) bboxel = write_extent(val, context.namespaces) if bboxel is not None: core.append(bboxel) # geographic description val = util.getqattr(result, context.md_core_model['mappings']['pycsw:GeographicDescriptionCode']) if val: geo_desc = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.EX_GeographicDescription', NAMESPACES)) etree.SubElement(geo_desc, util.nspath_eval('gm03:geographicIdentifier', NAMESPACES)).text = val # crs val = util.getqattr(result, context.md_core_model['mappings']['pycsw:CRS']) if val: rs_identifier = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.RS_Identifier', NAMESPACES)) rs_code = etree.SubElement(rs_identifier, util.nspath_eval('gm03:code', NAMESPACES)) rs_code.append(_get_pt_freetext(val, language)) # temporal extent time_begin = util.getqattr(result, context.md_core_model['mappings']['pycsw:TempExtent_begin']) time_end = util.getqattr(result, context.md_core_model['mappings']['pycsw:TempExtent_end']) if time_begin: temp_ext = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.EX_TemporalExtent', NAMESPACES)) extent = etree.SubElement(temp_ext, util.nspath_eval('gm03:extent', NAMESPACES)) tm_primitive = etree.SubElement(extent, util.nspath_eval('gm03:GM03_2_1Core.Core.TM_Primitive', NAMESPACES)) etree.SubElement(tm_primitive, util.nspath_eval('gm03:begin', NAMESPACES)).text = time_begin if time_end: etree.SubElement(tm_primitive, util.nspath_eval('gm03:end', NAMESPACES)).text = time_end # links rlinks = util.getqattr(result, context.md_core_model['mappings']['pycsw:Links']) if rlinks: for link in rlinks.split('^'): name, description, protocol, url = link.split(',') online_resource = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.OnlineResource', NAMESPACES)) if protocol: etree.SubElement(online_resource, util.nspath_eval('gm03:protocol', NAMESPACES)).text = protocol if description: desc = etree.SubElement(online_resource, util.nspath_eval('gm03:description', NAMESPACES)) desc.append(_get_pt_freetext(description, language)) if name: name_el = etree.SubElement(online_resource, util.nspath_eval('gm03:name', NAMESPACES)) name_el.append(_get_pt_freetext(name, language)) linkage = etree.SubElement(online_resource, util.nspath_eval('gm03:linkage', NAMESPACES)) linkage.append(_get_pt_freeurl(url, language)) return node def _get_pt_freetext(val, language): freetext = etree.Element(util.nspath_eval('gm03:GM03_2_1Core.Core.PT_FreeText', NAMESPACES)) textgroup = etree.SubElement(freetext, util.nspath_eval('gm03:textGroup', NAMESPACES)) ptgroup = etree.SubElement(textgroup, util.nspath_eval('gm03:GM03_2_1Core.Core.PT_Group', NAMESPACES)) if language: etree.SubElement(ptgroup, util.nspath_eval('gm03:language', NAMESPACES)).text = language etree.SubElement(ptgroup, util.nspath_eval('gm03:plainText', NAMESPACES)).text = val return freetext def _get_pt_freeurl(val, language): freeurl = etree.Element(util.nspath_eval('gm03:GM03_2_1Core.Core.PT_FreeURL', NAMESPACES)) urlgroup = etree.SubElement(freeurl, util.nspath_eval('gm03:URLGroup', NAMESPACES)) ptgroup = etree.SubElement(urlgroup, util.nspath_eval('gm03:GM03_2_1Core.Core.PT_URLGroup', NAMESPACES)) if language: etree.SubElement(ptgroup, util.nspath_eval('gm03:language', NAMESPACES)).text = language etree.SubElement(ptgroup, util.nspath_eval('gm03:plainURL', NAMESPACES)).text = val return freeurl def write_extent(bbox, nsmap): ''' Generate BBOX extent ''' if bbox is not None: try: bbox2 = util.wkt2geom(bbox) except: return None bounding_box = etree.Element(util.nspath_eval('gm03:GM03_2_1Core.Core.EX_GeographicBoundingBox', NAMESPACES)) etree.SubElement(bounding_box, util.nspath_eval('gm03:northBoundLatitude', nsmap)).text = str(bbox2[3]) etree.SubElement(bounding_box, util.nspath_eval('gm03:southBoundLatitude', nsmap)).text = str(bbox2[1]) etree.SubElement(bounding_box, util.nspath_eval('gm03:eastBoundLongitude', nsmap)).text = str(bbox2[0]) etree.SubElement(bounding_box, util.nspath_eval('gm03:westBoundLongitude', nsmap)).text = str(bbox2[2]) return bounding_box return None pycsw-2.0.3/pycsw/plugins/PaxHeaders.23451/profiles0000644000000000000000000000007413114323025017007 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/0000755000175000001440000000000013114323025020026 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025021175 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/__init__.py0000644000175000001440000000243713114323025022145 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/plugins/profiles/PaxHeaders.23451/apiso0000644000000000000000000000007413114323025020122 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/0000755000175000001440000000000013114323025021141 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025022310 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/__init__.py0000644000175000001440000000243713114323025023260 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/plugins/profiles/apiso/PaxHeaders.23451/apiso.py0000644000000000000000000000007413114323025021664 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/apiso.py0000644000175000001440000014364013114323025022636 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # Angelos Tzotsos # # Copyright (c) 2015 Tom Kralidis # Copyright (c) 2015 Angelos Tzotsos # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import os from pycsw.core import config, util from pycsw.core.etree import etree from pycsw.plugins.profiles import profile CODELIST = 'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml' CODESPACE = 'ISOTC211/19115' class APISO(profile.Profile): ''' APISO class ''' def __init__(self, model, namespaces, context): self.context = context self.namespaces = { 'apiso': 'http://www.opengis.net/cat/csw/apiso/1.0', 'gco': 'http://www.isotc211.org/2005/gco', 'gmd': 'http://www.isotc211.org/2005/gmd', 'srv': 'http://www.isotc211.org/2005/srv', 'xlink': 'http://www.w3.org/1999/xlink' } self.inspire_namespaces = { 'inspire_ds': 'http://inspire.ec.europa.eu/schemas/inspire_ds/1.0', 'inspire_common': 'http://inspire.ec.europa.eu/schemas/common/1.0' } self.repository = { 'gmd:MD_Metadata': { 'outputschema': 'http://www.isotc211.org/2005/gmd', 'queryables': { 'SupportedISOQueryables': { 'apiso:Subject': {'xpath': 'gmd:identificationInfo/gmd:MD_Identification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString|gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:Keywords']}, 'apiso:Title': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Title']}, 'apiso:Abstract': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Abstract']}, 'apiso:Format': {'xpath': 'gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format/gmd:name/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Format']}, 'apiso:Identifier': {'xpath': 'gmd:fileIdentifier/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Identifier']}, 'apiso:Modified': {'xpath': 'gmd:dateStamp/gco:Date', 'dbcol': self.context.md_core_model['mappings']['pycsw:Modified']}, 'apiso:Type': {'xpath': 'gmd:hierarchyLevel/gmd:MD_ScopeCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:Type']}, 'apiso:BoundingBox': {'xpath': 'apiso:BoundingBox', 'dbcol': self.context.md_core_model['mappings']['pycsw:BoundingBox']}, 'apiso:CRS': {'xpath': 'concat("urn:ogc:def:crs:","gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:codeSpace/gco:CharacterString",":","gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:version/gco:CharacterString",":","gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:code/gco:CharacterString")', 'dbcol': self.context.md_core_model['mappings']['pycsw:CRS']}, 'apiso:AlternateTitle': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:alternateTitle/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:AlternateTitle']}, 'apiso:RevisionDate': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue="revision"]/gmd:date/gco:Date', 'dbcol': self.context.md_core_model['mappings']['pycsw:RevisionDate']}, 'apiso:CreationDate': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue="creation"]/gmd:date/gco:Date', 'dbcol': self.context.md_core_model['mappings']['pycsw:CreationDate']}, 'apiso:PublicationDate': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue="publication"]/gmd:date/gco:Date', 'dbcol': self.context.md_core_model['mappings']['pycsw:PublicationDate']}, 'apiso:OrganisationName': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:OrganizationName']}, 'apiso:HasSecurityConstraints': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_SecurityConstraints', 'dbcol': self.context.md_core_model['mappings']['pycsw:SecurityConstraints']}, 'apiso:Language': {'xpath': 'gmd:language/gmd:LanguageCode|gmd:language/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Language']}, 'apiso:ParentIdentifier': {'xpath': 'gmd:parentIdentifier/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:ParentIdentifier']}, 'apiso:KeywordType': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:type/gmd:MD_KeywordTypeCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:KeywordType']}, 'apiso:TopicCategory': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:TopicCategory']}, 'apiso:ResourceLanguage': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:code/gmd:MD_LanguageTypeCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:ResourceLanguage']}, 'apiso:GeographicDescriptionCode': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicDescription/gmd:geographicIdentifier/gmd:MD_Identifier/gmd:code/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:GeographicDescriptionCode']}, 'apiso:Denominator': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:equivalentScale/gmd:MD_RepresentativeFraction/gmd:denominator/gco:Integer', 'dbcol': self.context.md_core_model['mappings']['pycsw:Denominator']}, 'apiso:DistanceValue': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:distance/gco:Distance', 'dbcol': self.context.md_core_model['mappings']['pycsw:DistanceValue']}, 'apiso:DistanceUOM': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:distance/gco:Distance/@uom', 'dbcol': self.context.md_core_model['mappings']['pycsw:DistanceUOM']}, 'apiso:TempExtent_begin': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition', 'dbcol': self.context.md_core_model['mappings']['pycsw:TempExtent_begin']}, 'apiso:TempExtent_end': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:endPosition', 'dbcol': self.context.md_core_model['mappings']['pycsw:TempExtent_end']}, 'apiso:AnyText': {'xpath': '//', 'dbcol': self.context.md_core_model['mappings']['pycsw:AnyText']}, 'apiso:ServiceType': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:serviceType/gco:LocalName', 'dbcol': self.context.md_core_model['mappings']['pycsw:ServiceType']}, 'apiso:ServiceTypeVersion': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:serviceTypeVersion/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:ServiceTypeVersion']}, 'apiso:Operation': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:containsOperations/srv:SV_OperationMetadata/srv:operationName/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Operation']}, 'apiso:CouplingType': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:couplingType/srv:SV_CouplingType', 'dbcol': self.context.md_core_model['mappings']['pycsw:CouplingType']}, 'apiso:OperatesOn': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:operatesOn/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:code/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:OperatesOn']}, 'apiso:OperatesOnIdentifier': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:coupledResource/srv:SV_CoupledResource/srv:identifier/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:OperatesOnIdentifier']}, 'apiso:OperatesOnName': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:coupledResource/srv:SV_CoupledResource/srv:operationName/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:OperatesOnName']}, }, 'AdditionalQueryables': { 'apiso:Degree': {'xpath': 'gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:pass/gco:Boolean', 'dbcol': self.context.md_core_model['mappings']['pycsw:Degree']}, 'apiso:AccessConstraints': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:accessConstraints/gmd:MD_RestrictionCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:AccessConstraints']}, 'apiso:OtherConstraints': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:otherConstraints/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:OtherConstraints']}, 'apiso:Classification': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:accessConstraints/gmd:MD_ClassificationCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:Classification']}, 'apiso:ConditionApplyingToAccessAndUse': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:useLimitation/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:ConditionApplyingToAccessAndUse']}, 'apiso:Lineage': {'xpath': 'gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:lineage/gmd:LI_Lineage/gmd:statement/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Lineage']}, 'apiso:ResponsiblePartyRole': {'xpath': 'gmd:contact/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:ResponsiblePartyRole']}, 'apiso:SpecificationTitle': {'xpath': 'gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:title/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:SpecificationTitle']}, 'apiso:SpecificationDate': {'xpath': 'gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:date/gco:Date', 'dbcol': self.context.md_core_model['mappings']['pycsw:SpecificationDate']}, 'apiso:SpecificationDateType': {'xpath': 'gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:dateType/gmd:CI_DateTypeCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:SpecificationDateType']}, 'apiso:Creator': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName[gmd:role/gmd:CI_RoleCode/@codeListValue="originator"]/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Creator']}, 'apiso:Publisher': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName[gmd:role/gmd:CI_RoleCode/@codeListValue="publisher"]/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Publisher']}, 'apiso:Contributor': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName[gmd:role/gmd:CI_RoleCode/@codeListValue="contributor"]/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Contributor']}, 'apiso:Relation': {'xpath': 'gmd:identificationInfo/gmd:MD_Data_Identification/gmd:aggregationInfo', 'dbcol': self.context.md_core_model['mappings']['pycsw:Relation']} } }, 'mappings': { 'csw:Record': { # map APISO queryables to DC queryables 'apiso:Title': 'dc:title', 'apiso:Creator': 'dc:creator', 'apiso:Subject': 'dc:subject', 'apiso:Abstract': 'dct:abstract', 'apiso:Publisher': 'dc:publisher', 'apiso:Contributor': 'dc:contributor', 'apiso:Modified': 'dct:modified', #'apiso:Date': 'dc:date', 'apiso:Type': 'dc:type', 'apiso:Format': 'dc:format', 'apiso:Language': 'dc:language', 'apiso:Relation': 'dc:relation', 'apiso:AccessConstraints': 'dc:rights', } } } } profile.Profile.__init__(self, name='apiso', version='1.0.0', title='ISO Metadata Application Profile', url='http://portal.opengeospatial.org/files/?artifact_id=21460', namespace=self.namespaces['gmd'], typename='gmd:MD_Metadata', outputschema=self.namespaces['gmd'], prefixes=['apiso', 'gmd'], model=model, core_namespaces=namespaces, added_namespaces=self.namespaces, repository=self.repository['gmd:MD_Metadata']) def extend_core(self, model, namespaces, config): ''' Extend core configuration ''' # update INSPIRE vars self.context.namespaces.update(self.inspire_namespaces) # update harvest resource types with WMS, since WMS is not a typename, if 'Harvest' in model['operations']: model['operations']['Harvest']['parameters']['ResourceType']['values'].append('http://www.isotc211.org/schemas/2005/gmd/') # set INSPIRE config if config.has_section('metadata:inspire') and config.has_option('metadata:inspire', 'enabled') and config.get('metadata:inspire', 'enabled') == 'true': self.inspire_config = {} self.inspire_config['languages_supported'] = config.get('metadata:inspire', 'languages_supported') self.inspire_config['default_language'] = config.get('metadata:inspire', 'default_language') self.inspire_config['date'] = config.get('metadata:inspire', 'date') self.inspire_config['gemet_keywords'] = config.get('metadata:inspire', 'gemet_keywords') self.inspire_config['conformity_service'] = config.get('metadata:inspire', 'conformity_service') self.inspire_config['contact_name'] = config.get('metadata:inspire', 'contact_name') self.inspire_config['contact_email'] = config.get('metadata:inspire', 'contact_email') self.inspire_config['temp_extent'] = config.get('metadata:inspire', 'temp_extent') else: self.inspire_config = None self.ogc_schemas_base = config.get('server', 'ogc_schemas_base') self.url = config.get('server', 'url') def check_parameters(self, kvp): '''Check for Language parameter in GetCapabilities request''' if self.inspire_config is not None: result = None if 'language' not in kvp: self.inspire_config['current_language'] = self.inspire_config['default_language'] else: if kvp['language'] not in self.inspire_config['languages_supported'].split(','): text = 'Requested Language not supported, Supported languages: %s' % self.inspire_config['languages_supported'] return {'error': 'true', 'locator': 'language', 'code': 'InvalidParameterValue', 'text': text} else: self.inspire_config['current_language'] = kvp['language'] return None return None return None def get_extendedcapabilities(self): ''' Add child to ows:OperationsMetadata Element ''' if self.inspire_config is not None: ex_caps = etree.Element( util.nspath_eval('inspire_ds:ExtendedCapabilities', self.inspire_namespaces)) ex_caps.attrib[util.nspath_eval('xsi:schemaLocation', self.context.namespaces)] = \ '%s %s/inspire_ds.xsd' % \ (self.inspire_namespaces['inspire_ds'], self.inspire_namespaces['inspire_ds']) # Resource Locator res_loc = etree.SubElement(ex_caps, util.nspath_eval('inspire_common:ResourceLocator', self.inspire_namespaces)) etree.SubElement(res_loc, util.nspath_eval('inspire_common:URL', self.inspire_namespaces)).text = '%sservice=CSW&version=2.0.2&request=GetCapabilities' % (util.bind_url(self.url)) etree.SubElement(res_loc, util.nspath_eval('inspire_common:MediaType', self.inspire_namespaces)).text = 'application/xml' # Resource Type etree.SubElement(ex_caps, util.nspath_eval('inspire_common:ResourceType', self.inspire_namespaces)).text = 'service' # Temporal Reference temp_ref = etree.SubElement(ex_caps, util.nspath_eval('inspire_common:TemporalReference', self.inspire_namespaces)) temp_extent = etree.SubElement(temp_ref, util.nspath_eval('inspire_common:TemporalExtent', self.inspire_namespaces)) val = self.inspire_config['temp_extent'].split('/') if len(val) == 1: etree.SubElement(temp_extent, util.nspath_eval('inspire_common:IndividualDate', self.inspire_namespaces)).text = val[0] else: interval_dates = etree.SubElement(temp_extent, util.nspath_eval('inspire_common:IntervalOfDates', self.inspire_namespaces)) etree.SubElement(interval_dates, util.nspath_eval('inspire_common:StartingDate', self.inspire_namespaces)).text = val[0] etree.SubElement(interval_dates, util.nspath_eval('inspire_common:EndDate', self.inspire_namespaces)).text = val[1] # Conformity - service cfm = etree.SubElement(ex_caps, util.nspath_eval('inspire_common:Conformity', self.inspire_namespaces)) spec = etree.SubElement(cfm, util.nspath_eval('inspire_common:Specification', self.inspire_namespaces)) spec.attrib[util.nspath_eval('xsi:type', self.context.namespaces)] = 'inspire_common:citationInspireInteroperabilityRegulation_eng' etree.SubElement(spec, util.nspath_eval('inspire_common:Title', self.inspire_namespaces)).text = 'COMMISSION REGULATION (EU) No 1089/2010 of 23 November 2010 implementing Directive 2007/2/EC of the European Parliament and of the Council as regards interoperability of spatial data sets and services' etree.SubElement(spec, util.nspath_eval('inspire_common:DateOfPublication', self.inspire_namespaces)).text = '2010-12-08' etree.SubElement(spec, util.nspath_eval('inspire_common:URI', self.inspire_namespaces)).text = 'OJ:L:2010:323:0011:0102:EN:PDF' spec_loc = etree.SubElement(spec, util.nspath_eval('inspire_common:ResourceLocator', self.inspire_namespaces)) etree.SubElement(spec_loc, util.nspath_eval('inspire_common:URL', self.inspire_namespaces)).text = 'http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2010:323:0011:0102:EN:PDF' etree.SubElement(spec_loc, util.nspath_eval('inspire_common:MediaType', self.inspire_namespaces)).text = 'application/pdf' spec = etree.SubElement(cfm, util.nspath_eval('inspire_common:Degree', self.inspire_namespaces)).text = self.inspire_config['conformity_service'] # Metadata Point of Contact poc = etree.SubElement(ex_caps, util.nspath_eval('inspire_common:MetadataPointOfContact', self.inspire_namespaces)) etree.SubElement(poc, util.nspath_eval('inspire_common:OrganisationName', self.inspire_namespaces)).text = self.inspire_config['contact_name'] etree.SubElement(poc, util.nspath_eval('inspire_common:EmailAddress', self.inspire_namespaces)).text = self.inspire_config['contact_email'] # Metadata Date etree.SubElement(ex_caps, util.nspath_eval('inspire_common:MetadataDate', self.inspire_namespaces)).text = self.inspire_config['date'] # Spatial Data Service Type etree.SubElement(ex_caps, util.nspath_eval('inspire_common:SpatialDataServiceType', self.inspire_namespaces)).text = 'discovery' # Mandatory Keyword mkey = etree.SubElement(ex_caps, util.nspath_eval('inspire_common:MandatoryKeyword', self.inspire_namespaces)) mkey.attrib[util.nspath_eval('xsi:type', self.context.namespaces)] = 'inspire_common:classificationOfSpatialDataService' etree.SubElement(mkey, util.nspath_eval('inspire_common:KeywordValue', self.inspire_namespaces)).text = 'infoCatalogueService' # Gemet Keywords for gkw in self.inspire_config['gemet_keywords'].split(','): gkey = etree.SubElement(ex_caps, util.nspath_eval('inspire_common:Keyword', self.inspire_namespaces)) gkey.attrib[util.nspath_eval('xsi:type', self.context.namespaces)] = 'inspire_common:inspireTheme_eng' ocv = etree.SubElement(gkey, util.nspath_eval('inspire_common:OriginatingControlledVocabulary', self.inspire_namespaces)) etree.SubElement(ocv, util.nspath_eval('inspire_common:Title', self.inspire_namespaces)).text = 'GEMET - INSPIRE themes' etree.SubElement(ocv, util.nspath_eval('inspire_common:DateOfPublication', self.inspire_namespaces)).text = '2008-06-01' etree.SubElement(gkey, util.nspath_eval('inspire_common:KeywordValue', self.inspire_namespaces)).text = gkw # Languages slang = etree.SubElement(ex_caps, util.nspath_eval('inspire_common:SupportedLanguages', self.inspire_namespaces)) dlang = etree.SubElement(slang, util.nspath_eval('inspire_common:DefaultLanguage', self.inspire_namespaces)) etree.SubElement(dlang, util.nspath_eval('inspire_common:Language', self.inspire_namespaces)).text = self.inspire_config['default_language'] for l in self.inspire_config['languages_supported'].split(','): lang = etree.SubElement(slang, util.nspath_eval('inspire_common:SupportedLanguage', self.inspire_namespaces)) etree.SubElement(lang, util.nspath_eval('inspire_common:Language', self.inspire_namespaces)).text = l clang = etree.SubElement(ex_caps, util.nspath_eval('inspire_common:ResponseLanguage', self.inspire_namespaces)) etree.SubElement(clang, util.nspath_eval('inspire_common:Language', self.inspire_namespaces)).text = self.inspire_config['current_language'] return ex_caps def get_schemacomponents(self): ''' Return schema components as lxml.etree.Element list ''' node1 = etree.Element( util.nspath_eval('csw:SchemaComponent', self.context.namespaces), schemaLanguage='XMLSCHEMA', targetNamespace=self.namespace, parentSchema='gmd.xsd') schema_file = os.path.join(self.context.pycsw_home, 'plugins', 'profiles', 'apiso', 'schemas', 'ogc', 'iso', '19139', '20060504', 'gmd', 'identification.xsd') schema = etree.parse(schema_file, self.context.parser).getroot() node1.append(schema) node2 = etree.Element( util.nspath_eval('csw:SchemaComponent', self.context.namespaces), schemaLanguage='XMLSCHEMA', targetNamespace=self.namespace, parentSchema='gmd.xsd') schema_file = os.path.join(self.context.pycsw_home, 'plugins', 'profiles', 'apiso', 'schemas', 'ogc', 'iso', '19139', '20060504', 'srv', 'serviceMetadata.xsd') schema = etree.parse(schema_file, self.context.parser).getroot() node2.append(schema) return [node1, node2] def check_getdomain(self, kvp): '''Perform extra profile specific checks in the GetDomain request''' return None def write_record(self, result, esn, outputschema, queryables, caps=None): ''' Return csw:SearchResults child as lxml.etree.Element ''' typename = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Typename']) is_iso_anyway = False xml_blob = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:XML']) if caps is None and xml_blob is not None and xml_blob.startswith(b' gmd:MD_Metadata model mappings util.transform_mappings(queryables, self.repository['mappings']['csw:Record']) node = etree.Element(util.nspath_eval('gmd:MD_Metadata', self.namespaces)) node.attrib[util.nspath_eval('xsi:schemaLocation', self.context.namespaces)] = \ '%s %s/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd' % (self.namespace, self.ogc_schemas_base) # identifier idval = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Identifier']) identifier = etree.SubElement(node, util.nspath_eval('gmd:fileIdentifier', self.namespaces)) etree.SubElement(identifier, util.nspath_eval('gco:CharacterString', self.namespaces)).text = idval if esn in ['summary', 'full']: # language val = util.getqattr(result, queryables['apiso:Language']['dbcol']) lang = etree.SubElement(node, util.nspath_eval('gmd:language', self.namespaces)) etree.SubElement(lang, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val # hierarchyLevel mtype = util.getqattr(result, queryables['apiso:Type']['dbcol']) or None if mtype is not None: if mtype == 'http://purl.org/dc/dcmitype/Dataset': mtype = 'dataset' hierarchy = etree.SubElement(node, util.nspath_eval('gmd:hierarchyLevel', self.namespaces)) hierarchy.append(_write_codelist_element('gmd:MD_ScopeCode', mtype, self.namespaces)) if esn in ['summary', 'full']: # contact contact = etree.SubElement(node, util.nspath_eval('gmd:contact', self.namespaces)) if caps is not None: CI_resp = etree.SubElement(contact, util.nspath_eval('gmd:CI_ResponsibleParty', self.namespaces)) if hasattr(caps.provider.contact, 'name'): ind_name = etree.SubElement(CI_resp, util.nspath_eval('gmd:individualName', self.namespaces)) etree.SubElement(ind_name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.name if hasattr(caps.provider.contact, 'organization'): if caps.provider.contact.organization is not None: org_val = caps.provider.contact.organization else: org_val = caps.provider.name org_name = etree.SubElement(CI_resp, util.nspath_eval('gmd:organisationName', self.namespaces)) etree.SubElement(org_name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = org_val if hasattr(caps.provider.contact, 'position'): pos_name = etree.SubElement(CI_resp, util.nspath_eval('gmd:positionName', self.namespaces)) etree.SubElement(pos_name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.position contact_info = etree.SubElement(CI_resp, util.nspath_eval('gmd:contactInfo', self.namespaces)) ci_contact = etree.SubElement(contact_info, util.nspath_eval('gmd:CI_Contact', self.namespaces)) if hasattr(caps.provider.contact, 'phone'): phone = etree.SubElement(ci_contact, util.nspath_eval('gmd:phone', self.namespaces)) ci_phone = etree.SubElement(phone, util.nspath_eval('gmd:CI_Telephone', self.namespaces)) voice = etree.SubElement(ci_phone, util.nspath_eval('gmd:voice', self.namespaces)) etree.SubElement(voice, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.phone if hasattr(caps.provider.contact, 'fax'): fax = etree.SubElement(ci_phone, util.nspath_eval('gmd:facsimile', self.namespaces)) etree.SubElement(fax, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.fax address = etree.SubElement(ci_contact, util.nspath_eval('gmd:address', self.namespaces)) ci_address = etree.SubElement(address, util.nspath_eval('gmd:CI_Address', self.namespaces)) if hasattr(caps.provider.contact, 'address'): delivery_point = etree.SubElement(ci_address, util.nspath_eval('gmd:deliveryPoint', self.namespaces)) etree.SubElement(delivery_point, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.address if hasattr(caps.provider.contact, 'city'): city = etree.SubElement(ci_address, util.nspath_eval('gmd:city', self.namespaces)) etree.SubElement(city, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.city if hasattr(caps.provider.contact, 'region'): admin_area = etree.SubElement(ci_address, util.nspath_eval('gmd:administrativeArea', self.namespaces)) etree.SubElement(admin_area, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.region if hasattr(caps.provider.contact, 'postcode'): postal_code = etree.SubElement(ci_address, util.nspath_eval('gmd:postalCode', self.namespaces)) etree.SubElement(postal_code, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.postcode if hasattr(caps.provider.contact, 'country'): country = etree.SubElement(ci_address, util.nspath_eval('gmd:country', self.namespaces)) etree.SubElement(country, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.country if hasattr(caps.provider.contact, 'email'): email = etree.SubElement(ci_address, util.nspath_eval('gmd:electronicMailAddress', self.namespaces)) etree.SubElement(email, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.email contact_url = None if hasattr(caps.provider, 'url'): contact_url = caps.provider.url if hasattr(caps.provider.contact, 'url') and caps.provider.contact.url is not None: contact_url = caps.provider.contact.url if contact_url is not None: online_resource = etree.SubElement(ci_contact, util.nspath_eval('gmd:onlineResource', self.namespaces)) gmd_linkage = etree.SubElement(online_resource, util.nspath_eval('gmd:linkage', self.namespaces)) etree.SubElement(gmd_linkage, util.nspath_eval('gmd:URL', self.namespaces)).text = contact_url if hasattr(caps.provider.contact, 'role'): role = etree.SubElement(CI_resp, util.nspath_eval('gmd:role', self.namespaces)) role_val = caps.provider.contact.role if role_val is None: role_val = 'pointOfContact' etree.SubElement(role, util.nspath_eval('gmd:CI_RoleCode', self.namespaces), codeListValue=role_val, codeList='%s#CI_RoleCode' % CODELIST).text = role_val else: val = util.getqattr(result, queryables['apiso:OrganisationName']['dbcol']) if val: CI_resp = etree.SubElement(contact, util.nspath_eval('gmd:CI_ResponsibleParty', self.namespaces)) org_name = etree.SubElement(CI_resp, util.nspath_eval('gmd:organisationName', self.namespaces)) etree.SubElement(org_name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val # date val = util.getqattr(result, queryables['apiso:Modified']['dbcol']) date = etree.SubElement(node, util.nspath_eval('gmd:dateStamp', self.namespaces)) if val and val.find('T') != -1: dateel = 'gco:DateTime' else: dateel = 'gco:Date' etree.SubElement(date, util.nspath_eval(dateel, self.namespaces)).text = val metadatastandardname = 'ISO19115' metadatastandardversion = '2003/Cor.1:2006' if mtype == 'service': metadatastandardname = 'ISO19119' metadatastandardversion = '2005/PDAM 1' # metadata standard name standard = etree.SubElement(node, util.nspath_eval('gmd:metadataStandardName', self.namespaces)) etree.SubElement(standard, util.nspath_eval('gco:CharacterString', self.namespaces)).text = metadatastandardname # metadata standard version standardver = etree.SubElement(node, util.nspath_eval('gmd:metadataStandardVersion', self.namespaces)) etree.SubElement(standardver, util.nspath_eval('gco:CharacterString', self.namespaces)).text = metadatastandardversion # title val = util.getqattr(result, queryables['apiso:Title']['dbcol']) or '' identification = etree.SubElement(node, util.nspath_eval('gmd:identificationInfo', self.namespaces)) if mtype == 'service': restagname = 'srv:SV_ServiceIdentification' else: restagname = 'gmd:MD_DataIdentification' resident = etree.SubElement(identification, util.nspath_eval(restagname, self.namespaces), id=idval) tmp2 = etree.SubElement(resident, util.nspath_eval('gmd:citation', self.namespaces)) tmp3 = etree.SubElement(tmp2, util.nspath_eval('gmd:CI_Citation', self.namespaces)) tmp4 = etree.SubElement(tmp3, util.nspath_eval('gmd:title', self.namespaces)) etree.SubElement(tmp4, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val # creation date val = util.getqattr(result, queryables['apiso:CreationDate']['dbcol']) if val is not None: tmp3.append(_write_date(val, 'creation', self.namespaces)) # publication date val = util.getqattr(result, queryables['apiso:PublicationDate']['dbcol']) if val is not None: tmp3.append(_write_date(val, 'publication', self.namespaces)) # revision date val = util.getqattr(result, queryables['apiso:RevisionDate']['dbcol']) if val is not None: tmp3.append(_write_date(val, 'revision', self.namespaces)) if esn in ['summary', 'full']: # abstract val = util.getqattr(result, queryables['apiso:Abstract']['dbcol']) or '' tmp = etree.SubElement(resident, util.nspath_eval('gmd:abstract', self.namespaces)) etree.SubElement(tmp, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val # keywords kw = util.getqattr(result, queryables['apiso:Subject']['dbcol']) if kw is not None: md_keywords = etree.SubElement(resident, util.nspath_eval('gmd:descriptiveKeywords', self.namespaces)) md_keywords.append(write_keywords(kw, self.namespaces)) # spatial resolution val = util.getqattr(result, queryables['apiso:Denominator']['dbcol']) if val: tmp = etree.SubElement(resident, util.nspath_eval('gmd:spatialResolution', self.namespaces)) tmp2 = etree.SubElement(tmp, util.nspath_eval('gmd:MD_Resolution', self.namespaces)) tmp3 = etree.SubElement(tmp2, util.nspath_eval('gmd:equivalentScale', self.namespaces)) tmp4 = etree.SubElement(tmp3, util.nspath_eval('gmd:MD_RepresentativeFraction', self.namespaces)) tmp5 = etree.SubElement(tmp4, util.nspath_eval('gmd:denominator', self.namespaces)) etree.SubElement(tmp5, util.nspath_eval('gco:Integer', self.namespaces)).text = str(val) # resource language val = util.getqattr(result, queryables['apiso:ResourceLanguage']['dbcol']) tmp = etree.SubElement(resident, util.nspath_eval('gmd:language', self.namespaces)) etree.SubElement(tmp, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val # topic category val = util.getqattr(result, queryables['apiso:TopicCategory']['dbcol']) if val: for v in val.split(','): tmp = etree.SubElement(resident, util.nspath_eval('gmd:topicCategory', self.namespaces)) etree.SubElement(tmp, util.nspath_eval('gmd:MD_TopicCategoryCode', self.namespaces)).text = val # bbox extent val = util.getqattr(result, queryables['apiso:BoundingBox']['dbcol']) bboxel = write_extent(val, self.namespaces) if bboxel is not None and mtype != 'service': resident.append(bboxel) # service identification if mtype == 'service': # service type # service type version val = util.getqattr(result, queryables['apiso:ServiceType']['dbcol']) val2 = util.getqattr(result, queryables['apiso:ServiceTypeVersion']['dbcol']) if val is not None: tmp = etree.SubElement(resident, util.nspath_eval('srv:serviceType', self.namespaces)) etree.SubElement(tmp, util.nspath_eval('gco:LocalName', self.namespaces)).text = val tmp = etree.SubElement(resident, util.nspath_eval('srv:serviceTypeVersion', self.namespaces)) etree.SubElement(tmp, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val2 kw = util.getqattr(result, queryables['apiso:Subject']['dbcol']) if kw is not None: srv_keywords = etree.SubElement(resident, util.nspath_eval('srv:keywords', self.namespaces)) srv_keywords.append(write_keywords(kw, self.namespaces)) if bboxel is not None: bboxel.tag = util.nspath_eval('srv:extent', self.namespaces) resident.append(bboxel) val = util.getqattr(result, queryables['apiso:CouplingType']['dbcol']) if val is not None: couplingtype = etree.SubElement(resident, util.nspath_eval('srv:couplingType', self.namespaces)) etree.SubElement(couplingtype, util.nspath_eval('srv:SV_CouplingType', self.namespaces), codeListValue=val, codeList='%s#SV_CouplingType' % CODELIST).text = val if esn in ['summary', 'full']: # all service resources as coupled resources coupledresources = util.getqattr(result, queryables['apiso:OperatesOn']['dbcol']) operations = util.getqattr(result, queryables['apiso:Operation']['dbcol']) if coupledresources: for val2 in coupledresources.split(','): coupledres = etree.SubElement(resident, util.nspath_eval('srv:coupledResource', self.namespaces)) svcoupledres = etree.SubElement(coupledres, util.nspath_eval('srv:SV_CoupledResource', self.namespaces)) opname = etree.SubElement(svcoupledres, util.nspath_eval('srv:operationName', self.namespaces)) etree.SubElement(opname, util.nspath_eval('gco:CharacterString', self.namespaces)).text = _get_resource_opname(operations) sid = etree.SubElement(svcoupledres, util.nspath_eval('srv:identifier', self.namespaces)) etree.SubElement(sid, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val2 # service operations if operations: for i in operations.split(','): oper = etree.SubElement(resident, util.nspath_eval('srv:containsOperations', self.namespaces)) tmp = etree.SubElement(oper, util.nspath_eval('srv:SV_OperationMetadata', self.namespaces)) tmp2 = etree.SubElement(tmp, util.nspath_eval('srv:operationName', self.namespaces)) etree.SubElement(tmp2, util.nspath_eval('gco:CharacterString', self.namespaces)).text = i tmp3 = etree.SubElement(tmp, util.nspath_eval('srv:DCP', self.namespaces)) etree.SubElement(tmp3, util.nspath_eval('srv:DCPList', self.namespaces), codeList='%s#DCPList' % CODELIST, codeListValue='HTTPGet').text = 'HTTPGet' tmp4 = etree.SubElement(tmp, util.nspath_eval('srv:DCP', self.namespaces)) etree.SubElement(tmp4, util.nspath_eval('srv:DCPList', self.namespaces), codeList='%s#DCPList' % CODELIST, codeListValue='HTTPPost').text = 'HTTPPost' connectpoint = etree.SubElement(tmp, util.nspath_eval('srv:connectPoint', self.namespaces)) onlineres = etree.SubElement(connectpoint, util.nspath_eval('gmd:CI_OnlineResource', self.namespaces)) linkage = etree.SubElement(onlineres, util.nspath_eval('gmd:linkage', self.namespaces)) etree.SubElement(linkage, util.nspath_eval('gmd:URL', self.namespaces)).text = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Source']) # operates on resource(s) if coupledresources: for i in coupledresources.split(','): operates_on = etree.SubElement(resident, util.nspath_eval('srv:operatesOn', self.namespaces), uuidref=i) operates_on.attrib[util.nspath_eval('xlink:href', self.namespaces)] = '%sservice=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&id=%s-%s' % (util.bind_url(self.url), idval, i) rlinks = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Links']) if rlinks: distinfo = etree.SubElement(node, util.nspath_eval('gmd:distributionInfo', self.namespaces)) distinfo2 = etree.SubElement(distinfo, util.nspath_eval('gmd:MD_Distribution', self.namespaces)) transopts = etree.SubElement(distinfo2, util.nspath_eval('gmd:transferOptions', self.namespaces)) dtransopts = etree.SubElement(transopts, util.nspath_eval('gmd:MD_DigitalTransferOptions', self.namespaces)) for link in rlinks.split('^'): linkset = link.split(',') online = etree.SubElement(dtransopts, util.nspath_eval('gmd:onLine', self.namespaces)) online2 = etree.SubElement(online, util.nspath_eval('gmd:CI_OnlineResource', self.namespaces)) linkage = etree.SubElement(online2, util.nspath_eval('gmd:linkage', self.namespaces)) etree.SubElement(linkage, util.nspath_eval('gmd:URL', self.namespaces)).text = linkset[-1] protocol = etree.SubElement(online2, util.nspath_eval('gmd:protocol', self.namespaces)) etree.SubElement(protocol, util.nspath_eval('gco:CharacterString', self.namespaces)).text = linkset[2] name = etree.SubElement(online2, util.nspath_eval('gmd:name', self.namespaces)) etree.SubElement(name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = linkset[0] desc = etree.SubElement(online2, util.nspath_eval('gmd:description', self.namespaces)) etree.SubElement(desc, util.nspath_eval('gco:CharacterString', self.namespaces)).text = linkset[1] return node def write_keywords(keywords, nsmap): """generate gmd:MD_Keywords construct""" md_keywords = etree.Element(util.nspath_eval('gmd:MD_Keywords', nsmap)) for kw in keywords.split(','): keyword = etree.SubElement(md_keywords, util.nspath_eval('gmd:keyword', nsmap)) etree.SubElement(keyword, util.nspath_eval('gco:CharacterString', nsmap)).text = kw return md_keywords def write_extent(bbox, nsmap): ''' Generate BBOX extent ''' if bbox is not None: try: bbox2 = util.wkt2geom(bbox) except: return None extent = etree.Element(util.nspath_eval('gmd:extent', nsmap)) ex_extent = etree.SubElement(extent, util.nspath_eval('gmd:EX_Extent', nsmap)) ge = etree.SubElement(ex_extent, util.nspath_eval('gmd:geographicElement', nsmap)) gbb = etree.SubElement(ge, util.nspath_eval('gmd:EX_GeographicBoundingBox', nsmap)) west = etree.SubElement(gbb, util.nspath_eval('gmd:westBoundLongitude', nsmap)) east = etree.SubElement(gbb, util.nspath_eval('gmd:eastBoundLongitude', nsmap)) south = etree.SubElement(gbb, util.nspath_eval('gmd:southBoundLatitude', nsmap)) north = etree.SubElement(gbb, util.nspath_eval('gmd:northBoundLatitude', nsmap)) etree.SubElement(west, util.nspath_eval('gco:Decimal', nsmap)).text = str(bbox2[0]) etree.SubElement(south, util.nspath_eval('gco:Decimal', nsmap)).text = str(bbox2[1]) etree.SubElement(east, util.nspath_eval('gco:Decimal', nsmap)).text = str(bbox2[2]) etree.SubElement(north, util.nspath_eval('gco:Decimal', nsmap)).text = str(bbox2[3]) return extent return None def _write_date(dateval, datetypeval, nsmap): date1 = etree.Element(util.nspath_eval('gmd:date', nsmap)) date2 = etree.SubElement(date1, util.nspath_eval('gmd:CI_Date', nsmap)) date3 = etree.SubElement(date2, util.nspath_eval('gmd:date', nsmap)) if dateval.find('T') != -1: dateel = 'gco:DateTime' else: dateel = 'gco:Date' etree.SubElement(date3, util.nspath_eval(dateel, nsmap)).text = dateval datetype = etree.SubElement(date2, util.nspath_eval('gmd:dateType', nsmap)) datetype.append(_write_codelist_element('gmd:CI_DateTypeCode', datetypeval, nsmap)) return date1 def _get_resource_opname(operations): for op in operations.split(','): if op in ['GetMap', 'GetFeature', 'GetCoverage', 'GetObservation']: return op return None def _write_codelist_element(codelist_element, codelist_value, nsmap): namespace, codelist = codelist_element.split(':') element = etree.Element(util.nspath_eval(codelist_element, nsmap), codeSpace=CODESPACE, codeList='%s#%s' % (CODELIST, codelist), codeListValue=codelist_value) element.text = codelist_value return element pycsw-2.0.3/pycsw/plugins/profiles/apiso/PaxHeaders.23451/docs0000644000000000000000000000007413114323025021052 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/docs/0000755000175000001440000000000013114323025022071 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/docs/PaxHeaders.23451/apiso.rst0000644000000000000000000000007413114323025022774 xustar0030 atime=1496426320.917237733 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/docs/apiso.rst0000644000175000001440000000501213114323025023734 0ustar00kalxasusers00000000000000.. _apiso: ISO Metadata Application Profile (1.0.0) ---------------------------------------- Overview ^^^^^^^^ The ISO Metadata Application Profile (APISO) is a profile of CSW 2.0.2 which enables discovery of geospatial metadata following ISO 19139:2007 and ISO 19119:2005/PDAM 1. Configuration ^^^^^^^^^^^^^ No extra configuration is required. Querying ^^^^^^^^ * **typename**: ``gmd:MD_Metadata`` * **outputschema**: ``http://www.isotc211.org/2005/gmd`` Enabling APISO Support ^^^^^^^^^^^^^^^^^^^^^^ To enable APISO support, add ``apiso`` to ``server.profiles`` as specified in :ref:`configuration`. Testing ^^^^^^^ A testing interface is available in ``tests/index.html`` which contains tests specific to APISO to demonstrate functionality. See :ref:`tests` for more information. INSPIRE Extension ----------------- Overview ^^^^^^^^ APISO includes an extension for enabling `INSPIRE Discovery Services 3.0`_ support. To enable the INSPIRE extension to APISO, create a ``[metadata:inspire]`` section in the main configuration with ``enabled`` set to ``true``. Configuration ^^^^^^^^^^^^^ **[metadata:inspire]** - **enabled**: whether to enable the INSPIRE extension (``true`` or ``false``) - **languages_supported**: supported languages (see http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.xsd, simpleType ``euLanguageISO6392B``) - **default_language**: the default language (see http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.xsd, simpleType ``euLanguageISO6392B``) - **date**: date of INSPIRE metadata offering (in `ISO 8601`_ format) - **gemet_keywords**: a comma-seperated keyword list of `GEMET INSPIRE theme keywords`_ about the service (see http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.xsd, complexType ``inspireTheme_eng``) - **conformity_service**: the level of INSPIRE conformance for spatial data sets and services (``conformant``, ``notConformant``, ``notEvaluated``) - **contact_organization**: the organization name responsible for the INSPIRE metadata - **contact_email**: the email address of entity responsible for the INSPIRE metadata - **temp_extent**: temporal extent of the service (in `ISO 8601`_ format). Either a single date (i.e. ``yyyy-mm-dd``), or an extent (i.e. ``yyyy-mm-dd/yyyy-mm-dd``) .. _`INSPIRE Discovery Services 3.0`: http://inspire.jrc.ec.europa.eu/documents/Network_Services/TechnicalGuidance_DiscoveryServices_v3.0.pdf .. _`GEMET INSPIRE theme keywords`: http://www.eionet.europa.eu/gemet/inspire_themes .. _`ISO 8601`: http://en.wikipedia.org/wiki/ISO_8601 pycsw-2.0.3/pycsw/plugins/profiles/apiso/PaxHeaders.23451/schemas0000644000000000000000000000007413114323025021545 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/0000755000175000001440000000000013114323025022564 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/PaxHeaders.23451/ogc0000644000000000000000000000007413114323025022315 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/0000755000175000001440000000000013114323025023334 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/PaxHeaders.23451/csw0000644000000000000000000000007413114323025023111 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/0000755000175000001440000000000013114323025024130 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/PaxHeaders.23451/2.0.20000644000000000000000000000007413114323025023550 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/0000755000175000001440000000000013114323025024567 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/PaxHeaders.23451/profiles0000644000000000000000000000007413114323025025373 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/profiles/0000755000175000001440000000000013114323025026412 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/profiles/PaxHeaders.23451/apiso0000644000000000000000000000007413114323025026506 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/profiles/apiso/0000755000175000001440000000000013114323025027525 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/profiles/apiso/PaxHeaders.23451/1.0.00000644000000000000000000000007413114323025027142 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/profiles/apiso/1.0.0/0000755000175000001440000000000013114323025030161 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/profiles/apiso/1.0.0/PaxHeaders.234510000644000000000000000000000007413114323025027142 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/profiles/apiso/1.0.0/ReadMe.txt0000644000175000001440000000170013114323025032055 0ustar00kalxasusers00000000000000OpenGIS(r) CSW 2.0.2 ISO Metadata Application Profile ReadMe.txt 2007-07-19 Uwe Voges * csw/2.0.2/profiles/apiso/1.0.0: See OGC 07-045 for associated specification * apiso/1.0.0: validated using oXygen XML Editor 8.2 build 2007062515 (Xerces-J 2.9.0) - kstegemoller * apiso/1.0.0: validated using XMLSpy 2007 sp1 - Uwe Voges * iso/19139/20060504: added ISO-19139 used by apiso/1.0.0 * APISO 1.0.0 builds upon the following schemas + OGC csw/2.0.2 + OGC xlink/1.0.0 + ISO iso/19139/20060504 + OGC ows/1.0.0 + OGC filter/1.1.0 + OGC gml/3.1.1/base 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/profiles/apiso/1.0.0/PaxHeaders.234510000644000000000000000000000007413114323025027142 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd0000644000175000001440000000152413114323025032016 0ustar00kalxasusers00000000000000 ISO Wrapper to include service related type to GMD pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/PaxHeaders.23451/iso0000644000000000000000000000007413114323025023107 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/0000755000175000001440000000000013114323025024126 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/PaxHeaders.23451/191390000644000000000000000000000007413114323025023575 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/0000755000175000001440000000000013114323025024614 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/PaxHeaders.23451/200605040000644000000000000000000000007413114323025024475 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/0000755000175000001440000000000013114323025025514 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/PaxHeaders.23451/ReadMe.txt0000644000000000000000000000007413114323025026450 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/ReadMe.txt0000644000175000001440000000157713114323025027424 0ustar00kalxasusers0000000000000019139 XSchemas TS RC (2006 May 4) ----------------------------------------------- OGC GML 3.2.0 version => ISO 19136 XSchemas DIS (2005 november) -- http://www.isotc211.org/2005/ These schemas from ISO 19139 version 2005-DIS (Draft International Standard) dated 2006 May 4. For the sake of convenience, GML 3.2 XML schemas (version 19136 DIS - 2005 november) are (temporarily) provided with the 19139 set of schemas. They were retrieved from http://www.isotc211.org/2005/ . Once these schemas are finalized they will become OGC GML 3.2.1 and ISO/TS 19136. Changes made to these ISO 19139 schemas by OGC: * changed xlink references from ../xlink/xlinks.xsd to ../../../../xlink/1.0.0/xlinks.xsd so they use http://schemas.opengis.net/xlink/1.0.0/xlinks.xsd . * removed xlinks directory and schema * replaced 19139-GML_readme.txt with this document. -- Kevin Stegemoller 2007-08-14 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/PaxHeaders.23451/Version.txt0000644000000000000000000000007413114323025026740 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/Version.txt0000644000175000001440000000020713114323025027701 0ustar00kalxasusers0000000000000019139 XSchemas TS RC (2006 May 4) ----------------------------------------------- GML version => 19136 XSchemas DIS (2005 november) pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/PaxHeaders.23451/gco0000644000000000000000000000007413114323025025245 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gco/0000755000175000001440000000000013114323025026264 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gco/PaxHeaders.23451/basicTy0000644000000000000000000000007413114323025026643 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gco/basicTypes.xsd0000644000175000001440000005227113114323025031121 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:00:05 ====== 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gco/PaxHeaders.23451/gco.xsd0000644000000000000000000000007413114323025026612 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gco/gco.xsd0000644000175000001440000000166113114323025027560 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:00:06 ====== pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gco/PaxHeaders.23451/gcoBase0000644000000000000000000000007413114323025026610 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gco/gcoBase.xsd0000644000175000001440000000716213114323025030355 0ustar00kalxasusers00000000000000 This schema provides: 1. tools to handle specific objects like "code lists" and "record"; 2. Some XML types representing that do not follow the general encoding rules. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/PaxHeaders.23451/gmd0000644000000000000000000000007413114323025025244 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/0000755000175000001440000000000013114323025026263 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/applica0000644000000000000000000000007413114323025026655 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/applicationSchema.xsd0000644000175000001440000000522013114323025032426 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:03 ====== Information about the application schema used to build the dataset pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/citatio0000644000000000000000000000007413114323025026700 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/citation.xsd0000644000175000001440000003503113114323025030617 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:04 ====== Identification of, and means of communication with, person(s) and organisations associated with the dataset Standardized resource reference Location of the responsible individual or organisation Information about online sources from which the dataset, specification, or community profile name and extended metadata elements can be obtained. Information required enabling contact with the responsible person and/or organisation Telephone numbers for contacting the responsible individual or organisation pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/constra0000644000000000000000000000007413114323025026715 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/constraints.xsd0000644000175000001440000001354313114323025031360 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:01 ====== Restrictions on the access and use of a dataset or metadata Restrictions and legal prerequisites for accessing and using the dataset. Handling restrictions imposed on the dataset because of national security, privacy, or other concerns pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/content0000644000000000000000000000007413114323025026716 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/content.xsd0000644000175000001440000002504713114323025030465 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:03 ====== Information identifing the feature catalogue Information about the domain of the raster cell Information about an image's suitability for use Set of adjacent wavelengths in the electro-magnetic spectrum with a common characteristic, such as the visible band pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/dataQua0000644000000000000000000000007413114323025026624 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/dataQuality.xsd0000644000175000001440000007220513114323025031273 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:01 ====== quantitative_result from Quality Procedures - - renamed to remove implied use limitiation. Quantitative_conformance_measure from Quality Procedures. - - Renamed to remove implied use limitation - - OCL - -- result is type specified by valueDomain - result.tupleType = valueDomain pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/distrib0000644000000000000000000000007413114323025026704 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/distribution.xsd0000644000175000001440000002557213114323025031535 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:03 ====== Information about the media on which the data can be distributed Technical means and media by which a dataset is obtained from the distributor Common ways in which the dataset may be obtained or received, and related instructions and fee information Information about the distributor Information about the distributor of and options for obtaining the dataset Description of the form of the data to be distributed pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/extent.0000644000000000000000000000007413114323025026631 xustar0030 atime=1496426292.492636131 30 ctime=1496426292.492636131 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/extent.xsd0000644000175000001440000002454013114323025030317 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:04 ====== Time period covered by the content of the dataset Vertical domain of dataset Boundary enclosing the dataset expressed as the closed set of (x,y) coordinates of the polygon (last point replicates first point) Information about spatial, vertical, and temporal extent Geographic area of the dataset Geographic area of the entire dataset referenced to WGS 84 Extent with respect to date and time pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/freeTex0000644000000000000000000000007413114323025026646 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/freeText.xsd0000644000175000001440000001460713114323025030601 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 03-17-2005 17:21:53 ====== Informative package (concepts are not implementable) - pragmatic approach for encoding pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/gmd.xsd0000644000000000000000000000007413114323025026610 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/gmd.xsd0000644000175000001440000000167213114323025027560 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:04 ====== pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/identif0000644000000000000000000000007413114323025026666 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/identification.xsd0000644000175000001440000004500413114323025031777 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:05 ====== Basic information about data Graphic that provides an illustration of the dataset (should include a legend for the graphic) See 19119 for further info Brief description of ways in which the dataset is currently used. Keywords, their type and reference source Encapsulates the dataset aggregation information High-level geospatial data thematic classification to assist in the grouping and search of available geospatial datasets pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/mainten0000644000000000000000000000007413114323025026677 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/maintenance.xsd0000644000175000001440000001255013114323025031270 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:04 ====== Status of the dataset or progress of a review Information about the scope and frequency of updating Description of the class of information covered by the information pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/metadat0000644000000000000000000000007413114323025026663 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/metadataApplication.xsd0000644000175000001440000002121513114323025032750 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:05 ====== Identifiable collection of datasets Identifiable collection of data pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/metadat0000644000000000000000000000007413114323025026663 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/metadataEntity.xsd0000644000175000001440000001253213114323025031763 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:00 ====== Information about the metadata pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/metadat0000644000000000000000000000007413114323025026663 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/metadataExtension.xsd0000644000175000001440000001344713114323025032471 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:03 ====== Method used to represent geographic information in the dataset New metadata element, not found in ISO 19115, which is required to describe geographic data Information describing metadata extensions. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/portray0000644000000000000000000000007413114323025026744 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/portrayalCatalogue.xsd0000644000175000001440000000420513114323025032646 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:03 ====== Information identifing the portrayal catalogue used pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/referen0000644000000000000000000000007413114323025026672 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/referenceSystem.xsd0000644000175000001440000001205413114323025032150 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:04 ====== Description of the spatial and temporal reference systems used in the dataset pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/PaxHeaders.23451/spatial0000644000000000000000000000025313114323025026700 xustar00111 path=pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/spatialRepresentation.xsd 30 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/spatialRepresentation.xs0000644000175000001440000003166213114323025033227 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:02 ====== Frequency with which modifications and deletations are made to the data after it is first produced Types and numbers of raster spatial objects in the dataset Information about the vector spatial objects in the dataset Digital mechanism used to represent spatial information pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/PaxHeaders.23451/gml0000644000000000000000000000007413114323025025254 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/0000755000175000001440000000000013114323025026273 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/ReadMe.0000644000000000000000000000007413114323025026467 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/ReadMe.txt0000644000175000001440000000215513114323025030174 0ustar00kalxasusers0000000000000019139 XSchemas TS RC (2006 May 4) ----------------------------------------------- OGC GML 3.2.0 version => ISO 19136 XSchemas DIS (2005 november) -- http://www.isotc211.org/2005/ These schemas from ISO 19139 version 2005-DIS (Draft International Standard) dated 2006 May 4. For the sake of convenience, GML 3.2 XML schemas (version 19136 DIS - 2005 november) are (temporarily) provided with the 19139 set of schemas. They were retrieved from http://www.isotc211.org/2005/ . Once these schemas are finalized they will become OGC GML 3.2.1 and ISO/TS 19136. Changes made to these ISO 19139 schemas by OGC: * changed xlink references from ../xlink/xlinks.xsd to ../../../../xlink/1.0.0/xlinks.xsd so they use http://schemas.opengis.net/xlink/1.0.0/xlinks.xsd . (see W3C XLink 1.0) * removed xlinks directory and schema * replaced 19139-GML_readme.txt with this document. In Folder "gml": the GML Schema; the root document of the GML Schema is file "gml/gml.xsd" Imported schemas: - Folder "xlink": the W3C XLink schema (see W3C XLink 1.0) - iso19139 schemas: the GMD schema and contained schemas (see ISO/TS 19139) pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/basicTy0000644000000000000000000000007413114323025026652 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/basicTypes.xsd0000644000175000001440000003503213114323025031124 0ustar00kalxasusers00000000000000 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: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. deprecated 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/coordin0000644000000000000000000000007413114323025026711 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/coordinateOperations.xsd0000644000175000001440000011102013114323025033201 0ustar00kalxasusers00000000000000 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: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. deprecated 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. deprecated deprecated deprecated deprecated 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. deprecated 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. deprecated 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. deprecated gml:ConcatenatedOperationPropertyType is a property type for association roles to a concatenated operation, either referencing or containing the definition of that concatenated operation. deprecated 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:usesOperation is deprecated, gml:coordOperation shall be used instead. 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. deprecated 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. deprecated gml:parameterValue is a composition association to a parameter value or group of parameter values used by a coordinate operation. deprecated gml:ConversionPropertyType is a property type for association roles to a concrete general-purpose conversion, either referencing or containing the definition of that conversion. deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated gml:group is an association role to the operation parameter group for which this element provides parameter values. deprecated 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 generalOperationParameter elements are an unordered list of associations to the set of operation parameters and parameter groups used by this operation method. gml:formula specifies a formula or procedure used by this operation method. The value may be a reference to a publication. Note that the operation method may not be analytic, in which case this element references or contains the procedure, not an analytic formula. deprecated 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:generalOperationParameter is an association to an operation parameter or parameter group. deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated gml:OperationParameterPropertyType is a property type for association roles to an operation parameter group, either referencing or containing the definition of that parameter group. deprecated pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/coordin0000644000000000000000000000026013114323025026706 xustar00116 path=pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/coordinateReferenceSystems.xsd 30 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/coordinateReferenceSyste0000644000175000001440000005467213114323025033232 0ustar00kalxasusers00000000000000 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: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. deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated gml:cartesianCS is an association role to the Cartesian coordinate system used by this CRS. deprecated gml:sphericalCS is an association role to the spherical coordinate system used by this CRS. deprecated gml:geodeticDatum is an association role to the geodetic datum used by this CRS. deprecated 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. deprecated gml:verticalDatum is an association role to the vertical datum used by this CRS. deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated 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. gml:engineeringDatum is an association role to the engineering datum used by this CRS. deprecated 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. deprecated 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. deprecated gml:imageDatum is an association role to the image datum used by this CRS. deprecated deprecated 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. deprecated 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. deprecated deprecated gml:temporalDatum is an association role to the temporal datum used by this CRS. deprecated 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. deprecated deprecated deprecated deprecated deprecated deprecated deprecated deprecated deprecated pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/coordin0000644000000000000000000000007413114323025026711 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/coordinateSystems.xsd0000644000175000001440000005240213114323025032535 0ustar00kalxasusers00000000000000 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:CoordinateSystemAxis is a definition of a coordinate system 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. 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:CoordinateSystemAxisPropertyType is a property type for association roles to a coordinate system axis, either referencing or containing the definition of that axis. deprecated 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. deprecated gml:CoordinateSystemPropertyType is a property type for association roles to a coordinate system, either referencing or containing the definition of that coordinate system. deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated deprecated deprecated deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated deprecated deprecated deprecated pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/coverag0000644000000000000000000000007413114323025026702 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/coverage.xsd0000644000175000001440000006543513114323025030623 0ustar00kalxasusers00000000000000 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. 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:AbstractDiscreteCoverageType. 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:RangeParameterType is a framework for the description of the range parameters each of which is a gml:AbstractValue. Specific range parameters are defined through the creation of a GML Application Schema that provides elements that are substitutable for gml:AbstractValue. 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 the gml:FileValueModelType. This is simple enumerated type restriction on string. The only value supported in GML is “Record Interleavedâ€. Additional values may be supported in future releases of GML. 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. 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. deprecated 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. deprecated In a gml:MultiPointCoverage the domain set is a gml:MultiPoint, that is a collection of arbitrarily distributed geometric points. The content model is derived by restriction from gml:AbstractDiscreteCoverageType. Note that the restriction replaces the generic gml:domainSet by the specific gml:multiPointDomain whose value is a 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 derived by restriction from gml:AbstractDiscreteCoverageType. Note that the restriction replaces the generic gml:domainSet by the specific gml:multiCurveDomain whose value is a 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 derived by restriction from gml:AbstractDiscreteCoverageType. Note that the restriction replaces the generic gml:domainSet by the specific gml:multiSurfaceDomain whose value is a 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 derived by restriction from gml:AbstractDiscreteCoverageType. Note that the restriction replaces the generic gml:domainSet by the specific gml:multiSolidDomain whose value is a 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:gridDomain property 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. The coverage domain is described by gml:rectifiedGridDomain. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/datums.0000644000000000000000000000007413114323025026627 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/datums.xsd0000644000175000001440000004214413114323025030315 0ustar00kalxasusers00000000000000 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. 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. deprecated 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. deprecated 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. deprecated gml:ellipsoid is an association role to the ellipsoid used by this geodetic datum. deprecated gml:GeodeticDatumPropertyType is a property type for association roles to a geodetic datum, either referencing or containing the definition of that datum. deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated 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. deprecated pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/diction0000644000000000000000000000007413114323025026705 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/dictionary.xsd0000644000175000001440000002000713114323025031157 0ustar00kalxasusers00000000000000 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. 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. deprecated 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. deprecated deprecated deprecated deprecated deprecated deprecated pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/directi0000644000000000000000000000007413114323025026677 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/direction.xsd0000644000175000001440000000760713114323025031005 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/dynamic0000644000000000000000000000007413114323025026700 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/dynamicFeature.xsd0000644000175000001440000002056613114323025031764 0ustar00kalxasusers00000000000000 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. 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. gml:MovingObjectStatus is one example of how gml:AbstractTimeSlice may be extended. This element provides a standard method to capture a record of the status of a moving object. A gml:MovingObjectStatus element allows the user to describe the present location, along with the speed, bearing, acceleration and elevation of an object in a particular time slice. Additional information about the current status of the object may be recorded in the gml:status or gml:statusReference property elements. The remote link attributes of the gml:status element have been deprecated along with its current type. 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. deprecated pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/feature0000644000000000000000000000007413114323025026707 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/feature.xsd0000644000175000001440000002250713114323025030454 0ustar00kalxasusers00000000000000 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. 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. deprecated deprecated deprecated deprecated 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. deprecated deprecated deprecated deprecated deprecated deprecated deprecated deprecated 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. deprecated deprecated deprecated deprecated pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/geometr0000644000000000000000000000007413114323025026716 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/geometryAggregates.xsd0000644000175000001440000003252013114323025032642 0ustar00kalxasusers00000000000000 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: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. This property element either references a geometric aggregate via the XLink-attributes or contains the "multi geometry" element. multiGeometryProperty 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 AbstractGeometricAggregate. 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. This property element either references a point aggregate via the XLink-attributes or contains the "multi point" element. multiPointProperty 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 MultiPoint. 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. This property element either references a curve aggregate via the XLink-attributes or contains the "multi curve" element. multiCurveProperty 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 MultiCurve. 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. This property element either references a surface aggregate via the XLink-attributes or contains the "multi surface" element. multiSurfaceProperty 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 MultiSurface. 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. This property element either references a solid aggregate via the XLink-attributes or contains the "multi solid" element. multiSolidProperty 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 MultiSolid. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/geometr0000644000000000000000000000007413114323025026716 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/geometryBasic0d1d.xsd0000644000175000001440000005031613114323025032266 0ustar00kalxasusers00000000000000 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. 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. 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. 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. deprecated 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. deprecated 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. This property element contains a list of point elements. pointArrayProperty 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 a list of points. 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. This property element contains a list of curve elements. curveArrayProperty 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 a list of curves. 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/geometr0000644000000000000000000000007413114323025026716 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/geometryBasic2d.xsd0000644000175000001440000001505513114323025032044 0ustar00kalxasusers00000000000000 geometryBasic2d.xsd See ISO/DIS 19136 Clause 10. 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. This property element contains a list of surface elements. surfaceArrayProperty 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 a list of AbstractSurfaces. 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/geometr0000644000000000000000000000007413114323025026716 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/geometryComplexes.xsd0000644000175000001440000001275313114323025032536 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/geometr0000644000000000000000000000007413114323025026716 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/geometryPrimitives.xsd0000644000175000001440000012672213114323025032734 0ustar00kalxasusers00000000000000 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. 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. gml:PolygonPatchArrayPropertyType provides a container for an array of polygon patches. 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. gml:TrianglePatchArrayPropertyType provides a container for an array of triangle patches. 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. This property element contains a list of solid elements. solidArrayProperty 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 a list of AbstractSolid. 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/gml.xsd0000644000000000000000000000007413114323025026630 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/gml.xsd0000644000175000001440000000144113114323025027572 0ustar00kalxasusers00000000000000 gml.xsd pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/gmlBase0000644000000000000000000000007413114323025026626 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/gmlBase.xsd0000644000175000001440000004051713114323025030374 0ustar00kalxasusers00000000000000 gmlBase.xsd Schematron validation Property element may not carry both a reference to an object and contain an object. Property element must either carry a reference to an object or contain an object. 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. 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. deprecated deprecated deprecated deprecated deprecated 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. deprecated deprecated deprecated deprecated 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. deprecated deprecated deprecated deprecated deprecated pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/grids.x0000644000000000000000000000007413114323025026632 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/grids.xsd0000644000175000001440000000751713114323025030135 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/measure0000644000000000000000000000007413114323025026715 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/measures.xsd0000644000175000001440000001262313114323025030643 0ustar00kalxasusers00000000000000 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. 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. deprecated deprecated deprecated deprecated deprecated deprecated deprecated deprecated deprecated deprecated deprecated deprecated pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/observa0000644000000000000000000000007413114323025026715 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/observation.xsd0000644000175000001440000001245013114323025031350 0ustar00kalxasusers00000000000000 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. 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. If the value is inline, it shall be a member of the gml:AbstractObject substitution group. 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/referen0000644000000000000000000000007413114323025026702 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/referenceSystems.xsd0000644000175000001440000001111013114323025032333 0ustar00kalxasusers00000000000000 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: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. gml:crsRef is an association role either referencing or containing the definition of a CRS. This property element has been deprecated. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/tempora0000644000000000000000000000007413114323025026723 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/temporal.xsd0000644000175000001440000003604213114323025030643 0ustar00kalxasusers00000000000000 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: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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/tempora0000644000000000000000000000025613114323025026725 xustar00114 path=pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/temporalReferenceSystems.xsd 30 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/temporalReferenceSystems0000644000175000001440000003021613114323025033252 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/tempora0000644000000000000000000000007413114323025026723 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/temporalTopology.xsd0000644000175000001440000001731413114323025032401 0ustar00kalxasusers00000000000000 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: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. deprecated pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/topolog0000644000000000000000000000007413114323025026737 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/topology.xsd0000644000175000001440000004734113114323025030700 0ustar00kalxasusers00000000000000 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. 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). The gml:isolated property element implements the role of the same name of the ISO 19107 “Isolated In†association (see ISO 19107:2003, 7.3.10.4). The gml:container property element implements the role of the same name of the ISO 19107 “Isolated In†association (see ISO 19107:2003, 7.3.10.4). 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. 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. 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. The gml:topoComplexProperty property element encodes the relationship between a GML object and a topological complex. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/units.x0000644000000000000000000000007413114323025026664 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/units.xsd0000644000175000001440000002744413114323025030170 0ustar00kalxasusers00000000000000 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. 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/PaxHeaders.23451/valueOb0000644000000000000000000000007413114323025026651 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/valueObjects.xsd0000644000175000001440000002745513114323025031456 0ustar00kalxasusers00000000000000 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. 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. ValueArray may not carry both a reference to a codeSpace and a uom All components of shall be of the same type All components of shall be of the same type pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/PaxHeaders.23451/gmx0000644000000000000000000000007413114323025025270 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/0000755000175000001440000000000013114323025026307 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/PaxHeaders.23451/catalog0000644000000000000000000000007413114323025026702 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/catalogues.xsd0000644000175000001440000001511313114323025031157 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 04-27-2005 17:16:11 ====== Handcrafted pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/PaxHeaders.23451/codelis0000644000000000000000000000007413114323025026712 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/codelistItem.xsd0000644000175000001440000002107413114323025031460 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 03-15-2005 09:14:50 ====== Constraints: - 1) metadataProperty.card = 0 - 2) dictionaryEntry.card = 0 Constraint: codeEntry.type = ML_CodeListDefinition XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/PaxHeaders.23451/crsItem0000644000000000000000000000007413114323025026676 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/crsItem.xsd0000644000175000001440000014016313114323025030442 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 03-15-2005 09:15:11 ====== XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/PaxHeaders.23451/extende0000644000000000000000000000007413114323025026724 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/extendedTypes.xsd0000644000175000001440000001013313114323025031652 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 03-14-2005 12:00:20 ====== Handcrafted pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/PaxHeaders.23451/gmx.xsd0000644000000000000000000000007413114323025026660 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/gmx.xsd0000644000175000001440000000165113114323025027625 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 03-18-2005 11:12:17 ====== pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/PaxHeaders.23451/gmxUsag0000644000000000000000000000007413114323025026703 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/gmxUsage.xsd0000644000175000001440000001520113114323025030606 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 04-27-2005 17:15:30 ====== pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/PaxHeaders.23451/uomItem0000644000000000000000000000007413114323025026707 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/uomItem.xsd0000644000175000001440000002042713114323025030453 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 03-15-2005 09:15:02 ====== XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/PaxHeaders.23451/gsr0000644000000000000000000000007413114323025025270 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gsr/0000755000175000001440000000000013114323025026307 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gsr/PaxHeaders.23451/gsr.xsd0000644000000000000000000000007413114323025026660 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gsr/gsr.xsd0000644000175000001440000000167113114323025027627 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:24:48 ====== pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gsr/PaxHeaders.23451/spatial0000644000000000000000000000007413114323025026725 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gsr/spatialReferencing.xsd0000644000175000001440000000321213114323025032632 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:24:48 ====== pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/PaxHeaders.23451/gss0000644000000000000000000000007413114323025025271 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gss/0000755000175000001440000000000013114323025026310 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gss/PaxHeaders.23451/geometr0000644000000000000000000000007413114323025026733 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gss/geometry.xsd0000644000175000001440000001304313114323025030664 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:14:37 ====== The geometry packages (Figure 4) contain the various classes for coordinate geometry. All of these classes through the root class GM_Object inherit an optional association to a coordinate reference system. All direct positions exposed through the interfaces defined in this standard shall be in the coordinate reference system of the geometric object accessed. All elements of a geometric complex, composite, or aggregate shall be associated to the same coordinate reference system. When instances of GM_Object are aggregated in another GM_Object (such as a GM_Aggregate, or GM_Complex) 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 package has several internal packages that separate primitive geometric objects, aggregates and complexes, which have a more elaborate internal structure than simple aggregates. Figure 4 shows the dependencies between the geometry packages as well as a list of classes for each package - Figure 5 shows the basic classes defined in the geometry packages. Any object that inherits the semantics of the GM_Object acts as a set of direct positions. Its behavior will be determined by which direct positions it contains. Objects under GM_Primitive 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. Objects under GM_Complex will be closed, that is, they will contain their boundary points. This leads to some apparent ambiguity. A representation of a line as a primitive must reference its end points, but will not contain these points as a set of direct positions. A representation of a line as a complex will also reference its end points, and will contain these points as a set of direct positions. This means that identical digital representations will have slightly different semantics depending on whether they are accessed as primitives or complexes. - This difference of semantics is most striking in the GM_CompositeCurve. Composite curves are used to represent features whose geometry could also be represented as curve primitives. From a cartographic point of view, these two representations are not different. From a topological point of view, they are different. This distinction appears in the inheritance diagram (Figure 5) as an inheritance relationship between GM_CompositeCurve and GM_OrientableCurve. The primary semantics of a GM_CompositeCurve (see 6.6.5) is as a closed GM_Object, but it may also act as an open GM_Object under GM_Primitive operations (see 6.3.10). Interface protocols depending upon the topological details of this object will have to be distinguished as to whether they have been inherited from GM_Primitive or GM_Complex, where the distinction first occurs. Even though these protocols have been inherited from the same operations defined at GM_Object, they will act differently depending upon the branch of the inheritance tree from which they have inherited semantics. Creators of implementation profiles may take this into account and use a proxy mechanism for realization relationships that cause semantic dissonance. Such a procedure will be necessary in object-oriented programming and databases in systems that disallow multiple inheritance or make limiting assumptions about method binding. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gss/PaxHeaders.23451/gss.xsd0000644000000000000000000000007413114323025026662 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gss/gss.xsd0000644000175000001440000000235313114323025027627 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:14:37 ====== This package contains the normative (Geometry and Topology) parts of the model for ISO 19107. This document should be referred to as the official description of the Model. If there are any differences, then ISO 19107 takes precedence. - - This packages also contains example (informative) of applications of 19107. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/PaxHeaders.23451/gts0000644000000000000000000000007413114323025025272 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gts/0000755000175000001440000000000013114323025026311 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gts/PaxHeaders.23451/gts.xsd0000644000000000000000000000007413114323025026664 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gts/gts.xsd0000644000175000001440000000166613114323025027637 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:18:09 ====== pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gts/PaxHeaders.23451/tempora0000644000000000000000000000007413114323025026741 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gts/temporalObjects.xsd0000644000175000001440000000425013114323025032167 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:18:09 ====== pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/PaxHeaders.23451/resources0000644000000000000000000000007413114323025026507 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/0000755000175000001440000000000013114323025027526 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/PaxHeaders.23451/C0000644000000000000000000000007413114323025026671 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/Codelist/0000755000175000001440000000000013114323025031274 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/Codelist/PaxHeader0000644000000000000000000000026413114323025027416 xustar00120 path=pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/Codelist/ML_gmxCodelists.xml 30 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/Codelist/ML_gmxCod0000644000175000001440000012406013114323025033033 0ustar00kalxasusers00000000000000 ML_gmxCodelists Codelists for description of metadata datasets compliant with ISO/TC 211 19115:2003 and 19139 Listes de codes pour la description de lots de métadonnées conforme ISO TC/211 19115:2003 et 19139 GMX (and imported) namespace 0.0 2005-03-18 English UTF 8 French France UTF 8 identification of when a given event occurred CI_DateTypeCode date identifies when the resource was brought into existence creation creation date identifiant la création de la ressource creation création date identifies when the resource was issued publication publication date identifiant la publication de la ressource publication publication date identifies when the resource was examined or re-examined and imporved or amended revision revision amélioration ou amendement de la ressource revision révision identification de quand un événement s'est produit CI_DateTypeCode function performed by the resource CI_OnLineFunctionCode online instructions for transferring data from one storage device or system to another download Download transfert de la ressource d'un système à un autre download Téléchargement online information about the resource information Information description de la ressource en ligne information Information online instructions for requesting the resource from the provider offlineAccess Off line access information pour requérir la ressource offlineAccess Accès hors ligne online order process for obtening the resource order Order formulaire pour obtenir la ressource order commande en ligne online search interface for seeking out information about the resource search Search interface de recherche d'information sur la ressource search Moteur de recherche Fonctionnalité offerte par la ressource CI_OnLineFunctionCode name of the character coding standard used in the resource MD_CharacterSetCode 16-bit fixed size Universal Character Set, based on ISO/IEC 10646 ucs2 16 bits ISO/IEC 10646 ucs2 32-bit fixed size Universal Character Set, based on ISO/IEC 10646 ucs4 32 bits ISO/IEC 10646 ucs4 7-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf7 7 bits ISO/IEC 10646 utf7 8-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf8 8 bits ISO/IEC 10646 utf8 16-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf16 16 bits ISO/IEC 10646 utf16 ISO/IEC 8859-1, Information technology - 8-bit single byte coded graphic character sets - Part 1 : Latin alphabet No.1 8859part1 ISO/IEC 8859-1, alphabet latin 1 8859part1 ISO/IEC 8859-2, Information technology - 8-bit single byte coded graphic character sets - Part 2 : Latin alphabet No.2 8859part2 ISO/IEC 8859-2, alphabet latin 2 8859part2 ISO/IEC 8859-3, Information technology - 8-bit single byte coded graphic character sets - Part 3 : Latin alphabet No.3 8859part3 ISO/IEC 8859-3, alphabet latin 3 8859part3 ISO/IEC 8859-4, Information technology - 8-bit single byte coded graphic character sets - Part 4 : Latin alphabet No.4 8859part4 ISO/IEC 8859-4, alphabet latin 4 8859part4 ISO/IEC 8859-5, Information technology - 8-bit single byte coded graphic character sets - Part 5 : Latin/Cyrillic alphabet 8859part5 ISO/IEC 8859-5, alphabet latin/cyrillique 8859part5 ISO/IEC 8859-6, Information technology - 8-bit single byte coded graphic character sets - Part 6 : Latin/Arabic alphabet 8859part6 ISO/IEC 8859-6, alphabet latin/arabe 8859part6 ISO/IEC 8859-7, Information technology - 8-bit single byte coded graphic character sets - Part 7 : Latin/Greek alphabet 8859part7 ISO/IEC 8859-7, alphabet latin/grec 8859part7 ISO/IEC 8859-8, Information technology - 8-bit single byte coded graphic character sets - Part 8 : Latin/Hebrew alphabet 8859part8 ISO/IEC 8859-8, alphabet latin/hébreu 8859part8 ISO/IEC 8859-9, Information technology - 8-bit single byte coded graphic character sets - Part 9 : Latin alphabet No.5 8859part9 ISO/IEC 8859-9, alphabet latin 5 8859part9 ISO/IEC 8859-10, Information technology - 8-bit single byte coded graphic character sets - Part 10 : Latin alphabet No.6 8859part10 ISO/IEC 8859-10, alphabet latin 6 8859part10 ISO/IEC 8859-11, Information technology - 8-bit single byte coded graphic character sets - Part 11 : Latin/Thai alphabet 8859part11 ISO/IEC 8859-11, alphabet latin/Thaï 8859part11 ISO/IEC 8859-13, Information technology - 8-bit single byte coded graphic character sets - Part 13 : Latin alphabet No.7 8859part13 ISO/IEC 8859-13, alphabet latin 7 8859part13 ISO/IEC 8859-14, Information technology - 8-bit single byte coded graphic character sets - Part 14 : Latin alphabet No.8 (Celtic) 8859part14 ISO/IEC 8859-14, alphabet latin 8 (celtique) 8859part14 ISO/IEC 8859-15, Information technology - 8-bit single byte coded graphic character sets - Part 15 : Latin alphabet No.9 8859part15 ISO/IEC 8859-15, alphabet latin 9 8859part15 ISO/IEC 8859-16, Information technology - 8-bit single byte coded graphic character sets - Part 16 : Latin alphabet No.10 8859part16 ISO/IEC 8859-16, alphabet latin 10 8859part16 japanese code set used for electronic transmission jis Japonais jis japanese code set used on MS-DOS machines shiftJIS Japonais pour MS-DOS shiftJIS japanese code set used on UNIX based machines eucJP Japonais pour UNIX eucJP United States ASCII code set (ISO 646 US) usAscii ISO 646 US usAscii IBM mainframe code set ebcdic IBM ebcdic Korean code set eucKR Koréen eucKR traditional Chinese code set used in Taiwan, Hong Kong of China and other areas big5 Chinois traditionel (Taiwan, Hong Kong, Chine) big5 simplified Chinese code set GB2312 Chinois simplifié GB2312 Jeu de caractères MD_CharacterSetCode class of information to which the referencing entity applies MD_ScopeCode Information applies to the attribute class attribute Attribute Information qui s’applique à une classe d’attributs attribute Attribut Information applies to the characteristic of a feature attributeType Attribute type Information qui s’applique à la caractéristique d’une entité géographique attributeType Type d’attribut Information applies to the dataset dataset Dataset Information qui s’applique au jeu de données dataset Jeu de données Information applies to the dataset dataset 005 Information applies to the series series Series Information qui s’applique à une série series Série Information applies to non-geographic data nonGeographicDataset Non geographic dataset Information qui s’applique à des données non-géographiques nonGeographicDataset Jeu de données non géographiques Information applies to a feature feature Feature Information qui s’applique à un élément (entité géographique) feature Elément Information applies to a feature type featureType Feature type Information qui s’applique à un type d’élément featureType Type d’élément Information applies to a property type propertyType Property type Information qui s’applique à un type de propriété propertyType Type de propriété Information applies to a tile, a spatial subset of geographic data tile Tile Information qui s’applique à une tuile, un sous-ensemble spatial de données géographiques tile Tuile information sur l'entité sur laquelle les métadonnées s'appliquent MD_ScopeCode Language : ISO 639-2 (3 characters) LanguageCode English eng English Anglais eng Anglais French fra French Français fra Français Langue : ISO 639-2 (3 caractères) LanguageCode Country : ISO 3166-2 (2 characters) Country United Kingdom UK United Kingdom Royaume-Uni UK Royaume-Uni France FR France France FR France Pays : ISO 3166-2 (2 caractères) Country pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/Codelist/PaxHeader0000644000000000000000000000026113114323025027413 xustar00117 path=pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/Codelist/gmxCodelists.xml 30 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/Codelist/gmxCodeli0000644000175000001440000026634013114323025033145 0ustar00kalxasusers00000000000000 gmxCodelists Codelists for description of metadata datasets compliant with ISO/TC 211 19115:2003 and 19139 GMX (and imported) namespace 0.0 2005-03-18 identification of when a given event occurred CI_DateTypeCode date identifies when the resource was brought into existence creation date identifies when the resource was issued publication date identifies when the resource was examined or re-examined and imporved or amended revision function performed by the resource CI_OnLineFunctionCode online instructions for transferring data from one storage device or system to another download online information about the resource information online instructions for requesting the resource from the provider offlineAccess online order process for obtening the resource order online search interface for seeking out information about the resource search mode in which the data is represented CI_PresentationFormCode digital representation of a primarily textual item (can contain illustrations also) documentDigital representation of a primarily textual item (can contain illustrations also) on paper, photograhic material, or other media imageDigital likeness of natural or man-made features, objects, and activities acquired through the sensing of visual or any other segment of the electromagnetic spectrum by sensors, such as thermal infrared, and high resolution radar and stored in digital format documentHardcopy likeness of natural or man-made features, objects, and activities acquired through the sensing of visual or any other segment of the electromagnetic spectrum by sensors, such as thermal infrared, and high resolution radar and reproduced on paper, photographic material, or other media for use directly by the human user imageHardcopy map represented in raster or vector form mapDigital map printed on paper, photographic material, or other media for use directly by the human user mapHardcopy multi-dimensional digital representation of a feature, process, etc. modelDigital 3-dimensional, physical model modelHardcopy vertical cross-section in digital form profileDigital vertical cross-section printed on paper, etc. profileHardcopy digital representation of facts or figures systematically displayed, especially in columns tableDigital representation of facts or figures systematically displayed, especially in columns, printed onpapers, photographic material, or other media tableHardcopy digital video recording videoDigital video recording on film videoHardcopy function performed by the responsible party CI_RoleCode party that supplies the resource resourceProvider party that accepts accountability and responsability for the data and ensures appropriate care and maintenance of the resource custodian party that owns the resource owner party who uses the resource user party who distributes the resource distributor party who created the resource originator party who can be contacted for acquiring knowledge about or acquisition of the resource pointOfContact key party responsible for gathering information and conducting research principalInvestigator party wha has processed the data in a manner such that the resource has been modified processor party who published the resource publisher party who authored the resource author type or method for evaluating an identified data quality measure DQ_EvaluationMethodTypeCode method of evaluating the quality of a dataset based on inspection of items within the dataset, where all data required is internal to the dataset being evaluated directInternal method of evaluating the quality of a dataset based on inspection of items within the dataset, where reference data external to the dataset being evaluated is required directExternal method of evaluating the quality of a dataset based on external knowledge indirect justification for the correlation of two datasets DS_AssociationTypeCode reference from one dataset to another crossReference reference to a master dataset of which this one is a part largerWorkCitation part of the same structured set of data held in a computer partOfSeamlessDatabase mapping and charting information from which the dataset content originates source part of a set of imagery that when used together, provides three-dimensional images stereoMate type of aggregation activity in which datasets are related DS_InitiativeTypeCode series of organized planned actions campaign accumulation of datasets assembled for a specific purpose collection specific performance of a function or group of functions exercise process designed to find if something is effective or valid experiment search or systematic inquiry investigation specific operation of a data collection system mission device or piece of equipment which detects or records sensor action that is part of a series of actions operation vehicle or other support base that holds a sensor platform method of doing something involving a number of steps process specific planned activity program organized undertaking, research, or development project examination or investigation study piece of work task process of testing to discover or demonstrate something trial code indicating whether grid data is point or area MD_CellGeometryCode each cell represents a point point each cell represents an area area name of the character coding standard used in the resource MD_CharacterSetCode 16-bit fixed size Universal Character Set, based on ISO/IEC 10646 ucs2 32-bit fixed size Universal Character Set, based on ISO/IEC 10646 ucs4 7-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf7 8-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf8 16-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf16 ISO/IEC 8859-1, Information technology - 8-bit single byte coded graphic character sets - Part 1 : Latin alphabet No.1 8859part1 ISO/IEC 8859-2, Information technology - 8-bit single byte coded graphic character sets - Part 2 : Latin alphabet No.2 8859part2 ISO/IEC 8859-3, Information technology - 8-bit single byte coded graphic character sets - Part 3 : Latin alphabet No.3 8859part3 ISO/IEC 8859-4, Information technology - 8-bit single byte coded graphic character sets - Part 4 : Latin alphabet No.4 8859part4 ISO/IEC 8859-5, Information technology - 8-bit single byte coded graphic character sets - Part 5 : Latin/Cyrillic alphabet 8859part5 ISO/IEC 8859-6, Information technology - 8-bit single byte coded graphic character sets - Part 6 : Latin/Arabic alphabet 8859part6 ISO/IEC 8859-7, Information technology - 8-bit single byte coded graphic character sets - Part 7 : Latin/Greek alphabet 8859part7 ISO/IEC 8859-8, Information technology - 8-bit single byte coded graphic character sets - Part 8 : Latin/Hebrew alphabet 8859part8 ISO/IEC 8859-9, Information technology - 8-bit single byte coded graphic character sets - Part 9 : Latin alphabet No.5 8859part9 ISO/IEC 8859-10, Information technology - 8-bit single byte coded graphic character sets - Part 10 : Latin alphabet No.6 8859part10 ISO/IEC 8859-11, Information technology - 8-bit single byte coded graphic character sets - Part 11 : Latin/Thai alphabet 8859part11 ISO/IEC 8859-13, Information technology - 8-bit single byte coded graphic character sets - Part 13 : Latin alphabet No.7 8859part13 ISO/IEC 8859-14, Information technology - 8-bit single byte coded graphic character sets - Part 14 : Latin alphabet No.8 (Celtic) 8859part14 ISO/IEC 8859-15, Information technology - 8-bit single byte coded graphic character sets - Part 15 : Latin alphabet No.9 8859part15 ISO/IEC 8859-16, Information technology - 8-bit single byte coded graphic character sets - Part 16 : Latin alphabet No.10 8859part16 japanese code set used for electronic transmission jis japanese code set used on MS-DOS machines shiftJIS japanese code set used on UNIX based machines eucJP United States ASCII code set (ISO 646 US) usAscii IBM mainframe code set ebcdic Korean code set eucKR traditional Chinese code set used in Taiwan, Hong Kong of China and other areas big5 simplified Chinese code set GB2312 name of the handling restrictions on the dataset MD_ClassificationCode available for general disclosure unclassified not for general disclosure restricted available for someone who can be entrusted with information confidential kept or meant to be kept private, unknown, or hidden from all but a select group of people secret of the highest secrecy topSecret specific type of information represented in the cell MD_CoverageContentTypeCode meaningful numerical representation of a physical parameter that is not the actual value of the physical parameter image code value with no quantitative meaning, used to represent a physical quantity thematicClassification value in physical units of the quantity being measured physicalMeasurement datatype of element or entity MD_DatatypeCode descriptor of a set of objects that share the same attributes, operations, methods, relationships, and behavior class descriptor of a set of objects that share the same attributes, operations, methods, relationships, and behavior codelist data type whose instances form a list of named literal values, not extendable enumeration permissible value for a codelist or enumeration codelistElement class that cannot be directly instantiated abstractClass class that is composed of classes it is connected to by an aggregate relationship aggregateClass subclass that may be substituted for its superclass specifiedClass class with few or no operations whose primary purpose is to hold the abstract state of another class for transmittal, storage, encoding or persistent storage datatypeClass named set of operations that characterize the behavior of an element interfaceClass class describing a selection of one of the specified types unionClass class whose instances are classes metaClass class used for specification of a domain of instances (objects), together with the operations applicable to the objects. A type may have attributes and associations typeClass free text field characterString numerical field integer semantic relationship between two classes that involves connections among their instances association name of the dimension MD_DimensionNameTypeCode ordinate (y) axis row abscissa (x) axis column vertical (z) axis vertical along the direction of motion of the scan point track perpendicular to the direction of motion of the scan point crossTrack scan line of a sensor line element along a scan line sample duration time name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset MD_GeometricObjectTypeCode set of geometric primitives such that their boundaries can be represented as a union of other primitives complex connected set of curves, solids or surfaces composite bounded, 1-dimensional geometric primitive, representing the continuous image of a line curve zero-dimensional geometric primitive, representing a position but not having an extent point bounded, connected 3-dimensional geometric primitive, representing the continuous image of a region of space solid bounded, connected 2-dimensional geometric primitive, representing the continuous image of a region of a plane surface code which indicates conditions which may affect the image MD_ImagingConditionCode portion of the image is blurred blurredImage portion of the image is partially obscured by cloud cover cloud acute angle between the plane of the ecliptic (the plane of the Earth s orbit) and the plane of the celestial equator degradingObliquity portion of the image is partially obscured by fog fog portion of the image is partially obscured by heavy smoke or dust heavySmokeOrDust image was taken at night night image was taken during rainfall rain image was taken during semi-dark conditions -- twilight conditions semiDarkness portion of the image is obscured by shadow shadow portion of the image is obscured by snow snow the absence of collection data of a given point or area caused by the relative location of topographic features which obstruct the collection path between the collector(s) and the subject(s) of interest terrainMasking methods used to group similar keywords MD_KeywordTypeCode keyword identifies a branch of instruction or specialized learning discipline keyword identifies a location place keyword identifies the layer(s) of any deposited substance stratum keyword identifies a time period related to the dataset temporal keyword identifies a particular subject or topic theme frequency with which modifications and deletions are made to the data after it is first produced MD_MaintenanceFrequencyCode data is repeatedly and frequently updated continual data is updated each day daily data is updated on a weekly basis weekly data is updated every two weeks fortnightly data is updated each month monthly data is updated every three months quartely data is updated twice each year biannually data is updated every year annually data is updated as deemed necessary asNeeded data is updated in intervals that are uneven in duration irregular there are no plans to update the data notPlanned frequency of maintenance for the data is not known unknwon method used to write to the medium MD_MediumFormatCode CoPy In / Out (UNIX file format and command) cpio Tape ARchive tar high sierra file system highSierra information processing volume and file structure of CD-ROM iso9660 rock ridge interchange protocol (UNIX) iso9660RockRidge hierarchical file system (Macintosh) iso9660AppleHFS name of the medium MD_MediumNameCode read-only optical disk cdRom digital versatile disk dvd digital versatile disk, read only dvdRom 3,5 inch magnetic disk 3halfInchFloppy 5,25 inch magnetic disk 5quarterInchFloppy 7 track magnetic tape 7trackTape 9 track magnetic tape 9trackType 3480 cartridge tape drive 3480Cartridge 3490 cartridge tape drive 3490Cartridge 3580 cartridge tape drive 3580Cartridge 4 millimetre magnetic tape 4mmCartridgeTape 8 millimetre magnetic tape 8mmCartridgeTape 0,25 inch magnetic tape 1quarterInchCartridgeTape half inch cartridge streaming tape drive digitalLinearTape direct computer linkage onLine linkage through a satellite communication system satellite communication through a telephone network telephoneLink pamphlet or leaflet giving descriptive information hardcopy obligation of the element or entity MD_ObligationCode element is always required mandatory element is not required optional element is required when a specific condition is met conditional point in a pixel corresponding to the Earth location of the pixel MD_PixelOrientationCode point halfway between the lower left and the upper right of the pixel center 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 lowerLeft next corner counterclockwise from the lower left lowerRight next corner counterclockwise from the lower right upperRight next corner counterclockwise from the upper right upperLeft status of the dataset or progress of a review MD_ProgressCode production of the data has been completed completed data has been stored in an offline storage facility historicalArchive data is no longer relevant obsolete data is continually being updated onGoing fixed date has been established upon or by which the data will be created or updated planned data needs to be generated or updated required data is currently in the process of being created underDevelopment limitation(s) placed upon the access or use of the data MD_RestrictionCode exclusive right to the publication, production, or sale of the rights to a literary, dramatic, musical, or artistic work, or to the use of a commercial print or label, granted by law for a specified period of time to an author, composer, artist, distributor copyright government has granted exclusive right to make, sell, use or license an invention or discovery patent produced or sold information awaiting a patent patentPending a name, symbol, or other device identifying a product, officially registered and legally restricted to the use of the owner or manufacturer trademark formal permission to do something license rights to financial benefit from and control of distribution of non-tangible property that is a result of creativity intellectualPropertyRights withheld from general circulation or disclosure restricted limitation not listed otherRestrictions class of information to which the referencing entity applies MD_ScopeCode information applies to the attribute class attribute information applies to the characteristic of a feature attributeType information applies to the collection hardware class collectionHardware information applies to the collection session collectionSession information applies to the dataset dataset information applies to the series series information applies to non-geographic data nonGeographicDataset information applies to a dimension group dimensionGroup information applies to a feature feature information applies to a feature type featureType information applies to a property type propertyType information applies to a field session fieldSession information applies to a computer program or routine software information applies to a capability which a service provider entity makes available to a service user entity through a set of interfaces that define a behaviour, such as a use case service information applies to a copy or imitation of an existing or hypothetical object model information applies to a tile, a spatial subset of geographic data tile method used to represent geographic information in the dataset MD_SpatialRepresentationTypeCode vector data is used to represent geographic data vector grid data is used to represent geographic data grid textual or tabular data is used to represent geographic data textTable triangulated irregular network tin three-dimensional view formed by the intersecting homologous rays of an overlapping pair of images stereoModel scene from a video recording video 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. MD_TopicCategoryCode rearing of animals and/or cultivation of plants. Examples: agriculture, irrigation, aquaculture, plantations, herding, pests and diseases affecting crops and livestock farming flora and/or fauna in natural environment. Examples: wildlife, vegetation, biological sciences, ecology, wilderness, sealife, wetlands, habitat biota legal land descriptions. Examples: political and administrative boundaries boundaries processes and phenomena of the atmosphere. Examples: cloud cover, weather, climate, atmospheric conditions, climate change, precipitation climatologyMeteorologyAtmosphere 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 economy height above or below sea level. Examples: altitude, bathymetry, digital elevation models, slope, derived products elevation environmental resources, protection and conservation. Examples: environmental pollution, waste storage and treatment, environmental impact assessment, monitoring environmental risk, nature reserves, landscape environment 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 geoscientificInformation health, health services, human ecology, and safety. Examples: disease and illness, factors affecting health, hygiene, substance abuse, mental and physical health, health services health base maps. Examples: land cover, topographic maps, imagery, unclassified images, annotations imageryBaseMapsEarthCover military bases, structures, activities. Examples: barracks, training grounds, military transportation, information collection intelligenceMilitary inland water features, drainage systems and their characteristics. Examples: rivers and glaciers, salt lakes, water utilization plans, dams, currents, floods, water quality, hydrographic charts inlandWaters positional information and services. Examples: addresses, geodetic networks, control points, postal zones and services, place names location features and characteristics of salt water bodies (excluding inland waters). Examples: tides, tidal waves, coastal information, reefs oceans information used for appropriate actions for future use of the land. Examples: land use maps, zoning maps, cadastral surveys, land ownership planningCadastre 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 society man-made construction. Examples: buildings, museums, churches, factories, housing, monuments, shops, towers structure 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 transportation energy, water and waste systems and communications infrastructure and services. Examples: 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 utilitiesCommunication degree of complexity of the spatial relationships MD_TopologyLevelCode geometry objects without any additional structure which describes topology geometryOnly 1-dimensional topological complex -- commonly called chain-node topology topology1D 1-dimensional topological complex that is planar. (A planar graph is a graph that can be drawn in a plane in such a way that no two edges intersect except at a vertex.) planarGraph 2-dimensional topological complex that is planar. (A 2-dimensional topological complex is commonly called full topology in a cartographic 2D environment.) fullPlanarGraph 1-dimensional topological complex that is isomorphic to a subset of a surface. (A geometric complex is isomorphic to a topological complex if their elements are in a one-to-one, dimensional-and boundry-preserving correspondence to one another.) surfaceGraph 2-dimensional topological complex that is isomorphic to a subset of a surface fullSurfaceGraph 3-dimensional topological complex. (A topological complex is a collection of topological primitives that are closed under the boundary operations.) topology3D complete coverage of a 3D Euclidean coordinate space fullTopology3D topological complex without any specified geometric realisation abstract Extension of MD_ScopeCode for the needs of GMX application schemas and in the context of a transfer MX_ScopeCode information applies to the attribute class attribute information applies to the characteristic of a feature attributeType information applies to the collection hardware class collectionHardware information applies to the collection session collectionSession information applies to the dataset dataset information applies to the series series information applies to non-geographic data nonGeographicDataset information applies to a dimension group dimensionGroup information applies to a feature feature information applies to a feature type featureType information applies to a property type propertyType information applies to a field session fieldSession information applies to a computer program or routine software information applies to a capability which a service provider entity makes available to a service user entity through a set of interfaces that define a behaviour, such as a use case service information applies to a copy or imitation of an existing or hypothetical object model information applies to a tile, a spatial subset of geographic data tile The referencing entity applies to a transfer aggregate which was originally identified as an initiative (DS_Initiative) initiative The referencing entity applies to a transfer aggregate which was originally identified as a stereo mate (DS_StereoMate) stereomate The referencing entity applies to a transfer aggregate which was originally identified as a sensor (DS_Sensor) sensor The referencing entity applies to a transfer aggregate which was originally identified as a platform series (DS_PlatformSeries) platformSeries The referencing entity applies to a transfer aggregate which was originally identified as a sensor series (DS_SensorSeries) sensorSeries The referencing entity applies to a transfer aggregate which was originally identified as a production series (DS_ProductionSeries) productionSeries The referencing entity applies to a transfer aggregate which has no existence outside of the transfer context transferAggregate The referencing entity applies to a transfer aggregate which has an existence outside of the transfer context, but which does not pertains to a specific aggregate type. otherAggregate pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/PaxHeaders.23451/c0000644000000000000000000000007413114323025026731 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/crs/0000755000175000001440000000000013114323025030315 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/crs/PaxHeaders.2340000644000000000000000000000007413114323025027130 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/crs/ML_gmxCrs.xml0000644000175000001440000001631713114323025032702 0ustar00kalxasusers00000000000000 ML_gmxCrs CRS catalogue for description of gmx metadata dataset Catalogue des paramètres géodésiques pour la description de jeux de métadonnées conformes aux schémas gmx GMX (and imported) namespace 0.0 2005-03-29 English UTF 8 French France UTF 8 4326 WGS84G World Geodetic System 1984 World not known 4326 WGS84G WGS 1984 Monde inconnu 6422 ellipsoidal2Ddeg 9901 Geodetic latitude Lat North 9902 Geodetic longitude Lon East 6326 World Geodetic System 1984 not known 7030 WGS 84 6378137 298.2572 8901 Greenwich 0 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/crs/PaxHeaders.2340000644000000000000000000000007413114323025027130 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/crs/gmxCrs.xml0000644000175000001440000003333713114323025032313 0ustar00kalxasusers00000000000000 gmxCrs CRS parameters dictionary GMX (and imported) namespace 0.0 2005-03-18 4326 WGS84G World Geodetic System 1984 World: Afghanistan, Albania, Algeria, American Samoa, Andorra, Angola, Anguilla, Antarctica, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belgium, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bosnia and Herzegowina, Botswana, Bouvet Island, Brazil, British Indian Ocean Territory, British Virgin Islands, Brunei Darussalam, Bulgaria, Burkina Faso, Burundi, Cambodia, Cameroon, Canada, Cape Verde, Cayman Islands, Central African Republic, Chad, Chile, China, Christmas Island, Cocos (Keeling) Islands, Comoros, Congo, Cook Islands, Costa Rica, Côte d'Ivoire (Ivory Coast), Croatia, Cuba, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, East Timor, Ecuador, Egypt, El Salvador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Falkland Islands (Malvinas), Faroe Islands, Fiji, Finland, France, French Guiana, French Polynesia, French Southern Territories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guam, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Heard Island and McDonald Islands, Holy See (Vatican City State), Honduras, China - Hong Kong, Hungary, Iceland, India, Indonesia, Islamic Republic of Iran, Iraq, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kazakstan, Kenya, Kiribati, Democratic People's Republic of Korea (North Korea), Republic of Korea (South Korea), Kuwait, Kyrgyzstan, Lao People's Democratic Republic (Laos), Latvia, Lebanon, Lesotho, Liberia, Libyan Arab Jamahiriya, Liechtenstein, Lithuania, Luxembourg, China - Macau, The Former Yugoslav Republic of Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Marshall Islands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Federated States of Micronesia, Monaco, Mongolia, Montserrat, Morocco, Mozambique, Myanmar (Burma), Namibia, Nauru, Nepal, Netherlands, Netherlands Antilles, New Caledonia, New Zealand, Nicaragua, Niger, Nigeria, Niue, Norfolk Island, Northern Mariana Islands, Norway, Oman, Pakistan, Palau, Panama, Papua New Guinea (PNG), Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, Puerto Rico, Qatar, Reunion, Romania, Russian Federation, Rwanda, Saint Kitts and Nevis, Saint Lucia, Saint Vincent and the Grenadines, Samoa, San Marino, Sao Tome and Principe, Saudi Arabia, Senegal, Seychelles, Sierra Leone, Singapore, Slovakia (Slovak Republic), Slovenia, Solomon Islands, Somalia, South Africa, South Georgia and the South Sandwich Islands, Spain, Sri Lanka, Saint Helena, Saint Pierre and Miquelon, Sudan, Suriname, Svalbard and Jan Mayen, Swaziland, Sweden, Switzerland, Syrian Arab Republic, Taiwan, Tajikistan, United Republic of Tanzania, Thailand, The Democratic Republic of the Congo (Zaire), Togo, Tokelau, Tonga, Trinidad and Tobago, Tunisia, Turkey, Turkmenistan, Turks and Caicos Islands, Tuvalu, Uganda, Ukraine, United Arab Emirates (UAE), United Kingdom (UK), United States (USA), United States Minor Outlying Islands, Uruguay, Uzbekistan, Vanuatu, Venezuela, Vietnam, US Virgin Islands, Wallis and Futuna, Western Sahara, Yemen, Yugoslavia - Union of Serbia and Montenegro, Zambia, Zimbabwe. not known 32638 UTM38W84 WGS 84 / UTM zone 38N Between 42 and 48 deg East; northern hemisphere. Armenia. Azerbaijan. Djibouti. Eritrea. Ethiopia. Georgia. Islamic Republic of Iran. Iraq. Kazakstan. Kuwait. Russian Federation. Saudi Arabia. Somalia. Tukey. Yemen. not known Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: deg 6422 CS ellipsoidal2D Cartesian 2D CS. Axes: easting, northing (E,N). Orientations: east, north. UoM: m. 4400 Cs cartesian2D 9901 Geodetic latitude Lat North 9902 Geodetic longitude Lon East 9907 Northing N North 9906 Easting E east 6326 World Geodetic System 1984 not known 7030 WGS 84 6378137 298.2572 8901 Greenwich 0 16038 UTM Zone 38 N not known 0 45 0.9996 500000 0 9807 PRCM040 Transverse Mercator Transverse Mercator 2 2 8801 Latitude of natural origin 8802 Longitude of natural origin 8805 Scale factor at natural origin 8806 False Easting 8807 False Northing pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/PaxHeaders.23451/e0000644000000000000000000000007413114323025026733 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/example/0000755000175000001440000000000013114323025031161 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/example/PaxHeaders0000644000000000000000000000007413114323025027465 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/example/fr-fr.xml0000644000175000001440000000563713114323025032732 0ustar00kalxasusers00000000000000 France-France French FR UTF 8 2005-03-18 création 2006-02-03 révision french translation team auteur Résumé succint du contenu du jeu de données pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/PaxHeaders.23451/u0000644000000000000000000000007413114323025026753 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/uom/0000755000175000001440000000000013114323025030326 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/uom/PaxHeaders.2340000644000000000000000000000007413114323025027141 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/uom/ML_gmxUom.xml0000644000175000001440000001377613114323025032732 0ustar00kalxasusers00000000000000 uom units of measure dictionary compliant with SI definitions dictionnaire d'unités de mesure conforme avec les définitions du Système International (SI) GMX (and imported) namespace 0.0 2005-06-18 English UTF 8 French France UTF 8 The metre is the length of the path travelled by ligth in vaccum during a time interval of 1/299 792 458 of a second metre length m unité de longueur de référence dans le système international, correspond à la distance parcourue par la lumière dans le vide pendant 1/299 792 458 seconde metre mètre longueur Measure of angle equal to Pi/180 radians, widely used in geography degree angle 1.74532925199433E-02 Unité d'angle de référence en géographie égale à Pi/180 radians. degree degré angle Radian is an unit of angle measure. It is defined as the ratio of arc length to the radius of the circle. radian plane angle rad Le radian est une unité de mesaure angulaire définie comme le ratio entre le rayon et la longueur de l'arc. radian radian angle planaire pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/uom/PaxHeaders.2340000644000000000000000000000007413114323025027141 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/uom/gmxUom.xml0000644000175000001440000000562013114323025032327 0ustar00kalxasusers00000000000000 gmxUom units of measure dictionary compliant with SI definitions ISO/TC 211 GMX (and imported) namespace 0.0 2005-03-18 The metre is the length of the path travelled by ligth in vaccum during a time interval of 1/299 792 458 of a second metre length m Measure of angle equal to Pi/180 radians, widely used in geography degree angle 1.74532925199433E-02 Radian is an unit of angle measure. It is defined as the ratio of arc length to the radius of the circle. radian plane angle rad pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/PaxHeaders.23451/srv0000644000000000000000000000007413114323025025307 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/srv/0000755000175000001440000000000013114323025026326 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/srv/PaxHeaders.23451/service0000644000000000000000000000007413114323025026747 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/srv/serviceMetadata.xsd0000644000175000001440000002530413114323025032153 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 10-13-2006 11:14:04 ====== pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/srv/PaxHeaders.23451/service0000644000000000000000000000007413114323025026747 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/srv/serviceModel.xsd0000644000175000001440000002563513114323025031502 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 10-13-2006 11:14:04 ====== pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/srv/PaxHeaders.23451/srv.xsd0000644000000000000000000000007413114323025026716 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/srv/srv.xsd0000644000175000001440000000171413114323025027663 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 10-13-2006 11:14:05 ====== pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/PaxHeaders.23451/200704170000644000000000000000000000007413114323025024501 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/0000755000175000001440000000000013114323025025520 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/PaxHeaders.23451/ReadMe.txt0000644000000000000000000000007413114323025026454 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/ReadMe.txt0000644000175000001440000000217113114323025027417 0ustar00kalxasusers00000000000000ISO(c) ReadMe.txt ------------------------------------------------------------------------------ Geographic Information - Metadata - XML Schema Implementation This XML Schema implementation is composed of the following namespaces: - Geographic Common (GCO) extensible markup language (http://www.isotc211.org/2005/gco) - Geographic MetaData (GMD) extensible markup language (http://www.isotc211.org/2005/gmd) - Geographic Metadata XML (GMX) Schema (http://www.isotc211.org/2005/gmx) - Geographic Spatial Schema (GSS) extensible markup language (http://www.isotc211.org/2005/gss) - Geographic Spatial Referencing (GSR) extensible markup language (http://www.isotc211.org/2005/gsr) - Geographic Temporal Schema (GTS) extensible markup language (http://www.isotc211.org/2005/gts) The most current schemas are available at: http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/ XML resources related to those namespaces are also provided at this location. ------------------------------------------------------------------------------- See X\ReadMe.txt for details of lineage and modification of the package X pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/PaxHeaders.23451/gco0000644000000000000000000000007413114323025025251 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/0000755000175000001440000000000013114323025026270 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/PaxHeaders.23451/ReadMe.0000644000000000000000000000007413114323025026464 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/ReadMe.txt0000644000175000001440000000436513114323025030176 0ustar00kalxasusers00000000000000ISO(c) GCO schema ReadMe.txt ------------------------------------------------------------------------------ Geographic COmmon (GCO) extensible markup language GCO 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://www.isotc211.org/2005/gco namespace. The root document of this namespace is the file gco.xsd. The most current schemas are available at: http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/ ------------------------------------------------------------------------------- 2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group * Update of readme.txt file and schema annotations * Use of absolute schema locations of imported namespaces * Simplification of the schema location of included XML Schemas * Adoption of W3C Implementation of XLink: - schemaLocation changed to: http://www.w3.org/1999/xlink.xsd - xlink:simpleLink renamed xlink:simpleAttrs * Addition of the version attribute to the schema element. The value of this attribute is expected to be the date of the last release of the XML schemas (e.g. 2012-07-13 for this release) * Include root XML Schema document in all schema documents Validation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0) 2009-03-16 Marcellin Prudham & Nicolas Lesage * Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136) Note: ISO/TS 19139:2007 (published 2007-04-17) normatively reference ISO 19136 which was published 2007-08-23. The major change applied to ISO 19136 is the change of the namespace URI. Previous release of GCO are not compliant with ISO/TS 19139:2007 Validation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and XML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham) 2006-05-04 Marie-Pierre Escher & Nicolas Lesage * First official release of GCO * GCO XML Schema files were generated from ISO/TC 211 UML class diagrams in accordance with ISO/TS 19139:2007. The XML Schema generator is a Rational Rose Plug-in developed by IGN France (nicolas.lesage@ign.fr). pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/PaxHeaders.23451/basicTy0000644000000000000000000000007413114323025026647 xustar0030 atime=1496426292.496636216 30 ctime=1496426292.496636216 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/basicTypes.xsd0000644000175000001440000005311513114323025031123 0ustar00kalxasusers00000000000000 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://www.isotc211.org/2005/gco 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. 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. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/PaxHeaders.23451/gco.xsd0000644000000000000000000000007413114323025026616 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/gco.xsd0000644000175000001440000000220713114323025027561 0ustar00kalxasusers00000000000000 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://www.isotc211.org/2005/gco namespace. The root document of this namespace is the file gco.xsd. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/PaxHeaders.23451/gcoBase0000644000000000000000000000007413114323025026614 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/gcoBase.xsd0000644000175000001440000001004213114323025030350 0ustar00kalxasusers00000000000000 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://www.isotc211.org/2005/gco namespace. The root document of this namespace is the file gco.xsd. This gcoBase.xsd schema provides: 1. tools to handle specific objects like "code lists" and "record"; 2. Some XML types representing that do not follow the general encoding rules. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/PaxHeaders.23451/gmd0000644000000000000000000000007413114323025025250 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/0000755000175000001440000000000013114323025026267 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/ReadMe.0000644000000000000000000000007413114323025026463 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/ReadMe.txt0000644000175000001440000000413213114323025030165 0ustar00kalxasusers00000000000000ISO(c) GMD schema ReadMe.txt ------------------------------------------------------------------------------ Geographic MetaData (GMD) extensible markup language GMD is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. The most current schemas are available at: http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/ ------------------------------------------------------------------------------- 2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group * Update of readme.txt file and schema annotations * Use of absolute schema locations of imported namespaces * Simplification of the schema location of included XML Schemas * Addition of the version attribute to the schema element. The value of this attribute is expected to be the date of the last release of the XML schemas (e.g. 2012-07-13 for this release) * Include root XML Schema document in all schema documents Validation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0) 2009-03-16 Marcellin Prudham & Nicolas Lesage * Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136) Note: ISO/TS 19139:2007 (published 2007-04-17) normatively reference ISO 19136 which was published 2007-08-23. The major change applied to ISO 19136 is the change of the namespace URI. Previous release of GMD are not compliant with ISO/TS 19139:2007 Validation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and XML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham) 2006-05-04 Marie-Pierre Escher & Nicolas Lesage * First official release of GMD * GMD XML Schema files were generated from ISO/TC 211 UML class diagrams in accordance with ISO/TS 19139:2007. The XML Schema generator is a Rational Rose Plug-in developed by IGN France (http://www.ign.fr). pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/applica0000644000000000000000000000007413114323025026661 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/applicationSchema.xsd0000644000175000001440000000611113114323025032432 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This applicationSchema.xsd schema implements the UML conceptual schema defined in A.2.12 of ISO 19115:2003. It contains the implementation of the class MD_ApplicationSchemaInformation. Information about the application schema used to build the dataset pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/citatio0000644000000000000000000000007413114323025026704 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/citation.xsd0000644000175000001440000003616613114323025030635 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This citation.xsd schema implements the UML conceptual schema defined in A.3.2 of ISO 19115:2003. It contains the implementation of the following classes: CI_ResponsibleParty, CI_Citation, CI_Address, CI_OnlineResource, CI_Contact, CI_Telephone, URL, CI_Date, CI_Series, CI_RoleCode, CI_PresentationFormCode, CI_OnLineFunctionCode, CI_DateTypeCode. Identification of, and means of communication with, person(s) and organisations associated with the dataset Standardized resource reference Location of the responsible individual or organisation Information about online sources from which the dataset, specification, or community profile name and extended metadata elements can be obtained. Information required enabling contact with the responsible person and/or organisation Telephone numbers for contacting the responsible individual or organisation pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/constra0000644000000000000000000000007413114323025026721 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/constraints.xsd0000644000175000001440000001456013114323025031364 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This constraints.xsd schema implements the UML conceptual schema defined in A.2.3 of ISO 19115:2003. It contains the implementation of the following classes: MD_Constraints, MD_LegalConstraints, MD_SecurityConstraints, MD_ClassificationCode, MD_RestrictionCode. Restrictions on the access and use of a dataset or metadata Restrictions and legal prerequisites for accessing and using the dataset. Handling restrictions imposed on the dataset because of national security, privacy, or other concerns pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/content0000644000000000000000000000007413114323025026722 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/content.xsd0000644000175000001440000002616413114323025030472 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This content.xsd schema implements the UML conceptual schema defined in ISO 19115:2003, A.2.8. It contains the implementation of the following classes: MD_FeatureCatalogueDescription, MD_CoverageDescription, MD_ImageDescription, MD_ContentInformation, MD_RangeDimension, MD_Band, MD_CoverageContentTypeCode, MD_ImagingConditionCode. Information identifing the feature catalogue Information about the domain of the raster cell Information about an image's suitability for use Set of adjacent wavelengths in the electro-magnetic spectrum with a common characteristic, such as the visible band pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/dataQua0000644000000000000000000000007413114323025026630 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/dataQuality.xsd0000644000175000001440000007425513114323025031306 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This dataQuality.xsd schema implements the UML conceptual schema defined in A.2.4 of ISO 19115:2003. It contains the implementation of the following classes: LI_ProcessStep, LI_Source, LI_Lineage, DQ_ConformanceResult, DQ_QuantitativeResult, DQ_Result, DQ_TemporalValidity, DQ_AccuracyOfATimeMeasurement, DQ_QuantitativeAttributeAccuracy, DQ_NonQuantitativeAttributeAccuracy, DQ_ThematicClassificationCorrectness, DQ_RelativeInternalPositionalAccuracy, DQ_GriddedDataPositionalAccuracy, DQ_AbsoluteExternalPositionalAccuracy, DQ_TopologicalConsistency, DQ_FormatConsistency, DQ_DomainConsistency, DQ_ConceptualConsistency, DQ_CompletenessOmission, DQ_CompletenessCommission, DQ_TemporalAccuracy, DQ_ThematicAccuracy, DQ_PositionalAccuracy, DQ_LogicalConsistency, DQ_Completeness, DQ_Element, DQ_DataQuality. quantitative_result from Quality Procedures - - renamed to remove implied use limitiation. Quantitative_conformance_measure from Quality Procedures. - - Renamed to remove implied use limitation - - OCL - -- result is type specified by valueDomain - result.tupleType = valueDomain pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/distrib0000644000000000000000000000007413114323025026710 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/distribution.xsd0000644000175000001440000002665513114323025031544 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This distribution.xsd schema implements the UML conceptual schema defined in A.2.10 of ISO 19115:2003. It contains the implementation of the following classes: MD_Medium, MD_DigitalTransferOptions, MD_StandardOrderProcess, MD_Distributor, MD_Distribution, MD_Format, MD_MediumFormatCode, MD_MediumNameCode. Information about the media on which the data can be distributed Technical means and media by which a dataset is obtained from the distributor Common ways in which the dataset may be obtained or received, and related instructions and fee information Information about the distributor Information about the distributor of and options for obtaining the dataset Description of the form of the data to be distributed pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/extent.0000644000000000000000000000007413114323025026635 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/extent.xsd0000644000175000001440000002570013114323025030322 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This extent.xsd schema implements the UML conceptual schema defined in A.3.1 of ISO 19115:2003 and the associated corrigendum. It contains the implementation of the following classes: EX_TemporalExtent, EX_VerticalExtent, EX_BoundingPolygon, EX_Extent, EX_GeographicExtent, EX_GeographicBoundingBox, EX_SpatialTemporalExtent, EX_GeographicDescription. Time period covered by the content of the dataset Vertical domain of dataset Boundary enclosing the dataset expressed as the closed set of (x,y) coordinates of the polygon (last point replicates first point) Information about spatial, vertical, and temporal extent Geographic area of the dataset Geographic area of the entire dataset referenced to WGS 84 Extent with respect to date and time pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/freeTex0000644000000000000000000000007413114323025026652 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/freeText.xsd0000644000175000001440000001571513114323025030606 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This freeText.xsd schema implements cultural and linguistic adaptability extensions defined in 7.3 of ISO/TS 19139:2007. This extension essentially formalizes the free text concept described in Annex J of ISO 19115:2003. For this reason, and in order to simplify the organization of overall geographic metadata XML schema, this schema has been included as part of the gmd namespace instead of the gmx namespace. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/gmd.xsd0000644000000000000000000000007413114323025026614 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/gmd.xsd0000644000175000001440000000222213114323025027554 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/identif0000644000000000000000000000007413114323025026672 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/identification.xsd0000644000175000001440000004637413114323025032016 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This identification.xsd schema implements the UML conceptual schema defined in A.2.2 of ISO 19115:2003. It contains the implementation of the following classes: MD_Identification, MD_BrowseGraphic, MD_DataIdentification, MD_ServiceIdentification, MD_RepresentativeFraction, MD_Usage, MD_Keywords, DS_Association, MD_AggregateInformation, MD_CharacterSetCode, MD_SpatialRepresentationTypeCode, MD_TopicCategoryCode, MD_ProgressCode, MD_KeywordTypeCode, DS_AssociationTypeCode, DS_InitiativeTypeCode, MD_ResolutionType. Basic information about data Graphic that provides an illustration of the dataset (should include a legend for the graphic) See 19119 for further info Brief description of ways in which the dataset is currently used. Keywords, their type and reference source Encapsulates the dataset aggregation information High-level geospatial data thematic classification to assist in the grouping and search of available geospatial datasets pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/mainten0000644000000000000000000000007413114323025026703 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/maintenance.xsd0000644000175000001440000001346413114323025031301 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This maintenance.xsd schema implements the UML conceptual schema defined in A.2.5 of ISO 19115:2003. It contains the implementation of the following classes: MD_MaintenanceInformation, MD_MaintenanceFrequencyCode, MD_ScopeCode, MD_ScopeDescription. Information about the scope and frequency of updating Description of the class of information covered by the information pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/metadat0000644000000000000000000000007413114323025026667 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/metadataApplication.xsd0000644000175000001440000002211113114323025032750 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This metadataApplication.xsd schema implements the UML conceptual schema defined in A.2.12 of ISO 19115:2003. It contains the implementation of the class: MD_ApplicationSchemaInformation. Identifiable collection of datasets Identifiable collection of data pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/metadat0000644000000000000000000000007413114323025026667 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/metadataEntity.xsd0000644000175000001440000001331213114323025031764 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This metadataEntity.xsd schema implements the UML conceptual schema defined in A.2.1 of ISO 19115:2003. It contains the implementation of the class MD_Metadata. Information about the metadata pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/metadat0000644000000000000000000000007413114323025026667 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/metadataExtension.xsd0000644000175000001440000001436213114323025032472 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This metadataExtension.xsd schema implements the UML conceptual schema defined in A.2.11 of ISO 19115:2003. It contains the implementation of the following classes: MD_ExtendedElementInformation, MD_MetadataExtensionInformation, MD_ObligationCode, MD_DatatypeCode. New metadata element, not found in ISO 19115, which is required to describe geographic data Information describing metadata extensions. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/portray0000644000000000000000000000007413114323025026750 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/portrayalCatalogue.xsd0000644000175000001440000000507513114323025032660 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This portrayalCatalogue.xsd schema implements the UML conceptual schema defined in A.2.9 of ISO 19115:2003. It contains the implementation of the class MD_PortrayalCatalogueReference. Information identifing the portrayal catalogue used pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/referen0000644000000000000000000000007413114323025026676 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/referenceSystem.xsd0000644000175000001440000001306013114323025032152 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This referenceSystem.xsd schema implements the UML conceptual schema defined in A.2.7 of ISO 19115:2003 and ISO 19115:2003/Cor. 1:2006. It contains the implementation of the following classes: RS_Identifier, MD_ReferenceSystem, MD_Identifier and RS_Reference System. Description of the spatial and temporal reference systems used in the dataset pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/PaxHeaders.23451/spatial0000644000000000000000000000025313114323025026704 xustar00111 path=pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/spatialRepresentation.xsd 30 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/spatialRepresentation.xs0000644000175000001440000003302013114323025033221 0ustar00kalxasusers00000000000000 Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This portrayalCatalogue.xsd schema implements the UML conceptual schema defined in A.2.6 of ISO 19115:2003. It contains the implementation of the following classes: MD_GridSpatialRepresentation, MD_VectorSpatialRepresentation, MD_SpatialRepresentation, MD_Georeferenceable, MD_Dimension, MD_Georectified, MD_GeometricObjects, MD_TopologyLevelCode, MD_GeometricObjectTypeCode, MD_CellGeometryCode, MD_DimensionNameTypeCode, MD_PixelOrientationCode. Types and numbers of raster spatial objects in the dataset Information about the vector spatial objects in the dataset Digital mechanism used to represent spatial information pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/PaxHeaders.23451/gmx0000644000000000000000000000007413114323025025274 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/0000755000175000001440000000000013114323025026313 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/PaxHeaders.23451/ReadMe.0000644000000000000000000000007413114323025026507 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/ReadMe.txt0000644000175000001440000000434713114323025030221 0ustar00kalxasusers00000000000000ISO(c) GMX schema ReadMe.txt ------------------------------------------------------------------------------ Geographic Metadata XML (GMX) Schema GMX is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. The most current schemas are available at: http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/ ------------------------------------------------------------------------------- 2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group * Update of readme.txt file and schema annotations * Use of absolute schema locations of imported namespaces * Simplification of the schema location of included XML Schemas * Adoption of W3C Implementation of XLink: - schemaLocation changed to: http://www.w3.org/1999/xlink.xsd - xlink:simpleLink renamed xlink:simpleAttrs * Addition of the version attribute to the schema element. The value of this attribute is expected to be the date of the last release of the XML schemas (e.g. 2012-07-13 for this release) * Include root XML Schema document in all schema documents Validation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0) 2009-03-16 Marcellin Prudham & Nicolas Lesage * Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136) Note: ISO/TS 19139:2007 (published 2007-04-17) normatively reference ISO 19136 which was published 2007-08-23. The major change applied to ISO 19136 is the change of the namespace URI. Previous release of GMX are not compliant with ISO/TS 19139:2007 Validation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and XML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham) 2006-05-04 Marie-Pierre Escher & Nicolas Lesage * First official release of GMX * GMX XML Schema files were generated from ISO/TC 211 UML class diagrams in accordance with ISO/TS 19139:2007. The XML Schema generator is a Rational Rose Plug-in developed by IGN France (nicolas.lesage@ign.fr). pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/PaxHeaders.23451/catalog0000644000000000000000000000007413114323025026706 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/catalogues.xsd0000644000175000001440000001576613114323025031201 0ustar00kalxasusers00000000000000 Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This catalogues.xsd schema implements the UML conceptual schema defined in 7.4.4.1 of ISO/TS 19139:2007. It contains the implementation of CT_Catalogue, CT_CodelistCatalogue, CT_UomCatalogue and CT_CrsCatalogue. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/PaxHeaders.23451/codelis0000644000000000000000000000007413114323025026716 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/codelistItem.xsd0000644000175000001440000002203113114323025031456 0ustar00kalxasusers00000000000000 Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This codelistItem.xsd schema implements the UML conceptual schema defined in 7.4.4.4 of ISO/TS 19139:2007. It contains the implementation of CT_Codelist and CT_CodelistValue. Constraints: - 1) metadataProperty.card = 0 - 2) dictionaryEntry.card = 0 Constraint: codeEntry.type = ML_CodeListDefinition XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/PaxHeaders.23451/crsItem0000644000000000000000000000007413114323025026702 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/crsItem.xsd0000644000175000001440000014130613114323025030446 0ustar00kalxasusers00000000000000 Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This crsItem.xsd schema implements the UML conceptual schema defined in 7.4.4.3 of ISO/TS 19139:2007. It contains the implementation of CT_CRS, CT_CoordinateSystem, CT_CoordinateSystemAxis, CT_Datum, CT_Ellipsoid, CT_PrimeMeridian, CT_Operation, CT_OperationMethod and CT_OperationParameters. XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/PaxHeaders.23451/extende0000644000000000000000000000007413114323025026730 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/extendedTypes.xsd0000644000175000001440000001075713114323025031672 0ustar00kalxasusers00000000000000 Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This extendedTypes.xsd schema contains the XML definitions of FileName, Anchor and MimeFileType classes. These classes are fully described in 7.2 of ISO/TS 19139:2007. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/PaxHeaders.23451/gmx.xsd0000644000000000000000000000007413114323025026664 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/gmx.xsd0000644000175000001440000000216713114323025027634 0ustar00kalxasusers00000000000000 Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/PaxHeaders.23451/gmxUsag0000644000000000000000000000007413114323025026707 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/gmxUsage.xsd0000644000175000001440000001610013114323025030611 0ustar00kalxasusers00000000000000 Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This gmxUsage.xsd schema implements the UML conceptual schema defined in 7.4.1 of ISO/TS 19139:2007. It contains the implementation of the following classes: MX_Dataset, MX_Aggregate, MX_DataFile and MX_ScopeCode. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/PaxHeaders.23451/uomItem0000644000000000000000000000007413114323025026713 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/uomItem.xsd0000644000175000001440000002134713114323025030461 0ustar00kalxasusers00000000000000 Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This uomItem.xsd schema implements the UML conceptual schema defined in 7.4.4.2 of ISO/TS 19139:2007. It contains the implementation of the UnitDefinition class. XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/PaxHeaders.23451/gsr0000644000000000000000000000007413114323025025274 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gsr/0000755000175000001440000000000013114323025026313 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gsr/PaxHeaders.23451/ReadMe.0000644000000000000000000000007413114323025026507 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gsr/ReadMe.txt0000644000175000001440000000414513114323025030215 0ustar00kalxasusers00000000000000ISO(c) GSR schema ReadMe.txt ------------------------------------------------------------------------------ Geographic Spatial Referencing (GSR) extensible markup language GSR is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GSR includes all the definitions of http://www.isotc211.org/2005/gsr namespace. The root document of this namespace is the file gsr.xsd. The most current schemas are available at: http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/ ------------------------------------------------------------------------------- 2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group * Update of readme.txt file and schema annotations * Use of absolute schema locations of imported namespaces * Simplification of the schema location of included XML Schemas * Addition of the version attribute to the schema element. The value of this attribute is expected to be the date of the last release of the XML schemas (e.g. 2012-07-13 for this release) * Include root XML Schema document in all schema documents Validation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0) 2009-03-16 Marcellin Prudham & Nicolas Lesage * Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136) Note: ISO/TS 19139:2007 (published 2007-04-17) normatively reference ISO 19136 which was published 2007-08-23. The major change applied to ISO 19136 is the change of the namespace URI. Previous release of GSR are not compliant with ISO/TS 19139:2007 Validation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and XML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham) 2006-05-04 Marie-Pierre Escher & Nicolas Lesage * First official release of GSR * GSR XML Schema files were generated from ISO/TC 211 UML class diagrams in accordance with ISO/TS 19139:2007. The XML Schema generator is a Rational Rose Plug-in developed by IGN France (http://www.ign.fr). pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gsr/PaxHeaders.23451/gsr.xsd0000644000000000000000000000007413114323025026664 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gsr/gsr.xsd0000644000175000001440000000223413114323025027627 0ustar00kalxasusers00000000000000 Geographic Spatial Referencing (GSR) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GSR includes all the definitions of http://www.isotc211.org/2005/gsr namespace. The root document of this namespace is the file gsr.xsd. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gsr/PaxHeaders.23451/spatial0000644000000000000000000000007413114323025026731 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gsr/spatialReferencing.xsd0000644000175000001440000000413413114323025032642 0ustar00kalxasusers00000000000000 Geographic Spatial Referencing (GSR) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GSR includes all the definitions of http://www.isotc211.org/2005/gsr namespace. The root document of this namespace is the file gsr.xsd. This spatialReferencing.xsd schema contains the implementation of SC_CRS. The encoding of this class is mapped to an ISO 19136 XML type. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/PaxHeaders.23451/gss0000644000000000000000000000007413114323025025275 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gss/0000755000175000001440000000000013114323025026314 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gss/PaxHeaders.23451/ReadMe.0000644000000000000000000000007413114323025026510 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gss/ReadMe.txt0000644000175000001440000000414213114323025030213 0ustar00kalxasusers00000000000000ISO(c) GSS schema ReadMe.txt ------------------------------------------------------------------------------ Geographic Spatial Schema (GSS) extensible markup language GSS is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GSS includes all the definitions of http://www.isotc211.org/2005/gss namespace. The root document of this namespace is the file gss.xsd. The most current schemas are available at: http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/ ------------------------------------------------------------------------------- 2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group * Update of readme.txt file and schema annotations * Use of absolute schema locations of imported namespaces * Simplification of the schema location of included XML Schemas * Addition of the version attribute to the schema element. The value of this attribute is expected to be the date of the last release of the XML schemas (e.g. 2012-07-13 for this release) * Include root XML Schema document in all schema documents Validation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0) 2009-03-16 Marcellin Prudham & Nicolas Lesage * Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136) Note: ISO/TS 19139:2007 (published 2007-04-17) normatively reference ISO 19136 which was published 2007-08-23. The major change applied to ISO 19136 is the change of the namespace URI. Previous release of GSS are not compliant with ISO/TS 19139:2007 Validation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and XML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham) 2006-05-04 Marie-Pierre Escher & Nicolas Lesage * First official release of GSS * GSS XML Schema files were generated from ISO/TC 211 UML class diagrams in accordance with ISO/TS 19139:2007. The XML Schema generator is a Rational Rose Plug-in developed by IGN France (nicolas.lesage@ign.fr). pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gss/PaxHeaders.23451/geometr0000644000000000000000000000007413114323025026737 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gss/geometry.xsd0000644000175000001440000000516213114323025030673 0ustar00kalxasusers00000000000000 Geographic Spatial Schema (GSS) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GSS includes all the definitions of http://www.isotc211.org/2005/gss namespace. The root document of this namespace is the file gss.xsd. This geometry.xsd schema contains the implementation of GM_Object and GM_Point. The encoding of these classes is mapped to ISO 19136 geometric types. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gss/PaxHeaders.23451/gss.xsd0000644000000000000000000000007413114323025026666 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gss/gss.xsd0000644000175000001440000000221613114323025027631 0ustar00kalxasusers00000000000000 Geographic Spatial Schema (GSS) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GSS includes all the definitions of http://www.isotc211.org/2005/gss namespace. The root document of this namespace is the file gss.xsd. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/PaxHeaders.23451/gts0000644000000000000000000000007413114323025025276 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gts/0000755000175000001440000000000013114323025026315 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gts/PaxHeaders.23451/ReadMe.0000644000000000000000000000007413114323025026511 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gts/ReadMe.txt0000644000175000001440000000413713114323025030220 0ustar00kalxasusers00000000000000ISO(c) GTS schema ReadMe.txt ------------------------------------------------------------------------------ Geographic Temporal Schema (GTS) extensible markup language GTS is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GTS includes all the definitions of http://www.isotc211.org/2005/gts namespace. The root document of this namespace is the file gts.xsd. The most current schemas are available at: http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/ ------------------------------------------------------------------------------- 2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group * Update of readme.txt file and schema annotations * Use of absolute schema locations of imported namespaces * Simplification of the schema location of included XML Schemas * Addition of the version attribute to the schema element. The value of this attribute is expected to be the date of the last release of the XML schemas (e.g. 2012-07-13 for this release) * Include root XML Schema document in all schema documents Validation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0) 2009-03-16 Marcellin Prudham & Nicolas Lesage * Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136) Note: ISO/TS 19139:2007 (published 2007-04-17) normatively reference ISO 19136 which was published 2007-08-23. The major change applied to ISO 19136 is the change of the namespace URI. Previous release of GTS are not compliant with ISO/TS 19139:2007 Validation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and XML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham) 2006-05-04 Marie-Pierre Escher & Nicolas Lesage * First official release of GTS * GTS XML Schema files were generated from ISO/TC 211 UML class diagrams in accordance with ISO/TS 19139:2007. The XML Schema generator is a Rational Rose Plug-in developed by IGN France (http://www.ign.fr). pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gts/PaxHeaders.23451/gts.xsd0000644000000000000000000000007413114323025026670 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gts/gts.xsd0000644000175000001440000000222513114323025027633 0ustar00kalxasusers00000000000000 Geographic Temporal Schema (GTS) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GTS includes all the definitions of http://www.isotc211.org/2005/gts namespace. The root document of this namespace is the file gts.xsd. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gts/PaxHeaders.23451/tempora0000644000000000000000000000007413114323025026745 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gts/temporalObjects.xsd0000644000175000001440000000531113114323025032172 0ustar00kalxasusers00000000000000 Geographic Temporal Schema (GTS) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GTS includes all the definitions of http://www.isotc211.org/2005/gts namespace. The root document of this namespace is the file gts.xsd. The temporalObjects.xsd schema contains the XML implementation of TM_Object, TM_Primitive and TM_PeriodDuration from ISO 19108. The encoding of these classes is mapped to ISO 19136 temporal types and W3C built-in types. pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/PaxHeaders.23451/resources0000644000000000000000000000007413114323025026513 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/0000755000175000001440000000000013114323025027532 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/PaxHeaders.23451/R0000644000000000000000000000007413114323025026714 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/ReadMe.txt0000644000175000001440000000131713114323025031432 0ustar00kalxasusers00000000000000ISO(c) - ISO/TS 19139:2007 resources ------------------------------------------------------------------------------ ISO/TS 19139:2007 resources are XML Files provided with the XML Schema Implementations defined in ISO/TS 19139-2. Those resources are: - Catalogues of Codelist, Units of measure (uom) and Coordinate Reference Systems (CRS) - sample XML ------------------------------------------------------------------------------- 2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group * Update of Readme.txt file * Use of absolute schema locations * Adoption of W3C Implementation of XLink: Validation: XML Files have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0) No history... pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/PaxHeaders.23451/c0000644000000000000000000000007413114323025026735 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/0000755000175000001440000000000013114323025031340 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/PaxHeader0000644000000000000000000000026413114323025027462 xustar00120 path=pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/ML_gmxCodelists.xml 30 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/ML_gmxCod0000644000175000001440000012552013114323025033101 0ustar00kalxasusers00000000000000 ML_gmxCodelists Codelists for description of metadata datasets compliant with ISO/TC 211 19115:2003 and 19139 Listes de codes pour la description de lots de métadonnées conforme ISO TC/211 19115:2003 et 19139 GMX (and imported) namespace 0.0 2005-03-18 English UTF 8 French France UTF 8 identification of when a given event occurred CI_DateTypeCode date identifies when the resource was brought into existence creation creation date identifiant la création de la ressource creation création date identifies when the resource was issued publication publication date identifiant la publication de la ressource publication publication date identifies when the resource was examined or re-examined and imporved or amended revision revision amélioration ou amendement de la ressource revision révision identification de quand un événement s'est produit CI_DateTypeCode function performed by the resource CI_OnLineFunctionCode online instructions for transferring data from one storage device or system to another download Download transfert de la ressource d'un système à un autre download Téléchargement online information about the resource information Information description de la ressource en ligne information Information online instructions for requesting the resource from the provider offlineAccess Off line access information pour requérir la ressource offlineAccess Accès hors ligne online order process for obtening the resource order Order formulaire pour obtenir la ressource order commande en ligne online search interface for seeking out information about the resource search Search interface de recherche d'information sur la ressource search Moteur de recherche Fonctionnalité offerte par la ressource CI_OnLineFunctionCode name of the character coding standard used in the resource MD_CharacterSetCode 16-bit fixed size Universal Character Set, based on ISO/IEC 10646 ucs2 16 bits ISO/IEC 10646 ucs2 32-bit fixed size Universal Character Set, based on ISO/IEC 10646 ucs4 32 bits ISO/IEC 10646 ucs4 7-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf7 7 bits ISO/IEC 10646 utf7 8-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf8 8 bits ISO/IEC 10646 utf8 16-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf16 16 bits ISO/IEC 10646 utf16 ISO/IEC 8859-1, Information technology - 8-bit single byte coded graphic character sets - Part 1 : Latin alphabet No.1 8859part1 ISO/IEC 8859-1, alphabet latin 1 8859part1 ISO/IEC 8859-2, Information technology - 8-bit single byte coded graphic character sets - Part 2 : Latin alphabet No.2 8859part2 ISO/IEC 8859-2, alphabet latin 2 8859part2 ISO/IEC 8859-3, Information technology - 8-bit single byte coded graphic character sets - Part 3 : Latin alphabet No.3 8859part3 ISO/IEC 8859-3, alphabet latin 3 8859part3 ISO/IEC 8859-4, Information technology - 8-bit single byte coded graphic character sets - Part 4 : Latin alphabet No.4 8859part4 ISO/IEC 8859-4, alphabet latin 4 8859part4 ISO/IEC 8859-5, Information technology - 8-bit single byte coded graphic character sets - Part 5 : Latin/Cyrillic alphabet 8859part5 ISO/IEC 8859-5, alphabet latin/cyrillique 8859part5 ISO/IEC 8859-6, Information technology - 8-bit single byte coded graphic character sets - Part 6 : Latin/Arabic alphabet 8859part6 ISO/IEC 8859-6, alphabet latin/arabe 8859part6 ISO/IEC 8859-7, Information technology - 8-bit single byte coded graphic character sets - Part 7 : Latin/Greek alphabet 8859part7 ISO/IEC 8859-7, alphabet latin/grec 8859part7 ISO/IEC 8859-8, Information technology - 8-bit single byte coded graphic character sets - Part 8 : Latin/Hebrew alphabet 8859part8 ISO/IEC 8859-8, alphabet latin/hébreu 8859part8 ISO/IEC 8859-9, Information technology - 8-bit single byte coded graphic character sets - Part 9 : Latin alphabet No.5 8859part9 ISO/IEC 8859-9, alphabet latin 5 8859part9 ISO/IEC 8859-10, Information technology - 8-bit single byte coded graphic character sets - Part 10 : Latin alphabet No.6 8859part10 ISO/IEC 8859-10, alphabet latin 6 8859part10 ISO/IEC 8859-11, Information technology - 8-bit single byte coded graphic character sets - Part 11 : Latin/Thai alphabet 8859part11 ISO/IEC 8859-11, alphabet latin/Thaï 8859part11 ISO/IEC 8859-13, Information technology - 8-bit single byte coded graphic character sets - Part 13 : Latin alphabet No.7 8859part13 ISO/IEC 8859-13, alphabet latin 7 8859part13 ISO/IEC 8859-14, Information technology - 8-bit single byte coded graphic character sets - Part 14 : Latin alphabet No.8 (Celtic) 8859part14 ISO/IEC 8859-14, alphabet latin 8 (celtique) 8859part14 ISO/IEC 8859-15, Information technology - 8-bit single byte coded graphic character sets - Part 15 : Latin alphabet No.9 8859part15 ISO/IEC 8859-15, alphabet latin 9 8859part15 ISO/IEC 8859-16, Information technology - 8-bit single byte coded graphic character sets - Part 16 : Latin alphabet No.10 8859part16 ISO/IEC 8859-16, alphabet latin 10 8859part16 japanese code set used for electronic transmission jis Japonais jis japanese code set used on MS-DOS machines shiftJIS Japonais pour MS-DOS shiftJIS japanese code set used on UNIX based machines eucJP Japonais pour UNIX eucJP United States ASCII code set (ISO 646 US) usAscii ISO 646 US usAscii IBM mainframe code set ebcdic IBM ebcdic Korean code set eucKR Koréen eucKR traditional Chinese code set used in Taiwan, Hong Kong of China and other areas big5 Chinois traditionel (Taiwan, Hong Kong, Chine) big5 simplified Chinese code set GB2312 Chinois simplifié GB2312 Jeu de caractères MD_CharacterSetCode class of information to which the referencing entity applies MD_ScopeCode Information applies to the attribute class attribute Attribute Information qui s’applique à une classe d’attributs attribute Attribut Information applies to the characteristic of a feature attributeType Attribute type Information qui s’applique à la caractéristique d’une entité géographique attributeType Type d’attribut Information applies to the dataset dataset Dataset Information qui s’applique au jeu de données dataset Jeu de données Information applies to the dataset dataset 005 Information applies to the series series Series Information qui s’applique à une série series Série Information applies to non-geographic data nonGeographicDataset Non geographic dataset Information qui s’applique à des données non-géographiques nonGeographicDataset Jeu de données non géographiques Information applies to a feature feature Feature Information qui s’applique à un élément (entité géographique) feature Elément Information applies to a feature type featureType Feature type Information qui s’applique à un type d’élément featureType Type d’élément Information applies to a property type propertyType Property type Information qui s’applique à un type de propriété propertyType Type de propriété Information applies to a tile, a spatial subset of geographic data tile Tile Information qui s’applique à une tuile, un sous-ensemble spatial de données géographiques tile Tuile information sur l'entité sur laquelle les métadonnées s'appliquent MD_ScopeCode Language : ISO 639-2 (3 characters) LanguageCode English eng English Anglais eng Anglais French fra French Français fra Français Langue : ISO 639-2 (3 caractères) LanguageCode Country : ISO 3166-2 (2 characters) Country United Kingdom UK United Kingdom Royaume-Uni UK Royaume-Uni France FR France France FR France Pays : ISO 3166-2 (2 caractères) Country pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/PaxHeader0000644000000000000000000000026113114323025027457 xustar00117 path=pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/gmxCodelists.xml 30 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/gmxCodeli0000644000175000001440000027200513114323025033204 0ustar00kalxasusers00000000000000 gmxCodelists Codelists for description of metadata datasets compliant with ISO/TC 211 19115:2003 and 19139 GMX (and imported) namespace 0.0 2005-03-18 identification of when a given event occurred CI_DateTypeCode date identifies when the resource was brought into existence creation date identifies when the resource was issued publication date identifies when the resource was examined or re-examined and imporved or amended revision function performed by the resource CI_OnLineFunctionCode online instructions for transferring data from one storage device or system to another download online information about the resource information online instructions for requesting the resource from the provider offlineAccess online order process for obtening the resource order online search interface for seeking out information about the resource search mode in which the data is represented CI_PresentationFormCode digital representation of a primarily textual item (can contain illustrations also) documentDigital representation of a primarily textual item (can contain illustrations also) on paper, photograhic material, or other media imageDigital likeness of natural or man-made features, objects, and activities acquired through the sensing of visual or any other segment of the electromagnetic spectrum by sensors, such as thermal infrared, and high resolution radar and stored in digital format documentHardcopy likeness of natural or man-made features, objects, and activities acquired through the sensing of visual or any other segment of the electromagnetic spectrum by sensors, such as thermal infrared, and high resolution radar and reproduced on paper, photographic material, or other media for use directly by the human user imageHardcopy map represented in raster or vector form mapDigital map printed on paper, photographic material, or other media for use directly by the human user mapHardcopy multi-dimensional digital representation of a feature, process, etc. modelDigital 3-dimensional, physical model modelHardcopy vertical cross-section in digital form profileDigital vertical cross-section printed on paper, etc. profileHardcopy digital representation of facts or figures systematically displayed, especially in columns tableDigital representation of facts or figures systematically displayed, especially in columns, printed onpapers, photographic material, or other media tableHardcopy digital video recording videoDigital video recording on film videoHardcopy function performed by the responsible party CI_RoleCode party that supplies the resource resourceProvider party that accepts accountability and responsability for the data and ensures appropriate care and maintenance of the resource custodian party that owns the resource owner party who uses the resource user party who distributes the resource distributor party who created the resource originator party who can be contacted for acquiring knowledge about or acquisition of the resource pointOfContact key party responsible for gathering information and conducting research principalInvestigator party wha has processed the data in a manner such that the resource has been modified processor party who published the resource publisher party who authored the resource author type or method for evaluating an identified data quality measure DQ_EvaluationMethodTypeCode method of evaluating the quality of a dataset based on inspection of items within the dataset, where all data required is internal to the dataset being evaluated directInternal method of evaluating the quality of a dataset based on inspection of items within the dataset, where reference data external to the dataset being evaluated is required directExternal method of evaluating the quality of a dataset based on external knowledge indirect justification for the correlation of two datasets DS_AssociationTypeCode reference from one dataset to another crossReference reference to a master dataset of which this one is a part largerWorkCitation part of the same structured set of data held in a computer partOfSeamlessDatabase mapping and charting information from which the dataset content originates source part of a set of imagery that when used together, provides three-dimensional images stereoMate type of aggregation activity in which datasets are related DS_InitiativeTypeCode series of organized planned actions campaign accumulation of datasets assembled for a specific purpose collection specific performance of a function or group of functions exercise process designed to find if something is effective or valid experiment search or systematic inquiry investigation specific operation of a data collection system mission device or piece of equipment which detects or records sensor action that is part of a series of actions operation vehicle or other support base that holds a sensor platform method of doing something involving a number of steps process specific planned activity program organized undertaking, research, or development project examination or investigation study piece of work task process of testing to discover or demonstrate something trial code indicating whether grid data is point or area MD_CellGeometryCode each cell represents a point point each cell represents an area area name of the character coding standard used in the resource MD_CharacterSetCode 16-bit fixed size Universal Character Set, based on ISO/IEC 10646 ucs2 32-bit fixed size Universal Character Set, based on ISO/IEC 10646 ucs4 7-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf7 8-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf8 16-bit variable size UCS Transfer Format, based on ISO/IEC 10646 utf16 ISO/IEC 8859-1, Information technology - 8-bit single byte coded graphic character sets - Part 1 : Latin alphabet No.1 8859part1 ISO/IEC 8859-2, Information technology - 8-bit single byte coded graphic character sets - Part 2 : Latin alphabet No.2 8859part2 ISO/IEC 8859-3, Information technology - 8-bit single byte coded graphic character sets - Part 3 : Latin alphabet No.3 8859part3 ISO/IEC 8859-4, Information technology - 8-bit single byte coded graphic character sets - Part 4 : Latin alphabet No.4 8859part4 ISO/IEC 8859-5, Information technology - 8-bit single byte coded graphic character sets - Part 5 : Latin/Cyrillic alphabet 8859part5 ISO/IEC 8859-6, Information technology - 8-bit single byte coded graphic character sets - Part 6 : Latin/Arabic alphabet 8859part6 ISO/IEC 8859-7, Information technology - 8-bit single byte coded graphic character sets - Part 7 : Latin/Greek alphabet 8859part7 ISO/IEC 8859-8, Information technology - 8-bit single byte coded graphic character sets - Part 8 : Latin/Hebrew alphabet 8859part8 ISO/IEC 8859-9, Information technology - 8-bit single byte coded graphic character sets - Part 9 : Latin alphabet No.5 8859part9 ISO/IEC 8859-10, Information technology - 8-bit single byte coded graphic character sets - Part 10 : Latin alphabet No.6 8859part10 ISO/IEC 8859-11, Information technology - 8-bit single byte coded graphic character sets - Part 11 : Latin/Thai alphabet 8859part11 ISO/IEC 8859-13, Information technology - 8-bit single byte coded graphic character sets - Part 13 : Latin alphabet No.7 8859part13 ISO/IEC 8859-14, Information technology - 8-bit single byte coded graphic character sets - Part 14 : Latin alphabet No.8 (Celtic) 8859part14 ISO/IEC 8859-15, Information technology - 8-bit single byte coded graphic character sets - Part 15 : Latin alphabet No.9 8859part15 ISO/IEC 8859-16, Information technology - 8-bit single byte coded graphic character sets - Part 16 : Latin alphabet No.10 8859part16 japanese code set used for electronic transmission jis japanese code set used on MS-DOS machines shiftJIS japanese code set used on UNIX based machines eucJP United States ASCII code set (ISO 646 US) usAscii IBM mainframe code set ebcdic Korean code set eucKR traditional Chinese code set used in Taiwan, Hong Kong of China and other areas big5 simplified Chinese code set GB2312 name of the handling restrictions on the dataset MD_ClassificationCode available for general disclosure unclassified not for general disclosure restricted available for someone who can be entrusted with information confidential kept or meant to be kept private, unknown, or hidden from all but a select group of people secret of the highest secrecy topSecret specific type of information represented in the cell MD_CoverageContentTypeCode meaningful numerical representation of a physical parameter that is not the actual value of the physical parameter image code value with no quantitative meaning, used to represent a physical quantity thematicClassification value in physical units of the quantity being measured physicalMeasurement datatype of element or entity MD_DatatypeCode descriptor of a set of objects that share the same attributes, operations, methods, relationships, and behavior class flexible enumeration useful for expressing a long list of values, can be extended codelist data type whose instances form a list of named literal values, not extendable enumeration permissible value for a codelist or enumeration codelistElement class that cannot be directly instantiated abstractClass class that is composed of classes it is connected to by an aggregate relationship aggregateClass subclass that may be substituted for its superclass specifiedClass class with few or no operations whose primary purpose is to hold the abstract state of another class for transmittal, storage, encoding or persistent storage datatypeClass named set of operations that characterize the behavior of an element interfaceClass class describing a selection of one of the specified types unionClass class whose instances are classes metaClass class used for specification of a domain of instances (objects), together with the operations applicable to the objects. A type may have attributes and associations typeClass free text field characterString numerical field integer semantic relationship between two classes that involves connections among their instances association name of the dimension MD_DimensionNameTypeCode ordinate (y) axis row abscissa (x) axis column vertical (z) axis vertical along the direction of motion of the scan point track perpendicular to the direction of motion of the scan point crossTrack scan line of a sensor line element along a scan line sample duration time name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset MD_GeometricObjectTypeCode set of geometric primitives such that their boundaries can be represented as a union of other primitives complex connected set of curves, solids or surfaces composite bounded, 1-dimensional geometric primitive, representing the continuous image of a line curve zero-dimensional geometric primitive, representing a position but not having an extent point bounded, connected 3-dimensional geometric primitive, representing the continuous image of a region of space solid bounded, connected 2-dimensional geometric primitive, representing the continuous image of a region of a plane surface code which indicates conditions which may affect the image MD_ImagingConditionCode portion of the image is blurred blurredImage portion of the image is partially obscured by cloud cover cloud acute angle between the plane of the ecliptic (the plane of the Earth s orbit) and the plane of the celestial equator degradingObliquity portion of the image is partially obscured by fog fog portion of the image is partially obscured by heavy smoke or dust heavySmokeOrDust image was taken at night night image was taken during rainfall rain image was taken during semi-dark conditions -- twilight conditions semiDarkness portion of the image is obscured by shadow shadow portion of the image is obscured by snow snow the absence of collection data of a given point or area caused by the relative location of topographic features which obstruct the collection path between the collector(s) and the subject(s) of interest terrainMasking methods used to group similar keywords MD_KeywordTypeCode keyword identifies a branch of instruction or specialized learning discipline keyword identifies a location place keyword identifies the layer(s) of any deposited substance stratum keyword identifies a time period related to the dataset temporal keyword identifies a particular subject or topic theme frequency with which modifications and deletions are made to the data after it is first produced MD_MaintenanceFrequencyCode data is repeatedly and frequently updated continual data is updated each day daily data is updated on a weekly basis weekly data is updated every two weeks fortnightly data is updated each month monthly data is updated every three months quarterly data is updated twice each year biannually data is updated every year annually data is updated as deemed necessary asNeeded data is updated in intervals that are uneven in duration irregular there are no plans to update the data notPlanned frequency of maintenance for the data is not known unknown method used to write to the medium MD_MediumFormatCode CoPy In / Out (UNIX file format and command) cpio Tape ARchive tar high sierra file system highSierra information processing volume and file structure of CD-ROM iso9660 rock ridge interchange protocol (UNIX) iso9660RockRidge hierarchical file system (Macintosh) iso9660AppleHFS name of the medium MD_MediumNameCode read-only optical disk cdRom digital versatile disk dvd digital versatile disk, read only dvdRom 3,5 inch magnetic disk 3halfInchFloppy 5,25 inch magnetic disk 5quarterInchFloppy 7 track magnetic tape 7trackTape 9 track magnetic tape 9trackType 3480 cartridge tape drive 3480Cartridge 3490 cartridge tape drive 3490Cartridge 3580 cartridge tape drive 3580Cartridge 4 millimetre magnetic tape 4mmCartridgeTape 8 millimetre magnetic tape 8mmCartridgeTape 0,25 inch magnetic tape 1quarterInchCartridgeTape half inch cartridge streaming tape drive digitalLinearTape direct computer linkage onLine linkage through a satellite communication system satellite communication through a telephone network telephoneLink pamphlet or leaflet giving descriptive information hardcopy obligation of the element or entity MD_ObligationCode element is always required mandatory element is not required optional element is required when a specific condition is met conditional point in a pixel corresponding to the Earth location of the pixel MD_PixelOrientationCode point halfway between the lower left and the upper right of the pixel center 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 lowerLeft next corner counterclockwise from the lower left lowerRight next corner counterclockwise from the lower right upperRight next corner counterclockwise from the upper right upperLeft status of the dataset or progress of a review MD_ProgressCode production of the data has been completed completed data has been stored in an offline storage facility historicalArchive data is no longer relevant obsolete data is continually being updated onGoing fixed date has been established upon or by which the data will be created or updated planned data needs to be generated or updated required data is currently in the process of being created underDevelopment limitation(s) placed upon the access or use of the data MD_RestrictionCode exclusive right to the publication, production, or sale of the rights to a literary, dramatic, musical, or artistic work, or to the use of a commercial print or label, granted by law for a specified period of time to an author, composer, artist, distributor copyright government has granted exclusive right to make, sell, use or license an invention or discovery patent produced or sold information awaiting a patent patentPending a name, symbol, or other device identifying a product, officially registered and legally restricted to the use of the owner or manufacturer trademark formal permission to do something license rights to financial benefit from and control of distribution of non-tangible property that is a result of creativity intellectualPropertyRights withheld from general circulation or disclosure restricted limitation not listed otherRestrictions class of information to which the referencing entity applies MD_ScopeCode information applies to the attribute class attribute information applies to the characteristic of a feature attributeType information applies to the collection hardware class collectionHardware information applies to the collection session collectionSession information applies to the dataset dataset information applies to the series series information applies to non-geographic data nonGeographicDataset information applies to a dimension group dimensionGroup information applies to a feature feature information applies to a feature type featureType information applies to a property type propertyType information applies to a field session fieldSession information applies to a computer program or routine software information applies to a capability which a service provider entity makes available to a service user entity through a set of interfaces that define a behaviour, such as a use case service information applies to a copy or imitation of an existing or hypothetical object model information applies to a tile, a spatial subset of geographic data tile method used to represent geographic information in the dataset MD_SpatialRepresentationTypeCode vector data is used to represent geographic data vector grid data is used to represent geographic data grid textual or tabular data is used to represent geographic data textTable triangulated irregular network tin three-dimensional view formed by the intersecting homologous rays of an overlapping pair of images stereoModel scene from a video recording video 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. MD_TopicCategoryCode rearing of animals and/or cultivation of plants. Examples: agriculture, irrigation, aquaculture, plantations, herding, pests and diseases affecting crops and livestock farming flora and/or fauna in natural environment. Examples: wildlife, vegetation, biological sciences, ecology, wilderness, sealife, wetlands, habitat biota legal land descriptions. Examples: political and administrative boundaries boundaries processes and phenomena of the atmosphere. Examples: cloud cover, weather, climate, atmospheric conditions, climate change, precipitation climatologyMeteorologyAtmosphere 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 economy height above or below sea level. Examples: altitude, bathymetry, digital elevation models, slope, derived products elevation environmental resources, protection and conservation. Examples: environmental pollution, waste storage and treatment, environmental impact assessment, monitoring environmental risk, nature reserves, landscape environment 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 geoscientificInformation health, health services, human ecology, and safety. Examples: disease and illness, factors affecting health, hygiene, substance abuse, mental and physical health, health services health base maps. Examples: land cover, topographic maps, imagery, unclassified images, annotations imageryBaseMapsEarthCover military bases, structures, activities. Examples: barracks, training grounds, military transportation, information collection intelligenceMilitary inland water features, drainage systems and their characteristics. Examples: rivers and glaciers, salt lakes, water utilization plans, dams, currents, floods, water quality, hydrographic charts inlandWaters positional information and services. Examples: addresses, geodetic networks, control points, postal zones and services, place names location features and characteristics of salt water bodies (excluding inland waters). Examples: tides, tidal waves, coastal information, reefs oceans information used for appropriate actions for future use of the land. Examples: land use maps, zoning maps, cadastral surveys, land ownership planningCadastre 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 society man-made construction. Examples: buildings, museums, churches, factories, housing, monuments, shops, towers structure 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 transportation energy, water and waste systems and communications infrastructure and services. Examples: 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 utilitiesCommunication degree of complexity of the spatial relationships MD_TopologyLevelCode geometry objects without any additional structure which describes topology geometryOnly 1-dimensional topological complex -- commonly called chain-node topology topology1D 1-dimensional topological complex that is planar. (A planar graph is a graph that can be drawn in a plane in such a way that no two edges intersect except at a vertex.) planarGraph 2-dimensional topological complex that is planar. (A 2-dimensional topological complex is commonly called full topology in a cartographic 2D environment.) fullPlanarGraph 1-dimensional topological complex that is isomorphic to a subset of a surface. (A geometric complex is isomorphic to a topological complex if their elements are in a one-to-one, dimensional-and boundry-preserving correspondence to one another.) surfaceGraph 2-dimensional topological complex that is isomorphic to a subset of a surface fullSurfaceGraph 3-dimensional topological complex. (A topological complex is a collection of topological primitives that are closed under the boundary operations.) topology3D complete coverage of a 3D Euclidean coordinate space fullTopology3D topological complex without any specified geometric realisation abstract Extension of MD_ScopeCode for the needs of GMX application schemas and in the context of a transfer MX_ScopeCode information applies to the attribute class attribute information applies to the characteristic of a feature attributeType information applies to the collection hardware class collectionHardware information applies to the collection session collectionSession information applies to the dataset dataset information applies to the series series information applies to non-geographic data nonGeographicDataset information applies to a dimension group dimensionGroup information applies to a feature feature information applies to a feature type featureType information applies to a property type propertyType information applies to a field session fieldSession information applies to a computer program or routine software information applies to a capability which a service provider entity makes available to a service user entity through a set of interfaces that define a behaviour, such as a use case service information applies to a copy or imitation of an existing or hypothetical object model information applies to a tile, a spatial subset of geographic data tile The referencing entity applies to a transfer aggregate which was originally identified as an initiative (DS_Initiative) initiative The referencing entity applies to a transfer aggregate which was originally identified as a stereo mate (DS_StereoMate) stereomate The referencing entity applies to a transfer aggregate which was originally identified as a sensor (DS_Sensor) sensor The referencing entity applies to a transfer aggregate which was originally identified as a platform series (DS_PlatformSeries) platformSeries The referencing entity applies to a transfer aggregate which was originally identified as a sensor series (DS_SensorSeries) sensorSeries The referencing entity applies to a transfer aggregate which was originally identified as a production series (DS_ProductionSeries) productionSeries The referencing entity applies to a transfer aggregate which has no existence outside of the transfer context transferAggregate The referencing entity applies to a transfer aggregate which has an existence outside of the transfer context, but which does not pertains to a specific aggregate type. otherAggregate pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/PaxHeader0000644000000000000000000000026013114323025027456 xustar00116 path=pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/tcCodelists.xml 30 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/tcCodelis0000644000175000001440000000676613114323025033213 0ustar00kalxasusers00000000000000 tcCodelists Codelists used in the type catalogue schema Type catalogues 0.1 2007-06-14 specifies aggregation semantics: specifies whether the value of each property is a single value ("noAggregation") which is the default case or if a single property instance has an aggregate value in which case the value specifies the aggregation type ("bag", "set", "sequence"). Note that this value is independent from the cardinality. TC_AggregationType single value - no aggregation (default) noAggregation aggregation semantics: bag bag aggregation semantics: set set aggregation semantics: sequence (ordered bag) sequence pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/PaxHeaders.23451/c0000644000000000000000000000007413114323025026735 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/crs/0000755000175000001440000000000013114323025030321 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/crs/PaxHeaders.2340000644000000000000000000000007413114323025027134 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/crs/ML_gmxCrs.xml0000644000175000001440000002025213114323025032677 0ustar00kalxasusers00000000000000 ML_gmxCrs CRS catalogue for description of gmx metadata dataset Catalogue des paramètres géodésiques pour la description de jeux de métadonnées conformes aux schémas gmx GMX (and imported) namespace 0.0 2005-03-29 English UTF 8 French France UTF 8 4326 WGS84G World Geodetic System 1984 World not known 4326 WGS84G WGS 1984 Monde inconnu 6422 ellipsoidal2Ddeg 9901 Geodetic latitude Lat North 9902 Geodetic longitude Lon East 6326 World Geodetic System 1984 not known 7030 WGS 84 6378137 298.2572 8901 Greenwich 0 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/crs/PaxHeaders.2340000644000000000000000000000007413114323025027134 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/crs/gmxCrs.xml0000644000175000001440000003515113114323025032313 0ustar00kalxasusers00000000000000 gmxCrs CRS parameters dictionary GMX (and imported) namespace 0.0 2005-03-18 4326 WGS84G World Geodetic System 1984 World: Afghanistan, Albania, Algeria, American Samoa, Andorra, Angola, Anguilla, Antarctica, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belgium, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bosnia and Herzegowina, Botswana, Bouvet Island, Brazil, British Indian Ocean Territory, British Virgin Islands, Brunei Darussalam, Bulgaria, Burkina Faso, Burundi, Cambodia, Cameroon, Canada, Cape Verde, Cayman Islands, Central African Republic, Chad, Chile, China, Christmas Island, Cocos (Keeling) Islands, Comoros, Congo, Cook Islands, Costa Rica, Côte d'Ivoire (Ivory Coast), Croatia, Cuba, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, East Timor, Ecuador, Egypt, El Salvador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Falkland Islands (Malvinas), Faroe Islands, Fiji, Finland, France, French Guiana, French Polynesia, French Southern Territories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guam, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Heard Island and McDonald Islands, Holy See (Vatican City State), Honduras, China - Hong Kong, Hungary, Iceland, India, Indonesia, Islamic Republic of Iran, Iraq, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kazakstan, Kenya, Kiribati, Democratic People's Republic of Korea (North Korea), Republic of Korea (South Korea), Kuwait, Kyrgyzstan, Lao People's Democratic Republic (Laos), Latvia, Lebanon, Lesotho, Liberia, Libyan Arab Jamahiriya, Liechtenstein, Lithuania, Luxembourg, China - Macau, The Former Yugoslav Republic of Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Marshall Islands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Federated States of Micronesia, Monaco, Mongolia, Montserrat, Morocco, Mozambique, Myanmar (Burma), Namibia, Nauru, Nepal, Netherlands, Netherlands Antilles, New Caledonia, New Zealand, Nicaragua, Niger, Nigeria, Niue, Norfolk Island, Northern Mariana Islands, Norway, Oman, Pakistan, Palau, Panama, Papua New Guinea (PNG), Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, Puerto Rico, Qatar, Reunion, Romania, Russian Federation, Rwanda, Saint Kitts and Nevis, Saint Lucia, Saint Vincent and the Grenadines, Samoa, San Marino, Sao Tome and Principe, Saudi Arabia, Senegal, Seychelles, Sierra Leone, Singapore, Slovakia (Slovak Republic), Slovenia, Solomon Islands, Somalia, South Africa, South Georgia and the South Sandwich Islands, Spain, Sri Lanka, Saint Helena, Saint Pierre and Miquelon, Sudan, Suriname, Svalbard and Jan Mayen, Swaziland, Sweden, Switzerland, Syrian Arab Republic, Taiwan, Tajikistan, United Republic of Tanzania, Thailand, The Democratic Republic of the Congo (Zaire), Togo, Tokelau, Tonga, Trinidad and Tobago, Tunisia, Turkey, Turkmenistan, Turks and Caicos Islands, Tuvalu, Uganda, Ukraine, United Arab Emirates (UAE), United Kingdom (UK), United States (USA), United States Minor Outlying Islands, Uruguay, Uzbekistan, Vanuatu, Venezuela, Vietnam, US Virgin Islands, Wallis and Futuna, Western Sahara, Yemen, Yugoslavia - Union of Serbia and Montenegro, Zambia, Zimbabwe. not known 32638 UTM38W84 WGS 84 / UTM zone 38N Between 42 and 48 deg East; northern hemisphere. Armenia. Azerbaijan. Djibouti. Eritrea. Ethiopia. Georgia. Islamic Republic of Iran. Iraq. Kazakstan. Kuwait. Russian Federation. Saudi Arabia. Somalia. Tukey. Yemen. not known Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: deg 6422 CS ellipsoidal2D Cartesian 2D CS. Axes: easting, northing (E,N). Orientations: east, north. UoM: m. 4400 Cs cartesian2D 9901 Geodetic latitude Lat North 9902 Geodetic longitude Lon East 9907 Northing N North 9906 Easting E east 6326 World Geodetic System 1984 not known 7030 WGS 84 6378137 298.2572 8901 Greenwich 0 16038 UTM Zone 38 N not known 0 45 0.9996 500000 0 9807 PRCM040 Transverse Mercator Transverse Mercator 2 2 8801 Latitude of natural origin 8802 Longitude of natural origin 8805 Scale factor at natural origin 8806 False Easting 8807 False Northing pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/PaxHeaders.23451/e0000644000000000000000000000007413114323025026737 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/example/0000755000175000001440000000000013114323025031165 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/example/PaxHeaders0000644000000000000000000000007413114323025027471 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/example/fr-fr.xml0000644000175000001440000000710313114323025032724 0ustar00kalxasusers00000000000000 France-France French FR UTF 8 2005-03-18 création 2006-02-03 révision french translation team auteur Résumé succint du contenu du jeu de données pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/PaxHeaders.23451/u0000644000000000000000000000007413114323025026757 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/uom/0000755000175000001440000000000013114323025030332 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/uom/PaxHeaders.2340000644000000000000000000000007413114323025027145 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/uom/ML_gmxUom.xml0000644000175000001440000001537713114323025032735 0ustar00kalxasusers00000000000000 uom units of measure dictionary compliant with SI definitions dictionnaire d'unités de mesure conforme avec les définitions du Système International (SI) GMX (and imported) namespace 0.0 2005-06-18 English UTF 8 French France UTF 8 The metre is the length of the path travelled by ligth in vaccum during a time interval of 1/299 792 458 of a second metre length m unité de longueur de référence dans le système international, correspond à la distance parcourue par la lumière dans le vide pendant 1/299 792 458 seconde metre mètre longueur Measure of angle equal to Pi/180 radians, widely used in geography degree angle 1.74532925199433E-02 Unité d'angle de référence en géographie égale à Pi/180 radians. degree degré angle Radian is an unit of angle measure. It is defined as the ratio of arc length to the radius of the circle. radian plane angle rad Le radian est une unité de mesaure angulaire définie comme le ratio entre le rayon et la longueur de l'arc. radian radian angle planaire pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/uom/PaxHeaders.2340000644000000000000000000000007413114323025027145 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/uom/gmxUom.xml0000644000175000001440000000677413114323025032346 0ustar00kalxasusers00000000000000 gmxUom units of measure dictionary compliant with SI definitions ISO/TC 211 GMX (and imported) namespace 0.0 2005-03-18 The metre is the length of the path travelled by ligth in vaccum during a time interval of 1/299 792 458 of a second metre length m Measure of angle equal to Pi/180 radians, widely used in geography degree angle 1.74532925199433E-02 Radian is an unit of angle measure. It is defined as the ratio of arc length to the radius of the circle. radian plane angle rad pycsw-2.0.3/pycsw/plugins/profiles/PaxHeaders.23451/ebrim0000644000000000000000000000007413114323025020105 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/0000755000175000001440000000000013114323025021124 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025022273 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/__init__.py0000644000175000001440000000243713114323025023243 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/plugins/profiles/ebrim/PaxHeaders.23451/docs0000644000000000000000000000007413114323025021035 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/docs/0000755000175000001440000000000013114323025022054 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/docs/PaxHeaders.23451/ebrim.rst0000644000000000000000000000007413114323025022742 xustar0030 atime=1496426320.933238071 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/docs/ebrim.rst0000644000175000001440000000146213114323025023707 0ustar00kalxasusers00000000000000.. _ebrim: CSW-ebRIM Registry Service - Part 1: ebRIM profile of CSW --------------------------------------------------------- Overview ^^^^^^^^ The CSW-ebRIM Registry Service is a profile of CSW 2.0.2 which enables discovery of geospatial metadata following the ebXML information model. Configuration ^^^^^^^^^^^^^ No extra configuration is required. Querying ^^^^^^^^ * **typename**: ``rim:RegistryObject`` * **outputschema**: ``urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0`` Enabling ebRIM Support ^^^^^^^^^^^^^^^^^^^^^^ To enable ebRIM support, add ``ebrim`` to ``server.profiles`` as specified in :ref:`configuration`. Testing ^^^^^^^ A testing interface is available in ``tests/index.html`` which contains tests specific to ebRIM to demonstrate functionality. See :ref:`tests` for more information. pycsw-2.0.3/pycsw/plugins/profiles/ebrim/PaxHeaders.23451/ebrim.py0000644000000000000000000000007413114323025021632 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/ebrim.py0000644000175000001440000002016513114323025022600 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import os from pycsw.core.etree import etree from pycsw.core import config, util from pycsw.ogc.csw.csw2 import write_boundingbox from pycsw.plugins.profiles import profile from six import text_type class EBRIM(profile.Profile): ''' EBRim class ''' def __init__(self, model, namespaces, context): self.context = context self.namespaces = { 'ebrim': 'http://www.opengis.net/cat/wrs/1.0', 'rim': 'urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0', 'wrs': 'http://www.opengis.net/cat/wrs/1.0' } self.repository = { 'rim:RegistryObject': { 'outputschema': 'urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0', 'queryables': {}, 'mappings': { 'csw:Record': { # map APISO queryables to DC queryables 'apiso:Title': 'dc:title', 'apiso:Creator': 'dc:creator', 'apiso:Subject': 'dc:subject', 'apiso:Abstract': 'dct:abstract', 'apiso:Publisher': 'dc:publisher', 'apiso:Contributor': 'dc:contributor', 'apiso:Modified': 'dct:modified', #'apiso:Date': 'dc:date', 'apiso:Type': 'dc:type', 'apiso:Format': 'dc:format', 'apiso:Language': 'dc:language', 'apiso:Relation': 'dc:relation', 'apiso:AccessConstraints': 'dc:rights', } } } } profile.Profile.__init__(self, name='ebrim', version='1.0.1', title='ebRIM profile of CSW', url='http://portal.opengeospatial.org/files/?artifact_id=31137', namespace=self.namespaces['rim'], typename='rim:RegistryObject', outputschema=self.namespaces['rim'], prefixes=['rim'], model=model, core_namespaces=namespaces, added_namespaces=self.namespaces, repository=self.repository['rim:RegistryObject']) def extend_core(self, model, namespaces, config): ''' Extend core configuration ''' self.ogc_schemas_base = config.get('server', 'ogc_schemas_base') def check_parameters(self, kvp): '''Check for Language parameter in GetCapabilities request''' return None def get_extendedcapabilities(self): ''' Add child to ows:OperationsMetadata Element ''' return None def get_schemacomponents(self): ''' Return schema components as lxml.etree.Element list ''' node = etree.Element( util.nspath_eval('csw:SchemaComponent', self.context.namespaces), schemaLanguage='XMLSCHEMA', targetNamespace=self.namespace) schema_file = os.path.join(self.context.pycsw_home, 'plugins', 'profiles', 'ebrim', 'schemas', 'ogc', 'csw', '2.0.2', 'profiles', 'ebrim', '1.0', 'csw-ebrim.xsd') schema = etree.parse(schema_file, self.context.parser).getroot() node.append(schema) return [node] def check_getdomain(self, kvp): '''Perform extra profile specific checks in the GetDomain request''' return None def write_record(self, result, esn, outputschema, queryables): ''' Return csw:SearchResults child as lxml.etree.Element ''' identifier = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Identifier']) typename = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Typename']) if esn == 'full' and typename == 'rim:RegistryObject': # dump record as is and exit return etree.fromstring(util.getqattr(result, queryables['pycsw:XML']['dbcol']), self.context.parser) if typename == 'csw:Record': # transform csw:Record -> rim:RegistryObject model mappings util.transform_mappings(queryables, self.repository['mappings']['csw:Record']) node = etree.Element(util.nspath_eval('rim:ExtrinsicObject', self.namespaces)) node.attrib[util.nspath_eval('xsi:schemaLocation', self.context.namespaces)] = \ '%s %s/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim.xsd' % (self.namespaces['wrs'], self.ogc_schemas_base) node.attrib['id'] = identifier node.attrib['lid'] = identifier node.attrib['objectType'] = str(util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Type'])) node.attrib['status'] = 'urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted' etree.SubElement(node, util.nspath_eval('rim:VersionInfo', self.namespaces), versionName='') if esn in ['summary', 'full']: etree.SubElement(node, util.nspath_eval('rim:ExternalIdentifier', self.namespaces), value=identifier, identificationScheme='foo', registryObject=str(util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Relation'])), id=identifier) name = etree.SubElement(node, util.nspath_eval('rim:Name', self.namespaces)) etree.SubElement(name, util.nspath_eval('rim:LocalizedString', self.namespaces), value=text_type(util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Title']))) description = etree.SubElement(node, util.nspath_eval('rim:Description', self.namespaces)) etree.SubElement(description, util.nspath_eval('rim:LocalizedString', self.namespaces), value=text_type(util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Abstract']))) val = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:BoundingBox']) bboxel = write_boundingbox(val, self.context.namespaces) if bboxel is not None: bboxslot = etree.SubElement(node, util.nspath_eval('rim:Slot', self.namespaces), slotType='urn:ogc:def:dataType:ISO-19107:2003:GM_Envelope') valuelist = etree.SubElement(bboxslot, util.nspath_eval('rim:ValueList', self.namespaces)) value = etree.SubElement(valuelist, util.nspath_eval('rim:Value', self.namespaces)) value.append(bboxel) rkeywords = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Keywords']) if rkeywords is not None: subjectslot = etree.SubElement(node, util.nspath_eval('rim:Slot', self.namespaces), name='http://purl.org/dc/elements/1.1/subject') valuelist = etree.SubElement(subjectslot, util.nspath_eval('rim:ValueList', self.namespaces)) for keyword in rkeywords.split(','): etree.SubElement(valuelist, util.nspath_eval('rim:Value', self.namespaces)).text = keyword return node pycsw-2.0.3/pycsw/plugins/profiles/ebrim/PaxHeaders.23451/schemas0000644000000000000000000000007413114323025021530 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/0000755000175000001440000000000013114323025022547 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/PaxHeaders.23451/ogc0000644000000000000000000000007413114323025022300 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/0000755000175000001440000000000013114323025023317 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/PaxHeaders.23451/csw0000644000000000000000000000007413114323025023074 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/0000755000175000001440000000000013114323025024113 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/PaxHeaders.23451/2.0.20000644000000000000000000000007413114323025023533 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/0000755000175000001440000000000013114323025024552 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/PaxHeaders.23451/profiles0000644000000000000000000000007413114323025025356 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/0000755000175000001440000000000013114323025026375 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/PaxHeaders.23451/ebrim0000644000000000000000000000007413114323025026454 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/0000755000175000001440000000000013114323025027473 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/PaxHeaders.23451/1.00000644000000000000000000000007413114323025026752 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/0000755000175000001440000000000013114323025027771 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/PaxHeaders.23451/c0000644000000000000000000000007413114323025027174 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim-iri.xsd0000644000175000001440000001352113114323025033164 0ustar00kalxasusers00000000000000 This schema defines content models for HTTP request messages that may be serialized into the query string portion of the URI or into the message body in accord with the WSDL HTTP binding rules for the IRI style. The schemas defined in the base specifications do not adhere to the rules for the IRI style and thus cannot be used for this purpose. See OGC 05-008c1, cl. 7.2.1. See OGC 07-006r1, cl. 10.9.2 See OGC 07-006r1, cl. 10.8.2. Some optional CSW parameters have been elided. Matching items are returned as rim:RegistryObject elements that include the "summary" element set. See OGC 07-110r2, cl. 12.2. Invokes a predefined query. See OGC 07-110r2, cl. 16.1 Examples: "2.0.35", "1.1.0,1.1.1" Examples: "OperationsMetadata", "application/xml,text/html" pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/PaxHeaders.23451/c0000644000000000000000000000007413114323025027174 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim.xsd0000644000175000001440000001026413114323025032404 0ustar00kalxasusers00000000000000 rim:Value not allowed in this context: expected wrs:AnyValue. Schema for CSW-ebRIM catalogue profile (OGC 07-110r3). A general record identifier, expressed as an absolute URI that maps to the rim:RegistryObject/@id attribute. It substitutes for the ogc:_Id element in an OGC filter expression. Extends rim:ExtrinsicObjectType to add the following: 1. MTOM/XOP based attachment support. 2. XLink based reference to a part in a multipart/related message structure. NOTE: This content model is planned for RegRep 4.0. Allows complex slot values. Incorporates the attributes defined for use in simple XLink elements. pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/PaxHeaders.23451/w0000644000000000000000000000007413114323025027220 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/0000755000175000001440000000000013114323025030742 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/PaxHeaders.230000644000000000000000000000007413114323025027471 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/0000755000175000001440000000000013114323025031241 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/PaxHeader0000644000000000000000000000026713114323025027366 xustar00123 path=pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/csw-ebrim-binding.wsdl 30 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/csw-ebrim0000644000175000001440000001264213114323025033061 0ustar00kalxasusers00000000000000 WSDL 1.1 binding descriptions for the CSW-ebRIM catalogue application profile. pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/PaxHeader0000644000000000000000000000027113114323025027361 xustar00125 path=pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/csw-ebrim-interface.wsdl 30 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/csw-ebrim0000644000175000001440000003026113114323025033056 0ustar00kalxasusers00000000000000 WSDL 1.1 interface descriptions for the CSW-ebRIM catalogue application profile. This schema declares message elements for GET requests or POST requests encoded as content type "application/x-www-form-urlencoded" (i.e., KVP-style encoding). 1. Parameter names and values are escaped. Space characters are replaced by '+', and then reserved characters are percent-encoded as described in RFC 3986, section 2.2. 2. the parameter name is separated from the value by the EQUALS SIGN character and name/value pairs are separated from each other by the AMPERSAND character. If multiple values are allowed they are separated using the COMMA character. Examples: "2.0.35", "1.1.0,1.1.1" Examples: "OperationsMetadata", "application/xml,text/html" Uses the POST method with the "application/xml" serialization format. pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/PaxHeader0000644000000000000000000000026713114323025027366 xustar00123 path=pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/csw-ebrim-service.wsdl 30 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/csw-ebrim0000644000175000001440000000254013114323025033055 0ustar00kalxasusers00000000000000 WSDL 1.1 service descriptions for the CSW-ebRIM catalogue application profile. This is meant to be a template and does not specify an actual service. pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/PaxHeaders.230000644000000000000000000000007413114323025027471 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/2.0/0000755000175000001440000000000013114323025031241 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/2.0/PaxHeader0000644000000000000000000000027113114323025027361 xustar00125 path=pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/2.0/csw-ebrim-interface.wsdl 30 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/2.0/csw-ebrim0000644000175000001440000003521313114323025033060 0ustar00kalxasusers00000000000000 W3C WSDL interface descriptions for the CSW-ebRIM 1.0 catalogue service. This document shall be imported by all instance-specific service descriptions. The body of the request message is invalid or not well formed. The response status code is 400 and the OGC exception code is "InvalidRequest". Unsupported functionality--the request cannot be processed. The response status code is 501 and the OGC exception code is "NotImplemented". Request OGC service description (mandatory). Alternative GetCapabilities request that supplies an XML message body (optional). Main search and retrieval facility (mandatory). Alternative GetRecords request using the IRI style (optional). Retrieve representations of one or more registry objects by identifier (mandatory). Alternative GetRecordById request that supplies an XML message body (optional). Includes discovery operations specific to CSW-ebRIM implementations. Retrieve a repository item described by an ExtrinsicObject (mandatory). The response body contains the actual repository item. Invoke a predefined query (mandatory). At least one of the registration operations must be implemented. The body of the request message is invalid or not well formed. The response status code is 400 and the OGC exception code is "InvalidRequest". Unsupported functionality--the request cannot be processed. The response status code is 501 and the OGC exception code is "NotImplemented". The requested transaction could not be completed for some reason other than a validation error. The response status code is 500 and the OGC exception code is "TransactionFailed". The HTTP SOAP Transmission Optimization Feature is required to handle requests containing MIME multipart/related entities with repository items. See http://www.w3.org/TR/soap12-mtom/. pycsw-2.0.3/pycsw/plugins/profiles/PaxHeaders.23451/profile.py0000644000000000000000000000007413114323025021076 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/profiles/profile.py0000644000175000001440000001210313114323025022035 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # Angelos Tzotsos # # Copyright (c) 2015 Tom Kralidis # Copyright (c) 2015 Angelos Tzotsos # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import os import warnings class Profile(object): ''' base Profile class ''' def __init__(self, name, version, title, url, namespace, typename, outputschema, prefixes, model, core_namespaces, added_namespaces,repository): ''' Initialize profile ''' self.name = name self.version = version self.title = title self.url = url self.namespace = namespace self.typename = typename self.outputschema = outputschema self.prefixes = prefixes self.repository = repository if 'DescribeRecord' in model['operations']: model['operations']['DescribeRecord']['parameters']\ ['typeName']['values'].append(self.typename) model['operations']['GetRecords']['parameters']['outputSchema']\ ['values'].append(self.outputschema) model['operations']['GetRecords']['parameters']['typeNames']\ ['values'].append(self.typename) model['operations']['GetRecordById']['parameters']['outputSchema']\ ['values'].append(self.outputschema) if 'Harvest' in model['operations']: model['operations']['Harvest']['parameters']['ResourceType']\ ['values'].append(self.outputschema) # namespaces core_namespaces.update(added_namespaces) # repository model['typenames'][self.typename] = self.repository def extend_core(self, model, namespaces, config): ''' Extend config.model and config.namespaces ''' raise NotImplementedError def check_parameters(self): ''' Perform extra parameters checking. Return dict with keys "locator", "code", "text" or None ''' raise NotImplementedError def get_extendedcapabilities(self): ''' Return ExtendedCapabilities child as lxml.etree.Element ''' raise NotImplementedError def get_schemacomponents(self): ''' Return schema components as lxml.etree.Element list ''' raise NotImplementedError def check_getdomain(self, kvp): '''Perform extra profile specific checks in the GetDomain request''' raise NotImplementedError def write_record(self, result, esn, outputschema, queryables): ''' Return csw:SearchResults child as lxml.etree.Element ''' raise NotImplementedError def transform2dcmappings(self, queryables): ''' Transform information model mappings into csw:Record mappings ''' raise NotImplementedError def load_profiles(path, cls, profiles): ''' load CSW profiles, return dict by class name ''' def look_for_subclass(modulename): module = __import__(modulename) dmod = module.__dict__ for modname in modulename.split('.')[1:]: dmod = dmod[modname].__dict__ for key, entry in dmod.items(): if key == cls.__name__: continue try: if issubclass(entry, cls): aps['plugins'][key] = entry except TypeError: continue aps = {} aps['plugins'] = {} aps['loaded'] = {} for prof in profiles.split(','): # fgdc, atom, dif, gm03 are supported in core # no need to specify them explicitly anymore # provide deprecation warning # https://github.com/geopython/pycsw/issues/118 if prof in ['fgdc', 'atom', 'dif', 'gm03']: warnings.warn('%s is now a core module, and does not need to be' ' specified explicitly. So you can remove %s from ' 'server.profiles' % (prof, prof)) else: modulename='%s.%s.%s' % (path.replace(os.sep, '.'), prof, prof) look_for_subclass(modulename) return aps pycsw-2.0.3/pycsw/plugins/PaxHeaders.23451/repository0000644000000000000000000000007413114323025017403 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/repository/0000755000175000001440000000000013114323025020422 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/repository/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025021571 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/repository/__init__.py0000644000175000001440000000243713114323025022541 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/plugins/repository/PaxHeaders.23451/geonode0000644000000000000000000000007413114323025021023 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/repository/geonode/0000755000175000001440000000000013114323025022042 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/repository/geonode/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025023211 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/repository/geonode/__init__.py0000644000175000001440000000243713114323025024161 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/plugins/repository/geonode/PaxHeaders.23451/geonode_.py0000644000000000000000000000007413114323025023231 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/repository/geonode/geonode_.py0000644000175000001440000001412613114323025024177 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= from django.db import models from django.db import connection from django.db.models import Avg, Max, Min, Count from django.conf import settings from pycsw.core import util from geonode.base.models import ResourceBase class GeoNodeRepository(object): ''' Class to interact with underlying repository ''' def __init__(self, context, repo_filter=None): ''' Initialize repository ''' self.context = context self.filter = repo_filter self.fts = False self.dbtype = settings.DATABASES['default']['ENGINE'].split('.')[-1] # GeoNode PostgreSQL installs are PostGIS enabled if self.dbtype == 'postgresql_psycopg2': self.dbtype = 'postgresql+postgis+wkt' if self.dbtype in ['sqlite', 'sqlite3']: # load SQLite query bindings cursor = connection.cursor() connection.connection.create_function( 'query_spatial', 4, util.query_spatial) connection.connection.create_function( 'get_anytext', 1, util.get_anytext) connection.connection.create_function( 'get_geometry_area', 1, util.get_geometry_area) # generate core queryables db and obj bindings self.queryables = {} for tname in self.context.model['typenames']: for qname in self.context.model['typenames'][tname]['queryables']: self.queryables[qname] = {} for qkey, qvalue in \ self.context.model['typenames'][tname]['queryables'][qname].items(): self.queryables[qname][qkey] = qvalue # flatten all queryables # TODO smarter way of doing this self.queryables['_all'] = {} for qbl in self.queryables: self.queryables['_all'].update(self.queryables[qbl]) self.queryables['_all'].update(self.context.md_core_model['mappings']) def query_ids(self, ids): ''' Query by list of identifiers ''' return self._get_repo_filter(ResourceBase.objects).filter(uuid__in=ids).all() def query_domain(self, domain, typenames, domainquerytype='list', count=False): ''' Query by property domain values ''' objects = self._get_repo_filter(ResourceBase.objects) if domainquerytype == 'range': return [tuple(objects.aggregate( Min(domain), Max(domain)).values())] else: if count: return [(d[domain], d['%s__count' % domain]) \ for d in objects.values(domain).annotate(Count(domain))] else: return objects.values_list(domain).distinct() def query_insert(self, direction='max'): ''' Query to get latest (default) or earliest update to repository ''' from datetime import datetime if direction=='min': return ResourceBase.objects.aggregate( Min('date'))['date__min'].strftime('%Y-%m-%dT%H:%M:%SZ') return self._get_repo_filter(ResourceBase.objects).aggregate( Max('date'))['date__max'].strftime('%Y-%m-%dT%H:%M:%SZ') def query_source(self, source): ''' Query by source ''' return self._get_repo_filter(ResourceBase.objects).filter(source=source) def query(self, constraint, sortby=None, typenames=None, maxrecords=10, startposition=0): ''' Query records from underlying repository ''' # run the raw query and get total if 'where' in constraint: # GetRecords with constraint query = self._get_repo_filter(ResourceBase.objects).extra(where=[constraint['where']], params=constraint['values']) else: # GetRecords sans constraint query = self._get_repo_filter(ResourceBase.objects) total = query.count() # apply sorting, limit and offset if sortby is not None: if 'spatial' in sortby and sortby['spatial']: # spatial sort desc = False if sortby['order'] == 'DESC': desc = True query = query.all() return [str(total), sorted(query, key=lambda x: float(util.get_geometry_area(getattr(x, sortby['propertyname']))), reverse=desc)[startposition:startposition+int(maxrecords)]] else: if sortby['order'] == 'DESC': pname = '-%s' % sortby['propertyname'] else: pname = sortby['propertyname'] return [str(total), \ query.order_by(pname)[startposition:startposition+int(maxrecords)]] else: # no sort return [str(total), query.all()[startposition:startposition+int(maxrecords)]] def _get_repo_filter(self, query): ''' Apply repository wide side filter / mask query ''' if self.filter is not None: return query.extra(where=[self.filter]) return query pycsw-2.0.3/pycsw/plugins/repository/PaxHeaders.23451/hhypermap0000644000000000000000000000007413114323025021400 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/repository/hhypermap/0000755000175000001440000000000013114323025022417 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/repository/hhypermap/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025023566 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/repository/hhypermap/__init__.py0000644000175000001440000000244513114323025024535 0ustar00kalxasusers00000000000000# -*- coding: ISO-8859-15 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2016 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/plugins/repository/hhypermap/PaxHeaders.23451/hhypermap.py0000644000000000000000000000007413114323025024024 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/repository/hhypermap/hhypermap.py0000644000175000001440000002502513114323025024772 0ustar00kalxasusers00000000000000# -*- coding: iso-8859-15 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2016 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import inspect from django.db import models from django.db import connection from django.db.models import Avg, Max, Min, Count from django.conf import settings from pycsw.core import util from hypermap.aggregator.models import Catalog, Layer, Service, Endpoint from hypermap.aggregator.utils import create_layer_from_metadata_xml HYPERMAP_SERVICE_TYPES = { # 'HHypermap enum': 'CSW enum' 'http://www.opengis.net/cat/csw/2.0.2': 'OGC:CSW', 'http://www.opengis.net/wms': 'OGC:WMS', 'http://www.opengis.net/wmts/1.0': 'OGC:WMTS', 'https://wiki.osgeo.org/wiki/TMS': 'OSGeo:TMS', 'urn:x-esri:serviceType:ArcGIS:MapServer': 'ESRI:ArcGIS:MapServer', 'urn:x-esri:serviceType:ArcGIS:ImageServer': 'ESRI:ArcGIS:ImageServer' } class HHypermapRepository(object): ''' Class to interact with underlying repository ''' def __init__(self, context, repo_filter=None): ''' Initialize repository ''' self.context = context self.filter = repo_filter self.fts = False self.label = 'HHypermap' self.local_ingest = True self.dbtype = settings.DATABASES['default']['ENGINE'].split('.')[-1] # HHypermap PostgreSQL installs are PostGIS enabled if self.dbtype == 'postgresql_psycopg2': self.dbtype = 'postgresql+postgis+wkt' if self.dbtype in ['sqlite', 'sqlite3']: # load SQLite query bindings cursor = connection.cursor() connection.connection.create_function( 'query_spatial', 4, util.query_spatial) connection.connection.create_function( 'get_anytext', 1, util.get_anytext) connection.connection.create_function( 'get_geometry_area', 1, util.get_geometry_area) # generate core queryables db and obj bindings self.queryables = {} for tname in self.context.model['typenames']: for qname in self.context.model['typenames'][tname]['queryables']: self.queryables[qname] = {} for qkey, qvalue in \ self.context.model['typenames'][tname]['queryables'][qname].items(): self.queryables[qname][qkey] = qvalue # flatten all queryables # TODO smarter way of doing this self.queryables['_all'] = {} for qbl in self.queryables: self.queryables['_all'].update(self.queryables[qbl]) self.queryables['_all'].update(self.context.md_core_model['mappings']) if 'Harvest' in self.context.model['operations'] and 'Transaction' in self.context.model['operations']: self.context.model['operations']['Harvest']['parameters']['ResourceType']['values'] = HYPERMAP_SERVICE_TYPES.keys() self.context.model['operations']['Transaction']['parameters']['TransactionSchemas']['values'] = HYPERMAP_SERVICE_TYPES.keys() def dataset(self): ''' Stub to mock a pycsw dataset object for Transactions''' return type('Service', (object,), {}) def query_ids(self, ids): ''' Query by list of identifiers ''' return self._get_repo_filter(Layer.objects).filter(id__in=ids).all() def query_domain(self, domain, typenames, domainquerytype='list', count=False): ''' Query by property domain values ''' objects = self._get_repo_filter(Layer.objects) if domainquerytype == 'range': return [tuple(objects.aggregate( Min(domain), Max(domain)).values())] else: if count: return [(d[domain], d['%s__count' % domain]) \ for d in objects.values(domain).annotate(Count(domain))] else: return objects.values_list(domain).distinct() def query_insert(self, direction='max'): ''' Query to get latest (default) or earliest update to repository ''' from datetime import datetime if direction=='min': return Layer.objects.aggregate( Min('last_updated'))['last_updated__min'].strftime('%Y-%m-%dT%H:%M:%SZ') return self._get_repo_filter(Layer.objects).aggregate( Max('last_updated'))['last_updated__max'].strftime('%Y-%m-%dT%H:%M:%SZ') def query_source(self, source): ''' Query by source ''' return self._get_repo_filter(Layer.objects).filter(url=source) def query(self, constraint, sortby=None, typenames=None, maxrecords=10, startposition=0): ''' Query records from underlying repository ''' # run the raw query and get total if 'where' in constraint: # GetRecords with constraint query = self._get_repo_filter(Layer.objects).extra(where=[constraint['where']], params=constraint['values']) else: # GetRecords sans constraint query = self._get_repo_filter(Layer.objects) total = query.count() # apply sorting, limit and offset if sortby is not None: if 'spatial' in sortby and sortby['spatial']: # spatial sort desc = False if sortby['order'] == 'DESC': desc = True query = query.all() return [str(total), sorted(query, key=lambda x: float(util.get_geometry_area(getattr(x, sortby['propertyname']))), reverse=desc)[startposition:startposition+int(maxrecords)]] else: if sortby['order'] == 'DESC': pname = '-%s' % sortby['propertyname'] else: pname = sortby['propertyname'] return [str(total), \ query.order_by(pname)[startposition:startposition+int(maxrecords)]] else: # no sort return [str(total), query.all()[startposition:startposition+int(maxrecords)]] def insert(self, resourcetype, source, insert_date=None): ''' Insert a record into the repository ''' caller = inspect.stack()[1][3] if caller == 'transaction': # insert of Layer hhclass = 'Layer' source = resourcetype resourcetype = resourcetype.csw_schema else: # insert of service hhclass = 'Service' if resourcetype not in HYPERMAP_SERVICE_TYPES.keys(): raise RuntimeError('Unsupported Service Type') return self._insert_or_update(resourcetype, source, mode='insert', hhclass=hhclass) def _insert_or_update(self, resourcetype, source, mode='insert', hhclass='Service'): ''' Insert or update a record in the repository ''' keywords = [] try: if hhclass == 'Layer': # TODO: better way of figuring out duplicates match = Layer.objects.filter(name=source.name, title=source.title, abstract=source.abstract, is_monitored=False) matches = match.all() if matches: if mode == 'insert': raise RuntimeError('HHypermap error: Layer %d \'%s\' already exists' % (matches[0].id, source.title)) elif mode == 'update': match.update( name=source.name, title=source.title, abstract=source.abstract, is_monitored=False, xml=source.xml, wkt_geometry=source.wkt_geometry, anytext=util.get_anytext([source.title, source.abstract, source.keywords_csv]) ) res, keywords = create_layer_from_metadata_xml(resourcetype, source.xml, monitor=False) else: if resourcetype == 'http://www.opengis.net/cat/csw/2.0.2': res = Endpoint(url=source) else: res = Service(type=HYPERMAP_SERVICE_TYPES[resourcetype], url=source) if self.filter is not None: res.catalog = Catalog.objects.get(id=int(self.filter.split()[-1])) res.save() if keywords: for kw in keywords: res.keywords.add(kw) except Exception as err: raise RuntimeError('HHypermap error: %s' % err) # return a list of ids that were inserted or updated ids = [] if hhclass == 'Layer': ids.append({'identifier': res.uuid, 'title': res.title }) else: if resourcetype == 'http://www.opengis.net/cat/csw/2.0.2': for res in Endpoint.objects.filter(url=source).all(): ids.append({'identifier': res.uuid, 'title': res.url}) else: for res in Service.objects.filter(url=source).all(): ids.append({'identifier': res.uuid, 'title': res.title}) return ids def delete(self, constraint): ''' Delete a record from the repository ''' results = self._get_repo_filter(Service.objects).extra(where=[constraint['where']], params=constraint['values']).all() deleted = len(results) results.delete() return deleted def _get_repo_filter(self, query): ''' Apply repository wide side filter / mask query ''' if self.filter is not None: return query.extra(where=[self.filter]) return query pycsw-2.0.3/pycsw/plugins/repository/PaxHeaders.23451/odc0000644000000000000000000000007413114323025020150 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/repository/odc/0000755000175000001440000000000013114323025021167 5ustar00kalxasusers00000000000000pycsw-2.0.3/pycsw/plugins/repository/odc/PaxHeaders.23451/__init__.py0000644000000000000000000000007413114323025022336 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/repository/odc/__init__.py0000644000175000001440000000243713114323025023306 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= pycsw-2.0.3/pycsw/plugins/repository/odc/PaxHeaders.23451/odc.py0000644000000000000000000000007413114323025021344 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/plugins/repository/odc/odc.py0000644000175000001440000001456713114323025022323 0ustar00kalxasusers00000000000000#-*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import os, sys from django.db import models from django.db import connection from django.db.models import Avg, Max, Min, Count from django.conf import settings from pycsw.core import util from OpenDataCatalog.opendata.models import Resource class OpenDataCatalogRepository(object): ''' Class to interact with underlying repository ''' def __init__(self, context, repo_filter=None): ''' Initialize repository ''' self.context = context self.filter = repo_filter self.fts = False self.dbtype = settings.DATABASES['default']['ENGINE'].split('.')[-1] # ODC PostgreSQL installs are not PostGIS enabled if self.dbtype == 'postgresql_psycopg2': self.dbtype = 'postgresql' if self.dbtype in ['sqlite', 'sqlite3']: # load SQLite query bindings cursor = connection.cursor() connection.connection.create_function( 'query_spatial', 4, util.query_spatial) connection.connection.create_function( 'get_anytext', 1, util.get_anytext) connection.connection.create_function( 'get_geometry_area', 1, util.get_geometry_area) # generate core queryables db and obj bindings self.queryables = {} for tname in self.context.model['typenames']: for qname in self.context.model['typenames'][tname]['queryables']: self.queryables[qname] = {} for qkey, qvalue in \ self.context.model['typenames'][tname]['queryables'][qname].items(): self.queryables[qname][qkey] = qvalue # flatten all queryables # TODO smarter way of doing this self.queryables['_all'] = {} for qbl in self.queryables: self.queryables['_all'].update(self.queryables[qbl]) self.queryables['_all'].update(self.context.md_core_model['mappings']) def query_ids(self, ids): ''' Query by list of identifiers ''' # identifiers are URN masked, where the last token of the identifier # is opendata.models.Resource.id (integer) # if ids are passed which are not int, silently return (does not exist) try: return self._get_repo_filter(Resource.objects).filter(id__in=[s.split(':')[-1] for s in ids]).all() except Exception as err: return [] def query_domain(self, domain, typenames, domainquerytype='list', count=False): ''' Query by property domain values ''' objects = self._get_repo_filter(Resource.objects) if domainquerytype == 'range': return [tuple(objects.aggregate( Min(domain), Max(domain)).values())] else: if count: return [(d[domain], d['%s__count' % domain]) \ for d in objects.values(domain).annotate(Count(domain))] else: return objects.values_list(domain).distinct() def query_insert(self, direction='max'): ''' Query to get latest (default) or earliest update to repository ''' from datetime import datetime if direction == 'min': return Resource.objects.aggregate( Min('last_updated'))['last_updated__min'].strftime('%Y-%m-%dT%H:%M:%SZ') return self._get_repo_filter(Resource.objects).aggregate( Max('last_updated'))['last_updated__max'].strftime('%Y-%m-%dT%H:%M:%SZ') def query_source(self, source): ''' Query by source ''' return self._get_repo_filter(Resource.objects).filter(source=source) def query(self, constraint, sortby=None, typenames=None, maxrecords=10, startposition=0): ''' Query records from underlying repository ''' # run the raw query and get total if 'where' in constraint: # GetRecords with constraint query = self._get_repo_filter(Resource.objects).extra(where=[constraint['where']], params=constraint['values']) else: # GetRecords sans constraint query = self._get_repo_filter(Resource.objects) total = query.count() # apply sorting, limit and offset if sortby is not None: if 'spatial' in sortby and sortby['spatial']: # spatial sort desc = False if sortby['order'] == 'DESC': desc = True query = query.all() return [str(total), sorted(query, key=lambda x: float(util.get_geometry_area(getattr(x, sortby['propertyname']))), reverse=desc)[startposition:startposition+int(maxrecords)]] if sortby['order'] == 'DESC': pname = '-%s' % sortby['propertyname'] else: pname = sortby['propertyname'] return [str(total), \ query.order_by(pname)[startposition:startposition+int(maxrecords)]] else: # no sort return [str(total), query.all()[startposition:startposition+int(maxrecords)]] def _get_repo_filter(self, query): ''' Apply repository wide side filter / mask query ''' if self.filter is not None: return query.extra(where=[self.filter]) return query pycsw-2.0.3/pycsw/PaxHeaders.23451/server.py0000644000000000000000000000007413114323025015440 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.500636302 pycsw-2.0.3/pycsw/server.py0000644000175000001440000010535113114323025016407 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # Angelos Tzotsos # # Copyright (c) 2016 Tom Kralidis # Copyright (c) 2015 Angelos Tzotsos # Copyright (c) 2016 James Dickens # Copyright (c) 2016 Ricardo Silva # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import logging import os from six.moves.urllib.parse import parse_qsl from six.moves.urllib.parse import splitquery from six.moves.urllib.parse import urlparse from six import StringIO from six.moves.configparser import SafeConfigParser import sys from time import time import wsgiref.util from pycsw.core.etree import etree from pycsw import oaipmh, opensearch, sru from pycsw.plugins.profiles import profile as pprofile import pycsw.plugins.outputschemas from pycsw.core import config, log, util from pycsw.ogc.csw import csw2, csw3 LOGGER = logging.getLogger(__name__) class Csw(object): """ Base CSW server """ def __init__(self, rtconfig=None, env=None, version='3.0.0'): """ Initialize CSW """ if not env: self.environ = os.environ else: self.environ = env self.context = config.StaticContext() # Lazy load this when needed # (it will permanently update global cfg namespaces) self.sruobj = None self.opensearchobj = None self.oaipmhobj = None # init kvp self.kvp = {} self.mode = 'csw' self.async = False self.soap = False self.request = None self.exception = False self.status = 'OK' self.profiles = None self.manager = False self.outputschemas = {} self.mimetype = 'application/xml; charset=UTF-8' self.encoding = 'UTF-8' self.pretty_print = 0 self.domainquerytype = 'list' self.orm = 'django' self.language = {'639_code': 'en', 'text': 'english'} self.process_time_start = time() # define CSW implementation object (default CSW3) self.iface = csw3.Csw3(server_csw=self) self.request_version = version if self.request_version == '2.0.2': self.iface = csw2.Csw2(server_csw=self) self.context.set_model('csw') # load user configuration try: if isinstance(rtconfig, SafeConfigParser): # serialized already self.config = rtconfig else: self.config = SafeConfigParser() if isinstance(rtconfig, dict): # dictionary for section, options in rtconfig.items(): self.config.add_section(section) for k, v in options.items(): self.config.set(section, k, v) else: # configuration file import codecs with codecs.open(rtconfig, encoding='utf-8') as scp: self.config.readfp(scp) except Exception: self.response = self.iface.exceptionreport( 'NoApplicableCode', 'service', 'Error opening configuration %s' % rtconfig ) return # set server.home safely # TODO: make this more abstract self.config.set( 'server', 'home', os.path.dirname(os.path.join(os.path.dirname(__file__), '..')) ) self.context.pycsw_home = self.config.get('server', 'home') self.context.url = self.config.get('server', 'url') log.setup_logger(self.config) LOGGER.debug('running configuration %s' % rtconfig) LOGGER.debug(str(self.environ['QUERY_STRING'])) # set OGC schemas location if not self.config.has_option('server', 'ogc_schemas_base'): self.config.set('server', 'ogc_schemas_base', self.context.ogc_schemas_base) # set mimetype if self.config.has_option('server', 'mimetype'): self.mimetype = self.config.get('server', 'mimetype').encode() # set encoding if self.config.has_option('server', 'encoding'): self.encoding = self.config.get('server', 'encoding') # set domainquerytype if self.config.has_option('server', 'domainquerytype'): self.domainquerytype = self.config.get('server', 'domainquerytype') # set XML pretty print if (self.config.has_option('server', 'pretty_print') and self.config.get('server', 'pretty_print') == 'true'): self.pretty_print = 1 # set Spatial Ranking option if (self.config.has_option('server', 'spatial_ranking') and self.config.get('server', 'spatial_ranking') == 'true'): util.ranking_enabled = True # set language default if self.config.has_option('server', 'language'): try: LOGGER.info('Setting language') lang_code = self.config.get('server', 'language').split('-')[0] self.language['639_code'] = lang_code self.language['text'] = self.context.languages[lang_code] except: pass LOGGER.debug('Configuration: %s.' % self.config) LOGGER.debug('Model: %s.' % self.context.model) # load user-defined mappings if they exist if self.config.has_option('repository', 'mappings'): # override default repository mappings try: import imp module = self.config.get('repository', 'mappings') modulename = '%s' % os.path.splitext(module)[0].replace( os.sep, '.') LOGGER.debug('Loading custom repository mappings ' 'from %s.' % module) mappings = imp.load_source(modulename, module) self.context.md_core_model = mappings.MD_CORE_MODEL self.context.refresh_dc(mappings.MD_CORE_MODEL) except Exception as err: self.response = self.iface.exceptionreport( 'NoApplicableCode', 'service', 'Could not load repository.mappings %s' % str(err) ) # load outputschemas LOGGER.debug('Loading outputschemas.') for osch in pycsw.plugins.outputschemas.__all__: output_schema_module = __import__( 'pycsw.plugins.outputschemas.%s' % osch) mod = getattr(output_schema_module.plugins.outputschemas, osch) self.outputschemas[mod.NAMESPACE] = mod LOGGER.debug('Outputschemas loaded: %s.' % self.outputschemas) LOGGER.debug('Namespaces: %s' % self.context.namespaces) def expand_path(self, path): """ return safe path for WSGI environments """ if 'local.app_root' in self.environ and not os.path.isabs(path): return os.path.join(self.environ['local.app_root'], path) else: return path def dispatch_wsgi(self): """ WSGI handler """ if hasattr(self, 'response'): return self._write_response() LOGGER.debug('WSGI mode detected') if self.environ['REQUEST_METHOD'] == 'POST': try: request_body_size = int(self.environ.get('CONTENT_LENGTH', 0)) except (ValueError): request_body_size = 0 self.requesttype = 'POST' self.request = self.environ['wsgi.input'].read(request_body_size) LOGGER.debug('Request type: POST. Request:\n%s\n', self.request) else: # it's a GET request self.requesttype = 'GET' self.request = wsgiref.util.request_uri(self.environ) try: query_part = splitquery(self.request)[-1] self.kvp = dict(parse_qsl(query_part, keep_blank_values=True)) except AttributeError: self.kvp = {} LOGGER.debug('Request type: GET. Request:\n%s\n', self.request) return self.dispatch() def opensearch(self): """ enable OpenSearch """ if not self.opensearchobj: self.opensearchobj = opensearch.OpenSearch(self.context) return self.opensearchobj def sru(self): """ enable SRU """ if not self.sruobj: self.sruobj = sru.Sru(self.context) return self.sruobj def oaipmh(self): """ enable OAI-PMH """ if not self.oaipmhobj: self.oaipmhobj = oaipmh.OAIPMH(self.context, self.config) return self.oaipmhobj def dispatch(self, writer=sys.stdout, write_headers=True): """ Handle incoming HTTP request """ if self.requesttype == 'GET': self.kvp = self.normalize_kvp(self.kvp) version_202 = ('version' in self.kvp and self.kvp['version'] == '2.0.2') accept_version_202 = ('acceptversions' in self.kvp and '2.0.2' in self.kvp['acceptversions']) if version_202 or accept_version_202: self.request_version = '2.0.2' elif self.requesttype == 'POST': if self.request.find(b'2.0.2') != -1: self.request_version = '2.0.2' if (not isinstance(self.kvp, str) and 'mode' in self.kvp and self.kvp['mode'] == 'sru'): self.mode = 'sru' self.request_version = '2.0.2' LOGGER.debug('SRU mode detected; processing request.') self.kvp = self.sru().request_sru2csw(self.kvp) if (not isinstance(self.kvp, str) and 'mode' in self.kvp and self.kvp['mode'] == 'oaipmh'): self.mode = 'oaipmh' self.request_version = '2.0.2' LOGGER.debug('OAI-PMH mode detected; processing request.') self.oaiargs = dict((k, v) for k, v in self.kvp.items() if k) self.kvp = self.oaipmh().request(self.kvp) if self.request_version == '2.0.2': self.iface = csw2.Csw2(server_csw=self) self.context.set_model('csw') # configure transaction support, if specified in config self._gen_manager() namespaces = self.context.namespaces ops = self.context.model['operations'] constraints = self.context.model['constraints'] # generate domain model # NOTE: We should probably avoid this sort of mutable state for WSGI if 'GetDomain' not in ops: ops['GetDomain'] = self.context.gen_domains() # generate distributed search model, if specified in config if self.config.has_option('server', 'federatedcatalogues'): LOGGER.debug('Configuring distributed search.') constraints['FederatedCatalogues'] = {'values': []} for fedcat in self.config.get('server', 'federatedcatalogues').split(','): constraints['FederatedCatalogues']['values'].append(fedcat) for key, value in self.outputschemas.items(): get_records_params = ops['GetRecords']['parameters'] get_records_params['outputSchema']['values'].append( value.NAMESPACE) get_records_by_id_params = ops['GetRecordById']['parameters'] get_records_by_id_params['outputSchema']['values'].append( value.NAMESPACE) if 'Harvest' in ops: harvest_params = ops['Harvest']['parameters'] harvest_params['ResourceType']['values'].append( value.NAMESPACE) LOGGER.debug('Setting MaxRecordDefault') if self.config.has_option('server', 'maxrecords'): constraints['MaxRecordDefault']['values'] = [ self.config.get('server', 'maxrecords')] # load profiles if self.config.has_option('server', 'profiles'): self.profiles = pprofile.load_profiles( os.path.join('pycsw', 'plugins', 'profiles'), pprofile.Profile, self.config.get('server', 'profiles') ) for prof in self.profiles['plugins'].keys(): tmp = self.profiles['plugins'][prof](self.context.model, namespaces, self.context) key = tmp.outputschema # to ref by outputschema self.profiles['loaded'][key] = tmp self.profiles['loaded'][key].extend_core(self.context.model, namespaces, self.config) LOGGER.debug('Profiles loaded: %s.' % list(self.profiles['loaded'].keys())) # init repository # look for tablename, set 'records' as default if not self.config.has_option('repository', 'table'): self.config.set('repository', 'table', 'records') repo_filter = None if self.config.has_option('repository', 'filter'): repo_filter = self.config.get('repository', 'filter') if (self.config.has_option('repository', 'source') and self.config.get('repository', 'source') == 'geonode'): # load geonode repository from pycsw.plugins.repository.geonode import geonode_ try: self.repository = geonode_.GeoNodeRepository(self.context, repo_filter) LOGGER.debug('GeoNode repository loaded ' '(geonode): %s.' % self.repository.dbtype) except Exception as err: self.response = self.iface.exceptionreport( 'NoApplicableCode', 'service', 'Could not load repository (geonode): %s' % str(err) ) elif (self.config.has_option('repository', 'source') and self.config.get('repository', 'source') == 'HHypermap'): # load HHypermap repository from pycsw.plugins.repository.hhypermap import hhypermap try: self.repository = hhypermap.HHypermapRepository(self.context, repo_filter) LOGGER.debug('HHypermap repository loaded ' '(hhypermap): %s.' % self.repository.dbtype) except Exception as err: self.response = self.iface.exceptionreport( 'NoApplicableCode', 'service', 'Could not load repository (hhypermap): %s' % str(err) ) elif (self.config.has_option('repository', 'source') and self.config.get('repository', 'source') == 'odc'): # load odc repository from pycsw.plugins.repository.odc import odc try: self.repository = odc.OpenDataCatalogRepository(self.context, repo_filter) LOGGER.debug('OpenDataCatalog repository loaded ' '(geonode): %s.' % self.repository.dbtype) except Exception as err: self.response = self.iface.exceptionreport( 'NoApplicableCode', 'service', 'Could not load repository (odc): %s' % str(err) ) else: # load default repository self.orm = 'sqlalchemy' from pycsw.core import repository try: self.repository = repository.Repository( self.config.get('repository', 'database'), self.context, self.environ.get('local.app_root', None), self.config.get('repository', 'table'), repo_filter ) LOGGER.debug( 'Repository loaded (local): %s.' % self.repository.dbtype) except Exception as err: self.response = self.iface.exceptionreport( 'NoApplicableCode', 'service', 'Could not load repository (local): %s' % str(err) ) if self.requesttype == 'POST': LOGGER.debug(self.iface.version) self.kvp = self.iface.parse_postdata(self.request) error = 0 if isinstance(self.kvp, str): # it's an exception error = 1 locator = 'service' text = self.kvp if (self.kvp.find('the document is not valid') != -1 or self.kvp.find('document not well-formed') != -1): code = 'NoApplicableCode' else: code = 'InvalidParameterValue' LOGGER.debug('HTTP Headers:\n%s.' % self.environ) LOGGER.debug('Parsed request parameters: %s' % self.kvp) if (not isinstance(self.kvp, str) and 'mode' in self.kvp and self.kvp['mode'] == 'opensearch'): self.mode = 'opensearch' LOGGER.debug('OpenSearch mode detected; processing request.') self.kvp['outputschema'] = 'http://www.w3.org/2005/Atom' if ((len(self.kvp) == 0 and self.request_version == '3.0.0') or (len(self.kvp) == 1 and 'config' in self.kvp)): LOGGER.debug('Turning on default csw30:Capabilities for base URL') self.kvp = { 'service': 'CSW', 'acceptversions': '3.0.0', 'request': 'GetCapabilities' } http_accept = self.environ.get('HTTP_ACCEPT', '') if 'application/opensearchdescription+xml' in http_accept: self.mode = 'opensearch' self.kvp['outputschema'] = 'http://www.w3.org/2005/Atom' if error == 0: # test for the basic keyword values (service, version, request) basic_options = ['service', 'request'] request = self.kvp.get('request', '') own_version_integer = util.get_version_integer( self.request_version) if self.request_version == '2.0.2': basic_options.append('version') for k in basic_options: if k not in self.kvp: if (k in ['version', 'acceptversions'] and request == 'GetCapabilities'): pass else: error = 1 locator = k code = 'MissingParameterValue' text = 'Missing keyword: %s' % k break # test each of the basic keyword values if error == 0: # test service if self.kvp['service'] != 'CSW': error = 1 locator = 'service' code = 'InvalidParameterValue' text = 'Invalid value for service: %s.\ Value MUST be CSW' % self.kvp['service'] # test version kvp_version = self.kvp.get('version', '') try: kvp_version_integer = util.get_version_integer(kvp_version) except Exception as err: kvp_version_integer = 'invalid_value' if (request != 'GetCapabilities' and kvp_version_integer != own_version_integer): error = 1 locator = 'version' code = 'InvalidParameterValue' text = ('Invalid value for version: %s. Value MUST be ' '2.0.2 or 3.0.0' % kvp_version) # check for GetCapabilities acceptversions if 'acceptversions' in self.kvp: for vers in self.kvp['acceptversions'].split(','): vers_integer = util.get_version_integer(vers) if vers_integer == own_version_integer: break else: error = 1 locator = 'acceptversions' code = 'VersionNegotiationFailed' text = ('Invalid parameter value in ' 'acceptversions: %s. Value MUST be ' '2.0.2 or 3.0.0' % self.kvp['acceptversions']) # test request if self.kvp['request'] not in \ self.context.model['operations']: error = 1 locator = 'request' if request in ['Transaction', 'Harvest']: code = 'OperationNotSupported' text = '%s operations are not supported' % request else: code = 'InvalidParameterValue' text = 'Invalid value for request: %s' % request if error == 1: # return an ExceptionReport self.response = self.iface.exceptionreport(code, locator, text) else: # process per the request value if 'responsehandler' in self.kvp: # set flag to process asynchronously import threading self.async = True request_id = self.kvp.get('requestid', None) if request_id is None: import uuid self.kvp['requestid'] = str(uuid.uuid4()) if self.kvp['request'] == 'GetCapabilities': self.response = self.iface.getcapabilities() elif self.kvp['request'] == 'DescribeRecord': self.response = self.iface.describerecord() elif self.kvp['request'] == 'GetDomain': self.response = self.iface.getdomain() elif self.kvp['request'] == 'GetRecords': if self.async: # process asynchronously threading.Thread(target=self.iface.getrecords).start() self.response = self.iface._write_acknowledgement() else: self.response = self.iface.getrecords() elif self.kvp['request'] == 'GetRecordById': self.response = self.iface.getrecordbyid() elif self.kvp['request'] == 'GetRepositoryItem': self.response = self.iface.getrepositoryitem() elif self.kvp['request'] == 'Transaction': self.response = self.iface.transaction() elif self.kvp['request'] == 'Harvest': if self.async: # process asynchronously threading.Thread(target=self.iface.harvest).start() self.response = self.iface._write_acknowledgement() else: self.response = self.iface.harvest() else: self.response = self.iface.exceptionreport( 'InvalidParameterValue', 'request', 'Invalid request parameter: %s' % self.kvp['request'] ) if self.mode == 'sru': LOGGER.debug('SRU mode detected; processing response.') self.response = self.sru().response_csw2sru(self.response, self.environ) elif self.mode == 'opensearch': LOGGER.debug('OpenSearch mode detected; processing response.') self.response = self.opensearch().response_csw2opensearch( self.response, self.config) elif self.mode == 'oaipmh': LOGGER.debug('OAI-PMH mode detected; processing response.') self.response = self.oaipmh().response( self.response, self.oaiargs, self.repository, self.config.get('server', 'url') ) return self._write_response() def getcapabilities(self): """ Handle GetCapabilities request """ return self.iface.getcapabilities() def describerecord(self): """ Handle DescribeRecord request """ return self.iface.describerecord() def getdomain(self): """ Handle GetDomain request """ return self.iface.getdomain() def getrecords(self): """ Handle GetRecords request """ return self.iface.getrecords() def getrecordbyid(self, raw=False): """ Handle GetRecordById request """ return self.iface.getrecordbyid(raw) def getrepositoryitem(self): """ Handle GetRepositoryItem request """ return self.iface.getrepositoryitem() def transaction(self): """ Handle Transaction request """ return self.iface.transaction() def harvest(self): """ Handle Harvest request """ return self.iface.harvest() def _write_response(self): """ Generate response """ # set HTTP response headers and XML declaration xmldecl = '' appinfo = '' LOGGER.debug('Writing response.') if hasattr(self, 'soap') and self.soap: self._gen_soap_wrapper() if etree.__version__ >= '3.5.0': # remove superfluous namespaces etree.cleanup_namespaces(self.response, keep_ns_prefixes=self.context.keep_ns_prefixes) response = etree.tostring(self.response, pretty_print=self.pretty_print, encoding='unicode') if (isinstance(self.kvp, dict) and 'outputformat' in self.kvp and self.kvp['outputformat'] == 'application/json'): self.contenttype = self.kvp['outputformat'] from pycsw.core.formats import fmt_json response = fmt_json.xml2json(response, self.context.namespaces, self.pretty_print) else: # it's XML if 'outputformat' in self.kvp: self.contenttype = self.kvp['outputformat'] else: self.contenttype = self.mimetype xmldecl = ('' '\n' % self.encoding) appinfo = '\n' % self.context.version if isinstance(self.contenttype, bytes): self.contenttype = self.contenttype.decode() s = (u'%s%s%s' % (xmldecl, appinfo, response)).encode(self.encoding) LOGGER.debug('Response code: %s', self.context.response_codes[self.status]) LOGGER.debug('Response:\n%s', s) return [self.context.response_codes[self.status], s] def _gen_soap_wrapper(self): """ Generate SOAP wrapper """ LOGGER.debug('Writing SOAP wrapper.') node = etree.Element( util.nspath_eval('soapenv:Envelope', self.context.namespaces), nsmap=self.context.namespaces ) schema_location_ns = util.nspath_eval('xsi:schemaLocation', self.context.namespaces) node.attrib[schema_location_ns] = '%s %s' % ( self.context.namespaces['soapenv'], self.context.namespaces['soapenv'] ) node2 = etree.SubElement( node, util.nspath_eval('soapenv:Body', self.context.namespaces)) if self.exception: node3 = etree.SubElement( node2, util.nspath_eval('soapenv:Fault', self.context.namespaces) ) node4 = etree.SubElement( node3, util.nspath_eval('soapenv:Code', self.context.namespaces) ) etree.SubElement( node4, util.nspath_eval('soapenv:Value', self.context.namespaces) ).text = 'soap:Server' node4 = etree.SubElement( node3, util.nspath_eval('soapenv:Reason', self.context.namespaces) ) etree.SubElement( node4, util.nspath_eval('soapenv:Text', self.context.namespaces) ).text = 'A server exception was encountered.' node4 = etree.SubElement( node3, util.nspath_eval('soapenv:Detail', self.context.namespaces) ) node4.append(self.response) else: node2.append(self.response) self.response = node def _gen_manager(self): """ Update self.context.model with CSW-T advertising """ if (self.config.has_option('manager', 'transactions') and self.config.get('manager', 'transactions') == 'true'): self.manager = True self.context.model['operations_order'].append('Transaction') self.context.model['operations']['Transaction'] = { 'methods': {'get': False, 'post': True}, 'parameters': {} } schema_values = [ 'http://www.opengis.net/cat/csw/2.0.2', 'http://www.opengis.net/cat/csw/3.0', 'http://www.opengis.net/wms', 'http://www.opengis.net/wmts/1.0', 'http://www.opengis.net/wfs', 'http://www.opengis.net/wcs', 'http://www.opengis.net/wps/1.0.0', 'http://www.opengis.net/sos/1.0', 'http://www.opengis.net/sos/2.0', 'http://www.isotc211.org/2005/gmi', 'urn:geoss:waf', ] self.context.model['operations_order'].append('Harvest') self.context.model['operations']['Harvest'] = { 'methods': {'get': False, 'post': True}, 'parameters': { 'ResourceType': {'values': schema_values} } } self.context.model['operations']['Transaction'] = { 'methods': {'get': False, 'post': True}, 'parameters': { 'TransactionSchemas': {'values': sorted(schema_values)} } } self.csw_harvest_pagesize = 10 if self.config.has_option('manager', 'csw_harvest_pagesize'): self.csw_harvest_pagesize = int( self.config.get('manager', 'csw_harvest_pagesize')) def _test_manager(self): """ Verify that transactions are allowed """ if self.config.get('manager', 'transactions') != 'true': raise RuntimeError('CSW-T interface is disabled') ipaddress = self.environ['REMOTE_ADDR'] if not self.config.has_option('manager', 'allowed_ips') or \ (self.config.has_option('manager', 'allowed_ips') and not util.ipaddress_in_whitelist(ipaddress, self.config.get('manager', 'allowed_ips').split(','))): raise RuntimeError( 'CSW-T operations not allowed for this IP address: %s' % ipaddress) def _cql_update_queryables_mappings(self, cql, mappings): """ Transform CQL query's properties to underlying DB columns """ LOGGER.debug('Raw CQL text = %s.' % cql) LOGGER.debug(str(list(mappings.keys()))) if cql is not None: for key in mappings.keys(): try: cql = cql.replace(key, mappings[key]['dbcol']) except: cql = cql.replace(key, mappings[key]) LOGGER.debug('Interpolated CQL text = %s.' % cql) return cql def _process_responsehandler(self, xml): """ Process response handler """ if self.kvp['responsehandler'] is not None: LOGGER.debug('Processing responsehandler %s.' % self.kvp['responsehandler']) uprh = urlparse(self.kvp['responsehandler']) if uprh.scheme == 'mailto': # email import smtplib LOGGER.debug('Email detected.') smtp_host = 'localhost' if self.config.has_option('server', 'smtp_host'): smtp_host = self.config.get('server', 'smtp_host') body = ('Subject: pycsw %s results\n\n%s' % (self.kvp['request'], xml)) try: LOGGER.debug('Sending email.') msg = smtplib.SMTP(smtp_host) msg.sendmail( self.config.get('metadata:main', 'contact_email'), uprh.path, body ) msg.quit() LOGGER.debug('Email sent successfully.') except Exception as err: LOGGER.debug('Error processing email: %s.' % str(err)) elif uprh.scheme == 'ftp': import ftplib LOGGER.debug('FTP detected.') try: LOGGER.debug('Sending to FTP server.') ftp = ftplib.FTP(uprh.hostname) if uprh.username is not None: ftp.login(uprh.username, uprh.password) ftp.storbinary('STOR %s' % uprh.path[1:], StringIO(xml)) ftp.quit() LOGGER.debug('FTP sent successfully.') except Exception as err: LOGGER.debug('Error processing FTP: %s.' % str(err)) @staticmethod def normalize_kvp(kvp): """Normalize Key Value Pairs. This method will transform all keys to lowercase and leave values unchanged, as specified in the CSW standard (see for example note C on Table 62 - KVP Encoding for DescribeRecord operation request of the CSW standard version 2.0.2) :arg kvp: a mapping with Key Value Pairs :type kvp: dict :returns: A new dictionary with normalized parameters """ result = dict() for name, value in kvp.items(): result[name.lower()] = value return result pycsw-2.0.3/pycsw/PaxHeaders.23451/sru.py0000644000000000000000000000007413114323025014743 xustar0030 atime=1496426292.500636302 30 ctime=1496426292.504636386 pycsw-2.0.3/pycsw/sru.py0000644000175000001440000002553113114323025015713 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= from pycsw.core import util from pycsw.core.etree import etree from pycsw.ogc.fes import fes1 class Sru(object): """SRU wrapper class""" def __init__(self, context): self.sru_version = '1.1' self.namespaces = { 'zd': 'http://www.loc.gov/zing/srw/diagnostic/', 'sru': 'http://www.loc.gov/zing/srw/', 'zr': 'http://explain.z3950.org/dtd/2.1/', 'zs': 'http://www.loc.gov/zing/srw/', 'srw_dc': 'info:srw/schema/1/dc-schema' } self.mappings = { 'csw:Record': { 'schema': { 'name': 'dc', 'identifier': 'info:srw/cql-context-set/1/dc-v1.1', }, 'index': { # map OGC queryables to XPath expressions 'title': '4', 'creator': '1003', 'subject': '29', 'abstract': '62', 'publisher': '1018', 'contributor': 'TBD', 'modified': 'TBD', 'date': '30', 'type': '1031', 'format': '1034', 'identifier': '12', 'source': 'TBD', 'language': 'TBD', 'relation': 'TBD', 'rights': 'TBD', # bbox and full text map to internal fixed columns #'ows:BoundingBox': 'bbox', #'csw:AnyText': 'xml' } } } self.context = context self.context.namespaces.update(self.namespaces) def request_sru2csw(self, kvpin): """transform an SRU request into a CSW request""" kvpout = {'service': 'CSW', 'version': '2.0.2', 'mode': 'sru'} if 'operation' in kvpin: if kvpin['operation'] == 'explain': kvpout['request'] = 'GetCapabilities' elif kvpin['operation'] == 'searchRetrieve': kvpout['request'] = 'GetRecords' if 'startrecord' in kvpin: kvpout['startposition'] = int(kvpin['startrecord']) if 'maximumrecords' in kvpin: kvpout['maxrecords'] = int(kvpin['maximumrecords']) else: kvpout['maxrecords'] = 0 # TODO: make smarter typename fetching kvpout['typenames'] = 'csw:Record' kvpout['elementsetname'] = 'brief' kvpout['constraintlanguage'] = 'CQL_TEXT' kvpout['resulttype'] = 'results' if 'query' in kvpin: pname_in_query = False for coops in fes1.MODEL['ComparisonOperators'].keys(): if kvpin['query'].find(fes1.MODEL['ComparisonOperators'][coops]['opvalue']) != -1: pname_in_query = True break kvpout['constraint'] = {'type': 'cql'} if not pname_in_query: kvpout['constraint'] = 'csw:AnyText like \'%%%s%%\'' % kvpin['query'] else: kvpout['constraint'] = kvpin['query'] else: kvpout['request'] = 'GetCapabilities' return kvpout def response_csw2sru(self, element, environ): """transform a CSW response into an SRU response""" if util.xmltag_split(element.tag) == 'Capabilities': # explain node = etree.Element(util.nspath_eval('sru:explainResponse', self.namespaces), nsmap=self.namespaces) etree.SubElement(node, util.nspath_eval('sru:version', self.namespaces)).text = self.sru_version record = etree.SubElement(node, util.nspath_eval('sru:record', self.namespaces)) etree.SubElement(record, util.nspath_eval('sru:recordPacking', self.namespaces)).text = 'XML' etree.SubElement(record, util.nspath_eval('sru:recordSchema', self.namespaces)).text = 'http://explain.z3950.org/dtd/2.1/' recorddata = etree.SubElement(record, util.nspath_eval('sru:recordData', self.namespaces)) explain = etree.SubElement(recorddata, util.nspath_eval('zr:explain', self.namespaces)) serverinfo = etree.SubElement(explain, util.nspath_eval('zr:serverInfo', self.namespaces), protocol='SRU', version=self.sru_version, transport='http', method='GET POST SOAP') etree.SubElement(serverinfo, util.nspath_eval('zr:host', self.namespaces)).text = environ.get('HTTP_HOST', environ["SERVER_NAME"]) # WSGI allows for either of these etree.SubElement(serverinfo, util.nspath_eval('zr:port', self.namespaces)).text = environ['SERVER_PORT'] etree.SubElement(serverinfo, util.nspath_eval('zr:database', self.namespaces)).text = 'pycsw' databaseinfo = etree.SubElement(explain, util.nspath_eval('zr:databaseInfo', self.namespaces)) etree.SubElement(databaseinfo, util.nspath_eval('zr:title', self.namespaces), lang='en', primary='true').text = element.xpath('//ows:Title|//ows20:Title', namespaces=self.context.namespaces)[0].text etree.SubElement(databaseinfo, util.nspath_eval('zr:description', self.namespaces), lang='en', primary='true').text = element.xpath('//ows:Abstract|//ows20:Abstract', namespaces=self.context.namespaces)[0].text indexinfo = etree.SubElement(explain, util.nspath_eval('zr:indexInfo', self.namespaces)) etree.SubElement(indexinfo, util.nspath_eval('zr:set', self.namespaces), name='dc', identifier='info:srw/cql-context-set/1/dc-v1.1') for key, value in sorted(self.mappings['csw:Record']['index'].items()): zrindex = etree.SubElement(indexinfo, util.nspath_eval('zr:index', self.namespaces), id=value) etree.SubElement(zrindex, util.nspath_eval('zr:title', self.namespaces)).text = key zrmap = etree.SubElement(zrindex, util.nspath_eval('zr:map', self.namespaces)) etree.SubElement(zrmap, util.nspath_eval('zr:map', self.namespaces), set='dc').text = key zrindex = etree.SubElement(indexinfo, util.nspath_eval('zr:index', self.namespaces)) zrmap = etree.SubElement(zrindex, util.nspath_eval('zr:map', self.namespaces)) etree.SubElement(zrmap, util.nspath_eval('zr:name', self.namespaces), set='dc').text = 'title222' schemainfo = etree.SubElement(explain, util.nspath_eval('zr:schemaInfo', self.namespaces)) zrschema = etree.SubElement(schemainfo, util.nspath_eval('zr:schema', self.namespaces), name='dc', identifier='info:srw/schema/1/dc-v1.1') etree.SubElement(zrschema, util.nspath_eval('zr:title', self.namespaces)).text = 'Simple Dublin Core' configinfo = etree.SubElement(explain, util.nspath_eval('zr:configInfo', self.namespaces)) etree.SubElement(configinfo, util.nspath_eval('zr:default', self.namespaces), type='numberOfRecords').text = '0' elif util.xmltag_split(element.tag) == 'GetRecordsResponse': recpos = int(element.xpath('//@nextRecord')[0]) - int(element.xpath('//@numberOfRecordsReturned')[0]) node = etree.Element(util.nspath_eval('zs:searchRetrieveResponse', self.namespaces), nsmap=self.namespaces) etree.SubElement(node, util.nspath_eval('zs:version', self.namespaces)).text = self.sru_version etree.SubElement(node, util.nspath_eval('zs:numberOfRecords', self.namespaces)).text = element.xpath('//@numberOfRecordsMatched')[0] for rec in element.xpath('//csw:BriefRecord', namespaces=self.context.namespaces): record = etree.SubElement(node, util.nspath_eval('zs:record', self.namespaces)) etree.SubElement(node, util.nspath_eval('zs:recordSchema', self.namespaces)).text = 'info:srw/schema/1/dc-v1.1' etree.SubElement(node, util.nspath_eval('zs:recordPacking', self.namespaces)).text = 'xml' recorddata = etree.SubElement(record, util.nspath_eval('zs:recordData', self.namespaces)) rec.tag = util.nspath_eval('srw_dc:srw_dc', self.namespaces) recorddata.append(rec) etree.SubElement(record, util.nspath_eval('zs:recordPosition', self.namespaces)).text = str(recpos) recpos += 1 elif util.xmltag_split(element.tag) == 'ExceptionReport': node = self.exceptionreport2diagnostic(element) return node def exceptionreport2diagnostic(self, element): """transform a CSW exception into an SRU diagnostic""" node = etree.Element( util.nspath_eval('zs:searchRetrieveResponse', self.namespaces), nsmap=self.namespaces) etree.SubElement(node, util.nspath_eval('zs:version', self.namespaces)).text = self.sru_version diagnostics = etree.SubElement(node, util.nspath_eval('zs:diagnostics', self.namespaces)) diagnostic = etree.SubElement( diagnostics, util.nspath_eval('zs:diagnostic', self.namespaces)) etree.SubElement(diagnostic, util.nspath_eval('zd:diagnostic', self.namespaces)).text = \ 'info:srw/diagnostic/1/7' etree.SubElement(diagnostic, util.nspath_eval('zd:message', self.namespaces)).text = \ element.xpath('//ows:Exception/ows:ExceptionText|//ows20:Exception/ows20:ExceptionText', namespaces=self.context.namespaces)[0].text etree.SubElement(diagnostic, util.nspath_eval('zd:details', self.namespaces)).text = \ element.xpath('//ows:Exception|//ows20:Exception', namespaces=self.context.namespaces)[0].attrib.get('exceptionCode') return node pycsw-2.0.3/pycsw/PaxHeaders.23451/wsgi.py0000644000000000000000000000007413114323025015103 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/pycsw/wsgi.py0000644000175000001440000000756513114323025016062 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Adam Hinz # # Copyright (c) 2015 Adam Hinz # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= # WSGI wrapper for pycsw # # Apache mod_wsgi configuration # # ServerName host1 # WSGIDaemonProcess host1 home=/var/www/pycsw processes=2 # WSGIProcessGroup host1 # # WSGIScriptAlias /pycsw-wsgi /var/www/pycsw/wsgi.py # # # Order deny,allow # Allow from all # # # or invoke this script from the command line: # # $ python ./pycsw/wsgi.py # # which will publish pycsw to: # # http://localhost:8000/ # import os import sys import six from six.moves.urllib.parse import unquote from pycsw import server PYCSW_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) def application(env, start_response): """WSGI wrapper""" config = 'default.cfg' if 'PYCSW_CONFIG' in env: config = env['PYCSW_CONFIG'] root = PYCSW_ROOT if 'PYCSW_ROOT' in env: root = env['PYCSW_ROOT'] if env['QUERY_STRING'].lower().find('config') != -1: for kvp in env['QUERY_STRING'].split('&'): if kvp.lower().find('config') != -1: config = unquote(kvp.split('=')[1]) if not os.path.isabs(config): config = os.path.join(root, config) if 'HTTP_HOST' in env and ':' in env['HTTP_HOST']: env['HTTP_HOST'] = env['HTTP_HOST'].split(':')[0] env['local.app_root'] = root csw = server.Csw(config, env) gzip = False if ('HTTP_ACCEPT_ENCODING' in env and env['HTTP_ACCEPT_ENCODING'].find('gzip') != -1): # set for gzip compressed response gzip = True # set compression level if csw.config.has_option('server', 'gzip_compresslevel'): gzip_compresslevel = \ int(csw.config.get('server', 'gzip_compresslevel')) else: gzip_compresslevel = 0 status, contents = csw.dispatch_wsgi() headers = {} if gzip and gzip_compresslevel > 0: import gzip buf = six.BytesIO() gzipfile = gzip.GzipFile(mode='wb', fileobj=buf, compresslevel=gzip_compresslevel) gzipfile.write(contents) gzipfile.close() contents = buf.getvalue() headers['Content-Encoding'] = 'gzip' headers['Content-Length'] = str(len(contents)) headers['Content-Type'] = str(csw.contenttype) start_response(status, list(headers.items())) return [contents] if __name__ == '__main__': # run inline using WSGI reference implementation from wsgiref.simple_server import make_server port = 8000 if len(sys.argv) > 1: port = int(sys.argv[1]) httpd = make_server('', port, application) print('Serving on port %d...' % port) httpd.serve_forever() pycsw-2.0.3/PaxHeaders.23451/requirements-dev.txt0000644000000000000000000000007413114323025016453 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/requirements-dev.txt0000644000175000001440000000002413114323025017411 0ustar00kalxasusers00000000000000Paver==1.2.2 sphinx pycsw-2.0.3/PaxHeaders.23451/requirements-pg.txt0000644000000000000000000000007413114323025016303 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/requirements-pg.txt0000644000175000001440000000001113114323025017235 0ustar00kalxasusers00000000000000psycopg2 pycsw-2.0.3/PaxHeaders.23451/requirements-standalone.txt0000644000000000000000000000007413114323025020025 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/requirements-standalone.txt0000644000175000001440000000001313114323025020761 0ustar00kalxasusers00000000000000SQLAlchemy pycsw-2.0.3/PaxHeaders.23451/requirements.txt0000644000000000000000000000007413114323025015677 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/requirements.txt0000644000175000001440000000014513114323025016641 0ustar00kalxasusers00000000000000geolinks==0.2.0 lxml==3.6.2 OWSLib==0.10.3 pyproj==1.9.3 Shapely==1.3.1 six==1.10.0 xmltodict==0.9.2 pycsw-2.0.3/PaxHeaders.23451/setup.py0000644000000000000000000000007413114323025014125 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/setup.py0000644000175000001440000001333213114323025015071 0ustar00kalxasusers00000000000000# -*- coding: utf-8 -*- # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2016 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import os from distutils.core import setup import pycsw def is_package(path): """Decipher whether a filepath is a Python package""" return ( os.path.isdir(path) and os.path.isfile(os.path.join(path, '__init__.py')) ) def find_packages(path, base=''): """Find all packages in path""" packages = {} for item in os.listdir(path): directory = os.path.join(path, item) if is_package(directory): if base: module_name = "%(base)s.%(item)s" % vars() else: module_name = item packages[module_name] = directory packages.update(find_packages(directory, module_name)) return packages def find_packages_xsd(location='.'): """ Figure out which packages need to be specified as package_data keys (the ones with XML Schema documents """ packages = [] for root, dirs, files in os.walk(location): if 'schemas' in dirs: # include as a package_data key packages.append(root.replace(os.sep, '.').replace('..', '')) return packages def get_package_data(location='.', forced_dir=None): """Generate package_data dict""" package_data = {} for ploc in location: # turn package identifier into filepath filepath = ploc.replace('.', os.sep) if forced_dir is not None: # force os.walk to traverse subdir filepath = '%s%sschemas' % (filepath, os.sep) for root, dirs, files in os.walk(filepath): if len(files) > 0: # find all the XML Schema documents xsds = [x for x in files if x.find('.xsd') != -1] catalog_xml = [x for x in files if x.find('catalog.xml') != -1] xsds.extend(catalog_xml) if len(xsds) > 0: if ploc not in package_data: # set key package_data[ploc] = [] for xsd in xsds: # add filename to list root2 = root.replace(filepath, '').split(os.sep)[1:] pathstr = '%s%s%s' % (os.sep.join(root2), os.sep, xsd) if forced_dir is not None: filename = 'schemas%s%s' % (os.sep, pathstr) else: filename = pathstr package_data[ploc].append(filename) return package_data # ensure a fresh MANIFEST file is generated if (os.path.exists('MANIFEST')): os.unlink('MANIFEST') # set setup.packages PACKAGES = list(find_packages('.').keys()) # get package_data.keys() PACKAGE_DATA_XSD = find_packages_xsd('pycsw') # Because package 'pycsw' contains all other packages, # process it last, so that it doesn't set it's package_data # files to one already set in other packages ROOT_PACKAGE = PACKAGE_DATA_XSD.pop(0) # set package_data PACKAGE_DATA = get_package_data(PACKAGE_DATA_XSD) # update package_data for pycsw package PACKAGE_DATA.update(get_package_data([ROOT_PACKAGE], 'schemas')) # set the dependencies # GeoNode, HHypermap and OpenDataCatalog do not require SQLAlchemy with open('requirements.txt') as f: INSTALL_REQUIRES = f.read().splitlines() KEYWORDS = ('pycsw csw catalogue catalog metadata discovery search' ' ogc iso fgdc dif ebrim inspire') DESCRIPTION = 'pycsw is an OGC CSW server implementation written in Python' with open('README.txt') as f: LONG_DESCRIPTION = f.read() setup( name='pycsw', version=pycsw.__version__, description=DESCRIPTION, long_description=LONG_DESCRIPTION, license='MIT', platforms='all', keywords=KEYWORDS, author='Tom Kralidis', author_email='tomkralidis@gmail.com', maintainer='Tom Kralidis', maintainer_email='tomkralidis@gmail.com', url='http://pycsw.org/', install_requires=INSTALL_REQUIRES, packages=PACKAGES, package_data=PACKAGE_DATA, scripts=[os.path.join('bin', 'pycsw-admin.py')], classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Web Environment', 'Intended Audience :: Developers', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.4', 'Topic :: Scientific/Engineering :: GIS', ] ) pycsw-2.0.3/PaxHeaders.23451/tests0000644000000000000000000000013213114323531013475 xustar0030 mtime=1496426329.717423961 30 atime=1496426292.504636386 30 ctime=1496426329.717423961 pycsw-2.0.3/tests/0000755000175000001440000000000013114323531014521 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/PaxHeaders.23451/README.txt0000644000000000000000000000007413114323025015253 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/README.txt0000644000175000001440000000006113114323025016212 0ustar00kalxasusers00000000000000See http://docs.pycsw.org/en/latest/testing.html pycsw-2.0.3/tests/PaxHeaders.23451/expected0000644000000000000000000000007413114323025015301 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/0000755000175000001440000000000013114323025016320 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso-inspire_get_GetCapabilities-lang.xml0000644000000000000000000000007413114323025027145 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso-inspire_get_GetCapabilities-lang.xml0000644000175000001440000004554013114323025030117 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record gmd:MD_Metadata DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record gmd:MD_Metadata apiso:AccessConstraints apiso:Classification apiso:ConditionApplyingToAccessAndUse apiso:Contributor apiso:Creator apiso:Degree apiso:Lineage apiso:OtherConstraints apiso:Publisher apiso:Relation apiso:ResponsiblePartyRole apiso:SpecificationDate apiso:SpecificationDateType apiso:SpecificationTitle csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox apiso:Abstract apiso:AlternateTitle apiso:AnyText apiso:BoundingBox apiso:CRS apiso:CouplingType apiso:CreationDate apiso:Denominator apiso:DistanceUOM apiso:DistanceValue apiso:Format apiso:GeographicDescriptionCode apiso:HasSecurityConstraints apiso:Identifier apiso:KeywordType apiso:Language apiso:Modified apiso:OperatesOn apiso:OperatesOnIdentifier apiso:OperatesOnName apiso:Operation apiso:OrganisationName apiso:ParentIdentifier apiso:PublicationDate apiso:ResourceLanguage apiso:RevisionDate apiso:ServiceType apiso:ServiceTypeVersion apiso:Subject apiso:TempExtent_begin apiso:TempExtent_end apiso:Title apiso:TopicCategory apiso:Type brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed http://localhost/pycsw/csw.py?config=tests/suites/apiso-inspire/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities application/xml service 2011-02-01 2011-03-30 COMMISSION REGULATION (EU) No 1089/2010 of 23 November 2010 implementing Directive 2007/2/EC of the European Parliament and of the Council as regards interoperability of spatial data sets and services 2010-12-08 OJ:L:2010:323:0011:0102:EN:PDF http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2010:323:0011:0102:EN:PDF application/pdf notEvaluated National Technical University of Athens tzotsos@gmail.com 2011-03-29 discovery infoCatalogueService GEMET - INSPIRE themes 2008-06-01 Utility and governmental services eng eng gre eng gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso-inspire_get_GetCapabilities.xml0000644000000000000000000000007413114323025026226 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso-inspire_get_GetCapabilities.xml0000644000175000001440000004554013114323025027200 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record gmd:MD_Metadata DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record gmd:MD_Metadata apiso:AccessConstraints apiso:Classification apiso:ConditionApplyingToAccessAndUse apiso:Contributor apiso:Creator apiso:Degree apiso:Lineage apiso:OtherConstraints apiso:Publisher apiso:Relation apiso:ResponsiblePartyRole apiso:SpecificationDate apiso:SpecificationDateType apiso:SpecificationTitle csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox apiso:Abstract apiso:AlternateTitle apiso:AnyText apiso:BoundingBox apiso:CRS apiso:CouplingType apiso:CreationDate apiso:Denominator apiso:DistanceUOM apiso:DistanceValue apiso:Format apiso:GeographicDescriptionCode apiso:HasSecurityConstraints apiso:Identifier apiso:KeywordType apiso:Language apiso:Modified apiso:OperatesOn apiso:OperatesOnIdentifier apiso:OperatesOnName apiso:Operation apiso:OrganisationName apiso:ParentIdentifier apiso:PublicationDate apiso:ResourceLanguage apiso:RevisionDate apiso:ServiceType apiso:ServiceTypeVersion apiso:Subject apiso:TempExtent_begin apiso:TempExtent_end apiso:Title apiso:TopicCategory apiso:Type brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed http://localhost/pycsw/csw.py?config=tests/suites/apiso-inspire/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities application/xml service 2011-02-01 2011-03-30 COMMISSION REGULATION (EU) No 1089/2010 of 23 November 2010 implementing Directive 2007/2/EC of the European Parliament and of the Council as regards interoperability of spatial data sets and services 2010-12-08 OJ:L:2010:323:0011:0102:EN:PDF http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2010:323:0011:0102:EN:PDF application/pdf notEvaluated National Technical University of Athens tzotsos@gmail.com 2011-03-29 discovery infoCatalogueService GEMET - INSPIRE themes 2008-06-01 Utility and governmental services eng eng gre eng gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_DescribeRecord.xml0000644000000000000000000000007413114323025024613 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_DescribeRecord.xml0000644000175000001440000007324413114323025025567 0ustar00kalxasusers00000000000000 This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:05 ====== Basic information about data Graphic that provides an illustration of the dataset (should include a legend for the graphic) See 19119 for further info Brief description of ways in which the dataset is currently used. Keywords, their type and reference source Encapsulates the dataset aggregation information High-level geospatial data thematic classification to assist in the grouping and search of available geospatial datasets This file was generated from ISO TC/211 UML class diagrams == 10-13-2006 11:14:04 ====== pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetCapabilities.xml0000644000000000000000000000007413114323025024765 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetCapabilities.xml0000644000175000001440000003545113114323025025737 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record gmd:MD_Metadata DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record gmd:MD_Metadata apiso:AccessConstraints apiso:Classification apiso:ConditionApplyingToAccessAndUse apiso:Contributor apiso:Creator apiso:Degree apiso:Lineage apiso:OtherConstraints apiso:Publisher apiso:Relation apiso:ResponsiblePartyRole apiso:SpecificationDate apiso:SpecificationDateType apiso:SpecificationTitle csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox apiso:Abstract apiso:AlternateTitle apiso:AnyText apiso:BoundingBox apiso:CRS apiso:CouplingType apiso:CreationDate apiso:Denominator apiso:DistanceUOM apiso:DistanceValue apiso:Format apiso:GeographicDescriptionCode apiso:HasSecurityConstraints apiso:Identifier apiso:KeywordType apiso:Language apiso:Modified apiso:OperatesOn apiso:OperatesOnIdentifier apiso:OperatesOnName apiso:Operation apiso:OrganisationName apiso:ParentIdentifier apiso:PublicationDate apiso:ResourceLanguage apiso:RevisionDate apiso:ServiceType apiso:ServiceTypeVersion apiso:Subject apiso:TempExtent_begin apiso:TempExtent_end apiso:Title apiso:TopicCategory apiso:Type brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetDomain-property.xml0000644000000000000000000000007413114323025025465 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetDomain-property.xml0000644000175000001440000000162413114323025026432 0ustar00kalxasusers00000000000000 apiso:TopicCategory climatologyMeteorologyAtmosphere elevation geoscientificInformation pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecordById-brief.xml0000644000000000000000000000007413114323025025447 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecordById-brief.xml0000644000175000001440000000724613114323025026422 0ustar00kalxasusers00000000000000 de53e931-778a-4792-94ad-9fe507aca483 dataset Ortho 2000-01-01 publication 21.48 21.53 39.76 39.79 http://www.ypaat.gr None None None pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecordById-full-dc.xml0000644000000000000000000000007413114323025025706 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecordById-full-dc.xml0000644000175000001440000000756613114323025026666 0ustar00kalxasusers00000000000000 NS06agg PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia dataset Oceans > Ocean Chemistry > Chlorophyll Oceans > Ocean Optics > Turbidity Oceans > Ocean Temperature > Water Temperature Oceans > Salinity/Density > Conductivity Oceans > Salinity/Density > Salinity Oceans > Water Quality Ocean &gt; Pacific Ocean &gt; Western Pacific Ocean &gt; Micronesia &gt; Federated States of Micronesia Ocean &gt; Pacific Ocean &gt; United States of America &gt; Territories Federated States of Micronesia &gt; Pohnpei &gt; Pohnpei Lagoon Pacific Islands Ocean Observing System (PacIOOS) Pacific Islands Ocean Observing System (PacIOOS) sea_water_temperature sea_water_electrical_conductivity sea_water_turbidity mass_concentration_of_chlorophyll_in_sea_water sea_water_salinity depth latitude longitude time climatologyMeteorologyAtmosphere http://oos.soest.hawaii.edu/thredds/idd/nss_pacioos.html?dataset=NS06agg http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg.html http://pacioos.org/voyager/index.html?b=6.874279%2C158.077126%2C7.050468%2C158.369808&tz=pont&o=qual:2::p0NS06p1 http://oos.soest.hawaii.edu/dchart/index.html?dsetid=54cd0688ada08d86748b9c5762509f http://oos.soest.hawaii.edu/erddap/tabledap/nss06_agg.graph?time%2Ctemperature&.draw=lines http://pacioos.org/focus/waterquality/wq_fsm.php http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg 2014-04-16 The nearshore sensors are part of the Pacific Islands Ocean Observing System (PacIOOS) and are designed to measure a variety of ocean parameters at fixed point locations. NS06 is located at the dock in Pohnpei lagoon and is mounted to the bottom in about 1 meter of water. The instrument is a Sea-Bird Electronics model 16+ V2 coupled with a WET Labs ECO-FLNTUS combination sensor. 2014-04-16 6.96 158.22 6.96 158.22 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecordById-full.xml0000644000000000000000000000007413114323025025322 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecordById-full.xml0000644000175000001440000001737613114323025026302 0ustar00kalxasusers00000000000000 de53e931-778a-4792-94ad-9fe507aca483 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-07 ISO19115 2003/Cor.1:2006 Ortho 2000-01-01publication de53e931-778a-4792-94ad-9fe507aca483 T_ortho_RAS_1998_284404.tif Ortho YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations 5000 eng geoscientificInformation 21.47878421.52731739.7600139.790341 1997-01-011999-01-01 http://www.ypaat.gr dataset test pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecordById-srv-brief.xml0000644000000000000000000000007413114323025026257 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecordById-srv-brief.xml0000644000175000001440000001037213114323025027224 0ustar00kalxasusers00000000000000 3e9a8c05 service test Title 2011-04-19 creation view Geographic viewer (humanGeographicViewer) administration 19.37 29.61 34.8 41.75 http://aiolos.survey.ntua.gr/geoserver/wms None None None pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecords-all-csw-output.xml0000644000000000000000000000007413114323025026673 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecords-all-csw-output.xml0000644000175000001440000012100713114323025027636 0ustar00kalxasusers00000000000000 3e9a8c05 eng service NTUA tzotsos@gmail.com pointOfContact 2011-04-18 ISO19115 2003/Cor.1:2006 test Title 2011-04-19 creation http://aiolos.survey.ntua.gr ogc test Abstract NTUA tzotsos@gmail.com owner Geographic viewer (humanGeographicViewer) administration GEMET Themes, version 2.3 2011-04-18 publication Conditions unknown no limitation 19.37 29.61 34.80 41.75 2011-04-18 2011-04-20 view http://aiolos.survey.ntua.gr/geoserver/wms service Conformity_001 INSPIRE Corrigendum to INSPIRE Metadata Regulation published in the Official Journal of the European Union, L 328, page 83 2009-12-15 publication See the referenced specification true 366f6257-19eb-4f20-ba78-0698ac4aae77 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation 366f6257-19eb-4f20-ba78-0698ac4aae77 T_aerfo_RAS_1991_GR800P001800000012.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test 75a7eb5e-336e-453d-ab06-209b1070d396 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation 75a7eb5e-336e-453d-ab06-209b1070d396 T_aerfo_RAS_1991_GR800P001800000013.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test a7308c0a-b748-48e2-bab7-0a608a51d416 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation a7308c0a-b748-48e2-bab7-0a608a51d416 T_aerfo_RAS_1991_GR800P001800000014.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test 0173e0d7-6ea9-4407-b846-f29d6bfa9903 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation 0173e0d7-6ea9-4407-b846-f29d6bfa9903 T_aerfo_RAS_1991_GR800P001800000015.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecords-all.xml0000644000000000000000000000007413114323025024543 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecords-all.xml0000644000175000001440000012100713114323025025506 0ustar00kalxasusers00000000000000 3e9a8c05 eng service NTUA tzotsos@gmail.com pointOfContact 2011-04-18 ISO19115 2003/Cor.1:2006 test Title 2011-04-19 creation http://aiolos.survey.ntua.gr ogc test Abstract NTUA tzotsos@gmail.com owner Geographic viewer (humanGeographicViewer) administration GEMET Themes, version 2.3 2011-04-18 publication Conditions unknown no limitation 19.37 29.61 34.80 41.75 2011-04-18 2011-04-20 view http://aiolos.survey.ntua.gr/geoserver/wms service Conformity_001 INSPIRE Corrigendum to INSPIRE Metadata Regulation published in the Official Journal of the European Union, L 328, page 83 2009-12-15 publication See the referenced specification true 366f6257-19eb-4f20-ba78-0698ac4aae77 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation 366f6257-19eb-4f20-ba78-0698ac4aae77 T_aerfo_RAS_1991_GR800P001800000012.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test 75a7eb5e-336e-453d-ab06-209b1070d396 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation 75a7eb5e-336e-453d-ab06-209b1070d396 T_aerfo_RAS_1991_GR800P001800000013.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test a7308c0a-b748-48e2-bab7-0a608a51d416 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation a7308c0a-b748-48e2-bab7-0a608a51d416 T_aerfo_RAS_1991_GR800P001800000014.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test 0173e0d7-6ea9-4407-b846-f29d6bfa9903 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation 0173e0d7-6ea9-4407-b846-f29d6bfa9903 T_aerfo_RAS_1991_GR800P001800000015.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecords-cql-title.xml0000644000000000000000000000007413114323025025671 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecords-cql-title.xml0000644000175000001440000004127213114323025026641 0ustar00kalxasusers00000000000000 a2744b0c-becd-426a-95a8-46e9850ccc6d dataset DTM 2009-10-07 creation 19.0 30.0 34.0 42.0 http://www.ypaat.gr None None None 0dc824a6-b555-46c1-bd7b-bc66cb91a70f dataset DTM 2009-10-07 creation 19.0 30.0 34.0 42.0 http://www.ypaat.gr None None None 42c8e55a-2bf6-476d-a7c9-be3bcd697f13 dataset DTM 2009-10-07 creation 19.0 30.0 34.0 42.0 http://www.ypaat.gr None None None c3bf29d4-d60a-4959-a415-2c03fb0d4aef dataset DTM 2009-10-07 creation 19.0 30.0 34.0 42.0 http://www.ypaat.gr None None None b8cc2388-5d0a-43d8-9473-0e86dd0396da dataset DTM 2009-10-07 creation 19.0 30.0 34.0 42.0 http://www.ypaat.gr None None None pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecords-elementname.xml0000644000000000000000000000007413114323025026265 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecords-elementname.xml0000644000175000001440000004252013114323025027232 0ustar00kalxasusers00000000000000 3e9a8c05 service test Title 2011-04-19 creation view Geographic viewer (humanGeographicViewer) administration 19.37 29.61 34.8 41.75 http://aiolos.survey.ntua.gr/geoserver/wms None None None 366f6257-19eb-4f20-ba78-0698ac4aae77 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None 75a7eb5e-336e-453d-ab06-209b1070d396 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None a7308c0a-b748-48e2-bab7-0a608a51d416 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None 0173e0d7-6ea9-4407-b846-f29d6bfa9903 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecords-filter-and-nested-spatial-o0000644000000000000000000000007413114323025030370 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecords-filter-and-nested-spatial-or-dateline.xml0000644000175000001440000017170413114323025034110 0ustar00kalxasusers00000000000000 NS06agg eng UTF8 dataset service Margaret McManus University of Hawaii mamc@hawaii.edu http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html http web browser information pointOfContact 2014-04-16 ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data ISO 19115-2:2009(E) 3 column 1 0.0 row 1 0.0 temporal 482760 252.0 area PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia 2011-04-12 creation 2011-04-19 issued 2014-03-18 revision org.pacioos NS06agg Margaret McManus University of Hawaii mamc@hawaii.edu http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html http web browser information originator Jim Potemra distributor Data produced by Dr. Margaret McManus (mamc@hawaii.edu). Point of contact: Gordon Walker (gwalker@hawaii.edu). The nearshore sensors are part of the Pacific Islands Ocean Observing System (PacIOOS) and are designed to measure a variety of ocean parameters at fixed point locations. NS06 is located at the dock in Pohnpei lagoon and is mounted to the bottom in about 1 meter of water. The instrument is a Sea-Bird Electronics model 16+ V2 coupled with a WET Labs ECO-FLNTUS combination sensor. PacIOOS provides timely, reliable, and accurate ocean information to support a safe, clean, productive ocean and resilient coastal zone in the U.S. Pacific Islands region. The Pacific Islands Ocean Observing System (PacIOOS) is funded through the National Oceanic and Atmospheric Administration (NOAA) as a Regional Association within the U.S. Integrated Ocean Observing System (IOOS). PacIOOS is coordinated by the University of Hawaii School of Ocean and Earth Science and Technology (SOEST). Margaret McManus University of Hawaii mamc@hawaii.edu http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html http web browser information pointOfContact http://pacioos.org/metadata/browse/NS06agg.png Sample image. Oceans > Ocean Chemistry > Chlorophyll Oceans > Ocean Optics > Turbidity Oceans > Ocean Temperature > Water Temperature Oceans > Salinity/Density > Conductivity Oceans > Salinity/Density > Salinity Oceans > Water Quality theme GCMD Science Keywords Ocean &gt; Pacific Ocean &gt; Western Pacific Ocean &gt; Micronesia &gt; Federated States of Micronesia Ocean &gt; Pacific Ocean &gt; United States of America &gt; Territories Federated States of Micronesia &gt; Pohnpei &gt; Pohnpei Lagoon place GCMD Location Keywords Pacific Islands Ocean Observing System (PacIOOS) project GCMD Project Keywords Pacific Islands Ocean Observing System (PacIOOS) dataCenter GCMD Data Center Keywords sea_water_temperature sea_water_electrical_conductivity sea_water_turbidity mass_concentration_of_chlorophyll_in_sea_water sea_water_salinity depth latitude longitude time theme CF-1.4 The data may be used and redistributed for free but is not intended for legal use, since it may contain inaccuracies. Neither the data Contributor, University of Hawaii, PacIOOS, NOAA, State of Hawaii nor the United States Government, nor any of their employees or contractors, makes any warranty, express or implied, including warranties of merchantability and fitness for a particular purpose, or assumes any legal liability for the accuracy, completeness, or usefulness, of this information. Pacific Islands Ocean Observing System (PacIOOS) largerWorkCitation project Unidata Common Data Model Point largerWorkCitation project eng climatologyMeteorologyAtmosphere 1 158.22402954101562 158.22402954101562 6.955227375030518 6.955227375030518 seconds 2010-05-07T00:00:00Z 2014-03-17T23:56:00Z -1.0 -1.0 PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia 2011-04-12 creation 2011-04-19 issued 2014-03-18 revision Margaret McManus University of Hawaii mamc@hawaii.edu http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html http web browser information originator Jim Potemra distributor The nearshore sensors are part of the Pacific Islands Ocean Observing System (PacIOOS) and are designed to measure a variety of ocean parameters at fixed point locations. NS06 is located at the dock in Pohnpei lagoon and is mounted to the bottom in about 1 meter of water. The instrument is a Sea-Bird Electronics model 16+ V2 coupled with a WET Labs ECO-FLNTUS combination sensor. THREDDS OPeNDAP 1 158.22402954101562 158.22402954101562 6.955227375030518 6.955227375030518 2010-05-07T00:00:00Z 2014-03-17T23:56:00Z -1.0 -1.0 tight OPeNDAP Client Access http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg OPeNDAP THREDDS OPeNDAP download temp float Temperature (sea_water_temperature) cond float Conductivity (sea_water_electrical_conductivity) turb float Turbidity (sea_water_turbidity) flor float Chlorophyll (mass_concentration_of_chlorophyll_in_sea_water) salt float Salinity (sea_water_salinity) z float depth below mean sea level (depth) lat float Latitude (latitude) lon float Longitude (longitude) time float Time (time) Pacific Islands Ocean Observing System (PacIOOS) jimp@hawaii.edu http://pacioos.org http web browser URL for the data publisher This URL provides contact information for the publisher of this dataset information publisher OPeNDAP http://oos.soest.hawaii.edu/thredds/idd/nss_pacioos.html?dataset=NS06agg THREDDS Catalog This URL provides a catalog page for this dataset within THREDDS Data Server (TDS). download http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg.html File Information This URL provides a standard OPeNDAP html interface for selecting data from this dataset. Change the extension to .info for a description of the dataset. download http://pacioos.org/voyager/index.html?b=6.874279%2C158.077126%2C7.050468%2C158.369808&tz=pont&o=qual:2::p0NS06p1 PacIOOS Voyager (Google Maps API) This URL provides a viewer for this dataset. download http://oos.soest.hawaii.edu/dchart/index.html?dsetid=54cd0688ada08d86748b9c5762509f DChart This URL provides a viewer for this dataset. download http://oos.soest.hawaii.edu/erddap/tabledap/nss06_agg.graph?time%2Ctemperature&.draw=lines ERDDAP This URL provides a viewer for this dataset. download http://pacioos.org/focus/waterquality/wq_fsm.php PacIOOS Water Quality Platforms: FSM This URL provides a viewer for this dataset. download dataset UH/SOEST (M. McManus), PacIOOS asset (05/2010) This record was translated from NcML using UnidataDD2MI.xsl Version 2.3 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecords-filter-anytext.xml0000644000000000000000000000007413114323025026752 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecords-filter-anytext.xml0000644000175000001440000004135413114323025027723 0ustar00kalxasusers00000000000000 366f6257-19eb-4f20-ba78-0698ac4aae77 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None 75a7eb5e-336e-453d-ab06-209b1070d396 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None a7308c0a-b748-48e2-bab7-0a608a51d416 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None 0173e0d7-6ea9-4407-b846-f29d6bfa9903 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None 437ae0a2-06e2-4015-b296-a66e7f407bf2 dataset Aerial Photos 2009-10-09 creation 20.0 38.0 24.0 40.0 http://www.ypaat.gr None None None pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecords-filter-bbox-csw-output.xml0000644000000000000000000000007413114323025030340 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecords-filter-bbox-csw-output.xml0000644000175000001440000000541513114323025031307 0ustar00kalxasusers00000000000000 3e9a8c05 test Title service 34.8 19.37 41.75 29.61 366f6257-19eb-4f20-ba78-0698ac4aae77 Aerial Photos dataset 38.0 20.0 40.0 24.0 75a7eb5e-336e-453d-ab06-209b1070d396 Aerial Photos dataset 38.0 20.0 40.0 24.0 a7308c0a-b748-48e2-bab7-0a608a51d416 Aerial Photos dataset 38.0 20.0 40.0 24.0 0173e0d7-6ea9-4407-b846-f29d6bfa9903 Aerial Photos dataset 38.0 20.0 40.0 24.0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecords-filter-bbox.xml0000644000000000000000000000007413114323025026210 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecords-filter-bbox.xml0000644000175000001440000004254313114323025027162 0ustar00kalxasusers00000000000000 3e9a8c05 service test Title 2011-04-19 creation view Geographic viewer (humanGeographicViewer) administration 19.37 29.61 34.8 41.75 http://aiolos.survey.ntua.gr/geoserver/wms None None None 366f6257-19eb-4f20-ba78-0698ac4aae77 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None 75a7eb5e-336e-453d-ab06-209b1070d396 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None a7308c0a-b748-48e2-bab7-0a608a51d416 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None 0173e0d7-6ea9-4407-b846-f29d6bfa9903 dataset Aerial Photos 2009-10-09 creation 20.0 24.0 38.0 40.0 http://www.ypaat.gr None None None pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_apiso_post_GetRecords-filter-servicetype.xml0000644000000000000000000000007413114323025027620 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_apiso_post_GetRecords-filter-servicetype.xml0000644000175000001440000001123613114323025030565 0ustar00kalxasusers00000000000000 3e9a8c05 service test Title 2011-04-19 creation view Geographic viewer (humanGeographicViewer) administration 19.37 29.61 34.8 41.75 http://aiolos.survey.ntua.gr/geoserver/wms None None None pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch-description.xml0000644000000000000000000000007413114323025026023 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch-description.xml0000644000175000001440000000210113114323025026757 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery http://pycsw.org/img/favicon.ico Kralidis, Tom tomkralidis@gmail.com pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch-ogc-bbox-and-time.xml0000644000000000000000000000007413114323025026674 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch-ogc-bbox-and-time.xml0000644000175000001440000000515313114323025027642 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg pycsw Geospatial Catalogue 2 1 2 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum PYCSW_TIMESTAMP 44.79 -6.17 51.13 -2.23 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque PYCSW_TIMESTAMP Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch-ogc-bbox.xml0000644000000000000000000000007413114323025025200 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch-ogc-bbox.xml0000644000175000001440000000722513114323025026150 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg pycsw Geospatial Catalogue 3 1 3 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd PYCSW_TIMESTAMP Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.04 13.75 68.41 17.92 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque PYCSW_TIMESTAMP Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum PYCSW_TIMESTAMP 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch-ogc-count-and-page1.xml0000644000000000000000000000007413114323025027131 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch-ogc-count-and-page1.xml0000644000175000001440000000443713114323025030103 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg pycsw Geospatial Catalogue 2 1 2 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus PYCSW_TIMESTAMP urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque PYCSW_TIMESTAMP Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch-ogc-count-and-page2.xml0000644000000000000000000000007413114323025027132 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch-ogc-count-and-page2.xml0000644000175000001440000000221313114323025030072 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg pycsw Geospatial Catalogue 2 1 1 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus PYCSW_TIMESTAMP pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch-ogc-q-and-bbox.xml0000644000000000000000000000007413114323025026176 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch-ogc-q-and-bbox.xml0000644000175000001440000000312313114323025027137 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg pycsw Geospatial Catalogue 1 1 1 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque PYCSW_TIMESTAMP Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch-ogc-q-and-time.xml0000644000000000000000000000007413114323025026202 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch-ogc-q-and-time.xml0000644000175000001440000000243013114323025027143 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg pycsw Geospatial Catalogue 1 1 1 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db Fuscé vitae ligulä PYCSW_TIMESTAMP Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch-ogc-q.xml0000644000000000000000000000007413114323025024506 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch-ogc-q.xml0000644000175000001440000000240313114323025025447 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg pycsw Geospatial Catalogue 1 1 1 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum PYCSW_TIMESTAMP Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch-ogc-time.xml0000644000000000000000000000007413114323025025204 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch-ogc-time.xml0000644000175000001440000000243013114323025026145 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg pycsw Geospatial Catalogue 1 1 1 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db Fuscé vitae ligulä PYCSW_TIMESTAMP Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch-ogc-timeend.xml0000644000000000000000000000007413114323025025673 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch-ogc-timeend.xml0000644000175000001440000000243013114323025026634 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg pycsw Geospatial Catalogue 1 1 1 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db Fuscé vitae ligulä PYCSW_TIMESTAMP Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch-ogc-timestart.xml0000644000000000000000000000007413114323025026262 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch-ogc-timestart.xml0000644000175000001440000000670313114323025027232 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg pycsw Geospatial Catalogue 3 1 3 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum PYCSW_TIMESTAMP 44.79 -6.17 51.13 -2.23 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque PYCSW_TIMESTAMP Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu PYCSW_TIMESTAMP Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_get_opensearch.xml0000644000000000000000000000007413114323025023502 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_get_opensearch.xml0000644000175000001440000002172113114323025024447 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg pycsw Geospatial Catalogue 12 1 10 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum PYCSW_TIMESTAMP Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd PYCSW_TIMESTAMP Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim PYCSW_TIMESTAMP Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus PYCSW_TIMESTAMP urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu PYCSW_TIMESTAMP Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus PYCSW_TIMESTAMP urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 PYCSW_TIMESTAMP Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque PYCSW_TIMESTAMP Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum PYCSW_TIMESTAMP 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet PYCSW_TIMESTAMP pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_post_DescribeRecord.xml0000644000000000000000000000007413114323025024440 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_post_DescribeRecord.xml0000644000175000001440000000107513114323025025405 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_post_GetCapabilities.xml0000644000000000000000000000007413114323025024612 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_post_GetCapabilities.xml0000644000175000001440000003004613114323025025557 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_atom_post_GetRecords-filter-bbox.xml0000644000000000000000000000007413114323025026035 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_atom_post_GetRecords-filter-bbox.xml0000644000175000001440000000550213114323025027001 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque PYCSW_TIMESTAMP Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum PYCSW_TIMESTAMP 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_27e17158-c57a-4493-92ac-dba8934cf462.xml0000644000000000000000000000007413114323025026055 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_27e17158-c57a-4493-92ac-dba8934cf462.xml0000644000175000001440000003453313114323025027027 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames Harvest.ResourceType Transaction.TransactionSchemas CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 urn:geoss:waf http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_27f69b66-5f05-4311-a89c-73ca55c2686b.xml0000644000000000000000000000007413114323025025777 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_27f69b66-5f05-4311-a89c-73ca55c2686b.xml0000644000175000001440000000146013114323025026742 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml0000644000000000000000000000007413114323025026353 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml0000644000175000001440000003453313114323025027325 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames Harvest.ResourceType Transaction.TransactionSchemas CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 urn:geoss:waf http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml0000644000000000000000000000007413114323025026043 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml0000644000175000001440000000207713114323025027013 0ustar00kalxasusers00000000000000 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset Hydrography-Oceanographic 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml0000644000000000000000000000007413114323025025713 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml0000644000175000001440000000155013114323025026656 0ustar00kalxasusers00000000000000 Invalid acceptFormats parameter value: message/example pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_4515831f-834a-4699-95f6-ab0c2cbfcfd0.xml0000644000000000000000000000007413114323025026211 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_4515831f-834a-4699-95f6-ab0c2cbfcfd0.xml0000644000175000001440000000140013114323025027146 0ustar00kalxasusers00000000000000 Missing id parameter pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_477b23a3-baa9-47c8-9541-5fe27735ed49.xml0000644000000000000000000000007413114323025026063 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_477b23a3-baa9-47c8-9541-5fe27735ed49.xml0000644000175000001440000006014313114323025027031 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames Harvest.ResourceType Transaction.TransactionSchemas CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/cite/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://geo.data.gov/geoportal/csw/discovery brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 urn:geoss:waf http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://geo.data.gov/geoportal/csw/discovery 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_48f26761-3a9d-48db-bee1-da089f5fb857.xml0000644000000000000000000000007413114323025026307 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_48f26761-3a9d-48db-bee1-da089f5fb857.xml0000644000175000001440000003453313114323025027261 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames Harvest.ResourceType Transaction.TransactionSchemas CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 urn:geoss:waf http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_4e38092f-1586-44b8-988e-0acfa5855916.xml0000644000000000000000000000007413114323025025735 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_4e38092f-1586-44b8-988e-0acfa5855916.xml0000644000175000001440000000145213114323025026701 0ustar00kalxasusers00000000000000 Invalid outputformat parameter application/bogus_xml pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml0000644000000000000000000000007413114323025026111 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml0000644000175000001440000004335613114323025027066 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames Harvest.ResourceType Transaction.TransactionSchemas CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/cite/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://geo.data.gov/geoportal/csw/discovery brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 urn:geoss:waf http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://geo.data.gov/geoportal/csw/discovery 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_5ab5db18-c87a-4fbf-a8d8-b7289b09ac81.xml0000644000000000000000000000007413114323025026434 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_5ab5db18-c87a-4fbf-a8d8-b7289b09ac81.xml0000644000175000001440000000156013114323025027400 0ustar00kalxasusers00000000000000 Invalid value for service: FOO. Value MUST be CSW pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_6a4f57ca-a1bd-4802-89c2-44860dbdb0f0.xml0000644000000000000000000000007413114323025026247 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_6a4f57ca-a1bd-4802-89c2-44860dbdb0f0.xml0000644000175000001440000000167313114323025027220 0ustar00kalxasusers00000000000000 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_6c375703-9c00-4aef-bec7-d2e964f849eb.xml0000644000000000000000000000007413114323025026301 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_6c375703-9c00-4aef-bec7-d2e964f849eb.xml0000644000175000001440000000254313114323025027247 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum PYCSW_TIMESTAMP Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_80f31def-4185-48b9-983a-960566918eae.xml0000644000000000000000000000007413114323025026016 xustar0030 atime=1496426292.504636386 30 ctime=1496426292.504636386 pycsw-2.0.3/tests/expected/suites_cite_get_80f31def-4185-48b9-983a-960566918eae.xml0000644000175000001440000006014313114323025026764 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames Harvest.ResourceType Transaction.TransactionSchemas CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/cite/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://geo.data.gov/geoportal/csw/discovery brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 urn:geoss:waf http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://geo.data.gov/geoportal/csw/discovery 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_8e2232ed-05d9-44ae-8b04-0911cbe6a507.xml0000644000000000000000000000007413114323025026107 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_get_8e2232ed-05d9-44ae-8b04-0911cbe6a507.xml0000644000175000001440000000161113114323025027050 0ustar00kalxasusers00000000000000 Invalid parameter value in acceptversions: 2006.10.29. Value MUST be 2.0.2 or 3.0.0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml0000644000000000000000000000007413114323025025707 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml0000644000175000001440000006014313114323025026655 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames Harvest.ResourceType Transaction.TransactionSchemas CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/cite/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://geo.data.gov/geoportal/csw/discovery brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 urn:geoss:waf http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://geo.data.gov/geoportal/csw/discovery 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml0000644000000000000000000000007413114323025026475 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml0000644000175000001440000000205613114323025027442 0ustar00kalxasusers00000000000000 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db http://purl.org/dc/dcmitype/Text Fuscé vitae ligulä 2003-05-09 Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_b81c3595-06d6-4693-82ea-1ff8650755ac.xml0000644000000000000000000000007413114323025026001 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_get_b81c3595-06d6-4693-82ea-1ff8650755ac.xml0000644000175000001440000000107413114323025026745 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml0000644000000000000000000000007413114323025026176 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml0000644000175000001440000003453313114323025027150 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames Harvest.ResourceType Transaction.TransactionSchemas CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 urn:geoss:waf http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_c4ea754f-c158-4d8d-8253-dc8f86021b52.xml0000644000000000000000000000007413114323025026133 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_get_c4ea754f-c158-4d8d-8253-dc8f86021b52.xml0000644000175000001440000000150413114323025027075 0ustar00kalxasusers00000000000000 Missing keyword: service pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml0000644000000000000000000000007413114323025026051 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml0000644000175000001440000003453313114323025027023 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames Harvest.ResourceType Transaction.TransactionSchemas CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 urn:geoss:waf http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_get_f997f25e-c865-4d53-a362-0ed1846337f2.xml0000644000000000000000000000007413114323025026006 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_get_f997f25e-c865-4d53-a362-0ed1846337f2.xml0000644000175000001440000000227313114323025026754 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_0c976d98-c896-4b10-b1fe-a22ef50434e7.xm0000644000000000000000000000007413114323025026165 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_0c976d98-c896-4b10-b1fe-a22ef50434e7.xml0000644000175000001440000000144613114323025027310 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xm0000644000000000000000000000007413114323025026321 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xml0000644000175000001440000000612613114323025027444 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_1ab55aa3-6685-4595-8ecd-45987a7b8b59.xm0000644000000000000000000000007413114323025026126 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml0000644000175000001440000000207413114323025027247 0ustar00kalxasusers00000000000000 full csw:AnyText *lorem* pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xm0000644000000000000000000000007413114323025026400 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml0000644000175000001440000000146113114323025027520 0ustar00kalxasusers00000000000000 Invalid outputFormat parameter value: application/xhtml+xml pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xm0000644000000000000000000000007413114323025026313 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml0000644000175000001440000000151213114323025027430 0ustar00kalxasusers00000000000000 Invalid Constraint: Invalid Filter request: Invalid PropertyName: /dc:title. '/dc:title' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_2102a460-5d62-465f-9668-d70b3faafbfa.xm0000644000000000000000000000007413114323025026226 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_2102a460-5d62-465f-9668-d70b3faafbfa.xml0000644000175000001440000000204713114323025027347 0ustar00kalxasusers00000000000000 urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_225f455a-0035-486b-a94e-fee7ae881b2b.xm0000644000000000000000000000007413114323025026235 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_225f455a-0035-486b-a94e-fee7ae881b2b.xml0000644000175000001440000000234613114323025027360 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset 2006-03-26 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec http://purl.org/dc/dcmitype/Text 2006-05-12 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xm0000644000000000000000000000007413114323025026304 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xml0000644000175000001440000000734013114323025027426 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_34a019a9-1581-42cb-9827-fbfdda2773b7.xm0000644000000000000000000000007413114323025026157 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_34a019a9-1581-42cb-9827-fbfdda2773b7.xml0000644000175000001440000000147213114323025027301 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_3e76fd38-e035-41c9-83dc-61356f680c97.xm0000644000000000000000000000007413114323025026042 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_3e76fd38-e035-41c9-83dc-61356f680c97.xml0000644000175000001440000000147613114323025027170 0ustar00kalxasusers00000000000000 Invalid value for schemalanguage: http://purl.oclc.org/dsdl/schematron pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_418a6fb0-a89c-4a94-afc9-3f8168eb2980.xm0000644000000000000000000000007413114323025026254 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml0000644000175000001440000000225013114323025027371 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 2006-03-26 47.59 -4.1 51.22 0.89 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_420b745e-0c4b-404e-9f2d-61fa580ff05a.xm0000644000000000000000000000007413114323025026221 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_420b745e-0c4b-404e-9f2d-61fa580ff05a.xml0000644000175000001440000000267513114323025027351 0ustar00kalxasusers00000000000000 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset 2005-10-24 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset 2006-03-26 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec http://purl.org/dc/dcmitype/Text 2006-05-12 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_4735d649-a2b1-42fd-a101-14e1d7e4607f.xm0000644000000000000000000000007413114323025026061 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_4735d649-a2b1-42fd-a101-14e1d7e4607f.xml0000644000175000001440000000557513114323025027213 0ustar00kalxasusers00000000000000 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text Marine sediments application/xhtml+xml Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image image/jp2 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_5c5861bc-f742-40a5-9998-5342615d674b.xm0000644000000000000000000000007413114323025025676 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_5c5861bc-f742-40a5-9998-5342615d674b.xml0000644000175000001440000000620713114323025027021 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms FI-ES Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service Physiography Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam. urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xm0000644000000000000000000000007413114323025026112 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml0000644000175000001440000001235513114323025027236 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image Tourism--Greece image/svg+xml Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text Marine sediments application/xhtml+xml Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image image/jp2 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset Hydrography-Oceanographic 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image image/jpeg pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xm0000644000000000000000000000007413114323025026501 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml0000644000175000001440000000254013114323025027620 0ustar00kalxasusers00000000000000 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset Ñunç elementum Hydrography-Oceanographic 2005-10-24 44.792 -6.171 51.126 -2.228 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_78297c88-4850-4927-adc6-511cd9a3d539.xm0000644000000000000000000000007413114323025025765 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_78297c88-4850-4927-adc6-511cd9a3d539.xml0000644000175000001440000001363213114323025027110 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/2.0.2/record.xsd This schema defines the basic record types that must be supported by all CSW implementations. These correspond to full, summary, and brief views based on DCMI metadata terms. CSW is an OGC Standard. Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . This type encapsulates all of the standard DCMI metadata terms, including the Dublin Core refinements; these terms may be mapped to the profile-specific information model. This type defines a brief representation of the common record format. It extends AbstractRecordType to include only the dc:identifier and dc:type properties. This type defines a summary representation of the common record format. It extends AbstractRecordType to include the core properties. This type extends DCMIRecordType to add ows:BoundingBox; it may be used to specify a spatial envelope for the catalogued resource. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xm0000644000000000000000000000007413114323025026724 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml0000644000175000001440000001116113114323025030042 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum PYCSW_TIMESTAMP Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd PYCSW_TIMESTAMP Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim PYCSW_TIMESTAMP Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus PYCSW_TIMESTAMP urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu PYCSW_TIMESTAMP Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_7e2cd105-daec-4d25-bc8e-d49d21364912.xm0000644000000000000000000000007413114323025026306 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_7e2cd105-daec-4d25-bc8e-d49d21364912.xml0000644000175000001440000000107513114323025027427 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xm0000644000000000000000000000007413114323025026176 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml0000644000175000001440000000523413114323025027320 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 http://purl.org/dc/dcmitype/Text urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec http://purl.org/dc/dcmitype/Text 2006-05-12 urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e http://purl.org/dc/dcmitype/Image urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset 2006-03-26 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset 2005-10-24 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xm0000644000000000000000000000007413114323025026356 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml0000644000175000001440000000143713114323025027501 0ustar00kalxasusers00000000000000 Invalid value for outputformat: text/sgml pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_898cd63b-2585-4ec0-8720-d554bd324174.xm0000644000000000000000000000007413114323025025745 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_898cd63b-2585-4ec0-8720-d554bd324174.xml0000644000175000001440000000226713114323025027072 0ustar00kalxasusers00000000000000 urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image image/jp2 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_8fb13dc3-5818-45e2-9e29-46abc16e7d38.xm0000644000000000000000000000007413114323025026173 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml0000644000175000001440000000476713114323025027327 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_928c1896-52d4-4ac7-9832-f98e3eb65f02.xm0000644000000000000000000000007413114323025026047 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_928c1896-52d4-4ac7-9832-f98e3eb65f02.xml0000644000175000001440000000234613114323025027172 0ustar00kalxasusers00000000000000 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db http://purl.org/dc/dcmitype/Text 2003-05-09 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset 2005-10-24 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_93bdbb9d-2734-4f01-92fb-48634cca41de.xm0000644000000000000000000000007413114323025026313 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_93bdbb9d-2734-4f01-92fb-48634cca41de.xml0000644000175000001440000000271713114323025027440 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xm0000644000000000000000000000007413114323025026470 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml0000644000175000001440000000527713114323025027621 0ustar00kalxasusers00000000000000 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec http://purl.org/dc/dcmitype/Text 2006-05-12 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset 2006-03-26 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset 2005-10-24 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db http://purl.org/dc/dcmitype/Text 2003-05-09 urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e http://purl.org/dc/dcmitype/Image urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 http://purl.org/dc/dcmitype/Text pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xm0000644000000000000000000000007413114323025026351 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml0000644000175000001440000000142013114323025027464 0ustar00kalxasusers00000000000000 Typename not qualified: Record pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xm0000644000000000000000000000007413114323025026301 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml0000644000175000001440000000734013114323025027423 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_ad61686c-d304-42d1-b845-8c1f3070c83e.xm0000644000000000000000000000007413114323025026067 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_ad61686c-d304-42d1-b845-8c1f3070c83e.xml0000644000175000001440000000171613114323025027212 0ustar00kalxasusers00000000000000 Exception: the document is not valid. Error: Element '{http://www.opengis.net/foo}Filter': This element is not expected. Expected is one of ( {http://www.opengis.net/ogc}Filter, {http://www.opengis.net/cat/csw/2.0.2}CqlText ). pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_af39c020-7b1d-429c-b474-f45c3164cb79.xm0000644000000000000000000000007413114323025026152 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_af39c020-7b1d-429c-b474-f45c3164cb79.xml0000644000175000001440000000306213114323025027271 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image Tourism--Greece image/svg+xml Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image image/jpeg pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xm0000644000000000000000000000007413114323025026247 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml0000644000175000001440000001270213114323025027367 0ustar00kalxasusers00000000000000 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text Marine sediments application/xhtml+xml Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image image/jp2 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset Hydrography-Oceanographic 44.79 -6.17 51.13 -2.23 urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service Physiography urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam. urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db Fuscé vitae ligulä http://purl.org/dc/dcmitype/Text Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_ba9b0107-dcee-46ef-823a-a2e25a911a96.xm0000644000000000000000000000007413114323025026361 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_ba9b0107-dcee-46ef-823a-a2e25a911a96.xml0000644000175000001440000000447613114323025027512 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image Tourism--Greece image/svg+xml Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text Marine sediments application/xhtml+xml Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image image/jp2 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image image/jpeg pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_bb66ebc5-7121-48b5-9f53-b56537d9561b.xm0000644000000000000000000000007413114323025026107 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_bb66ebc5-7121-48b5-9f53-b56537d9561b.xml0000644000175000001440000000256413114323025027234 0ustar00kalxasusers00000000000000 urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_c02d1c85-df9f-45ee-bea7-345c35e02a98.xm0000644000000000000000000000007413114323025026401 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_c02d1c85-df9f-45ee-bea7-345c35e02a98.xml0000644000175000001440000000150613114323025027521 0ustar00kalxasusers00000000000000 Invalid Constraint: Invalid Filter request: 'NoneType' object has no attribute 'text' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_c311a342-72e3-4983-be39-868e6ed9740f.xm0000644000000000000000000000007413114323025026036 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_c311a342-72e3-4983-be39-868e6ed9740f.xml0000644000175000001440000001363213114323025027161 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/2.0.2/record.xsd This schema defines the basic record types that must be supported by all CSW implementations. These correspond to full, summary, and brief views based on DCMI metadata terms. CSW is an OGC Standard. Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . This type encapsulates all of the standard DCMI metadata terms, including the Dublin Core refinements; these terms may be mapped to the profile-specific information model. This type defines a brief representation of the common record format. It extends AbstractRecordType to include only the dc:identifier and dc:type properties. This type defines a summary representation of the common record format. It extends AbstractRecordType to include the core properties. This type extends DCMIRecordType to add ows:BoundingBox; it may be used to specify a spatial envelope for the catalogued resource. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xm0000644000000000000000000000007413114323025026350 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml0000644000175000001440000000326113114323025027470 0ustar00kalxasusers00000000000000 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec 2006-05-12 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 2006-03-26 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc 2005-10-24 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_c8588f47-8e65-45f5-ad34-ff4524cad84d.xm0000644000000000000000000000007413114323025026270 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_c8588f47-8e65-45f5-ad34-ff4524cad84d.xml0000644000175000001440000000152413114323025027410 0ustar00kalxasusers00000000000000 Invalid Constraint: Invalid Filter request: Invalid ogc:PropertyName in spatial filter: dct:spatial pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_da228d4c-e1be-43d7-9ccb-c3f27ee32541.xm0000644000000000000000000000007413114323025026446 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml0000644000175000001440000000151213114323025027563 0ustar00kalxasusers00000000000000 Invalid Constraint: Invalid Filter request: Invalid PropertyName: /dc:title. '/dc:title' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xm0000644000000000000000000000007413114323025026323 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml0000644000175000001440000000267513114323025027453 0ustar00kalxasusers00000000000000 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db http://purl.org/dc/dcmitype/Text 2003-05-09 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset 2005-10-24 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset 2006-03-26 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xm0000644000000000000000000000007413114323025026544 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml0000644000175000001440000000734013114323025027666 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_e308f030-c097-4036-a838-44bad74c9ef7.xm0000644000000000000000000000007413114323025026101 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_e308f030-c097-4036-a838-44bad74c9ef7.xml0000644000175000001440000000734013114323025027223 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xm0000644000000000000000000000007413114323025026673 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml0000644000175000001440000000734013114323025030015 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_f7976c55-a156-4421-8199-bc0487da4b0f.xm0000644000000000000000000000007413114323025026030 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_f7976c55-a156-4421-8199-bc0487da4b0f.xml0000644000175000001440000001363213114323025027153 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/2.0.2/record.xsd This schema defines the basic record types that must be supported by all CSW implementations. These correspond to full, summary, and brief views based on DCMI metadata terms. CSW is an OGC Standard. Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . This type encapsulates all of the standard DCMI metadata terms, including the Dublin Core refinements; these terms may be mapped to the profile-specific information model. This type defines a brief representation of the common record format. It extends AbstractRecordType to include only the dc:identifier and dc:type properties. This type defines a summary representation of the common record format. It extends AbstractRecordType to include the core properties. This type extends DCMIRecordType to add ows:BoundingBox; it may be used to specify a spatial envelope for the catalogued resource. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xm0000644000000000000000000000007413114323025026223 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xml0000644000175000001440000000734013114323025027345 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xm0000644000000000000000000000007413114323025026465 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml0000644000175000001440000000207013114323025027602 0ustar00kalxasusers00000000000000 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db Fuscé vitae ligulä http://purl.org/dc/dcmitype/Text pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_cite_post_fe20960f-a26c-4f13-852d-470a0d3233f9.xm0000644000000000000000000000007413114323025026065 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_cite_post_fe20960f-a26c-4f13-852d-470a0d3233f9.xml0000644000175000001440000000204713114323025027206 0ustar00kalxasusers00000000000000 urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_002258f0-627f-457f-b2ad-025777c77ac8.xm0000644000000000000000000000007413114323025025625 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_002258f0-627f-457f-b2ad-025777c77ac8.xml0000644000175000001440000000330113114323025026740 0ustar00kalxasusers00000000000000 pycsw Geospatial pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery http://pycsw.org/img/favicon.ico Kralidis, Tom tomkralidis@gmail.com pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_045c600d-973d-41eb-9f60-eba1b717b720.xm0000644000000000000000000000007413114323025025744 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_045c600d-973d-41eb-9f60-eba1b717b720.xml0000644000175000001440000000321613114323025027064 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg pycsw Geospatial Catalogue pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_0bbcf862-5211-4351-9988-63f8bec49c98.xm0000644000000000000000000000007413114323025025650 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_0bbcf862-5211-4351-9988-63f8bec49c98.xml0000644000175000001440000002252013114323025026767 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg pycsw Geospatial Catalogue pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_0bdf8457-971e-4ed1-be4a-5feca4dcd8fa.xm0000644000000000000000000000007413114323025026507 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_0bdf8457-971e-4ed1-be4a-5feca4dcd8fa.xml0000644000175000001440000005273613114323025027642 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_0d8bbdec-0846-42ca-8dc8-b7f4cba41d67.xm0000644000000000000000000000007413114323025026337 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_0d8bbdec-0846-42ca-8dc8-b7f4cba41d67.xml0000644000175000001440000000532113114323025027456 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_0e1dca37-477a-4060-99fe-7799b52d656c.xm0000644000000000000000000000007413114323025025724 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_0e1dca37-477a-4060-99fe-7799b52d656c.xml0000644000175000001440000000146413114323025027047 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg pycsw Geospatial Catalogue pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_13c87956-51a4-4780-a8e9-6e0b5c0bb473.xm0000644000000000000000000000007413114323025025627 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_13c87956-51a4-4780-a8e9-6e0b5c0bb473.xml0000644000175000001440000001274713114323025026760 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image Tourism--Greece image/svg+xml Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text Marine sediments application/xhtml+xml Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. 2006-05-12 urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image image/jp2 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset Hydrography-Oceanographic 2005-10-24 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image image/jpeg pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_151d982f-ebd3-4cb2-b507-a667713a1e92.xm0000644000000000000000000000007413114323025025755 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_151d982f-ebd3-4cb2-b507-a667713a1e92.xml0000644000175000001440000000154613114323025027101 0ustar00kalxasusers00000000000000 Invalid acceptFormats parameter value: model/x3d+xml pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_1869e495-1a61-4713-8285-76d1336ee1a6.xm0000644000000000000000000000007413114323025025417 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_1869e495-1a61-4713-8285-76d1336ee1a6.xml0000644000175000001440000000150413114323025026535 0ustar00kalxasusers00000000000000 Missing keyword: service pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6.xm0000644000000000000000000000007413114323025026157 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6.xml0000644000175000001440000000147313114323025027302 0ustar00kalxasusers00000000000000 Missing id parameter pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_22f44168-2ccf-4801-ad96-204212566d56.xm0000644000000000000000000000007413114323025025454 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_22f44168-2ccf-4801-ad96-204212566d56.xml0000644000175000001440000005273613114323025026607 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_2499a9c9-8d33-449c-bc92-d494adfcc84d.xm0000644000000000000000000000007413114323025026153 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_2499a9c9-8d33-449c-bc92-d494adfcc84d.xml0000644000175000001440000005273613114323025027306 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_27f4f39c-d92a-4e3c-b961-c6aa8c24e513.xm0000644000000000000000000000007413114323025026124 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_27f4f39c-d92a-4e3c-b961-c6aa8c24e513.xml0000644000175000001440000005273613114323025027257 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_28e569df-8596-4128-8d9a-29ad03138915.xm0000644000000000000000000000007413114323025025515 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_28e569df-8596-4128-8d9a-29ad03138915.xml0000644000175000001440000000126213114323025026634 0ustar00kalxasusers00000000000000 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image image/jpeg pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_2b06a5c8-0df2-4af1-8d2e-a425de11c845.xm0000644000000000000000000000007413114323025026102 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_2b06a5c8-0df2-4af1-8d2e-a425de11c845.xml0000644000175000001440000005273613114323025027235 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_2ba1418a-444d-4cce-9cfe-4c94efcf8b55.xm0000644000000000000000000000007413114323025026347 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_2ba1418a-444d-4cce-9cfe-4c94efcf8b55.xml0000644000175000001440000000444013114323025027467 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg pycsw Geospatial Catalogue pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a.xm0000644000000000000000000000007413114323025026221 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a.xml0000644000175000001440000000422513114323025027342 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image Tourism--Greece image/svg+xml Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. 2006-05-12 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image image/jpeg pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4.xm0000644000000000000000000000007413114323025026317 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4.xml0000644000175000001440000000777513114323025027455 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_405e1ff1-5c75-4846-a28b-cfaff2a6921a.xm0000644000000000000000000000007413114323025026120 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_405e1ff1-5c75-4846-a28b-cfaff2a6921a.xml0000644000175000001440000000356713114323025027251 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image Tourism--Greece image/svg+xml Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db Fuscé vitae ligulä http://purl.org/dc/dcmitype/Text Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_43cd6471-6ac7-45bd-8ff9-148cb2de9a52.xm0000644000000000000000000000007413114323025026134 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_43cd6471-6ac7-45bd-8ff9-148cb2de9a52.xml0000644000175000001440000005273613114323025027267 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_4566d2ec-1283-4a02-baed-a74fc5b47e37.xm0000644000000000000000000000007413114323025026113 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_4566d2ec-1283-4a02-baed-a74fc5b47e37.xml0000644000175000001440000000263713114323025027241 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_461bd4c5-6623-490d-9036-d91a2201e87b.xm0000644000000000000000000000007413114323025025534 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_461bd4c5-6623-490d-9036-d91a2201e87b.xml0000644000175000001440000000123513114323025026653 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_5496894a-3877-4f62-a20b-5d7126f94925.xm0000644000000000000000000000007413114323025025433 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_5496894a-3877-4f62-a20b-5d7126f94925.xml0000644000175000001440000000156213114323025026555 0ustar00kalxasusers00000000000000 4326 coordinates out of range: ['514432', '5429689', '529130', '5451619'] pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_5a015f6a-bf14-4977-b1e3-6577eb0223c8.xm0000644000000000000000000000007413114323025025677 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_5a015f6a-bf14-4977-b1e3-6577eb0223c8.xml0000644000175000001440000000537013114323025027022 0ustar00kalxasusers00000000000000 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.04 13.75 68.41 17.92 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset Hydrography-Oceanographic 2005-10-24 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_5c3a2390-1fb9-43f0-b96c-f48c7a69c990.xm0000644000000000000000000000007413114323025025777 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_5c3a2390-1fb9-43f0-b96c-f48c7a69c990.xml0000644000175000001440000000154513114323025027122 0ustar00kalxasusers00000000000000 Invalid outputformat parameter model/vnd.collada+xml pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_5e9e67dc-18d6-4645-8111-c6263c88a61f.xm0000644000000000000000000000007413114323025025643 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_5e9e67dc-18d6-4645-8111-c6263c88a61f.xml0000644000175000001440000003465113114323025026772 0ustar00kalxasusers00000000000000 application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_604d9379-741c-42e5-b4cf-92e56c87fa64.xm0000644000000000000000000000007413114323025025727 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_604d9379-741c-42e5-b4cf-92e56c87fa64.xml0000644000175000001440000000445313114323025027053 0ustar00kalxasusers00000000000000 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.04 13.75 68.41 17.92 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. 2006-05-12 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image image/jpeg pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_60e6af95-d5fc-465a-82e2-fd2e6d85e4af.xm0000644000000000000000000000007413114323025026302 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_60e6af95-d5fc-465a-82e2-fd2e6d85e4af.xml0000644000175000001440000000153413114323025027423 0ustar00kalxasusers00000000000000 Invalid typeNames parameter value: UnknownType pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_62ad94c2-b558-4265-a427-23d6677975d6.xm0000644000000000000000000000007413114323025025505 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_62ad94c2-b558-4265-a427-23d6677975d6.xml0000644000175000001440000000154013114323025026623 0ustar00kalxasusers00000000000000 No records found for 'uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_6a5e247b-0961-4b8a-a0d6-35a491d9cfe7.xm0000644000000000000000000000007413114323025026044 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_6a5e247b-0961-4b8a-a0d6-35a491d9cfe7.xml0000644000175000001440000000155113114323025027164 0ustar00kalxasusers00000000000000 Invalid ElementSetName parameter value: undefined-view pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_6a9d0558-9d87-495b-b999-b49a3ef1cf99.xm0000644000000000000000000000007413114323025026036 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_6a9d0558-9d87-495b-b999-b49a3ef1cf99.xml0000644000175000001440000005273613114323025027171 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_6bd790c9-6019-4652-9c91-330a894d6700.xm0000644000000000000000000000007413114323025025415 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_6bd790c9-6019-4652-9c91-330a894d6700.xml0000644000175000001440000000270113114323025026533 0ustar00kalxasusers00000000000000 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db Fuscé vitae ligulä http://purl.org/dc/dcmitype/Text Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. 2003-05-09 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_6e9cba43-5e27-415d-adbd-a92851c2c173.xm0000644000000000000000000000007413114323025026113 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_6e9cba43-5e27-415d-adbd-a92851c2c173.xml0000644000175000001440000005273613114323025027246 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_7630d230-e142-4a09-accf-f091000b90cd.xm0000644000000000000000000000007413114323025025723 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_7630d230-e142-4a09-accf-f091000b90cd.xml0000644000175000001440000000146213114323025027044 0ustar00kalxasusers00000000000000 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text Marine sediments application/xhtml+xml Pellentesque tempus magna non sapien fringilla blandit. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf.xm0000644000000000000000000000007413114323025026263 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.508636471 pycsw-2.0.3/tests/expected/suites_csw30_get_7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf.xml0000644000175000001440000005273613114323025027416 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_8025978e-1a35-4d70-80c2-e8329e0c7864.xm0000644000000000000000000000007413114323025025477 xustar0030 atime=1496426292.508636471 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_8025978e-1a35-4d70-80c2-e8329e0c7864.xml0000644000175000001440000005273613114323025026632 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_8184ae4f-536d-4978-8b28-ad703be96967.xm0000644000000000000000000000007413114323025025663 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_8184ae4f-536d-4978-8b28-ad703be96967.xml0000644000175000001440000000456713114323025027015 0ustar00kalxasusers00000000000000 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service 60.04 13.75 68.41 17.92 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_88f63a89-664f-4315-b4f8-04a0b33803a7.xm0000644000000000000000000000007413114323025025551 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_88f63a89-664f-4315-b4f8-04a0b33803a7.xml0000644000175000001440000000322613114323025026672 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_8987f8f0-4d93-4481-968c-a2ccbd6b8be2.xm0000644000000000000000000000007413114323025026074 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_8987f8f0-4d93-4481-968c-a2ccbd6b8be2.xml0000644000175000001440000000152213114323025027212 0ustar00kalxasusers00000000000000 No repository item found for 'urn:example:1461546298217' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_8e5fa0f6-3f29-4d1f-abe2-d9866f3def98.xm0000644000000000000000000000007413114323025026315 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_8e5fa0f6-3f29-4d1f-abe2-d9866f3def98.xml0000644000175000001440000001001513114323025027430 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg pycsw Geospatial Catalogue pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_9000ec29-5649-474e-b2d6-55c00f8a52c0.xm0000644000000000000000000000007413114323025025615 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_9000ec29-5649-474e-b2d6-55c00f8a52c0.xml0000644000175000001440000000161113114323025026732 0ustar00kalxasusers00000000000000 Invalid parameter value in acceptversions: 9999.12.31. Value MUST be 2.0.2 or 3.0.0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_91914d35-7bbf-45e6-9b37-5ef484869a4e.xm0000644000000000000000000000007413114323025025740 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_91914d35-7bbf-45e6-9b37-5ef484869a4e.xml0000644000175000001440000000533513114323025027064 0ustar00kalxasusers00000000000000 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.04 13.75 68.41 17.92 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset Hydrography-Oceanographic 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_92d4844d-57d5-4cf3-8f47-ba50e369dc04.xm0000644000000000000000000000007413114323025026000 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_92d4844d-57d5-4cf3-8f47-ba50e369dc04.xml0000644000175000001440000000167313114323025027125 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_9c0e2a4b-b4e6-41c0-b630-c8c99fc89ff3.xm0000644000000000000000000000007413114323025026210 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_9c0e2a4b-b4e6-41c0-b630-c8c99fc89ff3.xml0000644000175000001440000000160413114323025027327 0ustar00kalxasusers00000000000000 Invalid outputSchema parameter value: urn:uuid:6a29d2a8-9651-47a6-9b14-f05d2b5644f0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_9d7ffac8-9798-428d-8e27-3cd12497ee6b.xm0000644000000000000000000000007413114323025026111 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_9d7ffac8-9798-428d-8e27-3cd12497ee6b.xml0000644000175000001440000000155713114323025027237 0ustar00kalxasusers00000000000000 Invalid outputschema parameter http://www.example.org/ns/alpha pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_Exception-GetDomain-value-reference.xml0000644000000000000000000000007413114323025030223 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_Exception-GetDomain-value-reference.xml0000644000175000001440000000142513114323025031167 0ustar00kalxasusers00000000000000 dc:title2 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_Exception-GetDomain.xml0000644000000000000000000000007413114323025025155 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_Exception-GetDomain.xml0000644000175000001440000000160513114323025026121 0ustar00kalxasusers00000000000000 Missing value. One of valuereference or parametername must be specified pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_Exception-GetRecordById-404.xml0000644000000000000000000000007413114323025026241 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_Exception-GetRecordById-404.xml0000644000175000001440000000151013114323025027200 0ustar00kalxasusers00000000000000 No repository item found for 'does_not_exist2' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_Exception-GetRecordById-dc.xml.xml0000644000000000000000000000007413114323025027117 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_Exception-GetRecordById-dc.xml.xml0000644000175000001440000000137013114323025030062 0ustar00kalxasusers00000000000000 urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image image/jp2 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_Exception-GetRepositoryItem-notfound.xm0000644000000000000000000000007413114323025030422 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_Exception-GetRepositoryItem-notfound.xml0000644000175000001440000000150113114323025031535 0ustar00kalxasusers00000000000000 No repository item found for 'NOTFOUND' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_Exception-invalid-request.xml0000644000000000000000000000007413114323025026422 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_Exception-invalid-request.xml0000644000175000001440000000153213114323025027365 0ustar00kalxasusers00000000000000 Invalid value for request: GetCapabilities-foo pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_GetCapabilities-base-url.xml0000644000000000000000000000007413114323025026113 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_GetCapabilities-base-url.xml0000644000175000001440000005273613114323025027072 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_GetCapabilities-no-version.xml0000644000000000000000000000007413114323025026500 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_GetCapabilities-no-version.xml0000644000175000001440000005273613114323025027457 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_GetCapabilities.xml0000644000000000000000000000007413114323025024403 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_GetCapabilities.xml0000644000175000001440000005273613114323025025362 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_GetDomain-parameter.xml0000644000000000000000000000007413114323025025177 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_GetDomain-parameter.xml0000644000175000001440000000171413114323025026144 0ustar00kalxasusers00000000000000 GetRecords.ElementSetName brief full summary pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_GetDomain-value-reference.xml0000644000000000000000000000007413114323025026267 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_GetDomain-value-reference.xml0000644000175000001440000000261313114323025027233 0ustar00kalxasusers00000000000000 dc:title Aliquam fermentum purus quis arcu Fuscé vitae ligulä Lorem ipsum Lorem ipsum dolor sit amet Maecenas enim Mauris sed neque Ut facilisis justo ut lacus Vestibulum massa purus Ñunç elementum pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_GetRepositoryItem.xml0000644000000000000000000000007413114323025025010 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_GetRepositoryItem.xml0000644000175000001440000000130013114323025025744 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_OpenSearch-description.xml0000644000000000000000000000007413114323025025722 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_OpenSearch-description.xml0000644000175000001440000000330113114323025026661 0ustar00kalxasusers00000000000000 pycsw Geospatial pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery http://pycsw.org/img/favicon.ico Kralidis, Tom tomkralidis@gmail.com pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_a2f18643-e24e-4fa5-b780-6de4a2dbc814.xm0000644000000000000000000000007413114323025026115 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_a2f18643-e24e-4fa5-b780-6de4a2dbc814.xml0000644000175000001440000000141213114323025027231 0ustar00kalxasusers00000000000000 urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus PYCSW_TIMESTAMP pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_abc90c8c-5868-4405-a73e-64c849be3b2a.xm0000644000000000000000000000007413114323025026047 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_abc90c8c-5868-4405-a73e-64c849be3b2a.xml0000644000175000001440000000156213114323025027171 0ustar00kalxasusers00000000000000 4326 coordinates out of range: ['514432', '5429689', '529130', '5451619'] pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_ad0c0571-09ed-436a-9a4f-a5de744c88fe.xm0000644000000000000000000000007413114323025026206 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_ad0c0571-09ed-436a-9a4f-a5de744c88fe.xml0000644000175000001440000000336513114323025027333 0ustar00kalxasusers00000000000000 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text Marine sediments application/xhtml+xml Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_af502903-f4ee-47ee-b76e-af878d238bcc.xm0000644000000000000000000000007413114323025026277 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_af502903-f4ee-47ee-b76e-af878d238bcc.xml0000644000175000001440000000537013114323025027422 0ustar00kalxasusers00000000000000 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.04 13.75 68.41 17.92 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset Hydrography-Oceanographic 2005-10-24 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_b2aafc3f-4f35-47bc-affd-08590972deae.xm0000644000000000000000000000007413114323025026423 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_b2aafc3f-4f35-47bc-affd-08590972deae.xml0000644000175000001440000001001513114323025027536 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg pycsw Geospatial Catalogue pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_b6069623-f7d8-4021-8582-98f0aea0f763.xm0000644000000000000000000000007413114323025025556 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_b6069623-f7d8-4021-8582-98f0aea0f763.xml0000644000175000001440000000743213114323025026702 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg pycsw Geospatial Catalogue pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_b9a07a54-75a8-45bd-b341-2823600211e3.xm0000644000000000000000000000007413114323025025515 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_b9a07a54-75a8-45bd-b341-2823600211e3.xml0000644000175000001440000000170113114323025026632 0ustar00kalxasusers00000000000000 Invalid Filter query: Exception: document not valid. Error: Reprojection error: Invalid srsName "urn:ogc:def:crs:EPSG::0000": Invalid source projection. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_baa4a7d0-0c01-42b6-adc3-0d03e9949fa3.xm0000644000000000000000000000007413114323025026147 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_baa4a7d0-0c01-42b6-adc3-0d03e9949fa3.xml0000644000175000001440000000152613114323025027271 0ustar00kalxasusers00000000000000 Invalid value for request: getCapabilities pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_bfbe6409-f64a-4c89-acb3-50f260a5c743.xm0000644000000000000000000000007413114323025026117 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_bfbe6409-f64a-4c89-acb3-50f260a5c743.xml0000644000175000001440000000265613114323025027246 0ustar00kalxasusers00000000000000 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db Fuscé vitae ligulä http://purl.org/dc/dcmitype/Text Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_bfe20134-d1da-42ef-9c0f-8e1307bbf92b.xm0000644000000000000000000000007413114323025026244 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_bfe20134-d1da-42ef-9c0f-8e1307bbf92b.xml0000644000175000001440000000504713114323025027370 0ustar00kalxasusers00000000000000 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text Marine sediments application/xhtml+xml Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. 2006-05-12 urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image image/jp2 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_c03d173a-3f42-4956-89c8-1fe02c3a0873.xm0000644000000000000000000000007413114323025025621 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_c03d173a-3f42-4956-89c8-1fe02c3a0873.xml0000644000175000001440000005273613114323025026754 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_cb43d8c3-e14c-4a9f-9231-4384b7dd21f3.xm0000644000000000000000000000007413114323025026037 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_cb43d8c3-e14c-4a9f-9231-4384b7dd21f3.xml0000644000175000001440000000152613114323025027161 0ustar00kalxasusers00000000000000 Invalid ElementName parameter value: u pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_d03c6fd3-e821-4a26-b62f-d20a474e25af.xm0000644000000000000000000000007413114323025026104 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_d03c6fd3-e821-4a26-b62f-d20a474e25af.xml0000644000175000001440000000410213114323025027217 0ustar00kalxasusers00000000000000 pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_d4ccbf96-a529-480e-a53d-5b88dc1dea7f.xm0000644000000000000000000000007413114323025026353 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_d4ccbf96-a529-480e-a53d-5b88dc1dea7f.xml0000644000175000001440000000154013114323025027471 0ustar00kalxasusers00000000000000 No records found for 'uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_d94c801a-1207-4897-b84a-53f3a192515b.xm0000644000000000000000000000007413114323025025537 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_d94c801a-1207-4897-b84a-53f3a192515b.xml0000644000175000001440000000167313114323025026664 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_da859e34-91fc-495a-8c09-285a40c0900b.xm0000644000000000000000000000007413114323025025704 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_da859e34-91fc-495a-8c09-285a40c0900b.xml0000644000175000001440000000211713114323025027023 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.59 -4.1 51.22 0.89 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_dc246fb8-5af5-4fda-82bb-c18b3ecd439c.xm0000644000000000000000000000007413114323025026422 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_dc246fb8-5af5-4fda-82bb-c18b3ecd439c.xml0000644000175000001440000000616713114323025027552 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg pycsw Geospatial Catalogue pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_de016645-6d5c-4855-943c-2db07ae9f49a.xm0000644000000000000000000000007413114323025025775 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_de016645-6d5c-4855-943c-2db07ae9f49a.xml0000644000175000001440000000371113114323025027115 0ustar00kalxasusers00000000000000 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg pycsw Geospatial Catalogue pycsw pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_dff3ec6b-bb2d-4887-bd17-8fcf15def042.xm0000644000000000000000000000007413114323025026431 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_dff3ec6b-bb2d-4887-bd17-8fcf15def042.xml0000644000175000001440000001301213114323025027544 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image Tourism--Greece image/svg+xml Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text Marine sediments application/xhtml+xml Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Vestibulum massa purus http://purl.org/dc/dcmitype/Image image/jp2 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset Hydrography-Oceanographic 44.79 -6.17 51.13 -2.23 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image image/jpeg pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_e38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b.xm0000644000000000000000000000007413114323025026504 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_e38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b.xml0000644000175000001440000000157213114323025027627 0ustar00kalxasusers00000000000000 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service 60.04 13.75 68.41 17.92 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_e67ca935-d65d-4d8c-8302-1405333dded0.xm0000644000000000000000000000007413114323025025757 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_e67ca935-d65d-4d8c-8302-1405333dded0.xml0000644000175000001440000005273613114323025027112 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_e7704509-3441-458f-8ef0-e333c6b6043f.xm0000644000000000000000000000007413114323025025550 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_e7704509-3441-458f-8ef0-e333c6b6043f.xml0000644000175000001440000000156113114323025026671 0ustar00kalxasusers00000000000000 Only ONE of ElementSetName or ElementName parameter(s) is permitted pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_f1223a49-6d08-44ff-97fe-4c32cbbfad82.xm0000644000000000000000000000007413114323025026206 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_f1223a49-6d08-44ff-97fe-4c32cbbfad82.xml0000644000175000001440000000167613114323025027336 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_get_f89dd4e1-3a81-4433-afd2-a3fa1bdb1e18.xm0000644000000000000000000000007413114323025026245 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_get_f89dd4e1-3a81-4433-afd2-a3fa1bdb1e18.xml0000644000175000001440000000154313114323025027366 0ustar00kalxasusers00000000000000 Invalid outputFormat parameter value: text/example pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_post_Exception-GetDomain-parametername-bad.0000644000000000000000000000007413114323025030205 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_post_Exception-GetDomain-parametername-bad.xml0000644000175000001440000000145313114323025031673 0ustar00kalxasusers00000000000000 GetRecords.outputFormat-something pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_post_Exception-GetDomain-valuereference-bad0000644000000000000000000000007413114323025030301 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_post_Exception-GetDomain-valuereference-bad.xml0000644000175000001440000000142613114323025032045 0ustar00kalxasusers00000000000000 dc:titlena pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_post_Exception-GetRecordById-404.xml0000644000000000000000000000007413114323025026447 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_post_Exception-GetRecordById-404.xml0000644000175000001440000000150713114323025027414 0ustar00kalxasusers00000000000000 No repository item found for 'does_not_exist' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_post_Exception-GetRecordById-bad-esn.xml0000644000000000000000000000007413114323025027451 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_post_Exception-GetRecordById-bad-esn.xml0000644000175000001440000000152713114323025030420 0ustar00kalxasusers00000000000000 Invalid elementsetname parameter bad pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_post_Exception-bad-xml.xml0000644000000000000000000000007413114323025025040 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_post_Exception-bad-xml.xml0000644000175000001440000000166613114323025026013 0ustar00kalxasusers00000000000000 Exception: document not well-formed. Error: Opening and ending tag mismatch: GetCapabilities line 2 and GetCapabilities-bad, line 9, column 29. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_post_Exception-not-xml.xml0000644000000000000000000000007413114323025025112 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_post_Exception-not-xml.xml0000644000175000001440000000161213114323025026054 0ustar00kalxasusers00000000000000 Exception: document not well-formed. Error: Start tag expected, '<' not found, line 1, column 1. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_post_GetCapabilities.xml0000644000000000000000000000007413114323025024611 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_post_GetCapabilities.xml0000644000175000001440000005273613114323025025570 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact application/xml text/xml 2.0.2 3.0.0 All Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider GetCapabilities.acceptFormats GetCapabilities.acceptVersions GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.typeNames CQL_TEXT FILTER brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom csw:Record 10 http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities http://demo.pycsw.org/gisdata/csw brief full summary application/atom+xml application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox http://demo.pycsw.org/gisdata/csw 10 SOAP XML allowed TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE http://www.opengis.net/gml TRUE en TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE xs:string xs:string xs:string xs:string xs:string xs:string pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_post_GetDomain-parametername.xml0000644000000000000000000000007413114323025026246 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_post_GetDomain-parametername.xml0000644000175000001440000000175513114323025027220 0ustar00kalxasusers00000000000000 GetRecords.outputFormat application/atom+xml application/json application/xml pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_post_GetDomain-valuereference.xml0000644000000000000000000000007413114323025026420 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_post_GetDomain-valuereference.xml0000644000175000001440000000261313114323025027364 0ustar00kalxasusers00000000000000 dc:title Aliquam fermentum purus quis arcu Fuscé vitae ligulä Lorem ipsum Lorem ipsum dolor sit amet Maecenas enim Mauris sed neque Ut facilisis justo ut lacus Vestibulum massa purus Ñunç elementum pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_post_GetRecordById-dc-full.xml0000644000000000000000000000007413114323025025532 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_post_GetRecordById-dc-full.xml0000644000175000001440000000150413114323025026474 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image Tourism--Greece image/svg+xml Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_csw30_post_GetRecordById-dc.xml0000644000000000000000000000007413114323025024572 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_csw30_post_GetRecordById-dc.xml0000644000175000001440000000152213114323025025534 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image Tourism--Greece image/svg+xml Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_Exception-GetRepositoryItem-notfound.0000644000000000000000000000007413114323025030542 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_Exception-GetRepositoryItem-notfound.xml0000644000175000001440000000141213114323025032223 0ustar00kalxasusers00000000000000 No repository item found for '['NOTFOUND']' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_Exception-GetRepositoryItem-service-i0000644000000000000000000000007413114323025030516 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_Exception-GetRepositoryItem-service-invalid1.xml0000644000175000001440000000147313114323025033543 0ustar00kalxasusers00000000000000 'Invalid value for service: CSW\x00. Value MUST be CSW' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_Exception-GetRepositoryItem-service-i0000644000000000000000000000007413114323025030516 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_Exception-GetRepositoryItem-service-invalid2.xml0000644000175000001440000000147413114323025033545 0ustar00kalxasusers00000000000000 "Invalid value for service: CSW\x00'. Value MUST be CSW" pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_Exception-GetRepositoryItem-version-i0000644000000000000000000000007413114323025030543 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_Exception-GetRepositoryItem-version-invalid.xml0000644000175000001440000000155313114323025033506 0ustar00kalxasusers00000000000000 Invalid value for version: 2.0.2'. Value MUST be 2.0.2 or 3.0.0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetCapabilities-invalid-request.xml0000644000000000000000000000007413114323025030202 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetCapabilities-invalid-request.xml0000644000175000001440000000143413114323025031146 0ustar00kalxasusers00000000000000 Invalid value for request: GetCapabilitiese pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetCapabilities.xml0000644000000000000000000000007413114323025025070 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetCapabilities.xml0000644000175000001440000003007513114323025026037 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://demo.pycsw.org/gisdata/csw 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-all.xml0000644000000000000000000000007413114323025024646 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-all.xml0000644000175000001440000000147213114323025025614 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-empty-maxrecords.xml0000644000000000000000000000007413114323025027401 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-empty-maxrecords.xml0000644000175000001440000000147213114323025030347 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-filter-cql-title-or-abstra0000644000000000000000000000025313114323025030347 xustar00111 path=pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-filter-cql-title-or-abstract-with-spaces.xml 30 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-filter-cql-title-or-abstract-with-spaces.xm0000644000175000001440000000310113114323025034504 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-filter-cql-title-or-abstra0000644000000000000000000000007413114323025030350 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-filter-cql-title-or-abstract.xml0000644000175000001440000000310113114323025032433 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-filter-cql-title-with-spac0000644000000000000000000000026713114323025030361 xustar00123 path=pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-filter-cql-title-with-spaces-or-abstract-with-spaces.xml 30 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-filter-cql-title-with-spaces-or-abstract-wi0000644000175000001440000000310113114323025034476 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-filter-cql-title-with-spac0000644000000000000000000000025313114323025030354 xustar00111 path=pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-filter-cql-title-with-spaces-or-abstract.xml 30 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-filter-cql-title-with-spaces-or-abstract.xm0000644000175000001440000000310113114323025034504 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-filter-cql-title-with-spac0000644000000000000000000000007413114323025030355 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-filter-cql-title-with-spaces.xml0000644000175000001440000000310113114323025032441 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-filter-cql-title.xml0000644000000000000000000000007413114323025027257 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-filter-cql-title.xml0000644000175000001440000000310113114323025030214 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-filter.xml0000644000000000000000000000007413114323025025363 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-filter.xml0000644000175000001440000000243113114323025026325 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-sortby-asc.xml0000644000000000000000000000007413114323025026164 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-sortby-asc.xml0000644000175000001440000001242013114323025027125 0ustar00kalxasusers00000000000000 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.042 13.754 68.410 17.920 urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms FI-ES Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service Physiography Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam. urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf 2006-05-12 Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db http://purl.org/dc/dcmitype/Text Fuscé vitae ligulä 2003-05-09 Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text application/xhtml+xml Marine sediments Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service Ut facilisis justo ut lacus Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-sortby-desc.xml0000644000000000000000000000007413114323025026334 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-sortby-desc.xml0000644000175000001440000001226613114323025027305 0ustar00kalxasusers00000000000000 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset Ñunç elementum Hydrography-Oceanographic 2005-10-24 44.792 -6.171 51.126 -2.228 urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e http://purl.org/dc/dcmitype/Image image/jp2 Vestibulum massa purus urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service Ut facilisis justo ut lacus Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text application/xhtml+xml Marine sediments Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db http://purl.org/dc/dcmitype/Text Fuscé vitae ligulä 2003-05-09 Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf 2006-05-12 Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service Physiography Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam. urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-sortby-invalid-order.xml0000644000000000000000000000007413114323025030155 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-sortby-invalid-order.xml0000644000175000001440000000144313114323025031121 0ustar00kalxasusers00000000000000 Invalid SortBy value: sort order must be "A" or "D" pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRecords-sortby-invalid-propertynam0000644000000000000000000000007413114323025030623 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRecords-sortby-invalid-propertyname.xml0000644000175000001440000000142613114323025032534 0ustar00kalxasusers00000000000000 Invalid SortBy propertyname: dc:titlei pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_get_GetRepositoryItem.xml0000644000000000000000000000007413114323025025475 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_get_GetRepositoryItem.xml0000644000175000001440000000160413114323025026440 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_DescribeRecord-json.xml0000644000000000000000000000007413114323025026073 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_DescribeRecord-json.xml0000644000175000001440000002721513114323025027044 0ustar00kalxasusers00000000000000{ "csw:DescribeRecordResponse": { "@http://www.w3.org/2001/XMLSchema-instance:schemaLocation": "http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd", "csw:SchemaComponent": { "@schemaLanguage": "XMLSCHEMA", "@targetNamespace": "http://www.opengis.net/cat/csw/2.0.2", "xs:schema": { "@id": "csw-record", "@targetNamespace": "http://www.opengis.net/cat/csw/2.0.2", "@elementFormDefault": "qualified", "@version": "2.0.2 2010-01-22", "xs:annotation": { "xs:appinfo": { "dc:identifier": "http://schemas.opengis.net/csw/2.0.2/record.xsd" }, "xs:documentation": { "@http://www.w3.org/XML/1998/namespace:lang": "en", "#text": "This schema defines the basic record types that must be supported\n by all CSW implementations. These correspond to full, summary, and\n brief views based on DCMI metadata terms.\n \n CSW is an OGC Standard.\n Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ ." } }, "xs:import": [ { "@namespace": "http://purl.org/dc/terms/", "@schemaLocation": "rec-dcterms.xsd" }, { "@namespace": "http://purl.org/dc/elements/1.1/", "@schemaLocation": "rec-dcmes.xsd" }, { "@namespace": "http://www.opengis.net/ows", "@schemaLocation": "../../ows/1.0.0/owsAll.xsd" } ], "xs:element": [ { "@name": "AbstractRecord", "@id": "AbstractRecord", "@type": "csw:AbstractRecordType", "@abstract": "true" }, { "@name": "DCMIRecord", "@type": "csw:DCMIRecordType", "@substitutionGroup": "csw:AbstractRecord" }, { "@name": "BriefRecord", "@type": "csw:BriefRecordType", "@substitutionGroup": "csw:AbstractRecord" }, { "@name": "SummaryRecord", "@type": "csw:SummaryRecordType", "@substitutionGroup": "csw:AbstractRecord" }, { "@name": "Record", "@type": "csw:RecordType", "@substitutionGroup": "csw:AbstractRecord" } ], "xs:complexType": [ { "@name": "AbstractRecordType", "@id": "AbstractRecordType", "@abstract": "true" }, { "@name": "DCMIRecordType", "xs:annotation": { "xs:documentation": { "@http://www.w3.org/XML/1998/namespace:lang": "en", "#text": "This type encapsulates all of the standard DCMI metadata terms,\n including the Dublin Core refinements; these terms may be mapped\n to the profile-specific information model." } }, "xs:complexContent": { "xs:extension": { "@base": "csw:AbstractRecordType", "xs:sequence": { "xs:group": { "@ref": "dct:DCMI-terms" } } } } }, { "@name": "BriefRecordType", "@final": "#all", "xs:annotation": { "xs:documentation": { "@http://www.w3.org/XML/1998/namespace:lang": "en", "#text": "This type defines a brief representation of the common record\n format. It extends AbstractRecordType to include only the\n dc:identifier and dc:type properties." } }, "xs:complexContent": { "xs:extension": { "@base": "csw:AbstractRecordType", "xs:sequence": { "xs:element": [ { "@ref": "dc:identifier", "@minOccurs": "1", "@maxOccurs": "unbounded" }, { "@ref": "dc:title", "@minOccurs": "1", "@maxOccurs": "unbounded" }, { "@ref": "dc:type", "@minOccurs": "0" }, { "@ref": "ows:BoundingBox", "@minOccurs": "0", "@maxOccurs": "unbounded" } ] } } } }, { "@name": "SummaryRecordType", "@final": "#all", "xs:annotation": { "xs:documentation": { "@http://www.w3.org/XML/1998/namespace:lang": "en", "#text": "This type defines a summary representation of the common record\n format. It extends AbstractRecordType to include the core\n properties." } }, "xs:complexContent": { "xs:extension": { "@base": "csw:AbstractRecordType", "xs:sequence": { "xs:element": [ { "@ref": "dc:identifier", "@minOccurs": "1", "@maxOccurs": "unbounded" }, { "@ref": "dc:title", "@minOccurs": "1", "@maxOccurs": "unbounded" }, { "@ref": "dc:type", "@minOccurs": "0" }, { "@ref": "dc:subject", "@minOccurs": "0", "@maxOccurs": "unbounded" }, { "@ref": "dc:format", "@minOccurs": "0", "@maxOccurs": "unbounded" }, { "@ref": "dc:relation", "@minOccurs": "0", "@maxOccurs": "unbounded" }, { "@ref": "dct:modified", "@minOccurs": "0", "@maxOccurs": "unbounded" }, { "@ref": "dct:abstract", "@minOccurs": "0", "@maxOccurs": "unbounded" }, { "@ref": "dct:spatial", "@minOccurs": "0", "@maxOccurs": "unbounded" }, { "@ref": "ows:BoundingBox", "@minOccurs": "0", "@maxOccurs": "unbounded" } ] } } } }, { "@name": "RecordType", "@final": "#all", "xs:annotation": { "xs:documentation": { "@http://www.w3.org/XML/1998/namespace:lang": "en", "#text": "This type extends DCMIRecordType to add ows:BoundingBox;\n it may be used to specify a spatial envelope for the\n catalogued resource." } }, "xs:complexContent": { "xs:extension": { "@base": "csw:DCMIRecordType", "xs:sequence": { "xs:element": [ { "@name": "AnyText", "@type": "csw:EmptyType", "@minOccurs": "0", "@maxOccurs": "unbounded" }, { "@ref": "ows:BoundingBox", "@minOccurs": "0", "@maxOccurs": "unbounded" } ] } } } }, { "@name": "EmptyType" } ] } } } }pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_DescribeRecord.xml0000644000000000000000000000007413114323025025124 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_DescribeRecord.xml0000644000175000001440000001363213114323025026073 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/2.0.2/record.xsd This schema defines the basic record types that must be supported by all CSW implementations. These correspond to full, summary, and brief views based on DCMI metadata terms. CSW is an OGC Standard. Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . This type encapsulates all of the standard DCMI metadata terms, including the Dublin Core refinements; these terms may be mapped to the profile-specific information model. This type defines a brief representation of the common record format. It extends AbstractRecordType to include only the dc:identifier and dc:type properties. This type defines a summary representation of the common record format. It extends AbstractRecordType to include the core properties. This type extends DCMIRecordType to add ows:BoundingBox; it may be used to specify a spatial envelope for the catalogued resource. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_Exception-GetRecords-badsrsname.xml0000644000000000000000000000007413114323025030357 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_Exception-GetRecords-badsrsname.xml0000644000175000001440000000154613114323025031327 0ustar00kalxasusers00000000000000 Invalid Constraint: Invalid Filter request: Reprojection error: Invalid srsName "EPSG:226": Invalid source projection pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_Exception-GetRecords-elementname.xml0000644000000000000000000000007413114323025030532 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_Exception-GetRecords-elementname.xml0000644000175000001440000000144013114323025031473 0ustar00kalxasusers00000000000000 Invalid ElementName parameter value: dc:foo pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_Exception-GetRecords-invalid-xml.xml0000644000000000000000000000007413114323025030464 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_Exception-GetRecords-invalid-xml.xml0000644000175000001440000000176613114323025031440 0ustar00kalxasusers00000000000000 Exception: the document is not valid. Error: Element '{http://www.opengis.net/cat/csw/2.0.2}ElementNamefoo': This element is not expected. Expected is one of ( {http://www.opengis.net/cat/csw/2.0.2}ElementSetName, {http://www.opengis.net/cat/csw/2.0.2}ElementName ). pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetCapabilities-SOAP.xml0000644000000000000000000000007413114323025026036 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetCapabilities-SOAP.xml0000644000175000001440000003247413114323025027012 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://demo.pycsw.org/gisdata/csw 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetCapabilities-sections.xml0000644000000000000000000000007413114323025027123 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetCapabilities-sections.xml0000644000175000001440000001044713114323025030073 0ustar00kalxasusers00000000000000 pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetCapabilities-updatesequence.xml0000644000000000000000000000007413114323025030307 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetCapabilities-updatesequence.xml0000644000175000001440000003007513114323025031256 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://demo.pycsw.org/gisdata/csw 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetCapabilities.xml0000644000000000000000000000007413114323025025276 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetCapabilities.xml0000644000175000001440000003007513114323025026245 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://demo.pycsw.org/gisdata/csw 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetDomain-parameter.xml0000644000000000000000000000007413114323025026072 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetDomain-parameter.xml0000644000175000001440000000151713114323025027040 0ustar00kalxasusers00000000000000 GetRecords.CONSTRAINTLANGUAGE CQL_TEXT FILTER pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetDomain-property.xml0000644000000000000000000000007413114323025025776 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetDomain-property.xml0000644000175000001440000000226413114323025026744 0ustar00kalxasusers00000000000000 dc:title Aliquam fermentum purus quis arcu Fuscé vitae ligulä Lorem ipsum Lorem ipsum dolor sit amet Maecenas enim Mauris sed neque Ut facilisis justo ut lacus Vestibulum massa purus Ñunç elementum pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecordById-json.xml0000644000000000000000000000007413114323025025642 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetRecordById-json.xml0000644000175000001440000000152413114323025026606 0ustar00kalxasusers00000000000000{ "csw:GetRecordByIdResponse": { "@http://www.w3.org/2001/XMLSchema-instance:schemaLocation": "http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd", "csw:SummaryRecord": { "dc:identifier": "urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63", "dc:title": "Mauris sed neque", "dc:type": "http://purl.org/dc/dcmitype/Dataset", "dc:subject": "Vegetation-Cropland", "dct:abstract": "Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.", "ows:BoundingBox": { "@crs": "urn:x-ogc:def:crs:EPSG:6.11:4326", "@dimensions": "2", "ows:LowerCorner": "47.59 -4.1", "ows:UpperCorner": "51.22 0.89" } } } }pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecordById.xml0000644000000000000000000000007413114323025024673 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetRecordById.xml0000644000175000001440000000227313114323025025641 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 47.59 -4.1 51.22 0.89 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-all-json.xml0000644000000000000000000000007413114323025026023 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-all-json.xml0000644000175000001440000000617113114323025026772 0ustar00kalxasusers00000000000000{ "csw:GetRecordsResponse": { "@version": "2.0.2", "@http://www.w3.org/2001/XMLSchema-instance:schemaLocation": "http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd", "csw:SearchStatus": { "@timestamp": "PYCSW_TIMESTAMP" }, "csw:SearchResults": { "@nextRecord": "6", "@numberOfRecordsMatched": "12", "@numberOfRecordsReturned": "5", "@recordSchema": "http://www.opengis.net/cat/csw/2.0.2", "@elementSet": "full", "csw:Record": [ { "dc:identifier": "urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f", "dc:type": "http://purl.org/dc/dcmitype/Image", "dc:format": "image/svg+xml", "dc:title": "Lorem ipsum", "dct:spatial": "GR-22", "dc:subject": "Tourism--Greece", "dct:abstract": "Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu." }, { "dc:identifier": "urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd", "dc:type": "http://purl.org/dc/dcmitype/Service", "dct:abstract": "Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.", "ows:BoundingBox": { "@crs": "urn:x-ogc:def:crs:EPSG:6.11:4326", "ows:LowerCorner": "60.042 13.754", "ows:UpperCorner": "68.410 17.920" } }, { "dc:identifier": "urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493", "dc:title": "Maecenas enim", "dc:type": "http://purl.org/dc/dcmitype/Text", "dc:format": "application/xhtml+xml", "dc:subject": "Marine sediments", "dct:abstract": "Pellentesque tempus magna non sapien fringilla blandit." }, { "dc:identifier": "urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4", "dc:type": "http://purl.org/dc/dcmitype/Service", "dc:title": "Ut facilisis justo ut lacus", "dc:subject": { "@scheme": "http://www.digest.org/2.1", "#text": "Vegetation" }, "dc:relation": "urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63" }, { "dc:identifier": "urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec", "dc:title": "Aliquam fermentum purus quis arcu", "dc:type": "http://purl.org/dc/dcmitype/Text", "dc:subject": "Hydrography--Dictionaries", "dc:format": "application/pdf", "dc:date": "2006-05-12", "dct:abstract": "Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi." } ] } } }pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-all-resulttype-hits.xml0000644000000000000000000000007413114323025030237 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-all-resulttype-hits.xml0000644000175000001440000000147013114323025031203 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-all-resulttype-validate.x0000644000000000000000000000007413114323025030530 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-all-resulttype-validate.xml0000644000175000001440000000170613114323025032027 0ustar00kalxasusers00000000000000 full pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-all-sortby-bbox.xml0000644000000000000000000000007413114323025027324 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-all-sortby-bbox.xml0000644000175000001440000000642513114323025030275 0ustar00kalxasusers00000000000000 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.042 13.754 68.410 17.920 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset Ñunç elementum Hydrography-Oceanographic 2005-10-24 44.792 -6.171 51.126 -2.228 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text application/xhtml+xml Marine sediments Pellentesque tempus magna non sapien fringilla blandit. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-all.xml0000644000000000000000000000007413114323025025054 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-all.xml0000644000175000001440000000571013114323025026021 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.042 13.754 68.410 17.920 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text application/xhtml+xml Marine sediments Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service Ut facilisis justo ut lacus Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf 2006-05-12 Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-bbox-filter-crs84.xml0000644000000000000000000000007413114323025027462 xustar0030 atime=1496426292.512636555 30 ctime=1496426292.512636555 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-bbox-filter-crs84.xml0000644000175000001440000000416613114323025030433 0ustar00kalxasusers00000000000000 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service 60.04 13.75 68.41 17.92 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-cql-title-and-abstract.xm0000644000000000000000000000007313114323025030366 xustar0030 atime=1496426292.512636555 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-cql-title-and-abstract.xml0000644000175000001440000000206013114323025031503 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-cql-title.xml0000644000000000000000000000007213114323025026200 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-cql-title.xml0000644000175000001440000000244113114323025027145 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-distributedsearch.xml0000644000000000000000000000007213114323025030012 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-distributedsearch.xml0000644000175000001440000000246413114323025030764 0ustar00kalxasusers00000000000000 urn:uuid:dd87919a-e399-11e5-8327-aa0000ae6bfc Aquifers vector digital data 32.55 -117.6 33.51 -116.08 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-elementname.xml0000644000000000000000000000007213114323025026574 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-elementname.xml0000644000175000001440000000223613114323025027543 0ustar00kalxasusers00000000000000 Lorem ipsum Maecenas enim Ut facilisis justo ut lacus Aliquam fermentum purus quis arcu pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-end.xml0000644000000000000000000000007213114323025025050 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-end.xml0000644000175000001440000000403513114323025026016 0ustar00kalxasusers00000000000000 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service Physiography Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam. urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db http://purl.org/dc/dcmitype/Text Fuscé vitae ligulä 2003-05-09 Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-and-bbox-freetext.0000644000000000000000000000007213114323025030362 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-and-bbox-freetext.xml0000644000175000001440000000241213114323025032046 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-and-nested-or.xml0000644000000000000000000000007213114323025030225 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-and-nested-or.xml0000644000175000001440000000245313114323025031175 0ustar00kalxasusers00000000000000 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf 2006-05-12 Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-and-nested-or2.xml0000644000000000000000000000007213114323025030307 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-and-nested-or2.xml0000644000175000001440000000310113114323025031246 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-anytext-and-not.xm0000644000000000000000000000007213114323025030443 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-anytext-and-not.xml0000644000175000001440000000242513114323025031566 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image Tourism--Greece image/svg+xml Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-anytext-equal.xml0000644000000000000000000000007213114323025030366 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-anytext-equal.xml0000644000175000001440000000421713114323025031336 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-anytext.xml0000644000000000000000000000007213114323025027261 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-anytext.xml0000644000175000001440000000421713114323025030231 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-bbox-reproject.xml0000644000000000000000000000007213114323025030512 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-bbox-reproject.xml0000644000175000001440000000331013114323025031453 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-bbox-sortby.xml0000644000000000000000000000007213114323025030037 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-bbox-sortby.xml0000644000175000001440000000331013114323025031000 0ustar00kalxasusers00000000000000 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-bbox.xml0000644000000000000000000000007213114323025026517 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-bbox.xml0000644000175000001440000000331013114323025027460 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-between.xml0000644000000000000000000000007213114323025027216 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-between.xml0000644000175000001440000000557613114323025030177 0ustar00kalxasusers00000000000000 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf 2006-05-12 Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db http://purl.org/dc/dcmitype/Text Fuscé vitae ligulä 2003-05-09 Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text application/xhtml+xml Marine sediments Pellentesque tempus magna non sapien fringilla blandit. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-function-bad.xml0000644000000000000000000000007213114323025030136 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-function-bad.xml0000644000175000001440000000146613114323025031111 0ustar00kalxasusers00000000000000 Invalid Constraint: Invalid Filter request: Invalid ogc:Function: foo pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-function.xml0000644000000000000000000000007213114323025027412 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-function.xml0000644000175000001440000000206013114323025030354 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-not-bbox.xml0000644000000000000000000000007213114323025027315 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-not-bbox.xml0000644000175000001440000000425513114323025030267 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service 60.04 13.75 68.41 17.92 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 Ut facilisis justo ut lacus http://purl.org/dc/dcmitype/Service urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-or-bbox-freetext.x0000644000000000000000000000007213114323025030430 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-or-bbox-freetext.xml0000644000175000001440000000331013114323025031722 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque http://purl.org/dc/dcmitype/Dataset 47.59 -4.1 51.22 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum http://purl.org/dc/dcmitype/Dataset 44.79 -6.17 51.13 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-or-nested-and.xml0000644000000000000000000000007213114323025030225 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-or-nested-and.xml0000644000175000001440000000702613114323025031176 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e http://purl.org/dc/dcmitype/Image image/jp2 Vestibulum massa purus urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms FI-ES Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset Ñunç elementum Hydrography-Oceanographic 2005-10-24 44.792 -6.171 51.126 -2.228 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-filter-or-title-abstract.0000644000000000000000000000007213114323025030404 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-filter-or-title-abstract.xml0000644000175000001440000000273513114323025032100 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-maxrecords.xml0000644000000000000000000000007213114323025026451 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-maxrecords.xml0000644000175000001440000000243213114323025027416 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_GetRecords-requestid.xml0000644000000000000000000000007213114323025026307 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_GetRecords-requestid.xml0000644000175000001440000000601613114323025027256 0ustar00kalxasusers00000000000000 ce74a6c8-677a-42b3-a07c-ce44df8ce7ab urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.042 13.754 68.410 17.920 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text application/xhtml+xml Marine sediments Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service Ut facilisis justo ut lacus Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf 2006-05-12 Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_Harvest-default.xml0000644000000000000000000000007213114323025025301 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_Harvest-default.xml0000644000175000001440000000142513114323025026247 0ustar00kalxasusers00000000000000 Harvest operations are not supported pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_Harvest-response-handler.xml0000644000000000000000000000007213114323025027126 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_Harvest-response-handler.xml0000644000175000001440000000142513114323025030074 0ustar00kalxasusers00000000000000 Harvest operations are not supported pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_Transaction-delete.xml0000644000000000000000000000007213114323025025770 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_Transaction-delete.xml0000644000175000001440000000153013114323025026733 0ustar00kalxasusers00000000000000 Invalid Constraint: Invalid Filter request: Invalid PropertyName: apiso:Identifier. 'apiso:Identifier' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_Transaction-insert.xml0000644000000000000000000000007213114323025026032 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_Transaction-insert.xml0000644000175000001440000000143113114323025026775 0ustar00kalxasusers00000000000000 Transaction operations are not supported pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_Transaction-update-full.xml0000644000000000000000000000007213114323025026750 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_Transaction-update-full.xml0000644000175000001440000000143113114323025027713 0ustar00kalxasusers00000000000000 Transaction operations are not supported pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_default_post_Transaction-update-recordproperty.xm0000644000000000000000000000007213114323025030715 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_default_post_Transaction-update-recordproperty.xml0000644000175000001440000000143113114323025032034 0ustar00kalxasusers00000000000000 Transaction operations are not supported pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_dif_post_DescribeRecord.xml0000644000000000000000000000007213114323025024240 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_dif_post_DescribeRecord.xml0000644000175000001440000000107513114323025025207 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_dif_post_GetCapabilities.xml0000644000000000000000000000007213114323025024412 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_dif_post_GetCapabilities.xml0000644000175000001440000003003313114323025025355 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_dif_post_GetRecords-filter-bbox.xml0000644000000000000000000000007213114323025025635 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_dif_post_GetRecords-filter-bbox.xml0000644000175000001440000000720313114323025026603 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque Vegetation-Cropland 47.59 51.22 -4.1 0.89 Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. CEOS IDN DIF 9.7 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum Hydrography-Oceanographic 44.79 51.13 -6.17 -2.23 CEOS IDN DIF 9.7 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_ebrim_post_DescribeRecord.xml0000644000000000000000000000007213114323025024574 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_ebrim_post_DescribeRecord.xml0000644000175000001440000001072613114323025025546 0ustar00kalxasusers00000000000000 rim:Value not allowed in this context: expected wrs:AnyValue. Schema for CSW-ebRIM catalogue profile (OGC 07-110r3). A general record identifier, expressed as an absolute URI that maps to the rim:RegistryObject/@id attribute. It substitutes for the ogc:_Id element in an OGC filter expression. Extends rim:ExtrinsicObjectType to add the following: 1. MTOM/XOP based attachment support. 2. XLink based reference to a part in a multipart/related message structure. NOTE: This content model is planned for RegRep 4.0. Allows complex slot values. Incorporates the attributes defined for use in simple XLink elements. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_ebrim_post_GetCapabilities.xml0000644000000000000000000000007213114323025024746 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_ebrim_post_GetCapabilities.xml0000644000175000001440000003044013114323025025713 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record rim:RegistryObject DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0 hits results validate csw:Record rim:RegistryObject csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0 CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_ebrim_post_GetRecords-filter-bbox-full.xml0000644000000000000000000000007213114323025027131 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_ebrim_post_GetRecords-filter-bbox-full.xml0000644000175000001440000000736613114323025030111 0ustar00kalxasusers00000000000000 47.59 -4.1 51.22 0.89 Vegetation-Cropland 44.79 -6.17 51.13 -2.23 Hydrography-Oceanographic pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_ebrim_post_GetRecords-filter-bbox.xml0000644000000000000000000000007213114323025026171 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_ebrim_post_GetRecords-filter-bbox.xml0000644000175000001440000000335713114323025027145 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_fgdc_post_DescribeRecord.xml0000644000000000000000000000007213114323025024401 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_fgdc_post_DescribeRecord.xml0000644000175000001440000000107513114323025025350 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_fgdc_post_GetCapabilities.xml0000644000000000000000000000007213114323025024553 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_fgdc_post_GetCapabilities.xml0000644000175000001440000003004613114323025025522 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_fgdc_post_GetRecords-filter-bbox.xml0000644000000000000000000000007213114323025025776 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_fgdc_post_GetRecords-filter-bbox.xml0000644000175000001440000000771013114323025026747 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. -4.1 0.89 51.22 47.59 http://purl.org/dc/dcmitype/Dataset urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc Ñunç elementum Hydrography-Oceanographic -6.17 -2.23 51.13 44.79 http://purl.org/dc/dcmitype/Dataset pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_gm03_post_GetCapabilities.xml0000644000000000000000000000007213114323025024416 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_gm03_post_GetCapabilities.xml0000644000175000001440000003004613114323025025365 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_gm03_post_GetRecords-filter-bbox.xml0000644000000000000000000000007213114323025025641 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_gm03_post_GetRecords-filter-bbox.xml0000644000175000001440000001555213114323025026615 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 GM03 2.3 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. Vegetation-Cropland 51.22 47.59 -4.1 0.89 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc GM03 2.3 http://purl.org/dc/dcmitype/Dataset Ñunç elementum Hydrography-Oceanographic 51.13 44.79 -6.17 -2.23 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_get_Exception-Harvest-invalid-resource0000644000000000000000000000007213114323025030605 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_get_Exception-Harvest-invalid-resourcetype.xml0000644000175000001440000000260113114323025033251 0ustar00kalxasusers00000000000000 Invalid resource type parameter: http://www.opengis.net/wms1234. Allowable resourcetype values: http://www.opengis.net/cat/csw/2.0.2,http://www.opengis.net/cat/csw/3.0,http://www.opengis.net/wms,http://www.opengis.net/wmts/1.0,http://www.opengis.net/wfs,http://www.opengis.net/wcs,http://www.opengis.net/wps/1.0.0,http://www.opengis.net/sos/1.0,http://www.opengis.net/sos/2.0,http://www.isotc211.org/2005/gmi,urn:geoss:waf,http://www.interlis.ch/INTERLIS2.3,http://www.opengis.net/cat/csw/csdgm,http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/,http://www.w3.org/2005/Atom,http://www.isotc211.org/2005/gmd,http://www.isotc211.org/schemas/2005/gmd/ pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_get_Exception-Harvest-missing-resource0000644000000000000000000000007213114323025030630 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_get_Exception-Harvest-missing-resourcetype.xml0000644000175000001440000000142413114323025033276 0ustar00kalxasusers00000000000000 Missing resourcetype parameter pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_get_Exception-Harvest-missing-source.x0000644000000000000000000000007213114323025030547 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_get_Exception-Harvest-missing-source.xml0000644000175000001440000000141013114323025032040 0ustar00kalxasusers00000000000000 Missing source parameter pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_get_Exception-Harvest-waf-bad-value.xm0000644000000000000000000000007213114323025030370 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_get_Exception-Harvest-waf-bad-value.xml0000644000175000001440000000145413114323025031514 0ustar00kalxasusers00000000000000 Harvest failed: record parsing failed: unknown url type: badvalue pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_get_Exception-Harvest-waf-no-records-f0000644000000000000000000000007213114323025030403 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_get_Exception-Harvest-waf-no-records-found.xml0000644000175000001440000000153313114323025033036 0ustar00kalxasusers00000000000000 0 0 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Clear-000-delete-all.xml0000644000000000000000000000007213114323025026322 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Clear-000-delete-all.xml0000644000175000001440000000144013114323025027265 0ustar00kalxasusers00000000000000 0 0 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Exception-Havest-csw-404.xml0000644000000000000000000000007213114323025027256 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Exception-Havest-csw-404.xml0000644000175000001440000000146713114323025030232 0ustar00kalxasusers00000000000000 Harvest failed: record parsing failed: HTTP error: HTTP Error 404: Not Found pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_GetCapabilities.xml0000644000000000000000000000007213114323025026022 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_GetCapabilities.xml0000644000175000001440000004245213114323025026775 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record gmd:MD_Metadata DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames Harvest.ResourceType Transaction.TransactionSchemas CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record gmd:MD_Metadata apiso:AccessConstraints apiso:Classification apiso:ConditionApplyingToAccessAndUse apiso:Contributor apiso:Creator apiso:Degree apiso:Lineage apiso:OtherConstraints apiso:Publisher apiso:Relation apiso:ResponsiblePartyRole apiso:SpecificationDate apiso:SpecificationDateType apiso:SpecificationTitle csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox apiso:Abstract apiso:AlternateTitle apiso:AnyText apiso:BoundingBox apiso:CRS apiso:CouplingType apiso:CreationDate apiso:Denominator apiso:DistanceUOM apiso:DistanceValue apiso:Format apiso:GeographicDescriptionCode apiso:HasSecurityConstraints apiso:Identifier apiso:KeywordType apiso:Language apiso:Modified apiso:OperatesOn apiso:OperatesOnIdentifier apiso:OperatesOnName apiso:Operation apiso:OrganisationName apiso:ParentIdentifier apiso:PublicationDate apiso:ResourceLanguage apiso:RevisionDate apiso:ServiceType apiso:ServiceTypeVersion apiso:Subject apiso:TempExtent_begin apiso:TempExtent_end apiso:Title apiso:TopicCategory apiso:Type brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 urn:geoss:waf http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmi http://www.isotc211.org/schemas/2005/gmd/ http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_GetDomain-parameter.xml0000644000000000000000000000007213114323025026616 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_GetDomain-parameter.xml0000644000175000001440000000341213114323025027562 0ustar00kalxasusers00000000000000 Harvest.ResourceType http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmi http://www.isotc211.org/schemas/2005/gmd/ http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-csw-iso.xml0000644000000000000000000000007213114323025025767 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-csw-iso.xml0000644000175000001440000001556213114323025026744 0ustar00kalxasusers00000000000000 34 0 0 PYCSW_IDENTIFIER pycsw Geospatial Catalogue OGC services demo PYCSW_IDENTIFIER 1 Million Scale WMS Layers from the National Atlas of the United States PYCSW_IDENTIFIER-ports1m 1 Million Scale - Ports PYCSW_IDENTIFIER-national1m 1 Million Scale - National Boundary PYCSW_IDENTIFIER-elevation 1 Million Scale - Elevation 100 Meter Resolution PYCSW_IDENTIFIER-impervious 1 Million Scale - Impervious Surface 100 Meter Resolution PYCSW_IDENTIFIER-coast1m 1 Million Scale - Coastlines PYCSW_IDENTIFIER-cdl 1 Million Scale - 113th Congressional Districts PYCSW_IDENTIFIER-states1m 1 Million Scale - States PYCSW_IDENTIFIER-elsli0100g 1 Million Scale - Color-Sliced Elevation 100 Meter Resolution PYCSW_IDENTIFIER-landcov100m 1 Million Scale - Land Cover 100 Meter Resolution PYCSW_IDENTIFIER-cdp 1 Million Scale - 113th Congressional Districts by Party PYCSW_IDENTIFIER-amtrak1m 1 Million Scale - Railroad and Bus Passenger Stations PYCSW_IDENTIFIER-airports1m 1 Million Scale - Airports PYCSW_IDENTIFIER-one_million 1 Million Scale WMS Layers from the National Atlas of the United States PYCSW_IDENTIFIER-satvi0100g 1 Million Scale - Satellite View 100 Meter Resolution PYCSW_IDENTIFIER-srcoi0100g 1 Million Scale - Color Shaded Relief 100 Meter Resolution PYCSW_IDENTIFIER-srgri0100g 1 Million Scale - Gray Shaded Relief 100 Meter Resolution PYCSW_IDENTIFIER-treecanopy 1 Million Scale - Tree Canopy 100 Meter Resolution PYCSW_IDENTIFIER-svsri0100g 1 Million Scale - Satellite View with Shaded Relief 100 Meter Resolution PYCSW_IDENTIFIER Wisconsin Lake Clarity PYCSW_IDENTIFIER-Highways Highways PYCSW_IDENTIFIER-LakesTSI LakesTSI PYCSW_IDENTIFIER-LakeClarity Wisconsin Lake Clarity PYCSW_IDENTIFIER-LakesTSI_0305 LakesTSI_0305 PYCSW_IDENTIFIER-Relief Relief PYCSW_IDENTIFIER-LakeNames_0305 LakeNames_0305 PYCSW_IDENTIFIER-Roads Roads PYCSW_IDENTIFIER-LakeNames LakeNames PYCSW_IDENTIFIER-Counties Counties PYCSW_IDENTIFIER View & download service for EU-DEM data provided by EOX PYCSW_IDENTIFIER-EU-DEM EU-DEM PYCSW_IDENTIFIER-MS View & download service for EU-DEM data provided by EOX PYCSW_IDENTIFIER-eudem_color EU-DEM color shaded pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-csw-run1.xml0000644000000000000000000000007213114323025026062 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-csw-run1.xml0000644000175000001440000000546013114323025027033 0ustar00kalxasusers00000000000000 13 0 0 PYCSW_IDENTIFIER pycsw OGC CITE demo and Reference Implementation PYCSW_IDENTIFIER Lorem ipsum PYCSW_IDENTIFIER PYCSW_IDENTIFIER Maecenas enim PYCSW_IDENTIFIER Ut facilisis justo ut lacus PYCSW_IDENTIFIER Aliquam fermentum purus quis arcu PYCSW_IDENTIFIER Vestibulum massa purus PYCSW_IDENTIFIER PYCSW_IDENTIFIER Mauris sed neque PYCSW_IDENTIFIER Ñunç elementum PYCSW_IDENTIFIER Lorem ipsum dolor sit amet PYCSW_IDENTIFIER PYCSW_IDENTIFIER Fuscé vitae ligulä pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-csw-run2.xml0000644000000000000000000000007213114323025026063 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-csw-run2.xml0000644000175000001440000000153513114323025027033 0ustar00kalxasusers00000000000000 13 13 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-dc.xml0000644000000000000000000000007213114323025024771 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-dc.xml0000644000175000001440000000207013114323025025734 0ustar00kalxasusers00000000000000 1 0 0 PYCSW_IDENTIFIER Image2000 Product 1 (at1) Multispectral pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-fgdc.xml0000644000000000000000000000007213114323025025306 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-fgdc.xml0000644000175000001440000000213213114323025026250 0ustar00kalxasusers00000000000000 1 0 0 PYCSW_IDENTIFIER CPC Merged Analysis of Precipitation Standard [POL 88.75 -88.75 180 -180] pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-iso.xml0000644000000000000000000000007213114323025025175 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-iso.xml0000644000175000001440000000204513114323025026142 0ustar00kalxasusers00000000000000 1 0 0 PYCSW_IDENTIFIER Wasserkörper Linien pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-rdf.xml0000644000000000000000000000007213114323025025156 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-rdf.xml0000644000175000001440000000203413114323025026121 0ustar00kalxasusers00000000000000 1 0 0 PYCSW_IDENTIFIER Website_gdb pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-sos100.xml0000644000000000000000000000007213114323025025430 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-sos100.xml0000644000175000001440000002025513114323025026400 0ustar00kalxasusers00000000000000 30 0 0 PYCSW_IDENTIFIER Northeastern Regional Association of Coastal Ocean Observing Systems PYCSW_IDENTIFIER-CML Mooring CML data from the COOA (UNH-COOA) located UNH Coastal Marine Lab Field Station PYCSW_IDENTIFIER-F01 Mooring F01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Penobscot Bay PYCSW_IDENTIFIER-F02 Mooring F02 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located DeepCwind Castine Test Site PYCSW_IDENTIFIER-SMB-MO-04 Mooring SMB-MO-04 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (SmartBay) located Pilot Boarding Station, Red Island Shoal, Placentia Bay, NL, CA PYCSW_IDENTIFIER-LDLC3 Mooring LDLC3 data from the LISICOS (LISICOS) located New London Ledge Light PYCSW_IDENTIFIER-CDIP154 Mooring CDIP154 data from the COOA (UNH-COOA-CDIP) located Block Island, RI PYCSW_IDENTIFIER-CDIP176 Mooring CDIP176 data from the COOA (UNH-COOA-CDIP) located Halifax Harbor, CA PYCSW_IDENTIFIER-ARTG Mooring ARTG data from the LISICOS (LISICOS) located North of Smithtown Bay PYCSW_IDENTIFIER-M01 Mooring M01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Jordan Basin PYCSW_IDENTIFIER-N01 Mooring N01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Northeast Channel PYCSW_IDENTIFIER-44039 Mooring 44039 data from the LISICOS (LISICOS) located Central Long Island Sound PYCSW_IDENTIFIER-SMB-MO-01 Mooring SMB-MO-01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (SmartBay) located Mouth of Placentia Bay, NL, Canada PYCSW_IDENTIFIER-SMB-MO-05 Mooring SMB-MO-05 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (SmartBay) located Come By Chance Point, Placentia Bay, NL, CA PYCSW_IDENTIFIER-D02 Mooring D02 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Lower Harpswell Sound PYCSW_IDENTIFIER-E02 Mooring E02 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located DeepCwind Test Site PYCSW_IDENTIFIER-E01 Mooring E01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Central Maine Shelf PYCSW_IDENTIFIER-B01 Mooring B01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Western Maine Shelf PYCSW_IDENTIFIER-EXRX Mooring EXRX data from the LISICOS (LISICOS) located Execution Rocks Long Island Sound PYCSW_IDENTIFIER-44098 Mooring 44098 data from the COOA (UNH-COOA) located Jeffrey's Ledge PYCSW_IDENTIFIER-WLIS Mooring WLIS data from the LISICOS (LISICOS) located Western Long Island Sound PYCSW_IDENTIFIER-CO2 Mooring CO2 data from the COOA (UNH-COOA) located Appledore Island PYCSW_IDENTIFIER-CDIP221 Mooring CDIP221 data from the COOA (UNH-COOA-CDIP) located Cape Cod Bay, MA PYCSW_IDENTIFIER-ALL_PLATFORMS Mooring data for all buoys from the Northeastern Regional Association of Coastal Ocean Observing Systems (NERACOOS) located in the NERACOOS Region PYCSW_IDENTIFIER-A01 Mooring A01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Massachusetts Bay PYCSW_IDENTIFIER-MDS02 Mooring MDS02 data from the URI (Univ. of Rhode Is.) located SAMP MD S PYCSW_IDENTIFIER-GREAT_BAY Mooring GREAT_BAY data from the COOA (UNH-COOA) located Great Bay, NH PYCSW_IDENTIFIER-I01 Mooring I01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Eastern Maine Shelf PYCSW_IDENTIFIER-CDIP207 Mooring CDIP207 data from the COOA (UNH-COOA-CDIP) located Fire Island, NY PYCSW_IDENTIFIER-44060 Mooring 44060 data from the LISICOS (LISICOS) located Eastern Long Island Sound pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-sos200.xml0000644000000000000000000000007213114323025025431 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-sos200.xml0000644000175000001440000000223613114323025026400 0ustar00kalxasusers00000000000000 2 0 0 PYCSW_IDENTIFIER GIN SOS PYCSW_IDENTIFIER-GW_LEVEL pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-waf.xml0000644000000000000000000000007213114323025025160 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-waf.xml0000644000175000001440000000262713114323025026133 0ustar00kalxasusers00000000000000 3 0 0 PYCSW_IDENTIFIER CPC Merged Analysis of Precipitation Standard [POL 88.75 -88.75 180 -180] PYCSW_IDENTIFIER Image2000 Product 1 (at1) Multispectral PYCSW_IDENTIFIER NOAA_RNC pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-wcs.xml0000644000000000000000000000007213114323025025177 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-wcs.xml0000644000175000001440000000342613114323025026150 0ustar00kalxasusers00000000000000 5 0 0 PYCSW_IDENTIFIER WCS Demo Server for MapServer PYCSW_IDENTIFIER-ndvi North Central US MODIS-based NDVI Images for 2002 PYCSW_IDENTIFIER-modis-001 North Central US MODIS Images for 2002-001 PYCSW_IDENTIFIER-fpar North Central US MODIS-based FPAR Images for 2002 PYCSW_IDENTIFIER-modis North Central US MODIS Images for 2002 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-wfs.xml0000644000000000000000000000007213114323025025202 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-wfs.xml0000644000175000001440000000354213114323025026152 0ustar00kalxasusers00000000000000 6 0 0 PYCSW_IDENTIFIER GeoServer Web Feature Service PYCSW_IDENTIFIER-geoss_water_sba:Reservoir Reservoir PYCSW_IDENTIFIER-geoss_water_sba:glwd_1 glwd_1 PYCSW_IDENTIFIER-geoss_water_sba:Dams Dams PYCSW_IDENTIFIER-geoss_water_sba:glwd_2 glwd_2 PYCSW_IDENTIFIER-geoss_water_sba:Lakes Lakes pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-wms-run1.xml0000644000000000000000000000007213114323025026074 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-wms-run1.xml0000644000175000001440000000302713114323025027042 0ustar00kalxasusers00000000000000 4 0 0 PYCSW_IDENTIFIER IEM WMS Service PYCSW_IDENTIFIER-nexrad_base_reflect IEM WMS Service PYCSW_IDENTIFIER-time_idx NEXRAD BASE REFLECT PYCSW_IDENTIFIER-nexrad-n0r-wmst NEXRAD BASE REFLECT pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-wms-run2.xml0000644000000000000000000000007213114323025026075 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-wms-run2.xml0000644000175000001440000000153313114323025027043 0ustar00kalxasusers00000000000000 4 4 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-wmts.xml0000644000000000000000000000007213114323025025375 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-wmts.xml0000644000175000001440000024565113114323025026356 0ustar00kalxasusers00000000000000 376 0 0 PYCSW_IDENTIFIER NASA Global Imagery Browse Services for EOSDIS PYCSW_IDENTIFIER-VIIRS_SNPP_CorrectedReflectance_BandsM3-I3-M11 Corrected Reflectance (M3-I3-M11, VIIRS, SNPP) PYCSW_IDENTIFIER-MISR_Radiance_Average_Infrared_Color_Monthly Radiance Average (AN, Infrared Color, Monthly, MISR, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F14_Water_Vapor_Over_Oceans_Descending Water Vapor (Descending, Local AM, DMSP-F14 / SSMI) PYCSW_IDENTIFIER-CERES_Combined_TOA_Window_Region_Flux_All_Sky_Monthly TOA Window-Region Flux All-Sky (Monthly, CERES, Aqua+Terra) PYCSW_IDENTIFIER-SMAP_L3_Passive_Soil_Moisture Soil Moisture (L3, Passive, Radiometer, SMAP) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Fraction_Night Cloud Fraction (Night, MODIS, Terra) PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_HH_RFI Sigma0 RFI (L3, Active, HH Polarization, Radar, SMAP) PYCSW_IDENTIFIER-MLS_HNO3_46hPa_Night Nitric Acid (46 hPa, Night, MLS, Aura) PYCSW_IDENTIFIER-AIRS_Temperature_700hPa_Night Air Temperature (700 hPa, Night, AIRS, Aqua) PYCSW_IDENTIFIER-AIRS_RelativeHumidity_500hPa_Night Relative Humidity (500 hPa, Night, AIRS, Aqua) PYCSW_IDENTIFIER-GMI_Rain_Rate_Dsc Rain Rate (Descending, GMI, GPM) PYCSW_IDENTIFIER-MOPITT_CO_Monthly_Surface_Mixing_Ratio_Night Carbon Monoxide (Monthly, Night, Surface Mixing Ratio, MOPITT, Terra) PYCSW_IDENTIFIER-MODIS_Terra_Brightness_Temp_Band31_Day Brightness Temperature (Band31, Day, MODIS, Terra) PYCSW_IDENTIFIER-Coastlines Coastlines (OSM) PYCSW_IDENTIFIER-OMI_SO2_Middle_Troposphere Sulfur Dioxide (Middle Troposphere, OMI, Aura) PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_VV Sigma0 (L3, Active, VV Polarization, Radar, SMAP) PYCSW_IDENTIFIER-GHRSST_L4_MUR_Sea_Surface_Temperature Sea Surface Temperature (L4, MUR Global Foundation, GHRSST) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Temp_Day Cloud Top Temperature (Day, MODIS, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F13_Cloud_Liquid_Water_Over_Oceans_Descending Cloud Liquid Water (Descending, Local AM, DMSP-F13 / SSMI) PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_VV_RFI Sigma0 RFI (L3, Active, VV Polarization, Radar, SMAP) PYCSW_IDENTIFIER-MODIS_Aqua_SurfaceReflectance_Bands143 Land Surface Reflectance (True Color, MODIS, Aqua) PYCSW_IDENTIFIER-Reference_Labels Reference Labels (OSM) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Net_Total_Flux_All_Sky_Monthly Surface Net Total Flux (Monthly, All-Sky, CERES, Terra) PYCSW_IDENTIFIER-MLS_O3_46hPa_Day Ozone (46 hPa, Day, MLS, Aura) PYCSW_IDENTIFIER-MLS_Temperature_46hPa_Day Air Temperature (46 hPa, Day, MLS, Aura) PYCSW_IDENTIFIER-SSMI_DMSP_F14_Water_Vapor_Over_Oceans_Ascending Water Vapor (Ascending, Local PM, DMSP-F14 / SSMI) PYCSW_IDENTIFIER-MODIS_Terra_CorrectedReflectance_Bands721 Corrected Reflectance (Bands 7-2-1, MODIS, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Brightness_Temp_Band31_Day Brightness Temperature (Band31, Day, MODIS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_Land_Surface_Temp_Day Land Surface Temperature (Day, MODIS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_Chlorophyll_A Chlorophyll (MODIS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Phase_Infrared_Night Cloud Phase (Infrared, Night, MODIS, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F8_Cloud_Liquid_Water_Over_Oceans_Descending Cloud Liquid Water (Descending, Local PM, DMSP-F8 / SSMI) PYCSW_IDENTIFIER-SSMI_DMSP_F11_Water_Vapor_Over_Oceans_Ascending Water Vapor (Ascending, Local PM, DMSP-F11 / SSMI) PYCSW_IDENTIFIER-CERES_Combined_TOA_Longwave_Flux_All_Sky_Monthly TOA Longwave Flux All-Sky (Monthly, CERES, Aqua+Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F8_Rain_Rate_Over_Oceans_Descending Rain Rate (Descending, DMSP-F8 / SSMI) PYCSW_IDENTIFIER-MODIS_Aqua_AOD_Deep_Blue_Land Deep Blue Aerosol Optical Depth (Land, MODIS, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F10_Water_Vapor_Over_Oceans_Ascending Water Vapor (Ascending, Local PM, DMSP-F10 / SSMI) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Optical_Thickness_PCL Cloud Optical Thickness (PCL, MODIS, Aqua) PYCSW_IDENTIFIER-AIRS_Prata_SO2_Index_Night Sulfur Dioxide (Prata, Night, AIRS, Aqua) PYCSW_IDENTIFIER-CERES_EBAF_TOA_Net_Flux_Clear_Sky_Monthly TOA Net Flux (Monthly, Clear-Sky, CERES, Terra) PYCSW_IDENTIFIER-AMSRE_Sea_Ice_Concentration_12km Sea Ice Concentration (12 km, AMSR-E, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_CorrectedReflectance_Bands721 Corrected Reflectance (Bands 7-2-1, MODIS, Aqua) PYCSW_IDENTIFIER-AIRS_RelativeHumidity_500hPa_Day Relative Humidity (500 hPa, Day, AIRS, Aqua) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Net_Longwave_Flux_Clear_Sky_Monthly Surface Net Longwave Flux (Monthly, Clear-Sky, CERES, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F17_Cloud_Liquid_Water_Over_Oceans_Descending Cloud Liquid Water (Descending, Local AM, DMSP-F17 / SSMIS) PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_HH_QA Sigma0 QA (L3, Active, HH Polarization, Radar, SMAP) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Phase_Infrared_Day Cloud Phase (Infrared, Day, MODIS, Terra) PYCSW_IDENTIFIER-MISR_Cloud_Stereo_Height_Histogram_Bin_0.5km_Monthly Cloud Stereo Height (No Wind Correction, < 0.5 km, Monthly, MISR) PYCSW_IDENTIFIER-MISR_Cloud_Stereo_Height_Histogram_Bin_1.5-2.0km_Monthly Cloud Stereo Height (No Wind Correction, 1.5 - 2.0 km, Monthly, MISR) PYCSW_IDENTIFIER-SSMI_DMSP_F16_Rain_Rate_Over_Oceans_Ascending Rain Rate (Ascending, DMSP-F16 / SSMIS) PYCSW_IDENTIFIER-AMSR2_Surface_Rain_Rate_Day Surface Rain Rate (Day, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-SSMI_DMSP_F17_Rain_Rate_Over_Oceans_Ascending Rain Rate (Ascending, DMSP-F17 / SSMIS) PYCSW_IDENTIFIER-AIRS_RelativeHumidity_850hPa_Night Relative Humidity (850 hPa, Night, AIRS, Aqua) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Phase_Infrared_Night Cloud Phase (Infrared, Night, MODIS, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F8_Water_Vapor_Over_Oceans_Descending Water Vapor (Descending, Local PM, DMSP-F8 / SSMI) PYCSW_IDENTIFIER-GMI_Snow_Rate_Asc Snow Rate (Ascending, GMI, GPM) PYCSW_IDENTIFIER-SSMI_DMSP_F10_Rain_Rate_Over_Oceans_Descending Rain Rate (Descending, DMSP-F10 / SSMI) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Longwave_Flux_Up_All_Sky_Monthly Surface Longwave Flux (Monthly, Up, All-Sky, CERES, Terra) PYCSW_IDENTIFIER-MODIS_Terra_Aerosol Dark Target Aerosol Optical Depth (Land and Ocean, MODIS, Terra) PYCSW_IDENTIFIER-AMSR2_Surface_Precipitation_Rate_Night Surface Precipitation Rate (Night, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-CERES_Terra_TOA_Shortwave_Flux_All_Sky_Monthly TOA Shortwave Flux All-Sky (Monthly, CERES, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Height_Night Cloud Top Height (Night, MODIS, Aqua) PYCSW_IDENTIFIER-CERES_Terra_TOA_Shortwave_Flux_Clear_Sky_Monthly TOA Shortwave Flux Clear-Sky (Monthly, CERES, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Multi_Layer_Flag Cloud Multi Layer Flag (MODIS, Aqua) PYCSW_IDENTIFIER-AIRS_RelativeHumidity_700hPa_Day Relative Humidity (700 hPa, Day, AIRS, Aqua) PYCSW_IDENTIFIER-CERES_EBAF_TOA_CRE_Longwave_Flux_Monthly TOA CRE Longwave Flux (Monthly, CERES, Terra) PYCSW_IDENTIFIER-BlueMarble_ShadedRelief_Bathymetry Blue Marble Shaded Relief and Bathymetry (MODIS) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_H_RFI Uncorrected Brightness Temperature RFI (L1, Passive, Fore, H Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-SMAP_L4_Mean_Heterotrophic_Respiration Heterotrophic Respiration (L4, 9 km Grid Cell Mean, Model Value-Added, SMAP) PYCSW_IDENTIFIER-MLS_H2O_46hPa_Night Water Vapor (46 hPa, Night, MLS, Aura) PYCSW_IDENTIFIER-MODIS_Terra_SurfaceReflectance_Bands143 Land Surface Reflectance (True Color, MODIS, Terra) PYCSW_IDENTIFIER-LIS_High_Resolution_Full_Climatology_LIS_Scaled_Flashes Lightning Flashes (Scaled, TRMM / LIS) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Shortwave_Flux_Up_All_Sky_Monthly Surface Shortwave Flux (Monthly, Up, All-Sky, CERES, Terra) PYCSW_IDENTIFIER-Reference_Features Reference Features (OSM) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Pressure_Night Cloud Top Pressure (Night, MODIS, Terra) PYCSW_IDENTIFIER-OMI_SO2_Upper_Troposphere_and_Stratosphere Sulfur Dioxide (Upper Troposphere and Stratosphere, OMI, Aura) PYCSW_IDENTIFIER-SSMI_DMSP_F15_Cloud_Liquid_Water_Over_Oceans_Ascending Cloud Liquid Water (Ascending, Local PM, DMSP-F15 / SSMI) PYCSW_IDENTIFIER-SSMI_DMSP_F14_Rain_Rate_Over_Oceans_Descending Rain Rate (Descending, DMSP-F14 / SSMI) PYCSW_IDENTIFIER-RSS_Merged_Wind_Climatology_Monthly Wind Speed over Ice-Free Oceans (Monthly, Average, Merged Microwave Radiometers) PYCSW_IDENTIFIER-MODIS_Terra_Brightness_Temp_Band31_Night Brightness Temperature (Band31, Night, MODIS, Terra) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_V_RFI Uncorrected Brightness Temperature RFI (L1, Passive, Fore, V Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-SSMI_DMSP_F10_Water_Vapor_Over_Oceans_Descending Water Vapor (Descending, Local AM, DMSP-F10 / SSMI) PYCSW_IDENTIFIER-SMAP_L4_Soil_Temperature_Layer_1 Surface Soil Temperature (L4, 12z Instantaneous, Model Value-Added, SMAP) PYCSW_IDENTIFIER-AMSR2_Surface_Rain_Rate_Night Surface Rain Rate (Night, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-MODIS_Aqua_CorrectedReflectance_TrueColor Corrected Reflectance (True Color, MODIS, Aqua) PYCSW_IDENTIFIER-AIRS_Temperature_500hPa_Day Air Temperature (500 hPa, Day, AIRS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_Sea_Ice Sea Ice Extent (MODIS, Aqua) PYCSW_IDENTIFIER-CERES_Terra_TOA_Window_Region_Flux_All_Sky_Monthly TOA Window-Region Flux All-Sky (Monthly, CERES, Terra) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Net_Shortwave_Flux_Clear_Sky_Monthly Surface Net Shortwave Flux (Monthly, Clear-Sky, CERES, Terra) PYCSW_IDENTIFIER-SMAP_L4_Uncertainty_Analyzed_Root_Zone_Soil_Moisture Root Zone Soil Moisture Uncertainty (L4, 12z Instantaneous, Model Value-Added, SMAP) PYCSW_IDENTIFIER-MODIS_Combined_Value_Added_AOD Aerosol Optical Depth (Value Added, MODIS, Combined Aqua and Terra) PYCSW_IDENTIFIER-CERES_EBAF_TOA_Shortwave_Flux_All_Sky_Monthly TOA Shortwave Flux (Monthly, All-Sky, CERES, Terra) PYCSW_IDENTIFIER-CERES_Combined_TOA_Shortwave_Flux_Clear_Sky_Monthly TOA Shortwave Flux Clear-Sky (Monthly, CERES, Aqua+Terra) PYCSW_IDENTIFIER-MODIS_Terra_AOD_Deep_Blue_Combined Merged Aerosol Optical Depth (Deep Blue, Land and Ocean, MODIS, Terra) PYCSW_IDENTIFIER-MODIS_Terra_Angstrom_Exponent_Ocean Dark Target Aerosol Angstrom Exponent (Ocean, MODIS, Terra) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_V Uncorrected Brightness Temperature (L1, Passive, Fore, V Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_H Uncorrected Brightness Temperature (L1, Passive, Fore, H Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-CERES_EBAF_Surface_CRE_Net_Total_Flux_Monthly Surface CRE Net Total Flux (Monthly, CERES, Terra) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Net_Total_Flux_Clear_Sky_Monthly Surface Net Total Flux (Monthly, Clear-Sky, CERES, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F10_Cloud_Liquid_Water_Over_Oceans_Descending Cloud Liquid Water (Descending, Local AM, DMSP-F10 / SSMI) PYCSW_IDENTIFIER-SMAP_L4_Uncertainty_Mean_Net_Ecosystem_Exchange Net Ecosystem CO2 Exchange Uncertainty (L4, 9 km Grid Cell Mean, Model Value-Added, SMAP) PYCSW_IDENTIFIER-MODIS_Terra_NDVI_8Day Normalized Difference Vegetation Index (8-Day, MODIS, Terra) PYCSW_IDENTIFIER-SMAP_L1_Passive_Faraday_Rotation_Aft Faraday Rotation Angle (L1, Passive, Aft, Radiometer, SMAP) PYCSW_IDENTIFIER-MODIS_Terra_Land_Surface_Temp_Day Land Surface Temperature (Day, MODIS, Terra) PYCSW_IDENTIFIER-MOPITT_CO_Monthly_Total_Column_Day Carbon Monoxide (Monthly, Day, Total Column, v6, Standard, MOPITT, Terra) PYCSW_IDENTIFIER-AIRS_RelativeHumidity_600hPa_Night Relative Humidity (600 hPa, Night, AIRS, Aqua) PYCSW_IDENTIFIER-RSS_Total_Precipitable_Water_Climatology_Monthly Precipitable Water over Ice-Free Oceans (Monthly, Average, Merged Microwave Radiometers) PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_Global_Monthly Corrected Reflectance (True Color, Global Monthly, Best Available, NEX, Landsat) PYCSW_IDENTIFIER-MODIS_Terra_Land_Surface_Temp_Night Land Surface Temperature (Night, MODIS, Terra) PYCSW_IDENTIFIER-MISR_Directional_Hemispherical_Reflectance_Average_Natural_Color_Monthly DHR Average (Monthly, Natural Color, MISR, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F11_Rain_Rate_Over_Oceans_Ascending Rain Rate (Ascending, DMSP-F11 / SSMI) PYCSW_IDENTIFIER-SSMI_DMSP_F16_Cloud_Liquid_Water_Over_Oceans_Descending Cloud Liquid Water (Descending, Local AM, DMSP-F16 / SSMIS) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_V Uncorrected Brightness Temperature (L1, Passive, Aft, V Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-OMI_Absorbing_Aerosol_Optical_Depth Aerosol Optical Depth, Absorbing (OMI, Aura) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Pressure_Night Cloud Top Pressure (Night, MODIS, Aqua) PYCSW_IDENTIFIER-MODIS_Terra_Chlorophyll_A Chlorophyll (MODIS, Terra) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Effective_Radius_37 Cloud Effective Radius (3.7 micron, MODIS, Terra) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Longwave_Flux_Down_All_Sky_Monthly Surface Longwave Flux (Monthly, Down, All-Sky, CERES, Terra) PYCSW_IDENTIFIER-AIRS_Temperature_400hPa_Night Air Temperature (400 hPa, Night, AIRS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_Water_Vapor_5km_Day Water Vapor Infrared (Day, MODIS, Aqua) PYCSW_IDENTIFIER-BlueMarble_ShadedRelief Blue Marble Shaded Relief (MODIS) PYCSW_IDENTIFIER-MLS_O3_46hPa_Night Ozone (46 hPa, Night, MLS, Aura) PYCSW_IDENTIFIER-CERES_EBAF_TOA_Longwave_Flux_Clear_Sky_Monthly TOA Longwave Flux (Monthly, Clear-Sky, CERES, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Water_Path_PCL Cloud Water Path (PCL, MODIS, Aqua) PYCSW_IDENTIFIER-LIS_High_Resolution_Full_Climatology_LIS_Raw_Flashes Lightning Flashes (Raw, TRMM / LIS) PYCSW_IDENTIFIER-MODIS_Terra_EVI_8Day Enhanced Vegetation Index (8-Day, MODIS, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F14_Cloud_Liquid_Water_Over_Oceans_Descending Cloud Liquid Water (Descending, Local AM, DMSP-F14 / SSMI) PYCSW_IDENTIFIER-SSMI_DMSP_F13_Rain_Rate_Over_Oceans_Descending Rain Rate (Descending, DMSP-F13 / SSMI) PYCSW_IDENTIFIER-AIRS_CO_Total_Column_Night Carbon Monoxide (Total Column, Night, AIRS, Aqua) PYCSW_IDENTIFIER-AIRS_Precipitation_Day Precipitation (Day, AIRS, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F17_Wind_Speed_Over_Oceans_Ascending Surface Wind Speed (Ascending, DMSP-F17 / SSMIS) PYCSW_IDENTIFIER-MODIS_Terra_Angstrom_Exponent_Land Deep Blue Aerosol Angstrom Exponent (Land, MODIS, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F14_Wind_Speed_Over_Oceans_Ascending Surface Wind Speed (Ascending, DMSP-F14 / SSMI) PYCSW_IDENTIFIER-MISR_Land_NDVI_Average_Monthly Land NDVI Average (Monthly, MISR) PYCSW_IDENTIFIER-MOPITT_CO_Daily_Total_Column_Night Carbon Monoxide (Daily, Night, Total Column, MOPITT, Terra) PYCSW_IDENTIFIER-ASTER_GDEM_Color_Index Digital Elevation Model (Color Index, ASTER, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F15_Rain_Rate_Over_Oceans_Descending Rain Rate (Descending, DMSP-F15 / SSMI) PYCSW_IDENTIFIER-SMAP_L4_Frozen_Area Percent Frozen Area (L4, 9 km Grid Cell Coverage, Model Value-Added, SMAP) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Effective_Radius_PCL Cloud Effective Radius (PCL, MODIS, Terra) PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_Alaska_Seasonal Corrected Reflectance (True Color, Alaska Seasonal, Best Available, Landsat) PYCSW_IDENTIFIER-VIIRS_SNPP_CorrectedReflectance_TrueColor Corrected Reflectance (True Color, VIIRS, SNPP) PYCSW_IDENTIFIER-AIRS_RelativeHumidity_850hPa_Day Relative Humidity (850 hPa, Day, AIRS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_Angstrom_Exponent_Land Deep Blue Aerosol Angstrom Exponent (Land, MODIS, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F13_Water_Vapor_Over_Oceans_Ascending Water Vapor (Ascending, Local PM, DMSP-F13 / SSMI) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Shortwave_Flux_Down_Clear_Sky_Monthly Surface Shortwave Flux (Monthly, Down, Clear-Sky, CERES, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F8_Water_Vapor_Over_Oceans_Ascending Water Vapor (Ascending, Local AM, DMSP-F8 / SSMI) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_V_QA Uncorrected Brightness Temperature QA (L1, Passive, Fore, V Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Effective_Radius Cloud Effective Radius (MODIS, Terra) PYCSW_IDENTIFIER-MODIS_Terra_Aerosol_Optical_Depth_3km Aerosol Optical Depth (3km, MODIS, Terra) PYCSW_IDENTIFIER-MODIS_Terra_SurfaceReflectance_Bands121 Land Surface Reflectance (Bands 1-2-1, MODIS, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F16_Rain_Rate_Over_Oceans_Descending Rain Rate (Descending, DMSP-F16 / SSMIS) PYCSW_IDENTIFIER-MISR_TOA_Albedo_Average_Red_Monthly TOA Albedo Average (Red, Monthly, MISR) PYCSW_IDENTIFIER-MOPITT_CO_Monthly_Surface_Mixing_Ratio_Day Carbon Monoxide (Monthly, Day, Surface Mixing Ratio, v6, Standard, MOPITT, Terra) PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_XPOL Sigma0 (L3, Active, XPOL Polarization, Radar, SMAP) PYCSW_IDENTIFIER-SMAP_L4_Emult_Average Percent of Potential Vegetation Light Use Efficiency (L4, 9 km Grid Cell Mean, Model Value-Added, SMAP) PYCSW_IDENTIFIER-AMSR2_Sea_Ice_Brightness_Temp_6km_89H Brightness Temperature for Sea Ice (89H Ghz, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-MLS_N2O_46hPa_Night Nitrous Oxide (46 hPa, Night, MLS, Aura) PYCSW_IDENTIFIER-SSMI_DMSP_F8_Cloud_Liquid_Water_Over_Oceans_Ascending Cloud Liquid Water (Ascending, Local AM, DMSP-F8 / SSMI) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Temp_Day Cloud Top Temperature (Day, MODIS, Terra) PYCSW_IDENTIFIER-AMSR2_Sea_Ice_Brightness_Temp_6km_89V Brightness Temperature for Sea Ice (89V Ghz, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-AIRS_Temperature_400hPa_Day Air Temperature (400 hPa, Day, AIRS, Aqua) PYCSW_IDENTIFIER-MODIS_Water_Mask Water Mask (MODIS/SRTM) PYCSW_IDENTIFIER-MLS_Temperature_46hPa_Night Air Temperature (46 hPa, Night, MLS, Aura) PYCSW_IDENTIFIER-SSMI_DMSP_F11_Rain_Rate_Over_Oceans_Descending Rain Rate (Descending, DMSP-F11 / SSMI) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Multi_Layer_Flag Cloud Multi Layer Flag (MODIS, Terra) PYCSW_IDENTIFIER-OMI_SO2_Lower_Troposphere Sulfur Dioxide (Lower Troposphere, OMI, Aura) PYCSW_IDENTIFIER-OTD_High_Resolution_Full_Climatology_OTD_Scaled_Flashes Lightning Flashes (Scaled, OrbView-1 / OTD) PYCSW_IDENTIFIER-AIRS_Temperature_600hPa_Day Air Temperature (600 hPa, Day, AIRS, Aqua) PYCSW_IDENTIFIER-SMAP_L3_Active_Soil_Moisture Soil Moisture (L3, Active, Radar, SMAP) PYCSW_IDENTIFIER-MODIS_Aqua_Angstrom_Exponent_Ocean Dark Target Aerosol Angstrom Exponent (Ocean, MODIS, Aqua) PYCSW_IDENTIFIER-MOPITT_CO_Daily_Surface_Mixing_Ratio_Day Carbon Monoxide (Daily, Day, Surface Mixing Ratio, v6, Standard, MOPITT, Terra) PYCSW_IDENTIFIER-AMSR2_Columnar_Water_Vapor_Night Columnar Water Vapor (Night, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-SSMI_DMSP_F14_Wind_Speed_Over_Oceans_Descending Surface Wind Speed (Descending, DMSP-F14 / SSMI) PYCSW_IDENTIFIER-OMI_Aerosol_Optical_Depth Aerosol Optical Depth (OMI, Aura) PYCSW_IDENTIFIER-MOPITT_CO_Daily_Surface_Mixing_Ratio_Night Carbon Monoxide (Daily, Night, Surface Mixing Ratio, MOPITT, Terra) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_H_QA Uncorrected Brightness Temperature QA (L1, Passive, Aft, H Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-SSMI_DMSP_F10_Wind_Speed_Over_Oceans_Descending Surface Wind Speed (Descending, DMSP-F10 / SSMI) PYCSW_IDENTIFIER-MODIS_Terra_CorrectedReflectance_TrueColor Corrected Reflectance (True Color, MODIS, Terra) PYCSW_IDENTIFIER-CERES_Terra_TOA_Longwave_Flux_Clear_Sky_Monthly TOA Longwave Flux Clear-Sky (Monthly, CERES, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Land_Surface_Temp_Night Land Surface Temperature (Night, MODIS, Aqua) PYCSW_IDENTIFIER-MLS_SO2_147hPa_Day Sulfur Dioxide (147 hPa, Day, MLS, Aura) PYCSW_IDENTIFIER-SSMI_DMSP_F13_Rain_Rate_Over_Oceans_Ascending Rain Rate (Ascending, DMSP-F13 / SSMI) PYCSW_IDENTIFIER-AIRS_Temperature_850hPa_Day Air Temperature (850 hPa, Day, AIRS, Aqua) PYCSW_IDENTIFIER-MISR_Radiance_Average_Natural_Color_Monthly Radiance Average (AN, Natural Color, Monthly, MISR, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Temp_Night Cloud Top Temperature (Night, MODIS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_SurfaceReflectance_Bands721 Land Surface Reflectance (Bands 7-2-1, MODIS, Aqua) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Pressure_Day Cloud Top Pressure (Day, MODIS, Terra) PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_Alaska_Monthly Corrected Reflectance (True Color, Alaska Monthly, Best Available, Landsat) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Shortwave_Flux_Up_Clear_Sky_Monthly Surface Shortwave Flux (Monthly, Up, Clear-Sky, CERES, Terra) PYCSW_IDENTIFIER-Blue_Marble Blue Marble (Reverb) PYCSW_IDENTIFIER-SSMI_DMSP_F16_Water_Vapor_Over_Oceans_Ascending Water Vapor (Ascending, Local PM, DMSP-F16 / SSMIS) PYCSW_IDENTIFIER-AMSR2_Cloud_Liquid_Water_Night Columnar Cloud Liquid Water (Night, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-AIRS_RelativeHumidity_400hPa_Night Relative Humidity (400 hPa, Night, AIRS, Aqua) PYCSW_IDENTIFIER-GMI_Brightness_Temp_Asc Brightness Temperature (Ascending, GMI, GPM) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Height_Day Cloud Top Height (Day, MODIS, Aqua) PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_XPOL_RFI Sigma0 RFI (L3, Active, XPOL Polarization, Radar, SMAP) PYCSW_IDENTIFIER-SMAP_L4_Mean_Gross_Primary_Productivity Gross Primary Production (L4, 9 km Grid Cell Mean, Model Value-Added, SMAP) PYCSW_IDENTIFIER-AMSR2_Snow_Water_Equivalent Snow Water Equivalent (AMSR2, GCOM-W1) PYCSW_IDENTIFIER-SMAP_L2_Passive_Soil_Moisture_Option1 Soil Moisture (L2, Passive, Single Channel Algorithm, H Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-SMAP_L2_Passive_Soil_Moisture_Option2 Soil Moisture (L2, Passive, Single Channel Algorithm, V Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-SMAP_L2_Passive_Soil_Moisture_Option3 Soil Moisture (L2, Passive, Dual Channel Algorithm, Radiometer, SMAP) PYCSW_IDENTIFIER-MEaSUREs_Daily_Landscape_Freeze_Thaw_AMSRE Freeze Thaw (Daily Landscape, AMSR-E, MEaSUREs) PYCSW_IDENTIFIER-VIIRS_SNPP_CorrectedReflectance_BandsM11-I2-I1 Corrected Reflectance (M11-I2-I1, VIIRS, SNPP) PYCSW_IDENTIFIER-VIIRS_CityLights_2012 Earth at Night (2012, VIIRS, SNPP) PYCSW_IDENTIFIER-AMSRE_Surface_Rain_Rate_Day Surface Rain Rate (Day, AMSR-E, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F10_Rain_Rate_Over_Oceans_Ascending Rain Rate (Ascending, DMSP-F10 / SSMI) PYCSW_IDENTIFIER-SMAP_L4_Uncertainty_Analyzed_Surface_Soil_Moisture Surface Soil Moisture Uncertainty (L4, 12z Instantaneous, Model Value-Added, SMAP) PYCSW_IDENTIFIER-SMAP_L4_Snow_Mass Snow Mass (L4, 12z-3z Average, Model Value-Added, SMAP) PYCSW_IDENTIFIER-SSMI_DMSP_F15_Rain_Rate_Over_Oceans_Ascending Rain Rate (Ascending, DMSP-F15 / SSMI) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Fraction_Day Cloud Fraction (Day, MODIS, Terra) PYCSW_IDENTIFIER-Landsat_WELD_NDVI_Global_Annual NDVI (Global Annual, Best Available, NEX, Landsat) PYCSW_IDENTIFIER-OTD_High_Resolution_Full_Climatology_OTD_Raw_Flashes Lightning Flashes (Raw, OrbView-1 / OTD) PYCSW_IDENTIFIER-AMSRE_Brightness_Temp_89V_Day Brightness Temperature (89V Ghz B Scan, Day, AMSR-E, Aqua) PYCSW_IDENTIFIER-CERES_Terra_TOA_Longwave_Flux_All_Sky_Monthly TOA Longwave Flux All-Sky (Monthly, CERES, Terra) PYCSW_IDENTIFIER-CERES_Terra_TOA_Window_Region_Flux_Clear_Sky_Monthly TOA Window-Region Flux Clear-Sky (Monthly, CERES, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Phase_Optical_Properties Cloud Phase Optical Properties (MODIS, Aqua) PYCSW_IDENTIFIER-SMAP_L3_Active_Passive_Brightness_Temp_V Disaggregated Brightness Temperature (L3, Active/Passive, V Polarization, Radar/Radiometer, SMAP) PYCSW_IDENTIFIER-SSMI_DMSP_F15_Cloud_Liquid_Water_Over_Oceans_Descending Cloud Liquid Water (Descending, Local AM, DMSP-F15 / SSMI) PYCSW_IDENTIFIER-OMI_Aerosol_Index Aerosol Index (OMI, Aura) PYCSW_IDENTIFIER-SMAP_L4_Analyzed_Surface_Soil_Moisture Surface Soil Moisture (L4, 12z Instantaneous, Model Value-Added, SMAP) PYCSW_IDENTIFIER-AMSR2_Columnar_Water_Vapor_Day Columnar Water Vapor (Day, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Shortwave_Flux_Down_All_Sky_Monthly Surface Shortwave Flux (Monthly, Down, All-Sky, CERES, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F11_Water_Vapor_Over_Oceans_Descending Water Vapor (Descending, Local AM, DMSP-F11 / SSMI) PYCSW_IDENTIFIER-AIRS_CO_Total_Column_Day Carbon Monoxide (Total Column, Day, AIRS, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F16_Water_Vapor_Over_Oceans_Descending Water Vapor (Descending, Local AM, DMSP-F16 / SSMIS) PYCSW_IDENTIFIER-SSMI_DMSP_F13_Wind_Speed_Over_Oceans_Ascending Surface Wind Speed (Ascending, DMSP-F13 / SSMI) PYCSW_IDENTIFIER-SSMI_DMSP_F13_Wind_Speed_Over_Oceans_Descending Surface Wind Speed (Descending, DMSP-F13 / SSMI) PYCSW_IDENTIFIER-MOPITT_CO_Monthly_Total_Column_Night Carbon Monoxide (Monthly, Night, Total Column, MOPITT, Terra) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Optical_Thickness_PCL Cloud Optical Thickness (PCL, MODIS, Terra) PYCSW_IDENTIFIER-AIRS_Temperature_850hPa_Night Air Temperature (850 hPa, Night, AIRS, Aqua) PYCSW_IDENTIFIER-SMAP_L4_Mean_Net_Ecosystem_Exchange Net Ecosystem CO2 Exchange (L4, 9 km Grid Cell Mean, Model Value-Added, SMAP) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Net_Shortwave_Flux_All_Sky_Monthly Surface Net Shortwave Flux (Monthly, All-Sky, CERES, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Snow_Cover Snow Cover (MODIS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Phase_Infrared_Day Cloud Phase (Infrared, Day, MODIS, Aqua) PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_HH Sigma0 (L3, Active, HH Polarization, Radar, SMAP) PYCSW_IDENTIFIER-SMAP_L3_Active_Passive_Brightness_Temp_H Disaggregated Brightness Temperature (L3, Active/Passive, H Polarization, Radar/Radiometer, SMAP) PYCSW_IDENTIFIER-SSMI_DMSP_F10_Cloud_Liquid_Water_Over_Oceans_Ascending Cloud Liquid Water (Ascending, Local PM, DMSP-F10 / SSMI) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_V_QA Uncorrected Brightness Temperature QA (L1, Passive, Aft, V Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-BlueMarble_NextGeneration Blue Marble (MODIS) PYCSW_IDENTIFIER-MLS_CO_215hPa_Day Carbon Monoxide (215 hPa, Day, MLS, Aura) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Effective_Radius Cloud Effective Radius (MODIS, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F10_Wind_Speed_Over_Oceans_Ascending Surface Wind Speed (Ascending, DMSP-F10 / SSMI) PYCSW_IDENTIFIER-SSMI_DMSP_F16_Cloud_Liquid_Water_Over_Oceans_Ascending Cloud Liquid Water (Ascending, Local PM, DMSP-F16 / SSMIS) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Optical_Thickness Cloud Optical Thickness (MODIS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_Brightness_Temp_Band31_Night Brightness Temperature (Band31, Night, MODIS, Aqua) PYCSW_IDENTIFIER-CERES_EBAF_TOA_Longwave_Flux_All_Sky_Monthly TOA Longwave Flux (Monthly, All-Sky, CERES, Terra) PYCSW_IDENTIFIER-Landsat_WELD_NDVI_Global_Monthly NDVI (Global Monthly, Best Available, NEX, Landsat) PYCSW_IDENTIFIER-OSM_Land_Mask Land Mask (OSM) PYCSW_IDENTIFIER-CERES_EBAF_TOA_Net_Flux_All_Sky_Monthly TOA Net Flux (Monthly, All-Sky, CERES, Terra) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Longwave_Flux_Down_Clear_Sky_Monthly Surface Longwave Flux (Monthly, Down, Clear-Sky, CERES, Terra) PYCSW_IDENTIFIER-MODIS_Terra_Water_Vapor_5km_Night Water Vapor Infrared (Night, MODIS, Terra) PYCSW_IDENTIFIER-GHRSST_L4_G1SST_Sea_Surface_Temperature Sea Surface Temperature (L4, G1SST Global Foundation, GHRSST) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Effective_Radius_37_PCL Cloud Effective Radius (3.7 micron PCL, MODIS, Terra) PYCSW_IDENTIFIER-MODIS_Terra_Snow_Cover Snow Cover (MODIS, Terra) PYCSW_IDENTIFIER-SMAP_L4_Analyzed_Root_Zone_Soil_Moisture Root Zone Soil Moisture (L4, 12z Instantaneous, Model Value-Added, SMAP) PYCSW_IDENTIFIER-MODIS_Terra_AOD_Deep_Blue_Land Deep Blue Aerosol Optical Depth (Land, MODIS, Terra) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Net_Longwave_Flux_All_Sky_Monthly Surface Net Longwave Flux (Monthly, All-Sky, CERES, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F8_Wind_Speed_Over_Oceans_Descending Surface Wind Speed (Descending, DMSP-F8 / SSMI) PYCSW_IDENTIFIER-AMSR2_Sea_Ice_Concentration_25km Sea Ice Concentration (25 km, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Optical_Thickness Cloud Optical Thickness (MODIS, Terra) PYCSW_IDENTIFIER-AIRS_Prata_SO2_Index_Day Sulfur Dioxide (Prata, Day, AIRS, Aqua) PYCSW_IDENTIFIER-MLS_N2O_46hPa_Day Nitrous Oxide (46 hPa, Day, MLS, Aura) PYCSW_IDENTIFIER-AIRS_Temperature_600hPa_Night Air Temperature (600 hPa, Night, AIRS, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F15_Wind_Speed_Over_Oceans_Ascending Surface Wind Speed (Ascending, DMSP-F15 / SSMI) PYCSW_IDENTIFIER-MODIS_Terra_CorrectedReflectance_Bands367 Corrected Reflectance (Bands 3-6-7, MODIS, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F15_Water_Vapor_Over_Oceans_Descending Water Vapor (Descending, Local AM, DMSP-F15 / SSMI) PYCSW_IDENTIFIER-MODIS_Terra_Data_No_Data Data/No Data Mask (MODIS, Terra) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Temp_Night Cloud Top Temperature (Night, MODIS, Terra) PYCSW_IDENTIFIER-MEaSUREs_Daily_Landscape_Freeze_Thaw_SSMI Freeze Thaw (Daily Landscape, SSMI, MEaSUREs) PYCSW_IDENTIFIER-AIRS_RelativeHumidity_400hPa_Day Relative Humidity (400 hPa, Day, AIRS, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F14_Rain_Rate_Over_Oceans_Ascending Rain Rate (Ascending, DMSP-F14 / SSMI) PYCSW_IDENTIFIER-SSMI_DMSP_F14_Cloud_Liquid_Water_Over_Oceans_Ascending Cloud Liquid Water (Ascending, Local PM, DMSP-F14 / SSMI) PYCSW_IDENTIFIER-MODIS_Aqua_SurfaceReflectance_Bands121 Land Surface Reflectance (Bands 1-2-1, MODIS, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F13_Cloud_Liquid_Water_Over_Oceans_Ascending Cloud Liquid Water (Ascending, Local PM, DMSP-F13 / SSMI) PYCSW_IDENTIFIER-SSMI_DMSP_F17_Cloud_Liquid_Water_Over_Oceans_Ascending Cloud Liquid Water (Ascending, Local PM, DMSP-F17 / SSMIS) PYCSW_IDENTIFIER-SSMI_DMSP_F8_Rain_Rate_Over_Oceans_Ascending Rain Rate (Ascending, DMSP-F8 / SSMI) PYCSW_IDENTIFIER-SSMI_DMSP_F15_Wind_Speed_Over_Oceans_Descending Surface Wind Speed (Descending, DMSP-F15 / SSMI) PYCSW_IDENTIFIER-OTD_High_Resolution_Full_Climatology_OTD_Flash_Rate_Climatology Lightning Flash Rate (, OrbView-1 / OTD) PYCSW_IDENTIFIER-ASTER_GDEM_Color_Shaded_Relief Digital Elevation Model (Color Shaded Relief, ASTER, Terra) PYCSW_IDENTIFIER-CERES_EBAF_TOA_Shortwave_Flux_Clear_Sky_Monthly TOA Shortwave Flux (Monthly, Clear-Sky, CERES, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F17_Wind_Speed_Over_Oceans_Descending Surface Wind Speed (Descending, DMSP-F17 / SSMIS) PYCSW_IDENTIFIER-AMSRE_Brightness_Temp_89H_Day Brightness Temperature (89H Ghz B Scan, Day, AMSR-E, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F8_Wind_Speed_Over_Oceans_Ascending Surface Wind Speed (Ascending, DMSP-F8 / SSMI) PYCSW_IDENTIFIER-CERES_Combined_TOA_Shortwave_Flux_All_Sky_Monthly TOA Shortwave Flux All-Sky (Monthly, CERES, Aqua+Terra) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_H_QA Uncorrected Brightness Temperature QA (L1, Passive, Fore, H Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-SMAP_L1_Passive_Faraday_Rotation_Fore Faraday Rotation Angle (L1, Passive, Fore, Radiometer, SMAP) PYCSW_IDENTIFIER-AIRS_Temperature_700hPa_Day Air Temperature (700 hPa, Day, AIRS, Aqua) PYCSW_IDENTIFIER-MLS_HNO3_46hPa_Day Nitric Acid (46 hPa, Day, MLS, Aura) PYCSW_IDENTIFIER-SSMI_DMSP_F15_Water_Vapor_Over_Oceans_Ascending Water Vapor (Ascending, Local PM, DMSP-F15 / SSMI) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Effective_Radius_PCL Cloud Effective Radius (PCL, MODIS, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F11_Wind_Speed_Over_Oceans_Descending Surface Wind Speed (Descending, DMSP-F11 / SSMI) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_V_RFI Uncorrected Brightness Temperature RFI (L1, Passive, Aft, V Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-AMSRE_Surface_Precipitation_Rate_Day Surface Precipitation Rate (Day, AMSR-E, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F11_Wind_Speed_Over_Oceans_Ascending Surface Wind Speed (Ascending, DMSP-F11 / SSMI) PYCSW_IDENTIFIER-CERES_EBAF_Surface_Longwave_Flux_Up_Clear_Sky_Monthly Surface Longwave Flux (Monthly, Up, Clear-Sky, CERES, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Fraction_Day Cloud Fraction (Day, MODIS, Aqua) PYCSW_IDENTIFIER-CERES_EBAF_Surface_CRE_Net_Shortwave_Flux_Monthly Surface CRE Net Shortwave Flux (Monthly, CERES, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F13_Water_Vapor_Over_Oceans_Descending Water Vapor (Descending, Local AM, DMSP-F13 / SSMI) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Phase_Optical_Properties Cloud Phase Optical Properties (MODIS, Terra) PYCSW_IDENTIFIER-MOPITT_CO_Daily_Total_Column_Day Carbon Monoxide (Daily, Day, Total Column, v6, Standard, MOPITT, Terra) PYCSW_IDENTIFIER-SSMI_DMSP_F16_Wind_Speed_Over_Oceans_Ascending Surface Wind Speed (Ascending, DMSP-F16 / SSMIS) PYCSW_IDENTIFIER-CERES_Combined_TOA_Window_Region_Flux_Clear_Sky_Monthly TOA Window-Region Flux Clear-Sky (Monthly, CERES, Aqua+Terra) PYCSW_IDENTIFIER-SMAP_L3_Passive_Brightness_Temp_H Corrected Brightness Temperature (L3, Passive, H Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-SSMI_DMSP_F16_Wind_Speed_Over_Oceans_Descending Surface Wind Speed (Descending, DMSP-F16 / SSMIS) PYCSW_IDENTIFIER-AMSRE_Sea_Ice_Concentration_25km Sea Ice Concentration (25 km, AMSR-E, Aqua) PYCSW_IDENTIFIER-MODIS_Terra_Sea_Ice Sea Ice Extent (MODIS, Terra) PYCSW_IDENTIFIER-AMSRE_Brightness_Temp_89V_Night Brightness Temperature (89V Ghz B Scan, Night, AMSR-E, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F11_Cloud_Liquid_Water_Over_Oceans_Descending Cloud Liquid Water (Descending, Local AM, DMSP-F11 / SSMI) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Height_Day Cloud Top Height (Day, MODIS, Terra) PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_CONUS_Seasonal Corrected Reflectance (True Color, CONUS Seasonal, Landsat) PYCSW_IDENTIFIER-AIRS_Precipitation_Night Precipitation (Night, AIRS, Aqua) PYCSW_IDENTIFIER-AMSRE_Brightness_Temp_89H_Night Brightness Temperature (89H Ghz B Scan, Night, AMSR-E, Aqua) PYCSW_IDENTIFIER-SMAP_L3_Passive_Brightness_Temp_V Corrected Brightness Temperature (L3, Passive, V Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Height_Night Cloud Top Height (Night, MODIS, Terra) PYCSW_IDENTIFIER-GMI_Brightness_Temp_Dsc Brightness Temperature (Descending, GMI, GPM) PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_XPOL_QA Sigma0 QA (L3, Active, XPOL Polarization, Radar, SMAP) PYCSW_IDENTIFIER-AMSRE_Surface_Precipitation_Rate_Night Surface Precipitation Rate (Night, AMSR-E, Aqua) PYCSW_IDENTIFIER-GMI_Snow_Rate_Dsc Snow Rate (Descending, GMI, GPM) PYCSW_IDENTIFIER-CERES_Combined_TOA_Longwave_Flux_Clear_Sky_Monthly TOA Longwave Flux Clear-Sky (Monthly, CERES, Aqua+Terra) PYCSW_IDENTIFIER-SMAP_L3_Active_Passive_Soil_Moisture Soil Moisture (L3, Active/Passive, Radar/Radiometer, SMAP) PYCSW_IDENTIFIER-SSMI_DMSP_F17_Water_Vapor_Over_Oceans_Ascending Water Vapor (Ascending, Local PM, DMSP-F17 / SSMIS) PYCSW_IDENTIFIER-MODIS_Aqua_Aerosol_Optical_Depth_3km Aerosol Optical Depth (3km, MODIS, Aqua) PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_Alaska_Annual Corrected Reflectance (True Color, Alaska Annual, Best Available, Landsat) PYCSW_IDENTIFIER-MISR_Aerosol_Optical_Depth_Avg_Green_Monthly Aerosol Optical Depth Average (Green, Monthly, MISR) PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_CONUS_Monthly Corrected Reflectance (True Color, CONUS Monthly, Best Available, Landsat) PYCSW_IDENTIFIER-GMI_Rain_Rate_Asc Rain Rate (Ascending, GMI, GPM) PYCSW_IDENTIFIER-MODIS_Terra_SurfaceReflectance_Bands721 Land Surface Reflectance (Bands 7-2-1, MODIS, Terra) PYCSW_IDENTIFIER-LIS_High_Resolution_Full_Climatology_Combined_Flash_Rate_Climatology Lightning Flash Rate (Combined, TRMM / LIS, OrbView-1 / OTD) PYCSW_IDENTIFIER-MODIS_Terra_Water_Vapor_5km_Day Water Vapor Infrared (Day, MODIS, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Fraction_Night Cloud Fraction (Night, MODIS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_Aerosol Dark Target Aerosol Optical Depth (Land and Ocean, MODIS, Aqua) PYCSW_IDENTIFIER-AMSR2_Wind_Speed_Day Wind Speed (Day, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-CERES_EBAF_TOA_CRE_Shortwave_Flux_Monthly TOA CRE Shortwave Flux (Monthly, CERES, Terra) PYCSW_IDENTIFIER-OMI_Cloud_Pressure Cloud Pressure (OMI, Aura) PYCSW_IDENTIFIER-MLS_H2O_46hPa_Day Water Vapor (46 hPa, Day, MLS, Aura) PYCSW_IDENTIFIER-MLS_CO_215hPa_Night Carbon Monoxide (215 hPa, Night, MLS, Aura) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Water_Path Cloud Water Path (MODIS, Terra) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_H_RFI Uncorrected Brightness Temperature RFI (L1, Passive, Aft, H Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-AMSRE_Sea_Ice_Brightness_Temp_89V Brightness Temperature for Sea Ice (89V Ghz, AMSR-E, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_AOD_Deep_Blue_Combined Merged Aerosol Optical Depth (Deep Blue, Land and Ocean, MODIS, Aqua) PYCSW_IDENTIFIER-AMSRE_Sea_Ice_Brightness_Temp_89H Brightness Temperature for Sea Ice (89H Ghz, AMSR-E, Aqua) PYCSW_IDENTIFIER-AMSR2_Wind_Speed_Night Wind Speed (Night, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_VV_QA Sigma0 QA (L3, Active, VV Polarization, Radar, SMAP) PYCSW_IDENTIFIER-AIRS_Temperature_500hPa_Night Air Temperature (500 hPa, Night, AIRS, Aqua) PYCSW_IDENTIFIER-AIRS_RelativeHumidity_700hPa_Night Relative Humidity (700 hPa, Night, AIRS, Aqua) PYCSW_IDENTIFIER-AMSR2_Cloud_Liquid_Water_Day Columnar Cloud Liquid Water (Day, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-Aquarius_Soil_Moisture_Weekly Soil Moisture (Weekly, Radiometer, Aquarius, SAC-D) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Water_Path Cloud Water Path (MODIS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Effective_Radius_37_PCL Cloud Effective Radius (3.7 micron PCL, MODIS, Aqua) PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_H Uncorrected Brightness Temperature (L1, Passive, Aft, H Polarization, Radiometer, SMAP) PYCSW_IDENTIFIER-AMSRE_Surface_Rain_Rate_Night Surface Rain Rate (Night, AMSR-E, Aqua) PYCSW_IDENTIFIER-SSMI_DMSP_F17_Water_Vapor_Over_Oceans_Descending Water Vapor (Descending, Local AM, DMSP-F17 / SSMIS) PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_Global_Annual Corrected Reflectance (True Color, Global Annual, Best Available, NEX, Landsat) PYCSW_IDENTIFIER-AMSRE_Snow_Depth_Over_Ice Snow Depth Over Ice (12 km, AMSR-E, Aqua) PYCSW_IDENTIFIER-Aquarius_Soil_Moisture_Daily Soil Moisture (Daily, Radiometer, Aquarius, SAC-D) PYCSW_IDENTIFIER-SSMI_DMSP_F11_Cloud_Liquid_Water_Over_Oceans_Ascending Cloud Liquid Water (Ascending, Local PM, DMSP-F11 / SSMI) PYCSW_IDENTIFIER-AIRS_Dust_Score_Ocean_Day Dust Score Ocean (Day, AIRS, Aqua) PYCSW_IDENTIFIER-AIRS_RelativeHumidity_600hPa_Day Relative Humidity (600 hPa, Day, AIRS, Aqua) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Pressure_Day Cloud Top Pressure (Day, MODIS, Aqua) PYCSW_IDENTIFIER-AMSR2_Sea_Ice_Concentration_12km Sea Ice Concentration (12 km, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-OSM_Land_Water_Map Land Water Map (OSM) PYCSW_IDENTIFIER-AMSR2_Surface_Precipitation_Rate_Day Surface Precipitation Rate (Day, AMSR2, GCOM-W1) PYCSW_IDENTIFIER-SRTM_Color_Index Digital Elevation Model (Color Index, SRTM) PYCSW_IDENTIFIER-CERES_EBAF_TOA_CRE_Net_Flux_Monthly TOA CRE Net Flux (Monthly, CERES, Terra) PYCSW_IDENTIFIER-AIRS_Dust_Score_Ocean_Night Dust Score Ocean (Night, AIRS, Aqua) PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_CONUS_Annual Corrected Reflectance (True Color, CONUS Annual, Landsat) PYCSW_IDENTIFIER-SSMI_DMSP_F17_Rain_Rate_Over_Oceans_Descending Rain Rate (Descending, DMSP-F17 / SSMIS) PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Effective_Radius_37 Cloud Effective Radius (3.7 micron, MODIS, Aqua) PYCSW_IDENTIFIER-CERES_EBAF_Surface_CRE_Net_Longwave_Flux_Monthly Surface CRE Net Longwave Flux (Monthly, CERES, Terra) PYCSW_IDENTIFIER-ASTER_GDEM_Greyscale_Shaded_Relief Digital Elevation Model (Greyscale Shaded Relief, ASTER, Terra) PYCSW_IDENTIFIER-MLS_SO2_147hPa_Night Sulfur Dioxide (147 hPa, Night, MLS, Aura) PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Water_Path_PCL Cloud Water Path (PCL, MODIS, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Data_No_Data Data/No Data Mask (MODIS, Aqua) PYCSW_IDENTIFIER-CERES_EBAF_TOA_Incoming_Solar_Flux_Monthly Incoming Solar Flux (Monthly, CERES, Terra) PYCSW_IDENTIFIER-MODIS_Aqua_Water_Vapor_5km_Night Water Vapor Infrared (Night, MODIS, Aqua) pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-wps.xml0000644000000000000000000000007213114323025025214 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-wps.xml0000644000175000001440000000206313114323025026161 0ustar00kalxasusers00000000000000 1 0 0 PYCSW_IDENTIFIER Geo Data Portal WPS Implementation pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-zzz-post-GetRecords-filte0000644000000000000000000000007213114323025030564 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml0000644000175000001440000002115013114323025033702 0ustar00kalxasusers00000000000000 PYCSW_IDENTIFIER pycsw Geospatial Catalogue OGC services demo service catalogue discovery metadata services CSW http://demo.pycsw.org/services/csw pycsw is an OGC CSW server implementation written in Python Lastname, Firstname Organization Name Lastname, Firstname http://demo.pycsw.org/services/csw None PYCSW_IDENTIFIER pycsw OGC CITE demo and Reference Implementation service ogc cite compliance interoperability reference implementation CSW http://demo.pycsw.org/cite/csw pycsw is an OGC CSW server implementation written in Python. pycsw fully implements the OpenGIS Catalogue Service Implementation Specification (Catalogue Service for the Web). Initial development started in 2010 (more formally announced in 2011). The project is certified OGC Compliant, and is an OGC Reference Implementation. Since 2015, pycsw is an official OSGeo Project. pycsw allows for the publishing and discovery of [[geospatial]] metadata via numerous APIs (CSW 2/CSW 3, OpenSearch, OAI-PMH, SRU). Existing repositories of geospatial metadata can also be exposed, providing a standards-based metadata and catalogue component of spatial data infrastructures. pycsw is Open Source, released under an MIT license, and runs on all major platforms (Windows, Linux, Mac OS X) Lastname, Firstname Organization Name Lastname, Firstname http://demo.pycsw.org/cite/csw None PYCSW_IDENTIFIER Northeastern Regional Association of Coastal Ocean Observing Systems service NERACOOS SOS OCEANOGRAPHY Ocean Observations Gulf of Maine Long Island Sound Narragansett Bay Cape Cod Boston Harbor Buzzards Bay Weather Ocean Currents Water Temperature Salinity Winds Waves Ocean Color GoMOOS LISICOS Univ. of New Hampshire MVCO Air Temperature OGC:SOS http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi NERACOOS supports data collected from buoys in the Gulf of Maine and Long Island Sound. The six Gulf of Maine buoys carry a comprehensive sensor suite that includes the full complement of meteorological sensors carried by the standard NDBC buoys, and in addition commonly include atmospheric visibility, surface currents, water-column current profiles, temperature and conductivity, and fluorescence (for chlorophyll a estimation) and backscatter at multiple depths. In Long Island Sound, three buoys that measure wind speed and direction, circulation, salinity, temperature and dissolved oxygen. Two buoys will be located in western LIS (WLIS and EXRK stations) and the third will be in the Central Sound (CLIS). The buoys will be equipped with three YSI-SeaBird sensors to measure conductivity, temperature, pressure and dissolved oxygen concentration near the surface, bottom and mid-depth. A buoy in Great Bay measures physical, optical, meteorological and wave data. Eric Bridger NERACOOS Eric Bridger http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi NONE urn:ogc:def:crs:EPSG:6.11:4326 40.58 -73.73 47.79 -54.05 PYCSW_IDENTIFIER GIN SOS service groundwater level monitoring timeseries Alberta Ontario Nova Scotia OGC:SOS http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw Historical groundwater level monitoring stations from Alberta, Ontario and Nova Scotia. This SOS web service delivers the data using OGC's WaterML 2.0. The SOS service federates data from various provincial sources and publishes them as a single service. Many monitoring stations also have water well characteristics available through the GIN WFS web service. Boyan Brodaric Geological Survey of Canada, Earth Sciences Sector, Natural Resources Canada, Government of Canada Boyan Brodaric http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw NONE urn:ogc:def:crs:EPSG:6.11:4326 41.0 -120.0 60.0 -60.0 PYCSW_IDENTIFIER WCS Demo Server for MapServer service WCS MODIS NDVI OGC:WCS http://demo.mapserver.org/cgi-bin/wcs Steve Lime Minnesota DNR Steve Lime http://demo.mapserver.org/cgi-bin/wcs NONE urn:ogc:def:crs:EPSG:6.11:4326 41.03 -97.71 49.67 -80.68 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-zzz-post-GetRecords-filte0000644000000000000000000000025413114323025030566 xustar00114 path=pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml 29 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-abstract-dc0000644000175000001440000000465113114323025034707 0ustar00kalxasusers00000000000000 PYCSW_IDENTIFIER GIN SOS service groundwater level monitoring timeseries Alberta Ontario Nova Scotia OGC:SOS http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw Historical groundwater level monitoring stations from Alberta, Ontario and Nova Scotia. This SOS web service delivers the data using OGC's WaterML 2.0. The SOS service federates data from various provincial sources and publishes them as a single service. Many monitoring stations also have water well characteristics available through the GIN WFS web service. Boyan Brodaric Geological Survey of Canada, Earth Sciences Sector, Natural Resources Canada, Government of Canada Boyan Brodaric http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw NONE urn:ogc:def:crs:EPSG:6.11:4326 41.0 -120.0 60.0 -60.0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-zzz-post-GetRecords-filte0000644000000000000000000000007213114323025030564 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-dc.xml0000644000175000001440000001240213114323025033676 0ustar00kalxasusers00000000000000 PYCSW_IDENTIFIER Northeastern Regional Association of Coastal Ocean Observing Systems service NERACOOS SOS OCEANOGRAPHY Ocean Observations Gulf of Maine Long Island Sound Narragansett Bay Cape Cod Boston Harbor Buzzards Bay Weather Ocean Currents Water Temperature Salinity Winds Waves Ocean Color GoMOOS LISICOS Univ. of New Hampshire MVCO Air Temperature OGC:SOS http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi NERACOOS supports data collected from buoys in the Gulf of Maine and Long Island Sound. The six Gulf of Maine buoys carry a comprehensive sensor suite that includes the full complement of meteorological sensors carried by the standard NDBC buoys, and in addition commonly include atmospheric visibility, surface currents, water-column current profiles, temperature and conductivity, and fluorescence (for chlorophyll a estimation) and backscatter at multiple depths. In Long Island Sound, three buoys that measure wind speed and direction, circulation, salinity, temperature and dissolved oxygen. Two buoys will be located in western LIS (WLIS and EXRK stations) and the third will be in the Central Sound (CLIS). The buoys will be equipped with three YSI-SeaBird sensors to measure conductivity, temperature, pressure and dissolved oxygen concentration near the surface, bottom and mid-depth. A buoy in Great Bay measures physical, optical, meteorological and wave data. Eric Bridger NERACOOS Eric Bridger http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi NONE urn:ogc:def:crs:EPSG:6.11:4326 40.58 -73.73 47.79 -54.05 PYCSW_IDENTIFIER GIN SOS service groundwater level monitoring timeseries Alberta Ontario Nova Scotia OGC:SOS http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw Historical groundwater level monitoring stations from Alberta, Ontario and Nova Scotia. This SOS web service delivers the data using OGC's WaterML 2.0. The SOS service federates data from various provincial sources and publishes them as a single service. Many monitoring stations also have water well characteristics available through the GIN WFS web service. Boyan Brodaric Geological Survey of Canada, Earth Sciences Sector, Natural Resources Canada, Government of Canada Boyan Brodaric http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw NONE urn:ogc:def:crs:EPSG:6.11:4326 41.0 -120.0 60.0 -60.0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-zzz-post-GetRecords-filte0000644000000000000000000000007213114323025030564 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-iso.xml0000644000175000001440000014217213114323025034112 0ustar00kalxasusers00000000000000 PYCSW_IDENTIFIER service Eric Bridger NERACOOS DMAC Coordinator 207 228-1662 350 Commercial St. Portland ME 04101 US ebridger@gmri.org http://www.neracoos.org/ pointOfContact ISO19119 2005/PDAM 1 Northeastern Regional Association of Coastal Ocean Observing Systems NERACOOS supports data collected from buoys in the Gulf of Maine and Long Island Sound. The six Gulf of Maine buoys carry a comprehensive sensor suite that includes the full complement of meteorological sensors carried by the standard NDBC buoys, and in addition commonly include atmospheric visibility, surface currents, water-column current profiles, temperature and conductivity, and fluorescence (for chlorophyll a estimation) and backscatter at multiple depths. In Long Island Sound, three buoys that measure wind speed and direction, circulation, salinity, temperature and dissolved oxygen. Two buoys will be located in western LIS (WLIS and EXRK stations) and the third will be in the Central Sound (CLIS). The buoys will be equipped with three YSI-SeaBird sensors to measure conductivity, temperature, pressure and dissolved oxygen concentration near the surface, bottom and mid-depth. A buoy in Great Bay measures physical, optical, meteorological and wave data. NERACOOS SOS OCEANOGRAPHY Ocean Observations Gulf of Maine Long Island Sound Narragansett Bay Cape Cod Boston Harbor Buzzards Bay Weather Ocean Currents Water Temperature Salinity Winds Waves Ocean Color GoMOOS LISICOS Univ. of New Hampshire MVCO Air Temperature OGC:SOS 1.0.0 NERACOOS SOS OCEANOGRAPHY Ocean Observations Gulf of Maine Long Island Sound Narragansett Bay Cape Cod Boston Harbor Buzzards Bay Weather Ocean Currents Water Temperature Salinity Winds Waves Ocean Color GoMOOS LISICOS Univ. of New Hampshire MVCO Air Temperature -73.73 -54.05 40.58 47.79 tight GetObservation CML GetObservation F01 GetObservation F02 GetObservation SMB-MO-04 GetObservation LDLC3 GetObservation CDIP154 GetObservation CDIP176 GetObservation ARTG GetObservation M01 GetObservation N01 GetObservation 44039 GetObservation SMB-MO-01 GetObservation SMB-MO-05 GetObservation D02 GetObservation E02 GetObservation E01 GetObservation B01 GetObservation EXRX GetObservation 44098 GetObservation WLIS GetObservation CO2 GetObservation CDIP221 GetObservation ALL_PLATFORMS GetObservation A01 GetObservation MDS02 GetObservation GREAT_BAY GetObservation I01 GetObservation CDIP207 GetObservation 44060 GetCapabilities HTTPGet HTTPPost http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi GetObservation HTTPGet HTTPPost http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi DescribeSensor HTTPGet HTTPPost http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi OGC:SOS PYCSW_IDENTIFIER OGC-SOS Sensor Observation Service PYCSW_IDENTIFIER service Boyan Brodaric Geological Survey of Canada, Earth Sciences Sector, Natural Resources Canada, Government of Canada Research Scientist +1-613-992-3562 +1-613-995-9273 615 Booth Street Ottawa K1A 0E9 Canada brodaric at nrcan dot gc dot ca http://gw-info.net pointOfContact ISO19119 2005/PDAM 1 GIN SOS Historical groundwater level monitoring stations from Alberta, Ontario and Nova Scotia. This SOS web service delivers the data using OGC's WaterML 2.0. The SOS service federates data from various provincial sources and publishes them as a single service. Many monitoring stations also have water well characteristics available through the GIN WFS web service. groundwater level monitoring timeseries Alberta Ontario Nova Scotia OGC:SOS 2.0.0 groundwater level monitoring timeseries Alberta Ontario Nova Scotia -120.0 -60.0 41.0 60.0 tight GetObservation GW_LEVEL GetCapabilities HTTPGet HTTPPost http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw DescribeSensor HTTPGet HTTPPost http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw GetObservation HTTPGet HTTPPost http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw GetFeatureOfInterest HTTPGet HTTPPost http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw OGC:SOS PYCSW_IDENTIFIER OGC-SOS Sensor Observation Service pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-zzz-post-GetRecords-filte0000644000000000000000000000007213114323025030564 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wfs-iso.xml0000644000175000001440000004466513114323025034115 0ustar00kalxasusers00000000000000 PYCSW_IDENTIFIER service Matt Austin National Oceanic and Atmospheric Administration Silver Spring Maryland 20910 USA pointOfContact ISO19119 2005/PDAM 1 GeoServer Web Feature Service This is the reference implementation of WFS 1.0.0 and WFS 1.1.0, supports all WFS operations including Transaction. WFS WMS GEOSERVER OGC:WFS 1.1.0 WFS WMS GEOSERVER -179.87 179.99 -54.61 83.46 tight GetFeature geoss_water_sba:Reservoir GetFeature geoss_water_sba:glwd_1 GetFeature geoss_water_sba:Dams GetFeature geoss_water_sba:glwd_2 GetFeature geoss_water_sba:Lakes GetCapabilities HTTPGet HTTPPost http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs DescribeFeatureType HTTPGet HTTPPost http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs GetFeature HTTPGet HTTPPost http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs GetGmlObject HTTPGet HTTPPost http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs LockFeature HTTPGet HTTPPost http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs GetFeatureWithLock HTTPGet HTTPPost http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs Transaction HTTPGet HTTPPost http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs OGC:WFS PYCSW_IDENTIFIER OGC-WFS Web Feature Service pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-zzz-post-GetRecords-filte0000644000000000000000000000007213114323025030564 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-dc.xml0000644000175000001440000001464713114323025033715 0ustar00kalxasusers00000000000000 PYCSW_IDENTIFIER 1 Million Scale WMS Layers from the National Atlas of the United States service http://webservices.nationalatlas.gov/wms/1million http://webservices.nationalatlas.gov/wms/1million?version=1.1.1&request=GetCapabilities&service=WMS http://webservices.nationalatlas.gov/wms/1million http://webservices.nationalatlas.gov/wms/1million http://webservices.nationalatlas.gov/wms/1million http://webservices.nationalatlas.gov/wms/1million http://webservices.nationalatlas.gov/wms/1million http://webservices.nationalatlas.gov/wms/1million http://demo.pycsw.org/services/csw 18.92 -179.13 71.4 179.79 PYCSW_IDENTIFIER Wisconsin Lake Clarity service SSEC PAW remote sensing meteorology atmospheric science University of Wisconsin Madison weather land http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=%2Fhome%2Fwms%2Fdata%2Fmapfiles%2Flakestsi.map&version=1.1.1&request=GetCapabilities&service=WMS http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map General: This server hosts a set of experimental OGC Web Services of remote sensing data products for use in a broad range of both desktop and mobile device clients. http://demo.pycsw.org/services/csw 42.41 -93.03 47.13 -86.64 PYCSW_IDENTIFIER View & download service for EU-DEM data provided by EOX service EU-DEM http://data.eox.at/eudem_ows http://data.eox.at/eudem_ows?version=1.1.1&request=GetCapabilities&service=WMS http://data.eox.at/eudem_ows http://data.eox.at/eudem_ows http://data.eox.at/eudem_ows http://data.eox.at/eudem_ows http://data.eox.at/eudem_ows http://data.eox.at/eudem_ows Produced using Copernicus data and information funded by the European Union - EU-DEM layers. http://demo.pycsw.org/services/csw 12.99 -29.09 12.99 -29.09 PYCSW_IDENTIFIER IEM WMS Service service OGC:WMS http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi IEM generated CONUS composite of NWS WSR-88D level III base reflectivity. Daryl Herzmann Iowa State University Daryl Herzmann http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi None urn:ogc:def:crs:EPSG:6.11:4326 24.0 -126.0 50.0 -66.0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-zzz-post-GetRecords-filte0000644000000000000000000000007213114323025030564 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-iso.xml0000644000175000001440000020470513114323025034115 0ustar00kalxasusers00000000000000 PYCSW_IDENTIFIER service ISO19119 2005/PDAM 1 1 Million Scale WMS Layers from the National Atlas of the United States OGC:WMS 1.1.1 -179.13 179.79 18.92 71.4 tight GetMap ports1m GetMap national1m GetMap elevation GetMap impervious GetMap coast1m GetMap cdl GetMap states1m GetMap elsli0100g GetMap landcov100m GetMap cdp GetMap amtrak1m GetMap airports1m GetMap one_million GetMap satvi0100g GetMap srcoi0100g GetMap srgri0100g GetMap treecanopy GetMap svsri0100g GetCapabilities HTTPGet HTTPPost http://webservices.nationalatlas.gov/wms/1million GetMap HTTPGet HTTPPost http://webservices.nationalatlas.gov/wms/1million GetFeatureInfo HTTPGet HTTPPost http://webservices.nationalatlas.gov/wms/1million DescribeLayer HTTPGet HTTPPost http://webservices.nationalatlas.gov/wms/1million GetLegendGraphic HTTPGet HTTPPost http://webservices.nationalatlas.gov/wms/1million GetStyles HTTPGet HTTPPost http://webservices.nationalatlas.gov/wms/1million http://webservices.nationalatlas.gov/wms/1million OGC:WMS PYCSW_IDENTIFIER OGC-WMS Web Map Service http://webservices.nationalatlas.gov/wms/1million?version=1.1.1&request=GetCapabilities&service=WMS OGC:WMS-1.1.1-http-get-capabilities PYCSW_IDENTIFIER OGC-WMS Capabilities service (ver 1.1.1) PYCSW_IDENTIFIER service Dr. Sam Batzli ISO19119 2005/PDAM 1 Wisconsin Lake Clarity General: This server hosts a set of experimental OGC Web Services of remote sensing data products for use in a broad range of both desktop and mobile device clients. SSEC PAW remote sensing meteorology atmospheric science University of Wisconsin Madison weather land OGC:WMS 1.1.1 SSEC PAW remote sensing meteorology atmospheric science University of Wisconsin Madison weather land -93.03 -86.64 42.41 47.13 tight GetMap Highways GetMap LakesTSI GetMap LakeClarity GetMap LakesTSI_0305 GetMap Relief GetMap LakeNames_0305 GetMap Roads GetMap LakeNames GetMap Counties GetCapabilities HTTPGet HTTPPost http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map GetMap HTTPGet HTTPPost http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map GetFeatureInfo HTTPGet HTTPPost http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map OGC:WMS PYCSW_IDENTIFIER OGC-WMS Web Map Service http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=%2Fhome%2Fwms%2Fdata%2Fmapfiles%2Flakestsi.map&version=1.1.1&request=GetCapabilities&service=WMS OGC:WMS-1.1.1-http-get-capabilities PYCSW_IDENTIFIER OGC-WMS Capabilities service (ver 1.1.1) PYCSW_IDENTIFIER service Stephan Meissl ISO19119 2005/PDAM 1 View & download service for EU-DEM data provided by EOX Produced using Copernicus data and information funded by the European Union - EU-DEM layers. EU-DEM OGC:WMS 1.1.1 EU-DEM -29.09 -29.09 12.99 12.99 tight GetMap EU-DEM GetMap MS GetMap eudem_color GetCapabilities HTTPGet HTTPPost http://data.eox.at/eudem_ows GetMap HTTPGet HTTPPost http://data.eox.at/eudem_ows GetFeatureInfo HTTPGet HTTPPost http://data.eox.at/eudem_ows DescribeLayer HTTPGet HTTPPost http://data.eox.at/eudem_ows GetLegendGraphic HTTPGet HTTPPost http://data.eox.at/eudem_ows GetStyles HTTPGet HTTPPost http://data.eox.at/eudem_ows http://data.eox.at/eudem_ows OGC:WMS PYCSW_IDENTIFIER OGC-WMS Web Map Service http://data.eox.at/eudem_ows?version=1.1.1&request=GetCapabilities&service=WMS OGC:WMS-1.1.1-http-get-capabilities PYCSW_IDENTIFIER OGC-WMS Capabilities service (ver 1.1.1) PYCSW_IDENTIFIER service Daryl Herzmann Iowa State University https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi? ISO19119 2005/PDAM 1 IEM WMS Service IEM generated CONUS composite of NWS WSR-88D level III base reflectivity. OGC:WMS 1.1.1 -126.0 -66.0 24.0 50.0 tight GetMap nexrad_base_reflect GetMap time_idx GetMap nexrad-n0r-wmst GetCapabilities HTTPGet HTTPPost http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi GetMap HTTPGet HTTPPost http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi GetFeatureInfo HTTPGet HTTPPost http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi DescribeLayer HTTPGet HTTPPost http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi GetLegendGraphic HTTPGet HTTPPost http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi GetStyles HTTPGet HTTPPost http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi OGC:WMS PYCSW_IDENTIFIER OGC-WMS Web Map Service pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Harvest-zzz-post-GetRecords-filte0000644000000000000000000000007213114323025030564 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-layer.xml0000644000175000001440000000564013114323025034434 0ustar00kalxasusers00000000000000 PYCSW_IDENTIFIER NEXRAD BASE REFLECT dataset http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?layers=time_idx&width=200&version=1.1.1&bbox=-126.0%2C24.0%2C-66.0%2C50.0&service=WMS&format=image%2Fpng&styles=&srs=EPSG%3A4326&request=GetMap&height=200 http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi urn:ogc:def:crs:EPSG:6.11:4326 24.0 -126.0 50.0 -66.0 PYCSW_IDENTIFIER NEXRAD BASE REFLECT dataset http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?layers=nexrad-n0r-wmst&width=200&version=1.1.1&bbox=-126.0%2C24.0%2C-66.0%2C50.0&service=WMS&format=image%2Fpng&styles=&srs=EPSG%3A4326&request=GetMap&height=200 http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi urn:ogc:def:crs:EPSG:6.11:4326 24.0 -126.0 50.0 -66.0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_harvesting_post_Transaction-000-delete-all.xml0000644000000000000000000000007213114323025027561 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_harvesting_post_Transaction-000-delete-all.xml0000644000175000001440000000144213114323025030526 0ustar00kalxasusers00000000000000 0 0 478 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Clear-000-delete-all.xml0000644000000000000000000000007213114323025025562 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_manager_post_Clear-000-delete-all.xml0000644000175000001440000000144013114323025026525 0ustar00kalxasusers00000000000000 0 0 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_GetCapabilities.xml0000644000000000000000000000007213114323025025262 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_manager_post_GetCapabilities.xml0000644000175000001440000004240313114323025026231 0ustar00kalxasusers00000000000000 pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record gmd:MD_Metadata DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames Harvest.ResourceType Transaction.TransactionSchemas CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record gmd:MD_Metadata apiso:AccessConstraints apiso:Classification apiso:ConditionApplyingToAccessAndUse apiso:Contributor apiso:Creator apiso:Degree apiso:Lineage apiso:OtherConstraints apiso:Publisher apiso:Relation apiso:ResponsiblePartyRole apiso:SpecificationDate apiso:SpecificationDateType apiso:SpecificationTitle csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox apiso:Abstract apiso:AlternateTitle apiso:AnyText apiso:BoundingBox apiso:CRS apiso:CouplingType apiso:CreationDate apiso:Denominator apiso:DistanceUOM apiso:DistanceValue apiso:Format apiso:GeographicDescriptionCode apiso:HasSecurityConstraints apiso:Identifier apiso:KeywordType apiso:Language apiso:Modified apiso:OperatesOn apiso:OperatesOnIdentifier apiso:OperatesOnName apiso:Operation apiso:OrganisationName apiso:ParentIdentifier apiso:PublicationDate apiso:ResourceLanguage apiso:RevisionDate apiso:ServiceType apiso:ServiceTypeVersion apiso:Subject apiso:TempExtent_begin apiso:TempExtent_end apiso:Title apiso:TopicCategory apiso:Type brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom http://www.isotc211.org/2005/gmi http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 urn:geoss:waf http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmi http://www.isotc211.org/schemas/2005/gmd/ http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf CSW 2.0.2 3.0.0 http://geo.data.gov/geoportal/csw/discovery 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_GetDomain-parameter.xml0000644000000000000000000000007213114323025026056 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_manager_post_GetDomain-parameter.xml0000644000175000001440000000341213114323025027022 0ustar00kalxasusers00000000000000 Harvest.ResourceType http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmi http://www.isotc211.org/schemas/2005/gmd/ http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/3.0 http://www.opengis.net/cat/csw/csdgm http://www.opengis.net/sos/1.0 http://www.opengis.net/sos/2.0 http://www.opengis.net/wcs http://www.opengis.net/wfs http://www.opengis.net/wms http://www.opengis.net/wmts/1.0 http://www.opengis.net/wps/1.0.0 http://www.w3.org/2005/Atom urn:geoss:waf pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-000-delete-all.xml0000644000000000000000000000007213114323025027021 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-000-delete-all.xml0000644000175000001440000000144013114323025027764 0ustar00kalxasusers00000000000000 0 0 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-dc-01-insert.xml0000644000000000000000000000007213114323025026622 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-dc-01-insert.xml0000644000175000001440000000171413114323025027571 0ustar00kalxasusers00000000000000 1 0 0 xyz pycsw Catalogue pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-dc-02-update-full.xml0000644000000000000000000000007213114323025027541 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-dc-02-update-full.xml0000644000175000001440000000144013114323025030504 0ustar00kalxasusers00000000000000 0 1 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-fgdc-01-insert.xml0000644000000000000000000000007213114323025027137 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-fgdc-01-insert.xml0000644000175000001440000000170713114323025030110 0ustar00kalxasusers00000000000000 1 0 0 foorecord NCEP pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-fgdc-02-update-recprop.x0000644000000000000000000000007213114323025030235 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-fgdc-02-update-recprop.xml0000644000175000001440000000144013114323025031531 0ustar00kalxasusers00000000000000 0 1 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-fgdc-03-delete-all.xml0000644000000000000000000000007213114323025027645 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-fgdc-03-delete-all.xml0000644000175000001440000000144013114323025030610 0ustar00kalxasusers00000000000000 0 0 2 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-iso-00-delete-all.xml0000644000000000000000000000007213114323025027531 xustar0029 atime=1496426292.51663664 29 ctime=1496426292.51663664 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-iso-00-delete-all.xml0000644000175000001440000000144013114323025030474 0ustar00kalxasusers00000000000000 0 0 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-iso-01-insert.xml0000644000000000000000000000007313114323025027027 xustar0029 atime=1496426292.51663664 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-iso-01-insert.xml0000644000175000001440000000171313114323025027774 0ustar00kalxasusers00000000000000 1 0 0 12345 pycsw record pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-iso-02-update-full.xml0000644000000000000000000000007413114323025027747 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-iso-02-update-full.xml0000644000175000001440000000144013114323025030710 0ustar00kalxasusers00000000000000 0 1 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-iso-03-update-recprop.xm0000644000000000000000000000007413114323025030304 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-iso-03-update-recprop.xml0000644000175000001440000000144013114323025031421 0ustar00kalxasusers00000000000000 0 1 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-iso-04-update-recprop-no0000644000000000000000000000007413114323025030274 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-iso-04-update-recprop-no-matches.xml0000644000175000001440000000144013114323025033456 0ustar00kalxasusers00000000000000 0 0 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-iso-05-delete.xml0000644000000000000000000000007413114323025026772 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-iso-05-delete.xml0000644000175000001440000000144013114323025027733 0ustar00kalxasusers00000000000000 0 0 1 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_manager_post_Transaction-xxx-delete-all.xml0000644000000000000000000000007413114323025027353 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_manager_post_Transaction-xxx-delete-all.xml0000644000175000001440000000144013114323025030314 0ustar00kalxasusers00000000000000 0 0 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_GetRecord_bad_metadata_prefix.xml0000644000000000000000000000007413114323025027571 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_GetRecord_bad_metadata_prefix.xml0000644000175000001440000000124513114323025030535 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh Invalid outputschema parameter csw-recordd pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_GetRecord_dc.xml0000644000000000000000000000007413114323025024214 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_GetRecord_dc.xml0000644000175000001440000000270113114323025025156 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_GetRecord_iso.xml0000644000000000000000000000007413114323025024420 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_GetRecord_iso.xml0000644000175000001440000000614313114323025025366 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image ISO19115 2003/Cor.1:2006 Lorem ipsum Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. Tourism--Greece pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_GetRecord_oai_dc.xml0000644000000000000000000000007413114323025025044 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_GetRecord_oai_dc.xml0000644000175000001440000000270513114323025026012 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_Identify.xml0000644000000000000000000000007413114323025023443 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_Identify.xml0000644000175000001440000000175713114323025024417 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh pycsw Geospatial Catalogue http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh 2.0 tomkralidis@gmail.com PYCSW_TIMESTAMP no YYYY-MM-DDThh:mm:ssZ pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_ListIdentifiers_bad_metadata_prefix.xm0000644000000000000000000000007413114323025030640 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_ListIdentifiers_bad_metadata_prefix.xml0000644000175000001440000000114713114323025031761 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh Invalid outputSchema parameter value: foo pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_ListIdentifiers_dc.xml0000644000000000000000000000007413114323025025437 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_ListIdentifiers_dc.xml0000644000175000001440000000530613114323025026405 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f 11 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_ListIdentifiers_iso.xml0000644000000000000000000000007413114323025025643 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_ListIdentifiers_iso.xml0000644000175000001440000000530413114323025026607 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f 11 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_ListIdentifiers_missing_metadata_prefi0000644000000000000000000000007413114323025030750 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_ListIdentifiers_missing_metadata_prefix.xml0000644000175000001440000000111113114323025032673 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh Missing metadataPrefix parameter pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_ListIdentifiers_oai_dc.xml0000644000000000000000000000007413114323025026267 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_ListIdentifiers_oai_dc.xml0000644000175000001440000000530213114323025027231 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f 11 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_ListMetadataFormats.xml0000644000000000000000000000007413114323025025600 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_ListMetadataFormats.xml0000644000175000001440000000437013114323025026546 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh csw-record http://schemas.opengis.net/csw/2.0.2/record.xsd http://www.opengis.net/cat/csw/2.0.2 dif http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.xsd http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ fgdc-std http://www.fgdc.gov/metadata/fgdc-std-001-1998.xsd http://www.opengis.net/cat/csw/csdgm gm03 http://www.geocat.ch/internet/geocat/en/home/documentation/gm03.parsys.50316.downloadList.86742.DownloadFile.tmp/gm0321.zip http://www.interlis.ch/INTERLIS2.3 iso19139 http://www.isotc211.org/2005/gmd/gmd.xsd http://www.isotc211.org/2005/gmd oai_dc http://www.openarchives.org/OAI/2.0/oai_dc.xsd http://www.openarchives.org/OAI/2.0/oai_dc/ pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_ListRecords_dc.xml0000644000000000000000000000007413114323025024573 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_ListRecords_dc.xml0000644000175000001440000002145013114323025025537 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.042 13.754 68.410 17.920 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text application/xhtml+xml Marine sediments Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service Ut facilisis justo ut lacus Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf 2006-05-12 Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e http://purl.org/dc/dcmitype/Image image/jp2 Vestibulum massa purus urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms FI-ES Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset Ñunç elementum Hydrography-Oceanographic 2005-10-24 44.792 -6.171 51.126 -2.228 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI 11 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_ListRecords_dc_bad_metadata_prefix.xml0000644000000000000000000000007413114323025030616 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_ListRecords_dc_bad_metadata_prefix.xml0000644000175000001440000000116713114323025031565 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh Invalid outputSchema parameter value: csw-recording pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_ListRecords_iso19139.xml0000644000000000000000000000007413114323025025406 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_ListRecords_iso19139.xml0000644000175000001440000006556213114323025026366 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image ISO19115 2003/Cor.1:2006 Lorem ipsum Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. Tourism--Greece urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service ISO19115 2003/Cor.1:2006 Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 13.75 17.92 60.04 68.41 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 http://purl.org/dc/dcmitype/Text ISO19115 2003/Cor.1:2006 Maecenas enim Pellentesque tempus magna non sapien fringilla blandit. Marine sediments urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service ISO19115 2003/Cor.1:2006 Ut facilisis justo ut lacus Vegetation urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec http://purl.org/dc/dcmitype/Text ISO19115 2003/Cor.1:2006 Aliquam fermentum purus quis arcu Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. Hydrography--Dictionaries urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e http://purl.org/dc/dcmitype/Image ISO19115 2003/Cor.1:2006 Vestibulum massa purus urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 dataset ISO19115 2003/Cor.1:2006 Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. Physiography-Landforms urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 dataset ISO19115 2003/Cor.1:2006 Mauris sed neque Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. Vegetation-Cropland -4.1 0.89 47.59 51.22 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc dataset ISO19115 2003/Cor.1:2006 Ñunç elementum Hydrography-Oceanographic -6.17 -2.23 44.79 51.13 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image ISO19115 2003/Cor.1:2006 Lorem ipsum dolor sit amet 11 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_ListRecords_oai_dc.xml0000644000000000000000000000007413114323025025423 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_ListRecords_oai_dc.xml0000644000175000001440000002054113114323025026367 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.042 13.754 68.410 17.920 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text application/xhtml+xml Marine sediments Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service Ut facilisis justo ut lacus Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf 2006-05-12 Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e http://purl.org/dc/dcmitype/Image image/jp2 Vestibulum massa purus urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms FI-ES Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset Ñunç elementum Hydrography-Oceanographic 2005-10-24 44.792 -6.171 51.126 -2.228 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI 11 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_ListSets.xml0000644000000000000000000000007413114323025023442 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_ListSets.xml0000644000175000001440000000142313114323025024404 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh datasets Datasets interactiveResources Interactive Resources pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_bad_verb.xml0000644000000000000000000000007413114323025023434 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_bad_verb.xml0000644000175000001440000000105713114323025024401 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh Unknown verb 'foo' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_empty.xml0000644000000000000000000000007413114323025023026 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_empty.xml0000644000175000001440000000105213114323025023766 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh Missing 'verb' parameter pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_empty_with_amp.xml0000644000000000000000000000007413114323025024716 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_empty_with_amp.xml0000644000175000001440000000105213114323025025656 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh Missing 'verb' parameter pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_oaipmh_get_illegal_verb.xml0000644000000000000000000000007413114323025024317 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_oaipmh_get_illegal_verb.xml0000644000175000001440000000107113114323025025260 0ustar00kalxasusers00000000000000 PYCSW_TIMESTAMP http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh Unknown verb 'foo' pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_repofilter_post_GetRecordById-masked.xml0000644000000000000000000000007413114323025026664 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_repofilter_post_GetRecordById-masked.xml0000644000175000001440000000107413114323025027630 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_repofilter_post_GetRecords-all.xml0000644000000000000000000000007413114323025025603 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_repofilter_post_GetRecords-all.xml0000644000175000001440000000472713114323025026557 0ustar00kalxasusers00000000000000 urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms FI-ES Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset Ñunç elementum Hydrography-Oceanographic 2005-10-24 44.792 -6.171 51.126 -2.228 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_sru_get_explain.xml0000644000000000000000000000007413114323025022664 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_sru_get_explain.xml0000644000175000001440000001032613114323025023630 0ustar00kalxasusers00000000000000 1.1 XML http://explain.z3950.org/dtd/2.1/ PYCSW_HOST PYCSW_PORT pycsw pycsw Geospatial Catalogue pycsw is an OGC CSW server implementation written in Python abstract abstract contributor contributor creator creator date date format format identifier identifier language language modified modified publisher publisher relation relation rights rights source source subject subject title title type type title222 Simple Dublin Core 0 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_sru_get_search.xml0000644000000000000000000000007413114323025022471 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_sru_get_search.xml0000644000175000001440000000040213114323025023427 0ustar00kalxasusers00000000000000 1.1 5 pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_sru_get_search_cql.xml0000644000000000000000000000007413114323025023330 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_sru_get_search_cql.xml0000644000175000001440000000246413114323025024300 0ustar00kalxasusers00000000000000 1.1 2 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image -2 info:srw/schema/1/dc-v1.1 xml urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 Lorem ipsum dolor sit amet http://purl.org/dc/dcmitype/Image -1 info:srw/schema/1/dc-v1.1 xml pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_sru_get_search_maxrecords.xml0000644000000000000000000000007413114323025024720 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_sru_get_search_maxrecords.xml0000644000175000001440000000243213114323025025663 0ustar00kalxasusers00000000000000 1.1 5 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image 1 info:srw/schema/1/dc-v1.1 xml urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset 2 info:srw/schema/1/dc-v1.1 xml pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_sru_get_search_startrecord_maxrecords.xml0000644000000000000000000000007413114323025027334 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_sru_get_search_startrecord_maxrecords.xml0000644000175000001440000000243213114323025030277 0ustar00kalxasusers00000000000000 1.1 5 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Lorem ipsum http://purl.org/dc/dcmitype/Image 1 info:srw/schema/1/dc-v1.1 xml urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset 2 info:srw/schema/1/dc-v1.1 xml pycsw-2.0.3/tests/expected/PaxHeaders.23451/suites_utf-8_post_GetCapabilities.xml0000644000000000000000000000007413114323025024615 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/expected/suites_utf-8_post_GetCapabilities.xml0000644000175000001440000003003213114323025025555 0ustar00kalxasusers00000000000000 ErrŹĆÅÓdd pycsw is an OGC CSW server implementation written in Python catalogue discovery theme CSW 2.0.2 3.0.0 None None pycsw Kralidis, Tom Senior Systems Scientist +01-416-xxx-xxxx +01-416-xxx-xxxx TBA Toronto Ontario M9C 3Z9 Canada tomkralidis@gmail.com 0800h - 1600h EST During hours of service. Off on weekends. pointOfContact Filter_Capabilities OperationsMetadata ServiceIdentification ServiceProvider application/json application/xml http://www.w3.org/2001/XMLSchema http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/XML/Schema csw:Record DescribeRecord.outputFormat DescribeRecord.schemaLanguage DescribeRecord.typeName GetCapabilities.sections GetRecordById.ElementSetName GetRecordById.outputFormat GetRecordById.outputSchema GetRecords.CONSTRAINTLANGUAGE GetRecords.ElementSetName GetRecords.outputFormat GetRecords.outputSchema GetRecords.resultType GetRecords.typeNames CQL_TEXT FILTER brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom hits results validate csw:Record csw:AnyText dc:contributor dc:creator dc:date dc:format dc:identifier dc:language dc:publisher dc:relation dc:rights dc:source dc:subject dc:title dc:type dct:abstract dct:alternative dct:modified dct:spatial ows:BoundingBox brief full summary application/json application/xml http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://www.interlis.ch/INTERLIS2.3 http://www.opengis.net/cat/csw/2.0.2 http://www.opengis.net/cat/csw/csdgm http://www.w3.org/2005/Atom CSW 2.0.2 3.0.0 http://demo.pycsw.org/gisdata/csw 10 XML SOAP allowed gml:Point gml:LineString gml:Polygon gml:Envelope Between EqualTo GreaterThan GreaterThanEqualTo LessThan LessThanEqualTo Like NotEqualTo NullCheck length lower ltrim rtrim trim upper pycsw-2.0.3/tests/PaxHeaders.23451/gen_html.py0000644000000000000000000000007413114323025015724 xustar0030 atime=1496426329.725424132 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/gen_html.py0000644000175000001440000001362513114323025016675 0ustar00kalxasusers00000000000000#!/usr/bin/python # ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2015 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= import csv import os from six.moves.urllib.parse import quote JQUERY_VERSION = '1.9.0' print(''' pycsw Tester ''' % JQUERY_VERSION) print('''

pycsw Tester


HTTP POST

Request Response
Server:

HTTP GET

    ''') for root, dirs, files in os.walk('suites'): if files: for sfile in files: if sfile == 'requests.txt': # it's a list of GET requests with open('%s%s%s' % (root.replace(os.sep, '/'), '/', sfile)) as f: gets = csv.reader(f) for row in gets: baseurl, query_string = row[1].split('?') query = '%s?%s' % (baseurl.replace('PYCSW_SERVER', '../csw.py'), query_string.replace('&', '&')) print('
  • %s
  • ' % (query, row[0])) print('''

Valid HTML 5! Valid CSS!
''') pycsw-2.0.3/tests/PaxHeaders.23451/run_tests.py0000644000000000000000000000007413114323025016155 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/run_tests.py0000644000175000001440000005133013114323025017121 0ustar00kalxasusers00000000000000#!/usr/bin/python # ================================================================= # # Authors: Tom Kralidis # Ricardo Garcia Silva # # Copyright (c) 2016 Tom Kralidis # Copyright (c) 2016 Ricardo Garcia Silva # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= # simple testing framework inspired by MapServer msautotest import codecs import csv import filecmp import getopt import glob from io import BytesIO import json import os import re import sys import time from lxml import etree from lxml import objectify from pycsw.core.util import get_elapsed_time, http_request ENCODING = 'utf-8' def plural(num): """Determine plurality given an integer""" if num != 1: return 's' else: return '' def test_xml_result(result, expected, encoding=ENCODING): """Compare the XML test results with an expected value. This function compares the test result with the expected values by performing XML canonicalization (c14n)[1]_. Parameters ---------- result: bytes The result of running the test. expected: bytes The expected outcome. Returns ------- bool Whether the result matches the expectations or not. Raises ------ etree.XMLSyntaxError If any of the input parameters is not a valid XMl. etree.C14NError If any of the input parameters cannot be canonicalized. This may happen if there are relative namespace URIs in any of the XML documents, as they are explicitly not allowed when doing XML c14n References ---------- .. [1] http://www.w3.org/TR/xml-c14n """ try: result_element = etree.fromstring(result) expected_element = etree.fromstring(expected) result_buffer = BytesIO() result_tree = result_element.getroottree() objectify.deannotate(result_tree, cleanup_namespaces=True) result_tree.write_c14n(result_buffer) expected_buffer = BytesIO() expected_tree = expected_element.getroottree() objectify.deannotate(expected_tree, cleanup_namespaces=True) expected_tree.write_c14n(expected_buffer) matches = result_buffer.getvalue() == expected_buffer.getvalue() if not matches: print("result:") print(result_buffer.getvalue()) print("+++++++++++++++++++++++") print("expected:") print(expected_buffer.getvalue()) except etree.XMLSyntaxError: matches = None return matches def test_json_result(result, expected, encoding=ENCODING): """Compare the JSON test results with an expected value. Parameters ---------- result: bytes The result of running the test. expected: bytes The expected outcome. Returns ------- bool Whether the result matches the expectations or not. """ try: result_dict = json.loads(result.decode(encoding)) expected_dict = json.loads(expected.decode(encoding)) except ValueError: matches = None else: matches = result_dict == expected_dict return matches def get_validity(expected_path, result, output_file_name, force_id_mask=False): """Test whether the test result matches the expected outcome. This function deals with both XML and JSON results. It first tries to parse the result and the expected outcome as XML and evaluates them using XML canonicalization (c14n). If the result cannot be parsed as XML, it then tries to load it as JSON and does a sorted comparison. Parameters ---------- expected_path: bytes The path to the file that has the expected test outcome result: bytes The actual result that was generated by running the test code output_file_name: str Name of the file that will be written to disk with the contents of the result force_id_mask: bool, optional Whether to apply result normalization to id fields Returns ------- int One of three possible values: * If the input `expected_path` could not be found, the results will be used to generate a new expected file. In this case the return value will be 0; * If the result matches the expected outcome, the return value is 1; * If the result does not match the expected outcome the return value is -1. """ normalized_result = normalize(result, force_id_mask=force_id_mask) if not os.path.exists(expected_path): # create expected file with open(expected_path, 'wb') as f: f.write(normalized_result) status = 0 else: # compare result with expected with open(expected_path, 'rb') as expected_fh: expected = expected_fh.read() matches_expected = test_xml_result(normalized_result, expected) if matches_expected is None: # the file is either not XML (perhaps JSON?) or malformed matches_expected = test_json_result( normalized_result, expected, encoding=ENCODING) if matches_expected: # pass status = 1 else: # failed status = -1 if not os.path.exists('results'): os.mkdir('results') with open('results%s%s' % (os.sep, output_file_name), 'wb') as f: f.write(normalized_result) return status def pedantic_get_validity(sexpected, sresult, soutfile, force_id_mask=False): """Decipher whether the output passes, fails, or initializes""" if not os.path.exists(sexpected): # create expected file with open(sexpected, 'wb') as f: f.write(normalize(sresult, force_id_mask)) sstatus = 0 else: # compare result with expected if not os.path.exists('results'): os.mkdir('results') with open('results%s%s' % (os.sep, soutfile), 'wb') as f: f.write(normalize(sresult, force_id_mask)) if filecmp.cmp(sexpected, 'results%s%s' % (os.sep, soutfile)): # pass os.remove('results%s%s' % (os.sep, soutfile)) sstatus = 1 else: # fail import difflib with open(sexpected, 'rb') as a: with open('results%s%s' % (os.sep, soutfile), 'rb') as b: a2 = a.readlines() b2 = b.readlines() diff = difflib.unified_diff(a2, b2) print('\n'.join(list(diff))) if len(a2) != len(b2): print('LINE COUNT: expected: %d, result: %d' % (len(a2), len(b2))) sstatus = -1 return sstatus def normalize(sresult, force_id_mask=False): """Replace time, updateSequence and version specific values with generic values""" # XML responses version = re.search(b'', sresult) updatesequence = re.search(b'updateSequence="(\S+)"', sresult) timestamp = re.search(b'timestamp="(.*)"', sresult) timestamp2 = re.search(b'timeStamp="(.*)"', sresult) timestamp3 = re.search(b'(.*)', sresult) timestamp4 = re.search(b'(.*)', sresult) zrhost = re.search(b'(.*)', sresult) zrport = re.search(b'(.*)', sresult) elapsed_time = re.search(b'elapsedTime="(.*)"', sresult) expires = re.search(b'expires="(.*?)"', sresult) atom_updated = re.findall(b'(.*)', sresult) if version: sresult = sresult.replace(version.group(0), b'') if updatesequence: sresult = sresult.replace(updatesequence.group(0), b'updateSequence="PYCSW_UPDATESEQUENCE"') if timestamp: sresult = sresult.replace(timestamp.group(0), b'timestamp="PYCSW_TIMESTAMP"') if timestamp2: sresult = sresult.replace(timestamp2.group(0), b'timeStamp="PYCSW_TIMESTAMP"') if timestamp3: sresult = sresult.replace(timestamp3.group(0), b'PYCSW_TIMESTAMP') if timestamp4: sresult = sresult.replace(timestamp4.group(0), b'PYCSW_TIMESTAMP') if zrport: sresult = sresult.replace(zrport.group(0), b'PYCSW_PORT') if zrhost: sresult = sresult.replace(zrhost.group(0), b'PYCSW_HOST') if elapsed_time: sresult = sresult.replace(elapsed_time.group(0), b'elapsedTime="PYCSW_ELAPSED_TIME"') if expires: sresult = sresult.replace(expires.group(0), b'expires="PYCSW_EXPIRES"') for au in atom_updated: sresult = sresult.replace(au, b'PYCSW_TIMESTAMP') # for csw:HarvestResponse documents, mask identifiers # which are dynamically generated for OWS endpoints if sresult.find(b'HarvestResponse') != -1: identifier = re.findall(b'(\S+)', sresult) for i in identifier: sresult = sresult.replace(i, b'PYCSW_IDENTIFIER') # JSON responses timestamp = re.search(b'"@timestamp": "(.*?)"', sresult) if timestamp: sresult = sresult.replace(timestamp.group(0), b'"@timestamp": "PYCSW_TIMESTAMP"') # harvesting-based GetRecords/GetRecordById responses if force_id_mask: dcid = re.findall(b'(urn:uuid.*)', sresult) isoid = re.findall(b'id="(urn:uuid.*)"', sresult) isoid2 = re.findall(b'(urn:uuid.*) [-l logfile] [-s suite1[,suite2]] Available options: -u URL to test -l log results to file -s testsuites to run (comma-seperated list) -p run tests in pedantic mode (byte level diff check) (default: c14n mode) -d database (SQLite3 [default], PostgreSQL, MySQL) -r run tests which harvest remote resources (default off) -t time (milliseconds) in which requests should complete EXAMPLES 1.) default test example run_tests.py -u http://localhost:8000/ 2.) log results to logfile run_tests.py -u http://localhost:8000/ -l /path/to/results.log 3.) run only specified testsuites run_tests.py -u http://localhost:8000/ -s default,apiso 4.) run tests including remote harvest tests run_tests.py -u http://localhost:8000/ -s default,apiso -r 5.) default test example with 1000ms time benchmark run_tests.py -u http://localhost:8000/ -t 1000 ''' # main if len(sys.argv) < 2: print(usage()) sys.exit(1) URL = sys.argv[1] URL = None LOGFILE = None TESTSUITES = [] PASSED = 0 FAILED = 0 WARNING = 0 INITED = 0 LOGWRITER = None DATABASE = 'SQLite3' REMOTE = False PEDANTIC = False TIME = None try: OPTS, ARGS = getopt.getopt(sys.argv[1:], 'u:l:s:d:t:rhp') except getopt.GetoptError as err: print('\nERROR: %s' % err) print(usage()) sys.exit(2) for o, a in OPTS: if o == '-u': URL = a if o == '-l': LOGFILE = a if o == '-d': DATABASE = a if o == '-t': TIME = int(a) if o == '-r': REMOTE = True if o == '-p': PEDANTIC = True if o == '-s': TESTSUITES = a.split(',') if o == '-h': # dump help and exit print(usage()) sys.exit(3) print('\nRunning tests against %s' % URL) if LOGFILE is not None: # write detailed output to CSV LOGWRITER = csv.writer(open(LOGFILE, 'wb')) LOGWRITER.writerow(['url', 'configuration', 'testname', 'result']) if TIME is not None: # perform benchmarking print('Benchmark: %dms' % TIME) if TESTSUITES: if 'harvesting' in TESTSUITES: REMOTE = True TESTSUITES_LIST = ['suites%s%s' % (os.sep, x) for x in TESTSUITES] else: TESTSUITES_LIST = glob.glob('suites%s*' % os.sep) for testsuite in TESTSUITES_LIST: if not os.path.exists(testsuite): raise RuntimeError('Testsuite %s not found' % testsuite) if testsuite == 'suites%sharvesting' % os.sep and not REMOTE: continue force_id_mask = False if testsuite in ['suites%smanager' % os.sep, 'suites%sharvesting' % os.sep]: force_id_mask = True # get configuration for cfg in glob.glob('%s%s*.cfg' % (testsuite, os.sep)): print('\nTesting configuration %s' % cfg) for root, dirs, files in os.walk(testsuite): if files: for sfile in sorted(files): if os.path.splitext(sfile)[1] not in ['.xml', '.txt']: break if os.path.basename(root) == "exports": continue if sfile == 'requests.txt': # GET requests filename = '%s%s%s' % (root, os.sep, sfile) with open(filename) as f: gets = csv.reader(f) for row in gets: testfile = '%s%s%s' % (root, os.sep, sfile) request = ','.join(row[1:]).replace('PYCSW_SERVER', URL) outfile = '%s%s' % (root.replace(os.sep, '_'), '_%s.xml' % row[0]) expected = 'expected%s%s' % (os.sep, outfile) print('\n test %s:%s' % (testfile, row[0])) try: begin = time.time() result = http_request('GET', request) end = time.time() elapsed = get_elapsed_time(begin, end) print(' completed in %dms' % elapsed) except Exception as err: result = err.read() if PEDANTIC: status = pedantic_get_validity( expected, result, outfile, force_id_mask ) else: try: status = get_validity(expected, result, outfile, force_id_mask) except etree.C14NError: print("Could not canonicalize {0}. " "Using pedantic " "mode".format(row[0])) status = pedantic_get_validity( expected, result, outfile, force_id_mask ) if status == 1: print(' passed') PASSED += 1 elif status == 0: print(' initialized') INITED += 1 elif status == -1 and DATABASE == 'PostgreSQL': print(' warning: possible collation issue') WARNING += 1 else: print(' FAILED') FAILED += 1 if TIME and get_elapsed_time(begin, end) > TIME: print(' FAILED BENCHMARK') if LOGWRITER is not None: LOGWRITER.writerow([URL, cfg, testfile, status]) else: # POST requests testfile = '%s%s%s' % (root, os.sep, sfile) if '%sdata' % os.sep in testfile: # sample data break outfile = '%s%s' % (os.sep, testfile.replace(os.sep, '_')) expected = 'expected%s%s' % (os.sep, outfile) print('\n test %s' % testfile) # read test with open(testfile, 'rb') as fh: request = fh.read() configkvp = 'config=tests%s%s' % (os.sep, cfg) url2 = '%s?%s' % (URL, configkvp) # invoke request try: begin = time.time() result = http_request('POST', url2, request) end = time.time() elapsed = get_elapsed_time(begin, end) print(' completed in %dms' % elapsed) except Exception as err: result = err.read() if PEDANTIC: status = pedantic_get_validity( expected, result, outfile, force_id_mask) else: try: status = get_validity(expected, result, outfile, force_id_mask) except etree.C14NError: print("Could not canonicalize {0}. Using " "pedantic mode".format(sfile)) status = pedantic_get_validity( expected, result, outfile, force_id_mask) if status == 1: print(' passed') PASSED += 1 elif status == 0: print(' initialized') INITED += 1 elif status == -1 and DATABASE == 'PostgreSQL': print(' warning: possible sorting collation issue') WARNING += 1 else: print(' FAILED') FAILED += 1 if TIME and get_elapsed_time(begin, end) > TIME: print(' FAILED BENCHMARK') if LOGWRITER is not None: LOGWRITER.writerow([URL, cfg, testfile, status]) if LOGWRITER is not None: LOGWRITER.close() print('\nResults (%d/%d - %.2f%%)' % (PASSED, PASSED + FAILED, float(PASSED) / float(PASSED + FAILED) * 100)) print(' %d test%s passed' % (PASSED, plural(PASSED))) print(' %d test%s warnings' % (WARNING, plural(WARNING))) print(' %d test%s failed' % (FAILED, plural(FAILED))) print(' %d test%s initialized' % (INITED, plural(INITED))) sys.exit(FAILED) pycsw-2.0.3/tests/PaxHeaders.23451/suites0000644000000000000000000000007413114323025015014 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/0000755000175000001440000000000013114323025016033 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/PaxHeaders.23451/apiso-inspire0000644000000000000000000000007413114323025017576 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso-inspire/0000755000175000001440000000000013114323025020615 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/apiso-inspire/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025021760 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso-inspire/default.cfg0000644000175000001440000000563313114323025022731 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/apiso-inspire/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true profiles=apiso [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=true languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/apiso-inspire/PaxHeaders.23451/get0000644000000000000000000000007413114323025020355 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso-inspire/get/0000755000175000001440000000000013114323025021374 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/apiso-inspire/get/PaxHeaders.23451/requests.txt0000644000000000000000000000007413114323025023046 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso-inspire/get/requests.txt0000644000175000001440000000041013114323025024003 0ustar00kalxasusers00000000000000GetCapabilities,PYCSW_SERVER?config=tests/suites/apiso-inspire/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities GetCapabilities-lang,PYCSW_SERVER?config=tests/suites/apiso-inspire/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities&lang=gre pycsw-2.0.3/tests/suites/PaxHeaders.23451/apiso0000644000000000000000000000007413114323025016127 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/0000755000175000001440000000000013114323025017146 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/apiso/PaxHeaders.23451/data0000644000000000000000000000007413114323025017040 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/0000755000175000001440000000000013114323025020057 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/3e9a8c05.xml0000644000000000000000000000007413114323025021000 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/3e9a8c05.xml0000644000175000001440000002023013114323025021737 0ustar00kalxasusers00000000000000 3e9a8c05 eng service NTUA tzotsos@gmail.com pointOfContact 2011-04-18 ISO19115 2003/Cor.1:2006 test Title 2011-04-19 creation http://aiolos.survey.ntua.gr ogc test Abstract NTUA tzotsos@gmail.com owner Geographic viewer (humanGeographicViewer) administration GEMET Themes, version 2.3 2011-04-18 publication Conditions unknown no limitation 19.37 29.61 34.80 41.75 2011-04-18 2011-04-20 view http://aiolos.survey.ntua.gr/geoserver/wms service Conformity_001 INSPIRE Corrigendum to INSPIRE Metadata Regulation published in the Official Journal of the European Union, L 328, page 83 2009-12-15 publication See the referenced specification true pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/README.txt0000644000000000000000000000007413114323025020613 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/README.txt0000644000175000001440000000045613114323025021562 0ustar00kalxasusers00000000000000APISO Data ========== This directory provides data used to check conformance against pycsw APISO support. - pacioos-NS06agg.xml: http://oos.soest.hawaii.edu/pacioos/metadata/NS06agg.html - all other *.xml files are from the Greek National Mapping Agency (metadata submitted to the INSPIRE geoportal) pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_aerfo_RAS_1991_GR800P001800000012.xml0000644000000000000000000000007413114323025024462 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml0000644000175000001440000002044713114323025025433 0ustar00kalxasusers00000000000000 366f6257-19eb-4f20-ba78-0698ac4aae77 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation 366f6257-19eb-4f20-ba78-0698ac4aae77 T_aerfo_RAS_1991_GR800P001800000012.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_aerfo_RAS_1991_GR800P001800000013.xml0000644000000000000000000000007413114323025024463 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml0000644000175000001440000002044713114323025025434 0ustar00kalxasusers00000000000000 75a7eb5e-336e-453d-ab06-209b1070d396 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation 75a7eb5e-336e-453d-ab06-209b1070d396 T_aerfo_RAS_1991_GR800P001800000013.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_aerfo_RAS_1991_GR800P001800000014.xml0000644000000000000000000000007413114323025024464 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml0000644000175000001440000002044713114323025025435 0ustar00kalxasusers00000000000000 a7308c0a-b748-48e2-bab7-0a608a51d416 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation a7308c0a-b748-48e2-bab7-0a608a51d416 T_aerfo_RAS_1991_GR800P001800000014.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_aerfo_RAS_1991_GR800P001800000015.xml0000644000000000000000000000007413114323025024465 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml0000644000175000001440000002044713114323025025436 0ustar00kalxasusers00000000000000 0173e0d7-6ea9-4407-b846-f29d6bfa9903 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation 0173e0d7-6ea9-4407-b846-f29d6bfa9903 T_aerfo_RAS_1991_GR800P001800000015.tif Aerial Photos YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0024.0038.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_ortho_RAS_1998_284404.xml0000644000000000000000000000007413114323025023301 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_ortho_RAS_1998_284404.xml0000644000175000001440000001664513114323025024257 0ustar00kalxasusers00000000000000 de53e931-778a-4792-94ad-9fe507aca483 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-07 ISO19115 2003/Cor.1:2006 Ortho 2000-01-01publication de53e931-778a-4792-94ad-9fe507aca483 T_ortho_RAS_1998_284404.tif Ortho YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations 5000 eng geoscientificInformation 21.47878421.52731739.7600139.790341 1997-01-011999-01-01 http://www.ypaat.gr dataset test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_ortho_RAS_1998_288395.xml0000644000000000000000000000007413114323025023316 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_ortho_RAS_1998_288395.xml0000644000175000001440000001664613114323025024275 0ustar00kalxasusers00000000000000 4a5109d7-9ce5-4197-a423-b5fa8c426dee eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-07 ISO19115 2003/Cor.1:2006 Ortho 2000-01-01publication 4a5109d7-9ce5-4197-a423-b5fa8c426dee T_ortho_RAS_1998_288395.tif Ortho YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations 5000 eng geoscientificInformation 21.52833321.57683439.67999939.710309 1997-01-011999-01-01 http://www.ypaat.gr dataset test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_ortho_RAS_1998_288398.xml0000644000000000000000000000007413114323025023321 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_ortho_RAS_1998_288398.xml0000644000175000001440000001664613114323025024300 0ustar00kalxasusers00000000000000 5f37e0f8-4fb1-4637-b959-b415058bdb68 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-07 ISO19115 2003/Cor.1:2006 Ortho 2000-01-01publication 5f37e0f8-4fb1-4637-b959-b415058bdb68 T_ortho_RAS_1998_288398.tif Ortho YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations 5000 eng geoscientificInformation 21.52736921.57588839.70700439.737315 1997-01-011999-01-01 http://www.ypaat.gr dataset test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_ortho_RAS_1998_288401.xml0000644000000000000000000000007413114323025023302 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_ortho_RAS_1998_288401.xml0000644000175000001440000001664613114323025024261 0ustar00kalxasusers00000000000000 f99cc358-f379-4e79-ab1e-cb2f7709f594 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-07 ISO19115 2003/Cor.1:2006 Ortho 2000-01-01publication f99cc358-f379-4e79-ab1e-cb2f7709f594 T_ortho_RAS_1998_288401.tif Ortho YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations 5000 eng geoscientificInformation 21.52640421.57494139.73400939.764321 1997-01-011999-01-01 http://www.ypaat.gr dataset test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_ortho_RAS_1998_288404.xml0000644000000000000000000000007413114323025023305 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_ortho_RAS_1998_288404.xml0000644000175000001440000001664613114323025024264 0ustar00kalxasusers00000000000000 ae200a05-2800-40b8-b85d-8f8d007b9e30 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-07 ISO19115 2003/Cor.1:2006 Ortho 2000-01-01publication ae200a05-2800-40b8-b85d-8f8d007b9e30 T_ortho_RAS_1998_288404.tif Ortho YPAATypaat@ypaat.growner OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations 5000 eng geoscientificInformation 21.52543721.57399239.76101539.791327 1997-01-011999-01-01 http://www.ypaat.gr dataset test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_pmoed_DTM_1996_276395.xml0000644000000000000000000000007413114323025023261 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_pmoed_DTM_1996_276395.xml0000644000175000001440000001657213114323025024236 0ustar00kalxasusers00000000000000 a2744b0c-becd-426a-95a8-46e9850ccc6d eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-07 ISO19115 2003/Cor.1:2006 DTM 2009-10-07creation a2744b0c-becd-426a-95a8-46e9850ccc6d T_pmoed_DTM_1996_276395.tif DTM YPAATypaat@ypaat.growner ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations 5000 eng elevation 19.0030.0034.0042.00 2009-10-072009-10-07 http://www.ypaat.gr dataset test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_pmoed_DTM_1996_276398.xml0000644000000000000000000000007413114323025023264 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_pmoed_DTM_1996_276398.xml0000644000175000001440000001657213114323025024241 0ustar00kalxasusers00000000000000 0dc824a6-b555-46c1-bd7b-bc66cb91a70f eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-07 ISO19115 2003/Cor.1:2006 DTM 2009-10-07creation 0dc824a6-b555-46c1-bd7b-bc66cb91a70f T_pmoed_DTM_1996_276398.tif DTM YPAATypaat@ypaat.growner ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations 5000 eng elevation 19.0030.0034.0042.00 2009-10-072009-10-07 http://www.ypaat.gr dataset test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_pmoed_DTM_1996_276401.xml0000644000000000000000000000007413114323025023245 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_pmoed_DTM_1996_276401.xml0000644000175000001440000001657213114323025024222 0ustar00kalxasusers00000000000000 42c8e55a-2bf6-476d-a7c9-be3bcd697f13 eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-07 ISO19115 2003/Cor.1:2006 DTM 2009-10-07creation 42c8e55a-2bf6-476d-a7c9-be3bcd697f13 T_pmoed_DTM_1996_276401.tif DTM YPAATypaat@ypaat.growner ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations 5000 eng elevation 19.0030.0034.0042.00 2009-10-072009-10-07 http://www.ypaat.gr dataset test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_pmoed_DTM_1996_276404.xml0000644000000000000000000000007413114323025023250 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_pmoed_DTM_1996_276404.xml0000644000175000001440000001657213114323025024225 0ustar00kalxasusers00000000000000 c3bf29d4-d60a-4959-a415-2c03fb0d4aef eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-07 ISO19115 2003/Cor.1:2006 DTM 2009-10-07creation c3bf29d4-d60a-4959-a415-2c03fb0d4aef T_pmoed_DTM_1996_276404.tif DTM YPAATypaat@ypaat.growner ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations 5000 eng elevation 19.0030.0034.0042.00 2009-10-072009-10-07 http://www.ypaat.gr dataset test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/T_pmoed_DTM_1996_280395.xml0000644000000000000000000000007413114323025023254 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/T_pmoed_DTM_1996_280395.xml0000644000175000001440000001657213114323025024231 0ustar00kalxasusers00000000000000 b8cc2388-5d0a-43d8-9473-0e86dd0396da eng dataset YPAATypaat@ypaat.grpointOfContact 2009-10-07 ISO19115 2003/Cor.1:2006 DTM 2009-10-07creation b8cc2388-5d0a-43d8-9473-0e86dd0396da T_pmoed_DTM_1996_280395.tif DTM YPAATypaat@ypaat.growner ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations 5000 eng elevation 19.0030.0034.0042.00 2009-10-072009-10-07 http://www.ypaat.gr dataset test pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/pacioos-NS06agg.xml0000644000000000000000000000007413114323025022437 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/pacioos-NS06agg.xml0000644000175000001440000017514313114323025023414 0ustar00kalxasusers00000000000000 NS06agg eng UTF8 dataset service Margaret McManus University of Hawaii mamc@hawaii.edu http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html http web browser information pointOfContact 2014-04-16 ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data ISO 19115-2:2009(E) 3 column 1 0.0 row 1 0.0 temporal 482760 252.0 area PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia 2011-04-12 creation 2011-04-19 issued 2014-03-18 revision org.pacioos NS06agg Margaret McManus University of Hawaii mamc@hawaii.edu http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html http web browser information originator Jim Potemra distributor Data produced by Dr. Margaret McManus (mamc@hawaii.edu). Point of contact: Gordon Walker (gwalker@hawaii.edu). The nearshore sensors are part of the Pacific Islands Ocean Observing System (PacIOOS) and are designed to measure a variety of ocean parameters at fixed point locations. NS06 is located at the dock in Pohnpei lagoon and is mounted to the bottom in about 1 meter of water. The instrument is a Sea-Bird Electronics model 16+ V2 coupled with a WET Labs ECO-FLNTUS combination sensor. PacIOOS provides timely, reliable, and accurate ocean information to support a safe, clean, productive ocean and resilient coastal zone in the U.S. Pacific Islands region. The Pacific Islands Ocean Observing System (PacIOOS) is funded through the National Oceanic and Atmospheric Administration (NOAA) as a Regional Association within the U.S. Integrated Ocean Observing System (IOOS). PacIOOS is coordinated by the University of Hawaii School of Ocean and Earth Science and Technology (SOEST). Margaret McManus University of Hawaii mamc@hawaii.edu http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html http web browser information pointOfContact http://pacioos.org/metadata/browse/NS06agg.png Sample image. Oceans > Ocean Chemistry > Chlorophyll Oceans > Ocean Optics > Turbidity Oceans > Ocean Temperature > Water Temperature Oceans > Salinity/Density > Conductivity Oceans > Salinity/Density > Salinity Oceans > Water Quality theme GCMD Science Keywords Ocean &gt; Pacific Ocean &gt; Western Pacific Ocean &gt; Micronesia &gt; Federated States of Micronesia Ocean &gt; Pacific Ocean &gt; United States of America &gt; Territories Federated States of Micronesia &gt; Pohnpei &gt; Pohnpei Lagoon place GCMD Location Keywords Pacific Islands Ocean Observing System (PacIOOS) project GCMD Project Keywords Pacific Islands Ocean Observing System (PacIOOS) dataCenter GCMD Data Center Keywords sea_water_temperature sea_water_electrical_conductivity sea_water_turbidity mass_concentration_of_chlorophyll_in_sea_water sea_water_salinity depth latitude longitude time theme CF-1.4 The data may be used and redistributed for free but is not intended for legal use, since it may contain inaccuracies. Neither the data Contributor, University of Hawaii, PacIOOS, NOAA, State of Hawaii nor the United States Government, nor any of their employees or contractors, makes any warranty, express or implied, including warranties of merchantability and fitness for a particular purpose, or assumes any legal liability for the accuracy, completeness, or usefulness, of this information. Pacific Islands Ocean Observing System (PacIOOS) largerWorkCitation project Unidata Common Data Model Point largerWorkCitation project eng climatologyMeteorologyAtmosphere 1 158.22402954101562 158.22402954101562 6.955227375030518 6.955227375030518 seconds 2010-05-07T00:00:00Z 2014-03-17T23:56:00Z -1.0 -1.0 PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia 2011-04-12 creation 2011-04-19 issued 2014-03-18 revision Margaret McManus University of Hawaii mamc@hawaii.edu http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html http web browser information originator Jim Potemra distributor The nearshore sensors are part of the Pacific Islands Ocean Observing System (PacIOOS) and are designed to measure a variety of ocean parameters at fixed point locations. NS06 is located at the dock in Pohnpei lagoon and is mounted to the bottom in about 1 meter of water. The instrument is a Sea-Bird Electronics model 16+ V2 coupled with a WET Labs ECO-FLNTUS combination sensor. THREDDS OPeNDAP 1 158.22402954101562 158.22402954101562 6.955227375030518 6.955227375030518 2010-05-07T00:00:00Z 2014-03-17T23:56:00Z -1.0 -1.0 tight OPeNDAP Client Access http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg OPeNDAP THREDDS OPeNDAP download temp float Temperature (sea_water_temperature) cond float Conductivity (sea_water_electrical_conductivity) turb float Turbidity (sea_water_turbidity) flor float Chlorophyll (mass_concentration_of_chlorophyll_in_sea_water) salt float Salinity (sea_water_salinity) z float depth below mean sea level (depth) lat float Latitude (latitude) lon float Longitude (longitude) time float Time (time) Pacific Islands Ocean Observing System (PacIOOS) jimp@hawaii.edu http://pacioos.org http web browser URL for the data publisher This URL provides contact information for the publisher of this dataset information publisher OPeNDAP http://oos.soest.hawaii.edu/thredds/idd/nss_pacioos.html?dataset=NS06agg THREDDS Catalog This URL provides a catalog page for this dataset within THREDDS Data Server (TDS). download http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg.html File Information This URL provides a standard OPeNDAP html interface for selecting data from this dataset. Change the extension to .info for a description of the dataset. download http://pacioos.org/voyager/index.html?b=6.874279%2C158.077126%2C7.050468%2C158.369808&tz=pont&o=qual:2::p0NS06p1 PacIOOS Voyager (Google Maps API) This URL provides a viewer for this dataset. download http://oos.soest.hawaii.edu/dchart/index.html?dsetid=54cd0688ada08d86748b9c5762509f DChart This URL provides a viewer for this dataset. download http://oos.soest.hawaii.edu/erddap/tabledap/nss06_agg.graph?time%2Ctemperature&.draw=lines ERDDAP This URL provides a viewer for this dataset. download http://pacioos.org/focus/waterquality/wq_fsm.php PacIOOS Water Quality Platforms: FSM This URL provides a viewer for this dataset. download dataset UH/SOEST (M. McManus), PacIOOS asset (05/2010) This record was translated from NcML using UnidataDD2MI.xsl Version 2.3 pycsw-2.0.3/tests/suites/apiso/data/PaxHeaders.23451/test.xml0000644000000000000000000000007413114323025020616 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/data/test.xml0000644000175000001440000002302713114323025021564 0ustar00kalxasusers00000000000000 437ae0a2-06e2-4015-b296-a66e7f407bf2 eng dataset YPAATypaat@ypaat.grpointOfContact NTUAtzotsos@gmail.compointOfContact 2009-10-09 ISO19115 2003/Cor.1:2006 Aerial Photos 2009-10-09creation 437ae0a2-06e2-4015-b296-a66e7f407bf2 T_aerfo_RAS_1991_GR800P001800000011.tif Aerial Photos YPAATypaat@ypaat.growner NTUAtzotsos@hotmail.comuser OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication no conditions apply otherRestrictionsno limitations eng geoscientificInformation 20.0038.0024.0040.00 2009-10-092009-10-09 http://www.ypaat.gr dataset Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue test pycsw-2.0.3/tests/suites/apiso/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025020311 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/default.cfg0000644000175000001440000000562513114323025021263 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/apiso/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true profiles=apiso [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/apiso/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/apiso/PaxHeaders.23451/post0000644000000000000000000000007413114323025017114 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/0000755000175000001440000000000013114323025020133 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/DescribeRecord.xml0000644000000000000000000000007413114323025022572 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/DescribeRecord.xml0000644000175000001440000000102213114323025023527 0ustar00kalxasusers00000000000000 gmd:MD_Metadata pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetCapabilities.xml0000644000000000000000000000007413114323025022744 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetCapabilities.xml0000644000175000001440000000103413114323025023704 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetDomain-property.xml0000644000000000000000000000007413114323025023444 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetDomain-property.xml0000644000175000001440000000066513114323025024415 0ustar00kalxasusers00000000000000 apiso:TopicCategory pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecordById-brief.xml0000644000000000000000000000007413114323025023426 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecordById-brief.xml0000644000175000001440000000074613114323025024377 0ustar00kalxasusers00000000000000 de53e931-778a-4792-94ad-9fe507aca483 brief pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecordById-full-dc.xml0000644000000000000000000000007413114323025023665 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecordById-full-dc.xml0000644000175000001440000000057113114323025024632 0ustar00kalxasusers00000000000000 NS06agg full pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecordById-full.xml0000644000000000000000000000007413114323025023301 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecordById-full.xml0000644000175000001440000000074513114323025024251 0ustar00kalxasusers00000000000000 de53e931-778a-4792-94ad-9fe507aca483 full pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecordById-srv-brief.xml0000644000000000000000000000007413114323025024236 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecordById-srv-brief.xml0000644000175000001440000000071213114323025025200 0ustar00kalxasusers00000000000000 3e9a8c05 brief pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecords-all-csw-output.xml0000644000000000000000000000007413114323025024652 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecords-all-csw-output.xml0000644000175000001440000000115613114323025025617 0ustar00kalxasusers00000000000000 full pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecords-all.xml0000644000000000000000000000007413114323025022522 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecords-all.xml0000644000175000001440000000115613114323025023467 0ustar00kalxasusers00000000000000 full pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecords-cql-title.xml0000644000000000000000000000007413114323025023650 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecords-cql-title.xml0000644000175000001440000000151113114323025024610 0ustar00kalxasusers00000000000000 brief apiso:TopicCategory like '%elevation%' pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecords-elementname.xml0000644000000000000000000000007413114323025024244 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecords-elementname.xml0000644000175000001440000000137113114323025025210 0ustar00kalxasusers00000000000000 apiso:Title pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecords-filter-and-nested-spatial-or-datelin0000644000000000000000000000007413114323025030147 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecords-filter-and-nested-spatial-or-dateline.xml0000644000175000001440000000331613114323025032060 0ustar00kalxasusers00000000000000 full csw:AnyText *pacioos* ows:BoundingBox 5.0721 17.8247 31.7842 180 ows:BoundingBox 15.0721 -180 31.7842 -151.2378 dc:title ASC pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecords-filter-anytext.xml0000644000000000000000000000007413114323025024731 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecords-filter-anytext.xml0000644000175000001440000000212413114323025025672 0ustar00kalxasusers00000000000000 brief apiso:AnyText Aerial% pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecords-filter-bbox-csw-output.xml0000644000000000000000000000007413114323025026317 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecords-filter-bbox-csw-output.xml0000644000175000001440000000213613114323025027263 0ustar00kalxasusers00000000000000 brief apiso:BoundingBox 35 18 42 28 pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecords-filter-bbox.xml0000644000000000000000000000007413114323025024167 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecords-filter-bbox.xml0000644000175000001440000000213113114323025025126 0ustar00kalxasusers00000000000000 brief apiso:BoundingBox 35 18 42 28 pycsw-2.0.3/tests/suites/apiso/post/PaxHeaders.23451/GetRecords-filter-servicetype.xml0000644000000000000000000000007413114323025025577 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/apiso/post/GetRecords-filter-servicetype.xml0000644000175000001440000000216613114323025026546 0ustar00kalxasusers00000000000000 brief apiso:ServiceType view pycsw-2.0.3/tests/suites/PaxHeaders.23451/atom0000644000000000000000000000007413114323025015754 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/atom/0000755000175000001440000000000013114323025016773 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/atom/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025020136 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/atom/default.cfg0000644000175000001440000000560413114323025021105 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2012 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/atom/PaxHeaders.23451/get0000644000000000000000000000007413114323025016533 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/atom/get/0000755000175000001440000000000013114323025017552 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/atom/get/PaxHeaders.23451/requests.txt0000644000000000000000000000007413114323025021224 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/atom/get/requests.txt0000644000175000001440000000473113114323025022173 0ustar00kalxasusers00000000000000opensearch,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&resulttype=results&elementsetname=brief opensearch-description,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetCapabilities opensearch-ogc-q,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=greece opensearch-ogc-bbox,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&bbox=-180,-90,180,90" opensearch-ogc-time,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2004 opensearch-ogc-timestart,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2004/ opensearch-ogc-timeend,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=/2004 opensearch-ogc-q-and-time,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2007&q=vitae opensearch-ogc-bbox-and-time,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2007&bbox=-180,-90,180,90" opensearch-ogc-q-and-bbox,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&bbox=-180,-90,180,90" opensearch-ogc-count-and-page1,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&startposition=1" opensearch-ogc-count-and-page2,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&startposition=1&maxrecords=1" pycsw-2.0.3/tests/suites/atom/PaxHeaders.23451/post0000644000000000000000000000007413114323025016741 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/atom/post/0000755000175000001440000000000013114323025017760 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/atom/post/PaxHeaders.23451/DescribeRecord.xml0000644000000000000000000000007413114323025022417 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/atom/post/DescribeRecord.xml0000644000175000001440000000101113114323025023352 0ustar00kalxasusers00000000000000 atom:entry pycsw-2.0.3/tests/suites/atom/post/PaxHeaders.23451/GetCapabilities.xml0000644000000000000000000000007413114323025022571 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/atom/post/GetCapabilities.xml0000644000175000001440000000103413114323025023531 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/suites/atom/post/PaxHeaders.23451/GetRecords-filter-bbox.xml0000644000000000000000000000007413114323025024014 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/atom/post/GetRecords-filter-bbox.xml0000644000175000001440000000202113114323025024751 0ustar00kalxasusers00000000000000 brief ows:BoundingBox 47 -5 55 20 pycsw-2.0.3/tests/suites/PaxHeaders.23451/cite0000644000000000000000000000007413114323025015740 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/0000755000175000001440000000000013114323025016757 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/cite/PaxHeaders.23451/data0000644000000000000000000000007413114323025016651 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/data/0000755000175000001440000000000013114323025017670 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/README.txt0000644000000000000000000000007413114323025020424 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/README.txt0000644000175000001440000000611713114323025021373 0ustar00kalxasusers00000000000000CITE Data ========= This directory provides data used to check conformance against the Open Geospatial Consortium Compliance and Interoperability Testing Initiative (CITE). * http://cite.opengeospatial.org/teamengine/ The CITE team engine does not offer a specific license for re-distribution, as such it falls under the general guidance provided by the OGC legal page (http://www.opengeospatial.org/legal/) and the following license: * http://www.opengeospatial.org/ogc/software DATA LICENSE ------------ The data directory includes information provided by the Open Geospatial Consortium:: Copyright © 2012 Open Geospatial Consortium, Inc. All Rights Reserved. http://www.opengeospatial.org/ogc/legal The test data is available directly from the following link: * http://cite.opengeospatial.org/teamengine/about/csw/2.0.2/web/ This content has been format shifted from CSW record format into a text based "property file" for release testing. Software Notice --------------- This OGC work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions: Permission to use, copy, and modify this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make: 1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. 2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-document] Open Geospatial Consortium, Inc. All Rights Reserved. http://www.opengeospatial.org/ogc/legal (Hypertext is preferred, but a textual representation is permitted.) 3. Notice of any changes or modifications to the OGC files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.) THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders. pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_19887a8a-f6b0-4a63-ae56-7fba0e17801f.xml0000644000000000000000000000007413114323025025615 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/Record_19887a8a-f6b0-4a63-ae56-7fba0e17801f.xml0000644000175000001440000000124113114323025026555 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_1ef30a8b-876d-4828-9246-c37ab4510bbd.xml0000644000000000000000000000007413114323025025531 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/Record_1ef30a8b-876d-4828-9246-c37ab4510bbd.xml0000644000175000001440000000124613114323025026476 0ustar00kalxasusers00000000000000 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.042 13.754 68.410 17.920 pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_66ae76b7-54ba-489b-a582-0f0633d96493.xml0000644000000000000000000000007413114323025025411 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/Record_66ae76b7-54ba-489b-a582-0f0633d96493.xml0000644000175000001440000000113413114323025026352 0ustar00kalxasusers00000000000000 urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text application/xhtml+xml Marine sediments Pellentesque tempus magna non sapien fringilla blandit. pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_6a3de50b-fa66-4b58-a0e6-ca146fdd18d4.xml0000644000000000000000000000007413114323025026023 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/Record_6a3de50b-fa66-4b58-a0e6-ca146fdd18d4.xml0000644000175000001440000000111513114323025026763 0ustar00kalxasusers00000000000000 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service Ut facilisis justo ut lacus Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_784e2afd-a9fd-44a6-9a92-a3848371c8ec.xml0000644000000000000000000000007413114323025025714 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/Record_784e2afd-a9fd-44a6-9a92-a3848371c8ec.xml0000644000175000001440000000134313114323025026657 0ustar00kalxasusers00000000000000 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf 2006-05-12 Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_829babb0-b2f1-49e1-8cd5-7b489fe71a1e.xml0000644000000000000000000000007413114323025025755 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/Record_829babb0-b2f1-49e1-8cd5-7b489fe71a1e.xml0000644000175000001440000000104013114323025026712 0ustar00kalxasusers00000000000000 urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e http://purl.org/dc/dcmitype/Image image/jp2 Vestibulum massa purus urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_88247b56-4cbc-4df9-9860-db3f8042e357.xml0000644000000000000000000000007413114323025025476 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/Record_88247b56-4cbc-4df9-9860-db3f8042e357.xml0000644000175000001440000000127413114323025026444 0ustar00kalxasusers00000000000000 urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms FI-ES Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_94bc9c83-97f6-4b40-9eb8-a8e8787a5c63.xml0000644000000000000000000000007413114323025025576 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/Record_94bc9c83-97f6-4b40-9eb8-a8e8787a5c63.xml0000644000175000001440000000162513114323025026544 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_9a669547-b69b-469f-a11f-2d875366bbdc.xml0000644000000000000000000000007413114323025025561 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/Record_9a669547-b69b-469f-a11f-2d875366bbdc.xml0000644000175000001440000000143013114323025026521 0ustar00kalxasusers00000000000000 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset Ñunç elementum Hydrography-Oceanographic 2005-10-24 44.792 -6.171 51.126 -2.228 pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_a06af396-3105-442d-8b40-22b57a90d2f2.xml0000644000000000000000000000007413114323025025350 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/Record_a06af396-3105-442d-8b40-22b57a90d2f2.xml0000644000175000001440000000077513114323025026323 0ustar00kalxasusers00000000000000 urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_ab42a8c4-95e8-4630-bf79-33e59241605a.xml0000644000000000000000000000007413114323025025376 xustar0030 atime=1496426292.520636725 30 ctime=1496426292.520636725 pycsw-2.0.3/tests/suites/cite/data/Record_ab42a8c4-95e8-4630-bf79-33e59241605a.xml0000644000175000001440000000124413114323025026341 0ustar00kalxasusers00000000000000 urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service Physiography Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam. urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/Record_e9330592-0932-474b-be34-c3a3bb67c7db.xml0000644000000000000000000000007413114323025025525 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/data/Record_e9330592-0932-474b-be34-c3a3bb67c7db.xml0000644000175000001440000000133513114323025026471 0ustar00kalxasusers00000000000000 urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db http://purl.org/dc/dcmitype/Text Fuscé vitae ligulä 2003-05-09 Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. pycsw-2.0.3/tests/suites/cite/data/PaxHeaders.23451/cite.db0000644000000000000000000000007413114323025020161 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/data/cite.db0000644000175000001440000024200013114323025021121 0ustar00kalxasusers00000000000000SQLite format 3@ EQ7E-æâ>ûöñìçâ41** "   ïï‚ ¡f„EPSGæGEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]] ÏÏ/ %publicpublicrecordswkt_geometryæWKTçPûöñìçN M JHG ©Ïk9Õ£q? Û©1gurn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db 1gurn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a 1gurn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 1gurn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc 1gurn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c631gurn:uuid:88247b56-4cbc-4df9-9860-db3f8042e3571gurn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e1gurn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec1gurn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d41gurn:uuid:66ae76b7-54ba-489b-a582-0f0633d964931gurn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd0g urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801fitle TEXT, title_alternate TEXT, abstract TEXT, keywords TEXT, keywordstype TEXT, parentidentifier TEXT, relation TEXT, time_begin TEXT, time_end TEXT, topicategory TEXT, resourcelanguage TEXT, creator TEXT, publisher TEXT, contributor TEXT, organization TEXT, securityconstraints TEXT, accessconstraints TEXT, otherconstraints TEXT, date TEXT, date_revision TEXT, date_creation TEXT, date_publication TEXT, date_modified TEXT, format TEXT, source TEXT, crs TEXT, geodescode TEXT, denominator TEXT, distancevalue TEXT, distanceuom TEXT, wkt_geometry TEXT, servicetype TEXT, servicetypeversion TEXT, operation TEXT, couplingtype TEXT, operateson TEXT, operatesonidentifier TEXT, operatesoname TEXT, degree TEXT, classification TEXT, conditionapplyingtoaccessanduse TEXT, lineage TEXT, responsiblepartyrole TEXT, specificationtitle TEXT, specificationdate TEXT, specificationdatetype TEXT, links TEXT, PRIMARY KEY (identifier) ) ‰÷íãÙÏÅ»±§“‰ local local local local local local local local local local local local Åü÷òíèãÞÙÔÏÊÅ     ÇAŸ.++‚tablespatial_ref_sysspatial_ref_sysCREATE TABLE spatial_ref_sys ( srid INTEGER NOT NULL, auth_name TEXT, auth_srid INTEGER, srtext TEXT, PRIMARY KEY (srid) )‚<--„+tablegeometry_columnsgeometry_columnsCREATE TABLE geometry_columns ( f_table_catalog TEXT NOT NULL, f_table_schema TEXT NOT NULL, f_table_name TEXT NOT NULL, f_geometry_column TEXT NOT NULL, geometry_type INTEGER, coord_dimension INTEGER, srid INTEGER NOT NULL, geometry_format TEXT NOT NULL )Š“YtablerecordsrecordsCREATE TABLE records ( identifier TEXT NOT NULL, typename TEXT NOT NULL, schema TEXT NOT NULL, mdsource TEXT NOT NULL, insert_date TEXT NOT NULL, xml TEXT NOT NULL, anytext TEXT NOT NULL, language TEXT, type TEXT, t-Aindexsqlite_autoindex_records_1records\3yindexix_records_mdsourcerecordsCREATE INDEX ix_records_mdsource ON records (mdsource)_5}indexix_records_operationrecordsCREATE INDEX ix_records_operation ON records (operation) Åü÷òíèãÞÙÔÏÊÅ     **˜çOºƒëF«l= indexix_records_date_modifiedrecords CREATE INDEX ix_records_date_modified ON records (date_modified)M)eindexix_records_crsrecords CREATE INDEX ix_records_crs ON records (crs)f 9indexix_records_distanceuomrecords CREATE INDEX ix_records_distanceuom ON records (distanceuom)i ; indexix_records_couplingtyperecordsCREATE INDEX ix_records_couplingtype ON records (couplingtype)_ 5}indexix_records_publisherrecordsCREATE INDEX ix_records_publisher ON records (publisher)f 9indexix_records_insert_daterecordsCREATE INDEX ix_records_insert_date ON records (insert_date)f 9indexix_records_denominatorrecordsCREATE INDEX ix_records_denominator ON records (denominator)Y1uindexix_records_creatorrecordsCREATE INDEX ix_records_creator ON records (creator)c7indexix_records_operatesonrecordsCREATE INDEX ix_records_operateson ON records (operateson)S-mindexix_records_titlerecordsCREATE INDEX ix_records_title ON records (title) Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Õè϶„kR9 îÕ52015-06-26T14:59:47Z 52015-06-26T14:59:47Z 52015-06-26T14:59:47Z 52015-06-26T14:59:47Z 52015-06-26T14:59:46Z52015-06-26T14:59:46Z52015-06-26T14:59:46Z52015-06-26T14:59:46Z52015-06-26T14:59:46Z52015-06-26T14:59:45Z52015-06-26T14:59:45Z5 2015-06-26T14:59:45Z Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ      ìt&” ñ+Ú_ºyJ5Fuscé vitae ligulä  ALorem ipsum dolor sit amet -Ñunç elementum -Mauris sed neque9Vestibulum massa purus%OAliquam fermentum purus quis arcuCUt facilisis justo ut lacus'Maecenas enim# Lorem ipsum Åü÷òíèãÞÙÔÏÊÅ     BB—ïMÇK¶’S-mindexix_records_linksrecordsCREATE INDEX ix_records_links ON records (links)V/qindexix_records_sourcerecordsCREATE INDEX ix_records_source ON records (source)\3yindexix_records_languagerecordsCREATE INDEX ix_records_language ON records (language)xEindexix_records_specificationdaterecordsCREATE INDEX ix_records_specificationdate ON records (specificationdate)K)indexix_records_operatesonidentifierrecordsCREATE INDEX ix_records_operatesonidentifier ON records (operatesonidentifier)i; indexix_records_organizationrecordsCREATE INDEX ix_records_organization ON records (organization)f9indexix_records_contributorrecordsCREATE INDEX ix_records_contributor ON records (contributor)rAindexix_records_title_alternaterecordsCREATE INDEX ix_records_title_alternate ON records (title_alternate)l= indexix_records_operatesonamerecordsCREATE INDEX ix_records_operatesoname ON records (operatesoname) Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     ""¢}ÕO­‰~I%indexix_records_securityconstraintsrecordsCREATE INDEX ix_records_securityconstraints ON records (securityconstraints)\3yindexix_records_abstractrecords!CREATE INDEX ix_records_abstract ON records (abstract){G!indexix_records_servicetypeversionrecords"CREATE INDEX ix_records_servicetypeversion ON records (servicetypeversion)V/qindexix_records_degreerecords#CREATE INDEX ix_records_degree ON records (degree)xEindexix_records_accessconstraintsrecords$CREATE INDEX ix_records_accessconstraints ON records (accessconstraints)\3yindexix_records_keywordsrecords%CREATE INDEX ix_records_keywords ON records (keywords)i ; indexix_records_topicategoryrecords&CREATE INDEX ix_records_topicategory ON records (topicategory)o!?indexix_records_classificationrecords'CREATE INDEX ix_records_classification ON records (classification)u"Cindexix_records_otherconstraintsrecords(CREATE INDEX ix_records_otherconstraints ON records (otherconstraints) µ±Ÿš¤ µRš,¶voMorbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. m]Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam.   gQCurabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.#‚IDonec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque.Z7Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.;{Pellentesque tempus magna non sapien fringilla blandit.GProin sit amet justo. In justo. Aenean adipiscing nulla id tellus.eO Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     *è¡K¦P*Ó:†íÄn#Land titles %Physiography  ?Hydrography-Oceanographic 3Vegetation-Cropland9Physiography-Landforms?Hydrography--Dictionaries!Vegetation-Marine sediments+ Tourism--Greece Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     ||×B§Lž’Y#1uindexix_records_lineagerecords)CREATE INDEX ix_records_lineage ON records (lineage)i$; indexix_records_keywordstyperecords+CREATE INDEX ix_records_keywordstype ON records (keywordstype)c%7indexix_records_geodescoderecords,CREATE INDEX ix_records_geodescode ON records (geodescode)"&aUindexix_records_conditionapplyingtoaccessanduserecords-CREATE INDEX ix_records_conditionapplyingtoaccessanduse ON records (conditionapplyingtoaccessanduse)P'+iindexix_records_daterecords.CREATE INDEX ix_records_date ON records (date)u(Cindexix_records_parentidentifierrecords/CREATE INDEX ix_records_parentidentifier ON records (parentidentifier){)G!indexix_records_specificationtitlerecords0CREATE INDEX ix_records_specificationtitle ON records (specificationtitle)l*= indexix_records_distancevaluerecords1CREATE INDEX ix_records_distancevalue ON records (distancevalue) Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     ü÷òíÙÔ±¬¶ÅÞ!2003-05-09   !2005-10-24 !2006-03-26!2006-05-12 Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     0óË£Û}³fUŽA0$Mhttp://purl.org/dc/dcmitype/Text 'Shttp://purl.org/dc/dcmitype/Service %Ohttp://purl.org/dc/dcmitype/Image 'Shttp://purl.org/dc/dcmitype/Dataset 'Shttp://purl.org/dc/dcmitype/Dataset'Shttp://purl.org/dc/dcmitype/Dataset%Ohttp://purl.org/dc/dcmitype/Image$Mhttp://purl.org/dc/dcmitype/Text'Shttp://purl.org/dc/dcmitype/Service$Mhttp://purl.org/dc/dcmitype/Text'Shttp://purl.org/dc/dcmitype/Service$O http://purl.org/dc/dcmitype/Image Åü÷òíèãÞÙÔÏÊÅ     ..€îLª!yP++iindexix_records_typerecords2CREATE INDEX ix_records_type ON records (type)l,= indexix_records_date_revisionrecords3CREATE INDEX ix_records_date_revision ON records (date_revision)\-3yindexix_records_typenamerecords5CREATE INDEX ix_records_typename ON records (typename)\.3yindexix_records_relationrecords6CREATE INDEX ix_records_relation ON records (relation)u/Cindexix_records_resourcelanguagerecords7CREATE INDEX ix_records_resourcelanguage ON records (resourcelanguage)V0/qindexix_records_schemarecords8CREATE INDEX ix_records_schema ON records (schema)1M-indexix_records_specificationdatetyperecords9CREATE INDEX ix_records_specificationdatetype ON records (specificationdatetype) MòãÔŶ§˜‰zk\M!csw:Record !csw:Record !csw:Record !csw:Record !csw:Record!csw:Record!csw:Record!csw:Record!csw:Record!csw:Record!csw:Record ! csw:Record >ü÷ò»„zu>CÀ‰ 1gurn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357   1gurn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc1gurn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Åü÷òíèãÞÙÔÏÊÅ     د†]4 â¹g>(Uhttp://www.opengis.net/cat/csw/2.0.2 (Uhttp://www.opengis.net/cat/csw/2.0.2 (Uhttp://www.opengis.net/cat/csw/2.0.2 (Uhttp://www.opengis.net/cat/csw/2.0.2 (Uhttp://www.opengis.net/cat/csw/2.0.2(Uhttp://www.opengis.net/cat/csw/2.0.2(Uhttp://www.opengis.net/cat/csw/2.0.2(Uhttp://www.opengis.net/cat/csw/2.0.2(Uhttp://www.opengis.net/cat/csw/2.0.2(Uhttp://www.opengis.net/cat/csw/2.0.2(Uhttp://www.opengis.net/cat/csw/2.0.2'U http://www.opengis.net/cat/csw/2.0.2 Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     Åü÷òíèãÞÙÔÏÊÅ     AÅ3›é‹u8Cindexix_records_date_publicationrecordsACREATE INDEX ix_records_date_publication ON records (date_publication)\73yindexix_records_time_endrecords@CREATE INDEX ix_records_time_end ON records (time_end)V6/qindexix_records_formatrecords?CREATE INDEX ix_records_format ON records (format)2K)indexix_records_responsiblepartyrolerecords:CREATE INDEX ix_records_responsiblepartyrole ON records (responsiblepartyrole)l3= indexix_records_date_creationrecords;CREATE INDEX ix_records_date_creation ON records (date_creation)f49indexix_records_servicetyperecords urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f http://purl.org/dc/dcmitype/Image image/svg+xml Lorem ipsum GR-22 Tourism--Greece Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu. http://purl.org/dc/dcmitype/ImageLorem ipsumQuisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.Tourism--Greeceimage/svg+xml/2.0.2local2015-06-26T14:59:45Z urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.042 13.754 68.410 17.920 urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd http://purl.org/dc/dcmitype/Service Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus. 60.042 13.754 68.410 17.920 http://purl.org/dc/dcmitype/ServiceProin sit amet justo. In justo. Aenean adipiscing nulla id tellus.POLYGON((13.75 60.04, 13.75 68.41, 17.92 68.41, 17.92 60.04, 13.75 60.04))3csw:Recordhttp://www.opengis.net/cat/csw/2.0.2local2015-06-26T14:59:45Z urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text application/xhtml+xml Marine sediments Pellentesque tempus magna non sapien fringilla blandit. urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493 Maecenas enim http://purl.org/dc/dcmitype/Text application/xhtml+xml Marine sediments Pellentesque tempus magna non sapien fringilla blandit. http://purl.org/dc/dcmitype/TextMaecenas enimPellentesque tempus magna non sapien fringilla blandit.Marine sedimentsapplication/xhtml+xml4csw:Recordhttp://www.opengis.net/cat/csw/2.0.2local2015-06-26T14:59:46Z urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service Ut facilisis justo ut lacus Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 http://purl.org/dc/dcmitype/Service Ut facilisis justo ut lacus Vegetation urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/ServiceUt facilisis justo ut lacusVegetationurn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63c/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf 2006-05-12 Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec Aliquam fermentum purus quis arcu http://purl.org/dc/dcmitype/Text Hydrography--Dictionaries application/pdf 2006-05-12 Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi. http://purl.org/dc/dcmitype/TextAliquam fermentum purus quis arcuVestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.Hydrography--Dictionaries2006-05-12application/pdf —B©;Í—Š+ urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e http://purl.org/dc/dcmitype/Image image/jp2 Vestibulum massa purus urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e http://purl.org/dc/dcmitype/Image image/jp2 Vestibulum massa purus urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/ImageVestibulum massa purusurn:uuid:9a669547-b69b-469f-a11f-2d875366bbdcimage/jp2org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/"> urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms FI-ES Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/Dataset Physiography-Landforms FI-ES Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque. http://purl.org/dc/dcmitype/DatasetDonec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque.Physiography-Landforms ­Ï­Œ=g!U5Q„!S-Q3!urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63csw:Recordhttp://www.opengis.net/cat/csw/2.0.2local2015-06-26T14:59:46Z urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/DatasetVegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 http://purl.org/dc/dcmitype/Dataset Mauris sed neque Vegetation-Cropland Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit. 2006-03-26 47.595 -4.097 51.217 0.889 http://purl.org/dc/dcmitype/DatasetMauris sed nequeCurabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.Vegetation-Cropland2006-03-26POLYGON((-4.10 47.59, -4.10 51.22, 0.89 51.22, 0.89 47.59, -4.10 47.59))mlns:ows="http://www.opengis.net/ows" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset Ñunç elementum Hydrography-Oceanographic 2005-10-24 44.792 -6.171 51.126 -2.228 urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc http://purl.org/dc/dcmitype/Dataset Ñunç elementum Hydrography-Oceanographic 2005-10-24 44.792 -6.171 51.126 -2.228 http://purl.org/dc/dcmitype/DatasetÑunç elementumHydrography-Oceanographic2005-10-24POLYGON((-6.17 44.79, -6.17 51.13, -2.23 51.13, -2.23 44.79, -6.17 44.79))   ‰j urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2 http://purl.org/dc/dcmitype/Image Lorem ipsum dolor sit amet image/jpeg IT-FI http://purl.org/dc/dcmitype/ImageLorem ipsum dolor sit ametimage/jpeg.0.2" xmlns:ows="http://www.opengis.net/ows" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/"> urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service Physiography Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam. urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a http://purl.org/dc/dcmitype/Service Physiography Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam. urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 http://purl.org/dc/dcmitype/ServiceSuspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam.Physiographyurn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357 ÚÚŠ- urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db http://purl.org/dc/dcmitype/Text Fuscé vitae ligulä 2003-05-09 Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db http://purl.org/dc/dcmitype/Text Fuscé vitae ligulä 2003-05-09 Land titles text/rtf Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla. http://purl.org/dc/dcmitype/TextFuscé vitae liguläMorbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.Land titles2003-05-09text/rtfpycsw-2.0.3/tests/suites/cite/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025020122 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/default.cfg0000644000175000001440000000543313114323025021071 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2012 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/cite/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US #maxrecords=10 federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #spatial_ranking=true gzip_compresslevel=9 [manager] transactions=true allowed_ips=127.0.0.1 csw_harvest_pagination_size=10 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db table=records [metadata:inspire] #enabled=true languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/cite/PaxHeaders.23451/get0000644000000000000000000000007413114323025016517 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/get/0000755000175000001440000000000013114323025017536 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/cite/get/PaxHeaders.23451/requests.txt0000644000000000000000000000007413114323025021210 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/get/requests.txt0000644000175000001440000000714313114323025022157 0ustar00kalxasusers0000000000000027e17158-c57a-4493-92ac-dba8934cf462,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities 27f69b66-5f05-4311-a89c-73ca55c2686b,PYCSW_SERVER?config=tests/suites/cite/default.cfg&Service=CSW&Version=2.0.2&Request=GetRecordById&ElementSetName=brief&ID=urn%3Auuid%3A19887a8a-f6b0-4a63-ae56-7fba0e17801f 2ab7d1fa-885b-459f-80e4-b6282eab4f8c,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities&acceptversions=2.0.2&date=2006-10-20 37aa90e2-6ff0-420c-af15-8b9463099a73,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&id=urn%3Auuid%3A9a669547-b69b-469f-a11f-2d875366bbdc 3a8a3c47-455f-4f49-9078-03119f3e70b3,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities&acceptformats=message/example 4515831f-834a-4699-95f6-ab0c2cbfcfd0,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetRecordById 477b23a3-baa9-47c8-9541-5fe27735ed49,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities§ions= 48f26761-3a9d-48db-bee1-da089f5fb857,PYCSW_SERVER?config=tests/suites/cite/default.cfg&sErViCe=CSW&REQUEST=GetCapabilities&version=2.0.2 4e38092f-1586-44b8-988e-0acfa5855916,PYCSW_SERVER?config=tests/suites/cite/default.cfg&Service=CSW&Version=2.0.2&Request=GetRecordById&OutputFormat=application/bogus_xml&id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2,urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f,urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a 55c38f00-2553-42c1-99ab-33edbb561ad7,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities§ions=OperationsMetadata,ServiceIdentification 5ab5db18-c87a-4fbf-a8d8-b7289b09ac81,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=FOO&request=GetCapabilities 6a4f57ca-a1bd-4802-89c2-44860dbdb0f0,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:ce8627a0-685c-11db-bd13-0800200c9a66,urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 6c375703-9c00-4aef-bec7-d2e964f849eb,PYCSW_SERVER?config=tests/suites/cite/default.cfg&Service=CSW&Version=2.0.2&Request=GetRecordById&OutputSchema=http://www.w3.org/2005/Atom&Id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f 80f31def-4185-48b9-983a-960566918eae,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities 8e2232ed-05d9-44ae-8b04-0911cbe6a507,PYCSW_SERVER?config=tests/suites/cite/default.cfg&SERVICE=CSW&REQUEST=GetCapabilities&ACCEPTVERSIONS=2006.10.29 9697f0aa-3b6a-4125-83a5-61e8826127c4,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities 9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7,PYCSW_SERVER?config=tests/suites/cite/default.cfg&Service=CSW&Version=2.0.2&Request=GetRecordById&ElementSetName=full&ID=urn%3Auuid%3Ae9330592-0932-474b-be34-c3a3bb67c7db b81c3595-06d6-4693-82ea-1ff8650755ac,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:ce8627a0-685c-11db-bd13-0800200c9a66 ba5fc729-3b71-47a0-b7d0-42ec565cd185,PYCSW_SERVER?config=tests/suites/cite/default.cfg&SERVICE=CSW&REQUEST=GetCapabilities&ACCEPTVERSIONS=2.0.2,2.0.0 c4ea754f-c158-4d8d-8253-dc8f86021b52,PYCSW_SERVER?config=tests/suites/cite/default.cfg&request=GetCapabilities f4692ec5-9547-4a05-88ab-e6154af2640a,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities f997f25e-c865-4d53-a362-0ed1846337f2,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 pycsw-2.0.3/tests/suites/cite/PaxHeaders.23451/post0000644000000000000000000000007413114323025016725 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/0000755000175000001440000000000013114323025017744 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/0c976d98-c896-4b10-b1fe-a22ef50434e7.xml0000644000000000000000000000007413114323025024320 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/0c976d98-c896-4b10-b1fe-a22ef50434e7.xml0000644000175000001440000000276713114323025025276 0ustar00kalxasusers00000000000000 dc:identifier ows:BoundingBox ows:BoundingBox 60.0 12.0 70.0 20.0 pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/19d2a6ed-be28-4866-ae15-e3bb634486cb.xml0000644000000000000000000000007413114323025024454 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/19d2a6ed-be28-4866-ae15-e3bb634486cb.xml0000644000175000001440000000271113114323025025417 0ustar00kalxasusers00000000000000 brief dc:title Fuscé vitae ligulä dc:format DESC pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml0000644000000000000000000000007413114323025024261 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml0000644000175000001440000000242413114323025025225 0ustar00kalxasusers00000000000000 full csw:AnyText *lorem* pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml0000644000000000000000000000007413114323025024533 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml0000644000175000001440000000203213114323025025472 0ustar00kalxasusers00000000000000 summary pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml0000644000000000000000000000007413114323025024446 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml0000644000175000001440000000242713114323025025415 0ustar00kalxasusers00000000000000 brief /dc:title *lorem* pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/2102a460-5d62-465f-9668-d70b3faafbfa.xml0000644000000000000000000000007413114323025024361 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/2102a460-5d62-465f-9668-d70b3faafbfa.xml0000644000175000001440000000243313114323025025325 0ustar00kalxasusers00000000000000 brief dc:subject pHYSIOGRAPHy pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/225f455a-0035-486b-a94e-fee7ae881b2b.xml0000644000000000000000000000007413114323025024370 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/225f455a-0035-486b-a94e-fee7ae881b2b.xml0000644000175000001440000000255013114323025025334 0ustar00kalxasusers00000000000000 dc:identifier dc:type dc:date dc:date 2006-03-26 pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/2d53ffea-60e4-4652-abf5-36eb23042fd5.xml0000644000000000000000000000007413114323025024437 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/2d53ffea-60e4-4652-abf5-36eb23042fd5.xml0000644000175000001440000000162613114323025025406 0ustar00kalxasusers00000000000000 brief pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/34a019a9-1581-42cb-9827-fbfdda2773b7.xml0000644000000000000000000000007413114323025024312 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/34a019a9-1581-42cb-9827-fbfdda2773b7.xml0000644000175000001440000000171713114323025025262 0ustar00kalxasusers00000000000000 brief pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/3e76fd38-e035-41c9-83dc-61356f680c97.xml0000644000000000000000000000007413114323025024175 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/3e76fd38-e035-41c9-83dc-61356f680c97.xml0000644000175000001440000000160213114323025025136 0ustar00kalxasusers00000000000000 csw:Record pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml0000644000000000000000000000007413114323025024407 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml0000644000175000001440000000331613114323025025354 0ustar00kalxasusers00000000000000 dc:identifier dc:date ows:BoundingBox ows:BoundingBox 47.0 -4.5 52.0 1.0 dc:date 2006-01-01 pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/420b745e-0c4b-404e-9f2d-61fa580ff05a.xml0000644000000000000000000000007413114323025024354 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/420b745e-0c4b-404e-9f2d-61fa580ff05a.xml0000644000175000001440000000252613114323025025323 0ustar00kalxasusers00000000000000 dc:identifier dc:type dc:date dc:date 2004-01-01 pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/4735d649-a2b1-42fd-a101-14e1d7e4607f.xml0000644000000000000000000000007413114323025024214 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/4735d649-a2b1-42fd-a101-14e1d7e4607f.xml0000644000175000001440000000200713114323025025155 0ustar00kalxasusers00000000000000 summary pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/5c5861bc-f742-40a5-9998-5342615d674b.xml0000644000000000000000000000007413114323025024031 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/5c5861bc-f742-40a5-9998-5342615d674b.xml0000644000175000001440000000242313114323025024774 0ustar00kalxasusers00000000000000 full csw:AnyText *lorem* pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml0000644000000000000000000000007413114323025024245 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml0000644000175000001440000000174613114323025025217 0ustar00kalxasusers00000000000000 summary pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml0000644000000000000000000000007413114323025024634 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml0000644000175000001440000000242113114323025025575 0ustar00kalxasusers00000000000000 full dc:date 200?-10-* pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/78297c88-4850-4927-adc6-511cd9a3d539.xml0000644000000000000000000000007413114323025024120 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/78297c88-4850-4927-adc6-511cd9a3d539.xml0000644000175000001440000000141413114323025025062 0ustar00kalxasusers00000000000000 pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml0000644000000000000000000000007413114323025025057 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml0000644000175000001440000000204013114323025026015 0ustar00kalxasusers00000000000000 summary pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/7e2cd105-daec-4d25-bc8e-d49d21364912.xml0000644000000000000000000000007413114323025024441 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/7e2cd105-daec-4d25-bc8e-d49d21364912.xml0000644000175000001440000000157713114323025025415 0ustar00kalxasusers00000000000000 csw:DummyRecord pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml0000644000000000000000000000007413114323025024331 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml0000644000175000001440000000210413114323025025270 0ustar00kalxasusers00000000000000 dc:identifier dc:type dc:date pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml0000644000000000000000000000007413114323025024511 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml0000644000175000001440000000162313114323025025455 0ustar00kalxasusers00000000000000 csw:Record pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/898cd63b-2585-4ec0-8720-d554bd324174.xml0000644000000000000000000000007413114323025024100 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/898cd63b-2585-4ec0-8720-d554bd324174.xml0000644000175000001440000000303013114323025025036 0ustar00kalxasusers00000000000000 summary dc:format image/* dc:relation urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml0000644000000000000000000000007413114323025024326 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml0000644000175000001440000000277013114323025025276 0ustar00kalxasusers00000000000000 dc:identifier ows:BoundingBox ows:BoundingBox 60.0 12.0 70.0 20.0 pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/928c1896-52d4-4ac7-9832-f98e3eb65f02.xml0000644000000000000000000000007413114323025024202 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/928c1896-52d4-4ac7-9832-f98e3eb65f02.xml0000644000175000001440000000254213114323025025147 0ustar00kalxasusers00000000000000 dc:identifier dc:type dc:date dc:date 2005-10-24 pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/93bdbb9d-2734-4f01-92fb-48634cca41de.xml0000644000000000000000000000007413114323025024446 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/93bdbb9d-2734-4f01-92fb-48634cca41de.xml0000644000175000001440000000266513114323025025421 0ustar00kalxasusers00000000000000 dc:identifier ows:BoundingBox /ows:BoundingBox 47.0 -4.5 52.0 1.0 pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml0000644000000000000000000000007413114323025024623 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml0000644000175000001440000000237313114323025025572 0ustar00kalxasusers00000000000000 dc:identifier dc:type dc:date dc:date DESC pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml0000644000000000000000000000007413114323025024504 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml0000644000175000001440000000156613114323025025456 0ustar00kalxasusers00000000000000 Record pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml0000644000000000000000000000007413114323025024434 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml0000644000175000001440000000162613114323025025403 0ustar00kalxasusers00000000000000 brief pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/ad61686c-d304-42d1-b845-8c1f3070c83e.xml0000644000000000000000000000007413114323025024222 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/ad61686c-d304-42d1-b845-8c1f3070c83e.xml0000644000175000001440000000242613114323025025170 0ustar00kalxasusers00000000000000 brief dc:title Maecenas enim pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/af39c020-7b1d-429c-b474-f45c3164cb79.xml0000644000000000000000000000007413114323025024305 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/af39c020-7b1d-429c-b474-f45c3164cb79.xml0000644000175000001440000000243013114323025025246 0ustar00kalxasusers00000000000000 summary dc:title Lorem ipsum* pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml0000644000000000000000000000007413114323025024402 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml0000644000175000001440000000252513114323025025350 0ustar00kalxasusers00000000000000 summary dc:title Lorem ipsum* pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/ba9b0107-dcee-46ef-823a-a2e25a911a96.xml0000644000000000000000000000007413114323025024514 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/ba9b0107-dcee-46ef-823a-a2e25a911a96.xml0000644000175000001440000000301713114323025025457 0ustar00kalxasusers00000000000000 summary dc:format application/*xml dc:type http://purl.org/dc/dcmitype/Image pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/bb66ebc5-7121-48b5-9f53-b56537d9561b.xml0000644000000000000000000000007413114323025024242 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/bb66ebc5-7121-48b5-9f53-b56537d9561b.xml0000644000175000001440000000345113114323025025207 0ustar00kalxasusers00000000000000 dc:identifier dc:type ows:BoundingBox ows:BoundingBox 40.0 -9.0 50.0 -5.0 dc:type HTTP://purl.org/dc/dcmitype/dataset pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/c02d1c85-df9f-45ee-bea7-345c35e02a98.xml0000644000000000000000000000007413114323025024534 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/c02d1c85-df9f-45ee-bea7-345c35e02a98.xml0000644000175000001440000000247513114323025025506 0ustar00kalxasusers00000000000000 brief dc:title input.argument pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/c311a342-72e3-4983-be39-868e6ed9740f.xml0000644000000000000000000000007413114323025024171 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/c311a342-72e3-4983-be39-868e6ed9740f.xml0000644000175000001440000000157213114323025025140 0ustar00kalxasusers00000000000000 csw:Record pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml0000644000000000000000000000007413114323025024503 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml0000644000175000001440000000331413114323025025446 0ustar00kalxasusers00000000000000 dc:identifier dc:date ows:BoundingBox ows:BoundingBox 47.0 -4.5 52.0 1.0 dc:date 2006-01-01 pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/c8588f47-8e65-45f5-ad34-ff4524cad84d.xml0000644000000000000000000000007413114323025024423 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/c8588f47-8e65-45f5-ad34-ff4524cad84d.xml0000644000175000001440000000256713114323025025377 0ustar00kalxasusers00000000000000 brief dct:spatial 47.0 -4.5 52.0 1.0 pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml0000644000000000000000000000007413114323025024601 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml0000644000175000001440000000243313114323025025545 0ustar00kalxasusers00000000000000 summary /dc:title *lorem* pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml0000644000000000000000000000007413114323025024456 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml0000644000175000001440000000252013114323025025417 0ustar00kalxasusers00000000000000 dc:identifier dc:type dc:date dc:date 2006-05-01 pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml0000644000000000000000000000007413114323025024677 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml0000644000175000001440000000174413114323025025647 0ustar00kalxasusers00000000000000 brief pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/e308f030-c097-4036-a838-44bad74c9ef7.xml0000644000000000000000000000007413114323025024234 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/e308f030-c097-4036-a838-44bad74c9ef7.xml0000644000175000001440000000162613114323025025203 0ustar00kalxasusers00000000000000 brief pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml0000644000000000000000000000007413114323025025026 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml0000644000175000001440000000224013114323025025766 0ustar00kalxasusers00000000000000 brief dc:identifier ASC pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/f7976c55-a156-4421-8199-bc0487da4b0f.xml0000644000000000000000000000007413114323025024163 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/f7976c55-a156-4421-8199-bc0487da4b0f.xml0000644000175000001440000000157213114323025025132 0ustar00kalxasusers00000000000000 csw:Record pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/f7d79701-f10b-4087-a33c-f62df0a04fd1.xml0000644000000000000000000000007413114323025024356 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/f7d79701-f10b-4087-a33c-f62df0a04fd1.xml0000644000175000001440000000162613114323025025325 0ustar00kalxasusers00000000000000 brief pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml0000644000000000000000000000007413114323025024620 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml0000644000175000001440000000237113114323025025565 0ustar00kalxasusers00000000000000 brief dc:title Fuscé vitae ligulä pycsw-2.0.3/tests/suites/cite/post/PaxHeaders.23451/fe20960f-a26c-4f13-852d-470a0d3233f9.xml0000644000000000000000000000007413114323025024220 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/cite/post/fe20960f-a26c-4f13-852d-470a0d3233f9.xml0000644000175000001440000000240513114323025025163 0ustar00kalxasusers00000000000000 brief dc:subject pHYSIOGRAPHy pycsw-2.0.3/tests/suites/PaxHeaders.23451/csw300000644000000000000000000000007413114323025015753 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/0000755000175000001440000000000013114323025016772 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/csw30/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025020135 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/default.cfg0000644000175000001440000000557313114323025021111 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/csw30/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://demo.pycsw.org/gisdata/csw pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/csw30/PaxHeaders.23451/get0000644000000000000000000000007413114323025016532 xustar0030 atime=1496426329.773425147 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/get/0000755000175000001440000000000013114323025017551 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/csw30/get/PaxHeaders.23451/requests.txt0000644000000000000000000000007413114323025021223 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/get/requests.txt0000644000175000001440000004051713114323025022174 0ustar00kalxasusers00000000000000GetCapabilities-base-url,PYCSW_SERVER?config=tests/suites/csw30/default.cfg GetCapabilities-no-version,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&request=GetCapabilities GetCapabilities,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetCapabilities Exception-invalid-request,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetCapabilities-foo Exception-GetDomain,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetDomain GetDomain-parameter,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetDomain¶metername=GetRecords.ElementSetName GetDomain-value-reference,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetDomain&valuereference=dc:title Exception-GetDomain-value-reference,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetDomain&valuereference=dc:title2 Exception-GetRecordById-dc.xml,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecordById&id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e Exception-GetRecordById-404,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecordById&id=does_not_exist2 OpenSearch-description,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities GetRepositoryItem,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRepositoryItem&id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f Exception-GetRepositoryItem-notfound,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRepositoryItem&id=NOTFOUND 002258f0-627f-457f-b2ad-025777c77ac8,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities 045c600d-973d-41eb-9f60-eba1b717b720,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=Fusc%C3%A9%20Land&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= 0bbcf862-5211-4351-9988-63f8bec49c98,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&outputFormat=application/atom%2Bxml&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 0bdf8457-971e-4ed1-be4a-5feca4dcd8fa,PYCSW_SERVER?config=tests/suites/csw30/default.cfg 0d8bbdec-0846-42ca-8dc8-b7f4cba41d67,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementName=tns:title&request=GetRecords&service=CSW&typeNames=Record&namespace=xmlns(tns%3Dhttp://purl.org/dc/elements/1.1/)&version=3.0.0 0e1dca37-477a-4060-99fe-7799b52d656c,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=lpppclq&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= 13c87956-51a4-4780-a8e9-6e0b5c0bb473,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=full&maxRecords=20&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 151d982f-ebd3-4cb2-b507-a667713a1e92,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptFormats=model/x3d%2Bxml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW 1869e495-1a61-4713-8285-76d1336ee1a6,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0&request=GetCapabilities 1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&request=GetRecordById&service=CSW&version=3.0.0 22f44168-2ccf-4801-ad96-204212566d56,PYCSW_SERVER?config=tests/suites/csw30/default.cfg 2499a9c9-8d33-449c-bc92-d494adfcc84d,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0§ions=All&request=GetCapabilities&service=CSW 27f4f39c-d92a-4e3c-b961-c6aa8c24e513,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptFormats=application/xml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW 28e569df-8596-4128-8d9a-29ad03138915,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2&request=GetRecordById&service=CSW&version=3.0.0 2b06a5c8-0df2-4af1-8d2e-a425de11c845,PYCSW_SERVER?config=tests/suites/csw30/default.cfg 2ba1418a-444d-4cce-9cfe-4c94efcf8b55,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&maxRecords=2&elementSetName=summary&outputFormat=application/atom%2Bxml&request=GetRecords&service=CSW&typeNames=csw3:Record&startPosition=3&namespace=xmlns(csw3%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0 397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=ipsum&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= 3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=brief&request=GetRecords&service=CSW&typeNames=tns:Record&namespace=xmlns(tns%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0 405e1ff1-5c75-4846-a28b-cfaff2a6921a,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&recordIds=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f,urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 43cd6471-6ac7-45bd-8ff9-148cb2de9a52,PYCSW_SERVER?config=tests/suites/csw30/default.cfg 4566d2ec-1283-4a02-baed-a74fc5b47e37,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0§ions=ServiceIdentification&request=GetCapabilities&service=CSW 461bd4c5-6623-490d-9036-d91a2201e87b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0§ions=Filter_Capabilities&request=GetCapabilities&service=CSW 5496894a-3877-4f62-a20b-5d7126f94925,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=514432,5429689,529130,5451619&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= 5a015f6a-bf14-4977-b1e3-6577eb0223c8,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-6.17,44.79,17.92,68.41&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= 5c3a2390-1fb9-43f0-b96c-f48c7a69c990,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357&outputFormat=model/vnd.collada%2Bxml&request=GetRecordById&service=CSW&version=3.0.0 5e9e67dc-18d6-4645-8111-c6263c88a61f,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0§ions=OperationsMetadata&request=GetCapabilities&service=CSW 604d9379-741c-42e5-b4cf-92e56c87fa64,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=full&q=amet&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 60e6af95-d5fc-465a-82e2-fd2e6d85e4af,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&request=GetRecords&service=CSW&typeNames=UnknownType&version=3.0.0 62ad94c2-b558-4265-a427-23d6677975d6,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a 6a5e247b-0961-4b8a-a0d6-35a491d9cfe7,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=undefined-view&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 6a9d0558-9d87-495b-b999-b49a3ef1cf99,PYCSW_SERVER?config=tests/suites/csw30/default.cfg 6bd790c9-6019-4652-9c91-330a894d6700,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=Fusc%C3%A9%20Land&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= 6e9cba43-5e27-415d-adbd-a92851c2c173,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0&request=GetCapabilities&service=CSW 7630d230-e142-4a09-accf-f091000b90cd,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493&request=GetRecordById&service=CSW&version=3.0.0 7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptFormats=text/xml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW 8025978e-1a35-4d70-80c2-e8329e0c7864,PYCSW_SERVER?config=tests/suites/csw30/default.cfg 8184ae4f-536d-4978-8b28-ad703be96967,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=brief&bbox=44.79,-6.17,68.41,17.92,urn:ogc:def:crs:EPSG::4326&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 88f63a89-664f-4315-b4f8-04a0b33803a7,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&maxRecords=15&elementSetName=summary&q=Mauris&bbox=-6.17,44.79,17.92,68.41&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 8987f8f0-4d93-4481-968c-a2ccbd6b8be2,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:example:1461546298217&request=GetRecordById&service=CSW&version=3.0.0 8e5fa0f6-3f29-4d1f-abe2-d9866f3def98,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-180,-90,180,90&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= 9000ec29-5649-474e-b2d6-55c00f8a52c0,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=9999.12.31&request=GetCapabilities&service=CSW 91914d35-7bbf-45e6-9b37-5ef484869a4e,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&bbox=-6.17,44.79,17.92,68.41&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 92d4844d-57d5-4cf3-8f47-ba50e369dc04,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=full&q=atkovxqmf&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 9c0e2a4b-b4e6-41c0-b630-c8c99fc89ff3,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=brief&outputSchema=urn:uuid:6a29d2a8-9651-47a6-9b14-f05d2b5644f0&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 9d7ffac8-9798-428d-8e27-3cd12497ee6b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd&outputSchema=http://www.example.org/ns/alpha&request=GetRecordById&service=CSW&version=3.0.0 a2f18643-e24e-4fa5-b780-6de4a2dbc814,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e&outputFormat=application/atom%2Bxml&request=GetRecordById&service=CSW&version=3.0.0 abc90c8c-5868-4405-a73e-64c849be3b2a,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=514432,5429689,529130,5451619&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= ad0c0571-09ed-436a-9a4f-a5de744c88fe,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&maxRecords=2&elementSetName=summary&request=GetRecords&service=CSW&typeNames=csw3:Record&startPosition=3&namespace=xmlns(csw3%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0 af502903-f4ee-47ee-b76e-af878d238bcc,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-180,-90,180,90&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= b2aafc3f-4f35-47bc-affd-08590972deae,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-6.17,44.79,17.92,68.41&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= b6069623-f7d8-4021-8582-98f0aea0f763,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=3&maxrecords=4&recordids= b9a07a54-75a8-45bd-b341-2823600211e3,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=brief&bbox=472944,5363287,492722,5455253,urn:ogc:def:crs:EPSG::0000&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 baa4a7d0-0c01-42b6-adc3-0d03e9949fa3,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0&request=getCapabilities&service=CSW bfbe6409-f64a-4c89-acb3-50f260a5c743,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&q=Fusc%C3%A9%20Land&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 bfe20134-d1da-42ef-9c0f-8e1307bbf92b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=3&maxrecords=4&recordids= c03d173a-3f42-4956-89c8-1fe02c3a0873,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&SERVICE=CSW&Request=GetCapabilities&acceptversions=3.0.0 cb43d8c3-e14c-4a9f-9231-4384b7dd21f3,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementName=undefined&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 d03c6fd3-e821-4a26-b62f-d20a474e25af,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0§ions=ServiceProvider&request=GetCapabilities&service=CSW d4ccbf96-a529-480e-a53d-5b88dc1dea7f,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a d94c801a-1207-4897-b84a-53f3a192515b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=lpppclq&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= da859e34-91fc-495a-8c09-285a40c0900b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63&elementSetName=full&request=GetRecordById&service=CSW&version=3.0.0 dc246fb8-5af5-4fda-82bb-c18b3ecd439c,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=ipsum&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= de016645-6d5c-4855-943c-2db07ae9f49a,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=urn%3Auuid%3A94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 dff3ec6b-bb2d-4887-bd17-8fcf15def042,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 e38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd&elementSetName=brief&request=GetRecordById&service=CSW&version=3.0.0 e67ca935-d65d-4d8c-8302-1405333dded0,PYCSW_SERVER?config=tests/suites/csw30/default.cfg e7704509-3441-458f-8ef0-e333c6b6043f,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementName=ns1:subject&elementSetName=brief&request=GetRecords&service=CSW&typeNames=Record&namespace=xmlns(ns1%3Dhttp://purl.org/dc/elements/1.1/)&version=3.0.0 f1223a49-6d08-44ff-97fe-4c32cbbfad82,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&maxRecords=0&q=titles&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 f89dd4e1-3a81-4433-afd2-a3fa1bdb1e18,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=full&outputFormat=text/example&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 pycsw-2.0.3/tests/suites/csw30/PaxHeaders.23451/post0000644000000000000000000000007413114323025016740 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/0000755000175000001440000000000013114323025017757 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/csw30/post/PaxHeaders.23451/Exception-GetDomain-parametername-bad.xml0000644000000000000000000000007413114323025026705 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/Exception-GetDomain-parametername-bad.xml0000644000175000001440000000060713114323025027652 0ustar00kalxasusers00000000000000 GetRecords.outputFormat-something pycsw-2.0.3/tests/suites/csw30/post/PaxHeaders.23451/Exception-GetDomain-valuereference-bad.xml0000644000000000000000000000007413114323025027057 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/Exception-GetDomain-valuereference-bad.xml0000644000175000001440000000056213114323025030024 0ustar00kalxasusers00000000000000 dc:titlena pycsw-2.0.3/tests/suites/csw30/post/PaxHeaders.23451/Exception-GetRecordById-404.xml0000644000000000000000000000007413114323025024426 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/Exception-GetRecordById-404.xml0000644000175000001440000000054613114323025025375 0ustar00kalxasusers00000000000000 does_not_exist pycsw-2.0.3/tests/suites/csw30/post/PaxHeaders.23451/Exception-GetRecordById-bad-esn.xml0000644000000000000000000000007413114323025025430 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/Exception-GetRecordById-bad-esn.xml0000644000175000001440000000067113114323025026376 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f bad pycsw-2.0.3/tests/suites/csw30/post/PaxHeaders.23451/Exception-bad-xml.xml0000644000000000000000000000007413114323025023017 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/Exception-bad-xml.xml0000644000175000001440000000106713114323025023765 0ustar00kalxasusers00000000000000 3.0.0 application/xml pycsw-2.0.3/tests/suites/csw30/post/PaxHeaders.23451/Exception-not-xml.xml0000644000000000000000000000007413114323025023071 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/Exception-not-xml.xml0000644000175000001440000000002313114323025024026 0ustar00kalxasusers00000000000000not an XML payload pycsw-2.0.3/tests/suites/csw30/post/PaxHeaders.23451/GetCapabilities.xml0000644000000000000000000000007413114323025022570 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/GetCapabilities.xml0000644000175000001440000000106313114323025023532 0ustar00kalxasusers00000000000000 3.0.0 application/xml pycsw-2.0.3/tests/suites/csw30/post/PaxHeaders.23451/GetDomain-parametername.xml0000644000000000000000000000007413114323025024225 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/GetDomain-parametername.xml0000644000175000001440000000057513114323025025176 0ustar00kalxasusers00000000000000 GetRecords.outputFormat pycsw-2.0.3/tests/suites/csw30/post/PaxHeaders.23451/GetDomain-valuereference.xml0000644000000000000000000000007413114323025024377 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/GetDomain-valuereference.xml0000644000175000001440000000056013114323025025342 0ustar00kalxasusers00000000000000 dc:title pycsw-2.0.3/tests/suites/csw30/post/PaxHeaders.23451/GetRecordById-dc-full.xml0000644000000000000000000000007413114323025023511 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/GetRecordById-dc-full.xml0000644000175000001440000000067213114323025024460 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f full pycsw-2.0.3/tests/suites/csw30/post/PaxHeaders.23451/GetRecordById-dc.xml0000644000000000000000000000007413114323025022551 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/csw30/post/GetRecordById-dc.xml0000644000175000001440000000060513114323025023514 0ustar00kalxasusers00000000000000 urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f pycsw-2.0.3/tests/suites/PaxHeaders.23451/default0000644000000000000000000000007413114323025016440 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/0000755000175000001440000000000013114323025017457 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/default/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025020622 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/default.cfg0000644000175000001440000000557513114323025021600 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/default/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://demo.pycsw.org/gisdata/csw pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/default/PaxHeaders.23451/get0000644000000000000000000000007413114323025017217 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/get/0000755000175000001440000000000013114323025020236 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/default/get/PaxHeaders.23451/requests.txt0000644000000000000000000000007413114323025021710 xustar0030 atime=1496426329.781425316 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/get/requests.txt0000644000175000001440000001101313114323025022646 0ustar00kalxasusers00000000000000GetCapabilities,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities GetCapabilities-invalid-request,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetCapabilitiese GetRecords-all,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full GetRecords-sortby-asc,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:A GetRecords-sortby-desc,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:D GetRecords-sortby-invalid-propertyname,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:titlei:A GetRecords-sortby-invalid-order,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:FOO GetRecords-filter,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=FILTER&constraint=%3Cogc%3AFilter%20xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%3E%3Cogc%3APropertyIsEqualTo%3E%3Cogc%3APropertyName%3Edc%3Atitle%3C%2Fogc%3APropertyName%3E%3Cogc%3ALiteral%3ELorem%20ipsum%3C%2Fogc%3ALiteral%3E%3C%2Fogc%3APropertyIsEqualTo%3E%3C%2Fogc%3AFilter%3E GetRecords-filter-cql-title,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27 GetRecords-filter-cql-title-with-spaces,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25Lorem%20ipsum%25%27 GetRecords-filter-cql-title-or-abstract,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%25%27 GetRecords-filter-cql-title-with-spaces-or-abstract,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25dolor%20sit%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%25%27 GetRecords-filter-cql-title-or-abstract-with-spaces,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%20in%25%27 GetRecords-filter-cql-title-with-spaces-or-abstract-with-spaces,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25dolor%20sit%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%20in%25%27 GetRecords-empty-maxrecords,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&maxrecords= GetRepositoryItem,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 Exception-GetRepositoryItem-notfound,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRepositoryItem&id=NOTFOUND Exception-GetRepositoryItem-service-invalid1,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW%00&version=2.0.2&request=GetRepositoryItem&id=123 Exception-GetRepositoryItem-service-invalid2,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW%00'&version=2.0.2&request=GetRepositoryItem&id=123 Exception-GetRepositoryItem-version-invalid,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2'&request=GetRepositoryItem&id=123 pycsw-2.0.3/tests/suites/default/PaxHeaders.23451/post0000644000000000000000000000007413114323025017425 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/0000755000175000001440000000000013114323025020444 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/DescribeRecord-json.xml0000644000000000000000000000007413114323025024052 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/DescribeRecord-json.xml0000644000175000001440000000074113114323025025016 0ustar00kalxasusers00000000000000 csw:Record pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/DescribeRecord.xml0000644000000000000000000000007413114323025023103 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/DescribeRecord.xml0000644000175000001440000000074013114323025024046 0ustar00kalxasusers00000000000000 csw:Record pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/Exception-GetRecords-badsrsname.xml0000644000000000000000000000007413114323025026336 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/Exception-GetRecords-badsrsname.xml0000644000175000001440000000174713114323025027311 0ustar00kalxasusers00000000000000 brief ows:BoundingBox -90 -180 90 180 pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/Exception-GetRecords-elementname.xml0000644000000000000000000000007413114323025026511 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/Exception-GetRecords-elementname.xml0000644000175000001440000000121713114323025027454 0ustar00kalxasusers00000000000000 dc:foo pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/Exception-GetRecords-invalid-xml.xml0000644000000000000000000000007413114323025026443 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/Exception-GetRecords-invalid-xml.xml0000644000175000001440000000122513114323025027405 0ustar00kalxasusers00000000000000 dc:foo pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetCapabilities-SOAP.xml0000644000000000000000000000007413114323025024015 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetCapabilities-SOAP.xml0000644000175000001440000000146713114323025024767 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetCapabilities-sections.xml0000644000000000000000000000007413114323025025102 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetCapabilities-sections.xml0000644000175000001440000000116213114323025026044 0ustar00kalxasusers00000000000000 2.0.2 ServiceProvider application/xml pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetCapabilities-updatesequence.xml0000644000000000000000000000007413114323025026266 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetCapabilities-updatesequence.xml0000644000175000001440000000106113114323025027226 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetCapabilities.xml0000644000000000000000000000007413114323025023255 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetCapabilities.xml0000644000175000001440000000103413114323025024215 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetDomain-parameter.xml0000644000000000000000000000007413114323025024051 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetDomain-parameter.xml0000644000175000001440000000064613114323025025021 0ustar00kalxasusers00000000000000 GetRecords.CONSTRAINTLANGUAGE pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetDomain-property.xml0000644000000000000000000000007413114323025023755 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetDomain-property.xml0000644000175000001440000000061713114323025024723 0ustar00kalxasusers00000000000000 dc:title pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecordById-json.xml0000644000000000000000000000007413114323025023621 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecordById-json.xml0000644000175000001440000000076513114323025024573 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 summary pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecordById.xml0000644000000000000000000000007413114323025022652 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecordById.xml0000644000175000001440000000076413114323025023623 0ustar00kalxasusers00000000000000 urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 summary pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-all-json.xml0000644000000000000000000000007413114323025024002 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-all-json.xml0000644000175000001440000000115013114323025024741 0ustar00kalxasusers00000000000000 full pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-all-resulttype-hits.xml0000644000000000000000000000007413114323025026216 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-all-resulttype-hits.xml0000644000175000001440000000114413114323025027160 0ustar00kalxasusers00000000000000 full pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-all-resulttype-validate.xml0000644000000000000000000000007413114323025027040 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-all-resulttype-validate.xml0000644000175000001440000000115013114323025027777 0ustar00kalxasusers00000000000000 full pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-all-sortby-bbox.xml0000644000000000000000000000007413114323025025303 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-all-sortby-bbox.xml0000644000175000001440000000152613114323025026251 0ustar00kalxasusers00000000000000 full ows:BoundingBox DESC pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-all.xml0000644000000000000000000000007413114323025023033 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-all.xml0000644000175000001440000000114713114323025024000 0ustar00kalxasusers00000000000000 full pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-bbox-filter-crs84.xml0000644000000000000000000000007413114323025025441 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-bbox-filter-crs84.xml0000644000175000001440000000224213114323025026403 0ustar00kalxasusers00000000000000 brief ows:BoundingBox -180 -90 180 90 pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-cql-title-and-abstract.xml0000644000000000000000000000007413114323025026522 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-cql-title-and-abstract.xml0000644000175000001440000000136613114323025027472 0ustar00kalxasusers00000000000000 brief dc:title like '%ips%' and dct:abstract like '%pharetra%' pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-cql-title.xml0000644000000000000000000000007413114323025024161 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-cql-title.xml0000644000175000001440000000132313114323025025122 0ustar00kalxasusers00000000000000 brief dc:title like '%ips%' pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-distributedsearch.xml0000644000000000000000000000007413114323025025773 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-distributedsearch.xml0000644000175000001440000000176413114323025026745 0ustar00kalxasusers00000000000000 brief dc:title Aquifers pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-elementname.xml0000644000000000000000000000007413114323025024555 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-elementname.xml0000644000175000001440000000122113114323025025513 0ustar00kalxasusers00000000000000 dc:title pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-end.xml0000644000000000000000000000007413114323025023031 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-end.xml0000644000175000001440000000115013114323025023770 0ustar00kalxasusers00000000000000 full pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-and-bbox-freetext.xml0000644000000000000000000000007413114323025027064 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-and-bbox-freetext.xml0000644000175000001440000000227313114323025030032 0ustar00kalxasusers00000000000000 brief csw:AnyText %lor% ows:BoundingBox 47 -5 55 20 pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-and-nested-or.xml0000644000000000000000000000007413114323025026206 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-and-nested-or.xml0000644000175000001440000000410213114323025027145 0ustar00kalxasusers00000000000000 full dc:title Aliquam fermentum purus quis arcu dc:format application/pdf dc:type http://purl.org/dc/dcmitype/Dataset dc:type http://purl.org/dc/dcmitype/Service dc:type http://purl.org/dc/dcmitype/Image dc:type http://purl.org/dc/dcmitype/Text pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-and-nested-or2.xml0000644000000000000000000000007413114323025026270 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-and-nested-or2.xml0000644000175000001440000000357313114323025027242 0ustar00kalxasusers00000000000000 full dc:title Lorem% dc:type http://purl.org/dc/dcmitype/Dataset dc:type http://purl.org/dc/dcmitype/Service dc:type http://purl.org/dc/dcmitype/Image dc:type http://purl.org/dc/dcmitype/Text pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-anytext-and-not.xml0000644000000000000000000000007413114323025026600 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-anytext-and-not.xml0000644000175000001440000000271513114323025027547 0ustar00kalxasusers00000000000000 summary csw:AnyText *lorem* csw:AnyText *ipsum* csw:AnyText *dolor* pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-anytext-equal.xml0000644000000000000000000000007413114323025026347 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-anytext-equal.xml0000644000175000001440000000170313114323025027312 0ustar00kalxasusers00000000000000 brief csw:AnyText Lor pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-anytext.xml0000644000000000000000000000007413114323025025242 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-anytext.xml0000644000175000001440000000175213114323025026211 0ustar00kalxasusers00000000000000 brief csw:AnyText %Lor% pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-bbox-reproject.xml0000644000000000000000000000007413114323025026473 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-bbox-reproject.xml0000644000175000001440000000213413114323025027435 0ustar00kalxasusers00000000000000 brief ows:BoundingBox -72310.84768270838 2013215.2698528299 279667.74290441966 2690819.5081175645 pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-bbox-sortby.xml0000644000000000000000000000007413114323025026020 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-bbox-sortby.xml0000644000175000001440000000231513114323025026763 0ustar00kalxasusers00000000000000 brief ows:BoundingBox 47 -5 55 20 dc:title DESC pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-bbox.xml0000644000000000000000000000007413114323025024500 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.524636809 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-bbox.xml0000644000175000001440000000176113114323025025447 0ustar00kalxasusers00000000000000 brief ows:BoundingBox 47 -5 55 20 pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-between.xml0000644000000000000000000000007413114323025025177 xustar0030 atime=1496426292.524636809 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-between.xml0000644000175000001440000000205313114323025026141 0ustar00kalxasusers00000000000000 full dc:title Aliquam fermentum purus quis arcu Maecenas enim pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-function-bad.xml0000644000000000000000000000007413114323025026117 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-function-bad.xml0000644000175000001440000000201713114323025027061 0ustar00kalxasusers00000000000000 brief dc:title LOREM IPSUM pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-function.xml0000644000000000000000000000007413114323025025373 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-function.xml0000644000175000001440000000202113114323025026330 0ustar00kalxasusers00000000000000 brief dc:title LOREM IPSUM pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-not-bbox.xml0000644000000000000000000000007413114323025025276 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-not-bbox.xml0000644000175000001440000000175313114323025026246 0ustar00kalxasusers00000000000000 brief ows:BoundingBox 47 -5 55 20 pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-or-bbox-freetext.xml0000644000000000000000000000007413114323025026742 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-or-bbox-freetext.xml0000644000175000001440000000224213114323025027704 0ustar00kalxasusers00000000000000 brief dc:title foo ows:BoundingBox 47 -5 55 20 pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-or-nested-and.xml0000644000000000000000000000007413114323025026206 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-or-nested-and.xml0000644000175000001440000000321513114323025027151 0ustar00kalxasusers00000000000000 full dc:type http://purl.org/dc/dcmitype/Image dc:type http://purl.org/dc/dcmitype/Dataset dc:title Mauris% dc:title %neque pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-filter-or-title-abstract.xml0000644000000000000000000000007413114323025027106 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/GetRecords-filter-or-title-abstract.xml0000644000175000001440000000217213114323025030052 0ustar00kalxasusers00000000000000 full dc:title Mauris% dct:abstract foo pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-maxrecords.xml0000644000000000000000000000007413114323025024432 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/GetRecords-maxrecords.xml0000644000175000001440000000114713114323025025377 0ustar00kalxasusers00000000000000 full pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/GetRecords-requestid.xml0000644000000000000000000000007413114323025024270 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/GetRecords-requestid.xml0000644000175000001440000000123013114323025025226 0ustar00kalxasusers00000000000000 full pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/Harvest-default.xml0000644000000000000000000000007413114323025023262 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/Harvest-default.xml0000644000175000001440000000150313114323025024223 0ustar00kalxasusers00000000000000 http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/examples-ISO19139/dataset2_minimalst.xml http://www.isotc211.org/schemas/2005/gmd/ application/xml pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/Harvest-response-handler.xml0000644000000000000000000000007413114323025025107 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/Harvest-response-handler.xml0000644000175000001440000000150713114323025026054 0ustar00kalxasusers00000000000000 http://kralidis.ca/pycsw/trunk/tests/test_iso.xml http://www.isotc211.org/schemas/2005/gmd/ application/xml mailto:tkralidi pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/Transaction-delete.xml0000644000000000000000000000007413114323025023751 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/Transaction-delete.xml0000644000175000001440000000127713114323025024722 0ustar00kalxasusers00000000000000 apiso:Identifier 12345 pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/Transaction-insert.xml0000644000000000000000000000007413114323025024013 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/Transaction-insert.xml0000644000175000001440000000552113114323025024760 0ustar00kalxasusers00000000000000 12345 pycsw 2011-05-17 pycsw record 2011-05-17 Sample metadata record eng -180 180 -90 90 pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/Transaction-update-full.xml0000644000000000000000000000007413114323025024731 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/Transaction-update-full.xml0000644000175000001440000000552113114323025025676 0ustar00kalxasusers00000000000000 12345 pycsw 2011-05-17 pycsw record 2011-05-17 Sample metadata record eng -180 180 -90 90 pycsw-2.0.3/tests/suites/default/post/PaxHeaders.23451/Transaction-update-recordproperty.xml0000644000000000000000000000007413114323025027052 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/default/post/Transaction-update-recordproperty.xml0000644000175000001440000000150013114323025030010 0ustar00kalxasusers00000000000000 apiso:Title NEW_TITLE apiso:Identifier 12345 pycsw-2.0.3/tests/suites/PaxHeaders.23451/dif0000644000000000000000000000007413114323025015556 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/dif/0000755000175000001440000000000013114323025016575 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/dif/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025017740 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/dif/default.cfg0000644000175000001440000000560313114323025020706 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/dif/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/dif/PaxHeaders.23451/post0000644000000000000000000000007413114323025016543 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/dif/post/0000755000175000001440000000000013114323025017562 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/dif/post/PaxHeaders.23451/DescribeRecord.xml0000644000000000000000000000007413114323025022221 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/dif/post/DescribeRecord.xml0000644000175000001440000000102413114323025023160 0ustar00kalxasusers00000000000000 dif:DIF pycsw-2.0.3/tests/suites/dif/post/PaxHeaders.23451/GetCapabilities.xml0000644000000000000000000000007413114323025022373 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/dif/post/GetCapabilities.xml0000644000175000001440000000103413114323025023333 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/suites/dif/post/PaxHeaders.23451/GetRecords-filter-bbox.xml0000644000000000000000000000007413114323025023616 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/dif/post/GetRecords-filter-bbox.xml0000644000175000001440000000205613114323025024563 0ustar00kalxasusers00000000000000 brief ows:BoundingBox 47 -5 55 20 pycsw-2.0.3/tests/suites/PaxHeaders.23451/ebrim0000644000000000000000000000007413114323025016112 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/ebrim/0000755000175000001440000000000013114323025017131 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/ebrim/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025020274 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/ebrim/default.cfg0000644000175000001440000000571713114323025021250 0ustar00kalxasusers00000000000000# ================================================================= # # $Id: default.cfg 366 2011-11-24 21:52:13Z tomkralidis $ # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/fgdc/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true profiles=ebrim [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/ebrim/PaxHeaders.23451/post0000644000000000000000000000007413114323025017077 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/ebrim/post/0000755000175000001440000000000013114323025020116 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/ebrim/post/PaxHeaders.23451/DescribeRecord.xml0000644000000000000000000000007413114323025022555 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/ebrim/post/DescribeRecord.xml0000644000175000001440000000112213114323025023513 0ustar00kalxasusers00000000000000 rim:RegistryObject pycsw-2.0.3/tests/suites/ebrim/post/PaxHeaders.23451/GetCapabilities.xml0000644000000000000000000000007413114323025022727 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/ebrim/post/GetCapabilities.xml0000644000175000001440000000103413114323025023667 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/suites/ebrim/post/PaxHeaders.23451/GetRecords-filter-bbox-full.xml0000644000000000000000000000007413114323025025112 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/ebrim/post/GetRecords-filter-bbox-full.xml0000644000175000001440000000205113114323025026052 0ustar00kalxasusers00000000000000 full ows:BoundingBox 47 -5 55 20 pycsw-2.0.3/tests/suites/ebrim/post/PaxHeaders.23451/GetRecords-filter-bbox.xml0000644000000000000000000000007413114323025024152 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/ebrim/post/GetRecords-filter-bbox.xml0000644000175000001440000000205213114323025025113 0ustar00kalxasusers00000000000000 brief ows:BoundingBox 47 -5 55 20 pycsw-2.0.3/tests/suites/PaxHeaders.23451/fgdc0000644000000000000000000000007413114323025015717 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/fgdc/0000755000175000001440000000000013114323025016736 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/fgdc/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025020101 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/fgdc/default.cfg0000644000175000001440000000560413114323025021050 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/fgdc/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/fgdc/PaxHeaders.23451/post0000644000000000000000000000007413114323025016704 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/fgdc/post/0000755000175000001440000000000013114323025017723 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/fgdc/post/PaxHeaders.23451/DescribeRecord.xml0000644000000000000000000000007413114323025022362 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/fgdc/post/DescribeRecord.xml0000644000175000001440000000102513114323025023322 0ustar00kalxasusers00000000000000 fgdc:metadata pycsw-2.0.3/tests/suites/fgdc/post/PaxHeaders.23451/GetCapabilities.xml0000644000000000000000000000007413114323025022534 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/fgdc/post/GetCapabilities.xml0000644000175000001440000000103413114323025023474 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/suites/fgdc/post/PaxHeaders.23451/GetRecords-filter-bbox.xml0000644000000000000000000000007413114323025023757 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/fgdc/post/GetRecords-filter-bbox.xml0000644000175000001440000000204313114323025024720 0ustar00kalxasusers00000000000000 brief ows:BoundingBox 47 -5 55 20 pycsw-2.0.3/tests/suites/PaxHeaders.23451/gm030000644000000000000000000000007413114323025015562 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/gm03/0000755000175000001440000000000013114323025016601 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/gm03/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025017744 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/gm03/default.cfg0000644000175000001440000000560413114323025020713 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/gm03/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/gm03/PaxHeaders.23451/post0000644000000000000000000000007413114323025016547 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/gm03/post/0000755000175000001440000000000013114323025017566 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/gm03/post/PaxHeaders.23451/GetCapabilities.xml0000644000000000000000000000007413114323025022377 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/gm03/post/GetCapabilities.xml0000644000175000001440000000103413114323025023337 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/suites/gm03/post/PaxHeaders.23451/GetRecords-filter-bbox.xml0000644000000000000000000000007413114323025023622 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/gm03/post/GetRecords-filter-bbox.xml0000644000175000001440000000204113114323025024561 0ustar00kalxasusers00000000000000 brief ows:BoundingBox 47 -5 55 20 pycsw-2.0.3/tests/suites/PaxHeaders.23451/harvesting0000644000000000000000000000007413114323025017166 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/0000755000175000001440000000000013114323025020205 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/harvesting/PaxHeaders.23451/data0000644000000000000000000000007413114323025020077 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/data/0000755000175000001440000000000013114323025021116 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/harvesting/data/PaxHeaders.23451/.gitkeep0000644000000000000000000000007413114323025021605 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/data/.gitkeep0000644000175000001440000000000013114323025022535 0ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/harvesting/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025021350 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/default.cfg0000644000175000001440000000563613114323025022324 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2012 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true profiles=apiso [manager] transactions=true allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/harvesting/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/harvesting/PaxHeaders.23451/get0000644000000000000000000000007413114323025017745 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/get/0000755000175000001440000000000013114323025020764 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/harvesting/get/PaxHeaders.23451/requests.txt0000644000000000000000000000007413114323025022436 xustar0030 atime=1496426329.781425316 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/get/requests.txt0000644000175000001440000000155613114323025023407 0ustar00kalxasusers00000000000000Exception-Harvest-missing-resourcetype,PYCSW_SERVER?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest Exception-Harvest-missing-source,PYCSW_SERVER?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms Exception-Harvest-invalid-resourcetype,PYCSW_SERVER?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms1234&source=http://demo.pycsw.org/cite/csw Exception-Harvest-waf-no-records-found,PYCSW_SERVER?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=http://demo.pycsw.org Exception-Harvest-waf-bad-value,PYCSW_SERVER?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=badvalue pycsw-2.0.3/tests/suites/harvesting/PaxHeaders.23451/post0000644000000000000000000000007413114323025020153 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/0000755000175000001440000000000013114323025021172 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Clear-000-delete-all.xml0000644000000000000000000000007413114323025024303 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Clear-000-delete-all.xml0000644000175000001440000000141113114323025025242 0ustar00kalxasusers00000000000000 dc:identifier % pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Exception-Havest-csw-404.xml0000644000000000000000000000007413114323025025237 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Exception-Havest-csw-404.xml0000644000175000001440000000140013114323025026174 0ustar00kalxasusers00000000000000 http://demo.pycsw.org/gisdata/cswBAD http://www.opengis.net/cat/csw/2.0.2 application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/GetCapabilities.xml0000644000000000000000000000007413114323025024003 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/GetCapabilities.xml0000644000175000001440000000103413114323025024743 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/GetDomain-parameter.xml0000644000000000000000000000007413114323025024577 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/GetDomain-parameter.xml0000644000175000001440000000063513114323025025545 0ustar00kalxasusers00000000000000 Harvest.ResourceType pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-csw-iso.xml0000644000000000000000000000007413114323025023750 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-csw-iso.xml0000644000175000001440000000073513114323025024717 0ustar00kalxasusers00000000000000 http://demo.pycsw.org/services/csw http://www.opengis.net/cat/csw/2.0.2 application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-csw-run1.xml0000644000000000000000000000007413114323025024043 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-csw-run1.xml0000644000175000001440000000137213114323025025010 0ustar00kalxasusers00000000000000 http://demo.pycsw.org/cite/csw http://www.opengis.net/cat/csw/2.0.2 application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-csw-run2.xml0000644000000000000000000000007413114323025024044 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-csw-run2.xml0000644000175000001440000000137213114323025025011 0ustar00kalxasusers00000000000000 http://demo.pycsw.org/cite/csw http://www.opengis.net/cat/csw/2.0.2 application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-dc.xml0000644000000000000000000000007413114323025022752 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-dc.xml0000644000175000001440000000143713114323025023721 0ustar00kalxasusers00000000000000 http://demo.pycsw.org/metadata/Clause_10.2.5.3.2_Example03_Full.xml http://www.opengis.net/cat/csw/2.0.2 application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-fgdc.xml0000644000000000000000000000007413114323025023267 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-fgdc.xml0000644000175000001440000000140513114323025024231 0ustar00kalxasusers00000000000000 http://demo.pycsw.org/metadata/CDC008.xml http://www.opengis.net/cat/csw/csdgm application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-iso.xml0000644000000000000000000000007413114323025023156 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-iso.xml0000644000175000001440000000142613114323025024123 0ustar00kalxasusers00000000000000 http://demo.pycsw.org/metadata/dataset2_minimalst.xml http://www.isotc211.org/schemas/2005/gmd/ application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-rdf.xml0000644000000000000000000000007413114323025023137 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-rdf.xml0000644000175000001440000000074413114323025024106 0ustar00kalxasusers00000000000000 http://demo.pycsw.org/metadata/dc-rdf.xml http://www.opengis.net/cat/csw/2.0.2 application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-sos100.xml0000644000000000000000000000007413114323025023411 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-sos100.xml0000644000175000001440000000067413114323025024362 0ustar00kalxasusers00000000000000 http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi http://www.opengis.net/sos/1.0 pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-sos200.xml0000644000000000000000000000007413114323025023412 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-sos200.xml0000644000175000001440000000066613114323025024364 0ustar00kalxasusers00000000000000 http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw http://www.opengis.net/sos/2.0 pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-waf.xml0000644000000000000000000000007413114323025023141 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-waf.xml0000644000175000001440000000061213114323025024102 0ustar00kalxasusers00000000000000 http://demo.pycsw.org/waf urn:geoss:waf pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-wcs.xml0000644000000000000000000000007413114323025023160 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-wcs.xml0000644000175000001440000000072613114323025024127 0ustar00kalxasusers00000000000000 http://demo.mapserver.org/cgi-bin/wcs http://www.opengis.net/wcs application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-wfs.xml0000644000000000000000000000007413114323025023163 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-wfs.xml0000644000175000001440000000075513114323025024134 0ustar00kalxasusers00000000000000 http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs http://www.opengis.net/wfs application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-wms-run1.xml0000644000000000000000000000007413114323025024055 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-wms-run1.xml0000644000175000001440000000141713114323025025022 0ustar00kalxasusers00000000000000 http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi http://www.opengis.net/wms application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-wms-run2.xml0000644000000000000000000000007413114323025024056 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-wms-run2.xml0000644000175000001440000000141713114323025025023 0ustar00kalxasusers00000000000000 http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi http://www.opengis.net/wms application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-wmts.xml0000644000000000000000000000007413114323025023356 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-wmts.xml0000644000175000001440000000075313114323025024325 0ustar00kalxasusers00000000000000 http://map1c.vis.earthdata.nasa.gov/wmts-geo/wmts.cgi http://www.opengis.net/wmts/1.0 application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-wps.xml0000644000000000000000000000007413114323025023175 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-wps.xml0000644000175000001440000000141513114323025024140 0ustar00kalxasusers00000000000000 http://cida.usgs.gov/gdp/utility/WebProcessingService http://www.opengis.net/wps/1.0.0 application/xml pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-zzz-post-GetRecords-filter-ows-dc.0000644000000000000000000000007413114323025030177 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-ows-dc.xml0000644000175000001440000000355413114323025031671 0ustar00kalxasusers00000000000000 full apiso:ServiceType OGC:SOS apiso:ServiceType OGC:WPS apiso:ServiceType OGC:WMS apiso:ServiceType OGC:WFS apiso:ServiceType OGC:CSW apiso:ServiceType OGC:WCS pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-zzz-post-GetRecords-filter-sos-abs0000644000000000000000000000007413114323025030274 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml0000644000175000001440000000261013114323025033456 0ustar00kalxasusers00000000000000 full apiso:Type service apiso:ServiceType OGC:SOS apiso:Abstract (groundwater( pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-zzz-post-GetRecords-filter-sos-dc.0000644000000000000000000000007413114323025030173 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-dc.xml0000644000175000001440000000222713114323025031661 0ustar00kalxasusers00000000000000 full apiso:Type service apiso:ServiceType OGC:SOS pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-zzz-post-GetRecords-filter-sos-iso0000644000000000000000000000007413114323025030321 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-iso.xml0000644000175000001440000000231213114323025032060 0ustar00kalxasusers00000000000000 full apiso:Type service apiso:ServiceType OGC:SOS pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-zzz-post-GetRecords-filter-wfs-iso0000644000000000000000000000007413114323025030314 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wfs-iso.xml0000644000175000001440000000231213114323025032053 0ustar00kalxasusers00000000000000 full apiso:Type service apiso:ServiceType OGC:WFS pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-zzz-post-GetRecords-filter-wms-dc.0000644000000000000000000000007413114323025030175 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-dc.xml0000644000175000001440000000222713114323025031663 0ustar00kalxasusers00000000000000 full apiso:Type service apiso:ServiceType OGC:WMS pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-zzz-post-GetRecords-filter-wms-iso0000644000000000000000000000007413114323025030323 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-iso.xml0000644000175000001440000000222313114323025032063 0ustar00kalxasusers00000000000000 full apiso:Type service apiso:ServiceType OGC:WMS pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Harvest-zzz-post-GetRecords-filter-wms-lay0000644000000000000000000000007413114323025030316 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml0000644000175000001440000000221713114323025032410 0ustar00kalxasusers00000000000000 full dc:type dataset csw:AnyText %nexrad% pycsw-2.0.3/tests/suites/harvesting/post/PaxHeaders.23451/Transaction-000-delete-all.xml0000644000000000000000000000007413114323025025542 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/harvesting/post/Transaction-000-delete-all.xml0000644000175000001440000000141113114323025026501 0ustar00kalxasusers00000000000000 dc:identifier % pycsw-2.0.3/tests/suites/PaxHeaders.23451/manager0000644000000000000000000000007413114323025016426 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/0000755000175000001440000000000013114323025017445 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/manager/PaxHeaders.23451/data0000644000000000000000000000007413114323025017337 xustar0030 atime=1496426329.777425232 30 ctime=1496426329.713423877 pycsw-2.0.3/tests/suites/manager/data/0000777000175000001440000000000013114323025020362 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/manager/data/PaxHeaders.23451/.gitkeep0000644000000000000000000000007413114323025021045 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/data/.gitkeep0000644000175000001440000000000013114323025021775 0ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/manager/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025020610 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/default.cfg0000644000175000001440000000563013114323025021556 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2012 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/manager/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true profiles=apiso [manager] transactions=true allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/manager/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/manager/PaxHeaders.23451/post0000644000000000000000000000007413114323025017413 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/0000755000175000001440000000000013114323025020432 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Clear-000-delete-all.xml0000644000000000000000000000007413114323025023543 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Clear-000-delete-all.xml0000644000175000001440000000141113114323025024502 0ustar00kalxasusers00000000000000 dc:identifier % pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/GetCapabilities.xml0000644000000000000000000000007413114323025023243 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/GetCapabilities.xml0000644000175000001440000000103413114323025024203 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/GetDomain-parameter.xml0000644000000000000000000000007413114323025024037 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/GetDomain-parameter.xml0000644000175000001440000000063513114323025025005 0ustar00kalxasusers00000000000000 Harvest.ResourceType pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-000-delete-all.xml0000644000000000000000000000007413114323025025002 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-000-delete-all.xml0000644000175000001440000000141113114323025025741 0ustar00kalxasusers00000000000000 dc:identifier % pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-dc-01-insert.xml0000644000000000000000000000007413114323025024603 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-dc-01-insert.xml0000644000175000001440000000251113114323025025544 0ustar00kalxasusers00000000000000 xyz pycsw Catalogue 2012-06-05 Sample metadata dataset imagery baseMaps earthCover BIL Vanda Lima en -90 -180 90 180 pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-dc-02-update-full.xml0000644000000000000000000000007413114323025025522 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-dc-02-update-full.xml0000644000175000001440000000251713114323025026471 0ustar00kalxasusers00000000000000 xyz THIS HAS BEEN UPDATED 2012-06-05 Sample metadata dataset imagery baseMaps earthCover BIL Vanda Lima en -90 -180 90 180 pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-fgdc-01-insert.xml0000644000000000000000000000007413114323025025120 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-fgdc-01-insert.xml0000644000175000001440000001246513114323025026072 0ustar00kalxasusers00000000000000 foorecord NOAA/ESRL Physical Sciences Division 20001201 NCEP Boulder, CO NOAA/ESRL Physical Sciences Division ftp://ftp.cdc.noaa.gov/Datasets/ncep/ http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep/ http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.html NCEP's twice-daily global analysis at 2.5&#176; resolution on pressure levels which is a product of their operational forecast system. Scientific research. Additional Fields: -----------------: StartDate: 19790101 StopDate: 20001201 Storage_Medium: online PSD Search Fields: Entry_ID: ncep.fgdc 19790101 20001201 Publication_Date: 20001201 Complete Irregular -180 180 90.00 -90.00 GCMD DIF 5.33 NCEP Air temperature Geopotential height Precipitable Water Content Precipitable water Content Relative humidity Sea level pressure Station pressure Surface potential temperature Surface Pressure Tropopause Pressure Tropopause temperature u-wind v-wind none Global none none none 19790101, 20001201 None None. Acknowledgement of PSD would appreciated in products derived from these data. PSD Data Management mailing address
NOAA/ESRL Physical Sciences Division
U.S. Dept. of Commerce
NOAA, R/PSD
325 Broadway
Boulder CO 80305 USA
(303) 497-6640 (303) 497-6020 esrl.psd.data@noaa.gov
None Unclassified None Data resides in netCDF files at PSD
Data QC'd at source. We have checked our stored values. None None None None 20001201 None None None None 9999 9999 None None None None 9999 PSD Data Management mailing address
NOAA/ESRL Physical Sciences Division
U.S. Dept. of Commerce
NOAA, Code R/PSD
325 Broadway
Boulder CO 80305 USA
(303) 497-7200 (303) 497-6020 esrl.psd.data@noaa.gov
No warranty expressed or implied.
20001201 PSD Data Management mailing address
NOAA/ESRL Physical Sciences Division
U.S. Dept. of Commerce
NOAA, Code R/PSD
325 Broadway
Boulder CO 80305 USA
(303) 497-7200 (303) 497-6020 esrl.psd.data@noaa.gov
FGDC Content Standards for Digital Geospatial Metadata FGDC-STD-001-1998 None Unclassified None
pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-fgdc-02-update-recprop.xml0000644000000000000000000000007413114323025026547 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-fgdc-02-update-recprop.xml0000644000175000001440000000164613114323025027520 0ustar00kalxasusers00000000000000 idinfo/citation/citeinfo/title NEW_TITLE dct:abstract NCEP% pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-fgdc-03-delete-all.xml0000644000000000000000000000007413114323025025626 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-fgdc-03-delete-all.xml0000644000175000001440000000133513114323025026572 0ustar00kalxasusers00000000000000 dc:identifier % pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-iso-00-delete-all.xml0000644000000000000000000000007413114323025025512 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-iso-00-delete-all.xml0000644000175000001440000000134013114323025026452 0ustar00kalxasusers00000000000000 apiso:Identifier % pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-iso-01-insert.xml0000644000000000000000000000007413114323025025007 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-iso-01-insert.xml0000644000175000001440000000552113114323025025754 0ustar00kalxasusers00000000000000 12345 pycsw 2011-05-17 pycsw record 2011-05-17 Sample metadata record eng -180 180 -90 90 pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-iso-02-update-full.xml0000644000000000000000000000007413114323025025726 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-iso-02-update-full.xml0000644000175000001440000000553113114323025026674 0ustar00kalxasusers00000000000000 12345 pycsw 2011-05-17 pycsw record UPDATED 2011-05-17 Sample metadata record eng -180 180 -90 90 pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-iso-03-update-recprop.xml0000644000000000000000000000007413114323025026437 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-iso-03-update-recprop.xml0000644000175000001440000000150013114323025027375 0ustar00kalxasusers00000000000000 apiso:Title NEW_TITLE apiso:Identifier 12345 pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-iso-04-update-recprop-no-matches.0000644000000000000000000000007413114323025027753 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-iso-04-update-recprop-no-matches.xml0000644000175000001440000000150713114323025031441 0ustar00kalxasusers00000000000000 apiso:Title NEW_TITLE apiso:Identifier non-existent pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-iso-05-delete.xml0000644000000000000000000000007413114323025024751 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-iso-05-delete.xml0000644000175000001440000000127713114323025025722 0ustar00kalxasusers00000000000000 apiso:Identifier 12345 pycsw-2.0.3/tests/suites/manager/post/PaxHeaders.23451/Transaction-xxx-delete-all.xml0000644000000000000000000000007413114323025025332 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/manager/post/Transaction-xxx-delete-all.xml0000644000175000001440000000141113114323025026271 0ustar00kalxasusers00000000000000 dc:identifier % pycsw-2.0.3/tests/suites/PaxHeaders.23451/oaipmh0000644000000000000000000000007413114323025016271 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/oaipmh/0000755000175000001440000000000013114323025017310 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/oaipmh/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025020453 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/oaipmh/default.cfg0000644000175000001440000000562513114323025021425 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true profiles=apiso #gzip_compresslevel=8 #spatial_ranking=true [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/oaipmh/PaxHeaders.23451/get0000644000000000000000000000007413114323025017050 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/oaipmh/get/0000755000175000001440000000000013114323025020067 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/oaipmh/get/PaxHeaders.23451/requests.txt0000644000000000000000000000007413114323025021541 xustar0030 atime=1496426329.781425316 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/oaipmh/get/requests.txt0000644000175000001440000000467713114323025022521 0ustar00kalxasusers00000000000000empty,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh empty_with_amp,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh& bad_verb,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=foo illegal_verb,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=foo&foo=bar Identify,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=Identify ListSets,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListSets ListMetadataFormats,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListMetadataFormats GetRecord_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-record GetRecord_bad_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-recordd GetRecord_oai_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=oai_dc GetRecord_iso,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=iso19139 ListIdentifiers_missing_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers ListIdentifiers_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=csw-record ListIdentifiers_iso,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=iso19139 ListIdentifiers_oai_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=oai_dc ListIdentifiers_bad_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=foo ListRecords_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=csw-record ListRecords_dc_bad_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=csw-recording ListRecords_oai_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=oai_dc ListRecords_iso19139,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=iso19139 pycsw-2.0.3/tests/suites/PaxHeaders.23451/repofilter0000644000000000000000000000007413114323025017167 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/repofilter/0000755000175000001440000000000013114323025020206 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/repofilter/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025021351 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/repofilter/default.cfg0000644000175000001440000000567613114323025022331 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/repofilter/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records filter=type = 'http://purl.org/dc/dcmitype/Dataset' [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/repofilter/PaxHeaders.23451/post0000644000000000000000000000007413114323025020154 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/repofilter/post/0000755000175000001440000000000013114323025021173 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/repofilter/post/PaxHeaders.23451/GetRecordById-masked.xml0000644000000000000000000000007413114323025024643 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/repofilter/post/GetRecordById-masked.xml0000644000175000001440000000100213114323025025576 0ustar00kalxasusers00000000000000 urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec summary pycsw-2.0.3/tests/suites/repofilter/post/PaxHeaders.23451/GetRecords-all.xml0000644000000000000000000000007413114323025023562 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/repofilter/post/GetRecords-all.xml0000644000175000001440000000120313114323025024520 0ustar00kalxasusers00000000000000 full pycsw-2.0.3/tests/suites/PaxHeaders.23451/sru0000644000000000000000000000007413114323025015625 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/sru/0000755000175000001440000000000013114323025016644 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/sru/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025020007 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/sru/default.cfg0000644000175000001440000000560313114323025020755 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/sru/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=pycsw Geospatial Catalogue identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/sru/PaxHeaders.23451/get0000644000000000000000000000007413114323025016404 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/sru/get/0000755000175000001440000000000013114323025017423 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/sru/get/PaxHeaders.23451/requests.txt0000644000000000000000000000007413114323025021075 xustar0030 atime=1496426329.781425316 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/sru/get/requests.txt0000644000175000001440000000113313114323025022035 0ustar00kalxasusers00000000000000explain,PYCSW_SERVER?config=tests/suites/sru/default.cfg&mode=sru search,PYCSW_SERVER?config=tests/suites/sru/default.cfg&mode=sru&version=1.1&operation=searchRetrieve&query=lor search_maxrecords,PYCSW_SERVER?config=tests/suites/sru/default.cfg&mode=sru&operation=searchRetrieve&query=lor&maximumRecords=2 search_startrecord_maxrecords,PYCSW_SERVER?config=tests/suites/sru/default.cfg&mode=sru&operation=searchRetrieve&query=lor&maximumRecords=2&startRecord=1 search_cql,PYCSW_SERVER?config=tests/suites/sru/default.cfg&mode=sru&operation=searchRetrieve&query=dc:title%20like%20'%lor%'&maximumRecords=5 pycsw-2.0.3/tests/suites/PaxHeaders.23451/utf-80000644000000000000000000000007413114323025015757 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/utf-8/0000755000175000001440000000000013114323025016776 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/utf-8/PaxHeaders.23451/default.cfg0000644000000000000000000000007413114323025020141 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/utf-8/default.cfg0000644000175000001440000000555513114323025021115 0ustar00kalxasusers00000000000000# ================================================================= # # Authors: Tom Kralidis # # Copyright (c) 2011 Tom Kralidis # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # ================================================================= [server] home=. url=http://localhost/pycsw/csw.py?config=tests/suites/utf-8/default.cfg mimetype=application/xml; charset=UTF-8 encoding=UTF-8 language=en-US maxrecords=10 #loglevel=DEBUG #logfile=/tmp/pycsw.log #ogc_schemas_base=http://foo federatedcatalogues=http://demo.pycsw.org/gisdata/csw pretty_print=true #gzip_compresslevel=8 #spatial_ranking=true [manager] transactions=false allowed_ips=127.0.0.1 [metadata:main] identification_title=ErrŹĆÅÓdd identification_abstract=pycsw is an OGC CSW server implementation written in Python identification_keywords=catalogue,discovery identification_keywords_type=theme identification_fees=None identification_accessconstraints=None provider_name=pycsw provider_url=http://pycsw.org/ contact_name=Kralidis, Tom contact_position=Senior Systems Scientist contact_address=TBA contact_city=Toronto contact_stateorprovince=Ontario contact_postalcode=M9C 3Z9 contact_country=Canada contact_phone=+01-416-xxx-xxxx contact_fax=+01-416-xxx-xxxx contact_email=tomkralidis@gmail.com contact_url=http://kralidis.ca/ contact_hours=0800h - 1600h EST contact_instructions=During hours of service. Off on weekends. contact_role=pointOfContact [repository] # sqlite database=sqlite:///tests/suites/cite/data/records.db # postgres #database=postgres://username:password@localhost/pycsw table=records [metadata:inspire] enabled=false languages_supported=eng,gre default_language=eng date=2011-03-29 gemet_keywords=Utility and governmental services conformity_service=notEvaluated contact_name=National Technical University of Athens contact_email=tzotsos@gmail.com temp_extent=2011-02-01/2011-03-30 pycsw-2.0.3/tests/suites/utf-8/PaxHeaders.23451/post0000644000000000000000000000007413114323025016744 xustar0030 atime=1496426329.777425232 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/utf-8/post/0000755000175000001440000000000013114323025017763 5ustar00kalxasusers00000000000000pycsw-2.0.3/tests/suites/utf-8/post/PaxHeaders.23451/GetCapabilities.xml0000644000000000000000000000007413114323025022574 xustar0030 atime=1496426292.528636894 30 ctime=1496426292.528636894 pycsw-2.0.3/tests/suites/utf-8/post/GetCapabilities.xml0000644000175000001440000000103413114323025023534 0ustar00kalxasusers00000000000000 2.0.2 application/xml pycsw-2.0.3/tests/PaxHeaders.23451/index.html0000644000000000000000000000013213114323531015547 xustar0030 mtime=1496426329.781425316 30 atime=1496426329.717423961 30 ctime=1496426329.781425316 pycsw-2.0.3/tests/index.html0000644000175000001440000023546113114323531016531 0ustar00kalxasusers00000000000000 pycsw Tester

pycsw Tester


HTTP POST

Request Response
Server:

HTTP GET