Guidance Note 7-3

REPORT
373-7-3
Geomatics Guidance Note 7, part 3
EPSG Geodetic Parameter
Registry – Developer Guide
SEPTEMBER
2016
Feedback
IOGP welcomes feedback on our reports: [email protected]
Disclaimer
Whilst every effort has been made to ensure the accuracy of the information
contained in this publication, neither IOGP nor any of its Members past present or
future warrants its accuracy or will, regardless of its or their negligence, assume
liability for any foreseeable or unforeseeable use made thereof, which liability is
hereby excluded. Consequently, such use is at the recipient’s own risk on the basis
that any use by the recipient constitutes agreement to the terms of this disclaimer.
The recipient is obliged to inform any subsequent recipient of such terms.
This publication is made available for information purposes and solely for the private
use of the user. IOGP will not directly or indirectly endorse, approve or accredit the
content of any course, event or otherwise where this publication will be reproduced.
Copyright notice
The contents of these pages are © International Association of Oil & Gas Producers.
Permission is given to reproduce this report in whole or in part provided (i) that
the copyright of IOGP and (ii) the sources are acknowledged. All other rights are
reserved. Any other use requires the prior written permission of IOGP.
These Terms and Conditions shall be governed by and construed in accordance
with the laws of England and Wales. Disputes arising here from shall be exclusively
subject to the jurisdiction of the courts of England and Wales.
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
Geomatics
Guidance Note Number 7, part 3
EPSG Geodetic Parameter Registry - Developer Guide
Revision history:
Version
0.*
1.0
1.1
2.0
Date
To April 2009
May 2009
March 2010
October 2011
3.0
August 2012
3.1
January 2016
3.2
September 2016
Amendments
Draft versions of document.
First release of this document, GN7 part 3.
Correction to example code in section 4.3.1 Find Entity by BBOX
Updated API service methods and examples (sections 4 and 5) for updated client
software. Added Annex D, “Summary of August 2011 changes to registry service
message format”.
Updated API service methods and examples (sections 4 and 5), as well as other
references to GML, for move to GML 3.2.1. Added examples for polygons and
Annex E, "Summary of August 2012 Changes to Registry".
Added exclusions for unreleased data to example scripts (to avoid 404 error for
users without special access priviledges).
Supersession status removed from table in 3.1. Link to schema files in annex A.1
updated.
Page 1 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
CONTENTS
PREFACE ............................................................................................................................................................ 3
1
INTRODUCTION ....................................................................................................................................... 4
1.1
1.2
1.3
2
REGISTRY ELEMENTS ........................................................................................................................... 6
2.1
2.2
2.3
3
ENTITY LIFE CYCLE STATUS.................................................................................................................... 9
ACCESS CONTROL................................................................................................................................... 9
API SERVICE METHODS ...................................................................................................................... 11
4.1
4.2
4.3
4.4
4.5
5
OVERVIEW ............................................................................................................................................. 6
EBRIM ................................................................................................................................................... 6
REGISTRY COMPONENTS ........................................................................................................................ 7
ENTITY LIFE CYCLE STATUS AND ACCESS CONTROL ............................................................... 9
3.1
3.2
4
THE REGISTRY GEODETIC MODEL, EBRIM AND GML ........................................................................... 4
CONVENTIONS USED IN THIS GUIDANCE NOTE ...................................................................................... 4
GLOSSARY OF TERMS ............................................................................................................................. 5
BASIC QUERY MECHANISMS ................................................................................................................ 11
PROPERTY BASED QUERIES .................................................................................................................. 13
SPATIAL QUERIES ................................................................................................................................. 17
ASSOCIATION BASED QUERIES ............................................................................................................. 22
QUERY BY SLOT ................................................................................................................................... 25
API SERVICE EXAMPLES .................................................................................................................... 26
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
HOW TO... DEREFERENCE URNS.......................................................................................................... 26
HOW TO... CHECK THE DATASET VERSION .......................................................................................... 26
HOW TO... EXPORT A RELEASE ............................................................................................................ 27
HOW TO... RETRIEVE AN ENTITY IN ITS ENTIRETY .............................................................................. 27
HOW TO... FIND ALL CRS'S WITH A COMMON PROPERTY ................................................................... 29
HOW TO... FIND ALL ENTITIES IN A NAMED REGION ........................................................................... 30
HOW TO... SORT RESULT SETS (USING SORTBY) ................................................................................. 31
HOW TO... FILTER OUT DUPLICATE RESULTS (USING DISTINCT) ...................................................... 33
HOW TO... COMBINE SORTBY AND DISTINCT COMMANDS................................................................ 35
HOW TO... FIND VALID ENTITIES THAT REPLACE A DEPRECATED ENTITY ........................................... 37
HOW TO... RETRIEVE THE AREA POLYGONS ARCHIVE.......................................................................... 39
HOW TO… RETRIEVE A POLYGON METADATA RECORD FOR A KNOWN AREA OF USE ........................ 39
HOW TO… RETRIEVE A POLYGON GEOMETRY GIVEN A POLYGON METADATA RECORD IDENTIFIER . 40
ANNEX A – THE EPSG REGISTRY APPLICATION MODEL ................................................................. 41
A.1
A.2
A.3
GML MODEL AND APPLICATION SCHEMA ........................................................................................... 41
GEODETIC MODEL ................................................................................................................................ 42
EBRIM MODEL..................................................................................................................................... 44
ANNEX B – SLOTS USED IN THE EPSG REGISTRY ............................................................................... 51
SLOT NAMES AND DESCRIPTIONS..................................................................................................................... 51
ENTITIES CONTAINING SLOTS .......................................................................................................................... 52
ANNEX C – STANDARDS AND SPECIFICATIONS .................................................................................. 53
EBRIM AND WEB SERVICES ............................................................................................................................. 53
XML AND HTTP .............................................................................................................................................. 53
DATASET ENTITIES ........................................................................................................................................... 54
ANNEX D – SUMMARY OF AUGUST 2011 CHANGES TO REGISTRY SERVICE MESSAGE
FORMAT ........................................................................................................................................................... 55
ANNEX E – SUMMARY OF AUGUST 2012 CHANGES TO REGISTRY ................................................ 56
Page 2 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
PREFACE
The EPSG Geodetic Parameter Dataset, abbreviated to the EPSG Dataset, is a repository of parameters
required to:
• define a coordinate reference system (CRS) which ensures that coordinates describe position
unambiguously.
• define transformations and conversions that allow coordinates to be changed from one CRS to another
CRS. Transformations and conversions are collectively called coordinate operations.
The EPSG Dataset is maintained by the IOGP Geomatics Committee's Geodetic Subcommittee. It conforms to
ISO 19111 – Spatial referencing by coordinates. It is distributed in three ways:
• the EPSG Registry, in full the EPSG Geodetic Parameter Registry, a web-based delivery platform in
which the data is held in GML using the CRS entities described in ISO 19136.
• the EPSG Database, in full the EPSG Geodetic Parameter Database, a relational database structure
where the entities which form the components of CRSs and coordinate operations are in separate
tables, distributed as an MS Access database;
• in a relational data model as SQL scripts which enable a user to create an Oracle, MySQL,
PostgreSQL or other relational database and populate that database with the EPSG Dataset;
IOGP Geomatics Guidance Note 7 is a multi-part document for users of the EPSG Dataset.
•
Part 1, Using the Dataset, sets out detailed information about the Dataset and its content, maintenance
and terms of use.
•
Part 2, Formulas, provides a detailed explanation of formulas necessary for executing coordinate
conversions and transformations using the coordinate operation methods supported in the EPSG
dataset. Geodetic parameters in the Dataset are consistent with these formulas.
•
Part 3, Registry Developer Guide, (this document), is primarily intended to assist computer
application developers who wish to use the API of the Registry to query and retrieve entities and
attributes from the dataset.
•
Part 4, Database Developer Guide, is primarily intended to assist computer application developers
who wish to use the Database or its relational data model to query and retrieve entities and attributes
from the dataset.
The complete texts may be found at http://www.epsg.org/Guidancenotes.aspx. The terms of use of the EPSG
Dataset are also available at http://www.epsg.org/Termsofuse.aspx.
In addition to these documents, the Registry user interface contains online help and the Database user interface
includes context-sensitive help accessed by left-clicking on any label.
This Part 3 of the multipart Guidance Note is primarily intended to assist computer application developers in
using the EPSG geodetic parameter registry. It may also be useful to other users of the data. Readers are
recommended to have read Part 1 of the guidance note before this part. Part 4 section 2 may also serve to
provide tips for searching and its annex E examples that, with modification, may be applied to the registry.
Page 3 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
1
INTRODUCTION
1.1
The Registry Geodetic Model, ebRIM and GML
The EPSG Registry geodetic model is in accordance with OGC Abstract Specification Topic 2, which, in turn,
is equivalent to “ISO 19111:2007 Geographic information – Spatial referencing by coordinates” and has been
implemented in GML through “ISO 19136 Geographic information – Geographic mark-up language (GML)”.
The EPSG Registry model implementation contains a number of additional object types intended for data
management or life cycle management purposes. These are detailed in Annexes A and B.
The EPSG Registry is based on the ebRIM 3.0 specification, a copy of which is available at http://docs.oasisopen.org/regrep/v3.0/specs/regrep-rim-3.0-os.pdf.
All EPSG Registry entities have been encoded in GML 3.2.1. See Annex C for a reference to the defining
documentation.
The registry uses a propriatory product, INdicio, to manage web service interfacing. The INdicio software was
updated in August 2011. As a consequence of this upgrade the registry service interface message content has
changed significantly. The API message content changes are summarised in Annex D.
In August 2012 the EPSG GML schema were changed. See Annex E for a summary of changes. A link to the
schema files is in annex A.1.
1.2
Conventions Used in This Guidance Note
Instructions in this manual were written for a Windows environment; some things may be different in a
UNIX/Linux environment. Please make appropriate changes as necessary, such as replacing %STR% with
“$STR” in commands, replacing “\” with “/” in file names, and replacing “.bat” with “.sh” in file extensions.
The following text formatting conventions are used throughout this Guidance Note:
•
Folder names are indicated in bold ...\<Tomcat>\bin and file names are indicated in italic, for example:
server.xml.
•
Menu names and application names use a sans serif bold italic font.
•
Interface control names use a sans serif italic font.
•
Interface [Button] names and keyboard [Key] names are enclosed in square brackets.
•
Code samples, and XML element and attribute names, are shown in a fixed width font.
•
Code elements that are [optional] are indicated with square brackets.
•
Code elements to be replaced with <user_values> are indicated in angle brackets.
Note Notes are used to highlight important information.
Page 4 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
1.3
Glossary of terms
Term
Definition
valid entities
A valid entity is one that, at this moment, contains numerically and contextually
correct information. Some valid entities may be superseded or retired in practical
usage, but they remain valid in terms of dataset content. A valid entity has a
deprecation status of “false”.
invalid entities
An invalid entity is one that contains a significant error and has been withdrawn from
the EPSG Dataset content. It should not be used for the production of new data. It is
not physically withdrawn from the registry and may be referenced for historical
purposes. Invalid entities have a deprecation status of “true”.
See Guidance Note 7 part 1 for the deprecation policy applied to the EPSG Dataset.
guest user
A guest user is any user who does not have an account as a registered user or a
registered user who is not logged in.
registered user
A registered user is any user who has registered an account with a registry and who is
logged in.
A registered user may export the registry as a GML dictionary.
GML schema
The GML schema describes at a relatively high level of abstraction, and provides a
way to validate, the geodetic data in terms of the structure of the information,
constraints on the structure, and the content of a GML document.
application schema
An application schema extends the GML schema with domain-specific extensions held
in metadata.
GML document
A GML document is an XML string following the provisions of ISO 19136 and the
Geography Markup Language (GML) Encoding Specification, and with a defined
GML schema.
RepositoryItem
A RepositoryItem is a GML document describing a dataset entity. It has metadata
contained in an associated ExtrinsicObject.
See also: Section 2: “RepositoryItems”
RegistryObject
A RegistryObject is an entity that contains metadata about a RepositoryItem and can
be used to retrieve the RepositoryItem from the registry.
See also: Section 2, figures 1 and 2.
ExtrinsicObject
An ExtrinsicObject is a specific type of RegistryObject that is associated with a
RepositoryItem.
See also: Section 2: “ExtrinsicObject”
Association
An Association describes a many-to-many relationship among RegistryObjects.
See also: Chapter 2: “Association”
Classification
A Classification is a specialized form of Association that is used to classify
RegistryObjects in some way.
See also: Chapter 2: “Classification”
Slot
A Slot is a means of adding attributes to RegistryObjects.
See also: Chapter 2: “Slots”
area of use
Area entities describe the region(s) to which geodetic entities, for example a
Coordinate Reference System, may be applicable.
See Guidance Note 7 part 1 for further information.
Page 5 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
2
2.1
REGISTRY ELEMENTS
Overview
The EPSG Registry stores GML documents as RepositoryItems in a repository, and standardized metadata
describing the content as RegistryObjects in a registry. Both the registry and the repository are components of
the EPSG Registry itself.
Figure 1: EPSG Registry overview
2.2
ebRIM
The registry component is based on the ebRIM 3.0 specification, a copy of which is available at
http://docs.oasis-open.org/regrep/v3.0/specs/regrep-rim-3.0-os.pdf. Some key concepts and information from
the specification are described here in order to provide context and define terminology that will be used
throughout this guide.
The ebRIM specification describes an information model for the classes, objects, associations, services, etc. that
are needed to support an information system that securely organizes and manages different types of content and
the metadata describing it. An ebXML registry is capable of storing any type of electronic content such as XML
documents, text documents, images, sound, and video
The following UML diagram shows the relationship between the relevant generic ebRIM objects implemented
in the EPSG Registry and described in the following sections:
Page 6 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
Figure 2: ebRIM objects implemented in the EPSG Registry
2.3
2.3.1
Registry Components
RegistryObjects
A RegistryObject is an abstract class. For the EPSG Registry, the most significant RegistryObject are the
ExtrinsicObjects which are derived from it.
2.3.2
ExtrinsicObject
An ExtrinsicObject is a specialization of the RegistryObject class. An ExtrinsicObject contains the metadata for
a RepositoryItem. Each ExtrinsicObject may be associated to a related RepositoryItem which is held in the
repository. No other ExtrinsicObject may be associated with that RepositoryItem. Each ExtrinsicObject has an
identifier that is used to refer to its associated RepositoryItem, if one exists.
ExtrinsicObjects may be thought of as the index cards stored in the card catalogue of a library, where each
index card describes one book that is stored in the library. In the same way, each ExtrinsicObject stored in the
registry contains the metadata for one GML document stored in the repository as a RepositoryItem. Every
RepositoryItem must have an ExtrinsicObject that describes it in the same way that every book in a library must
have an index card in the card catalogue.
2.3.3
RepositoryItems
A geodetic entity in the dataset is defined through data in a GML document, that document being stored in the
repository as a RepositoryItem. RepositoryItems may be thought of as the books in a library; each book is
described on one index card in the card catalogue. In the EPSG Registry, RepositoryItems are GML version
3.2.1 documents.
.
Page 7 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
2.3.4
Association
A RegistryObject may be connected to other RegistryObjects through an Association. Associations define a
many-to-many relationship between RegistryObjects. An Association represents a relationship between a
sourceObject and a targetObject. It is important to know which object is the source and which is the target, as
an Association has the concept of direction.
Associations may be thought of as “see also” references which may be noted on the index card of one book in
order to refer to another book that is related to it in some way.
Each Association must have an attribute which identifies what type of association it is. The value of the
associationType attribute is specified by the identifier (ID) of one of the ClassificationNodes in the Association
type ClassificationScheme.
2.3.5
Classification
A Classification is a specialized form of Association. RegistryObjects may be classified in many ways such as
by industry, product, geographical location, and so on. Classification may be thought of as the taxonomy used
to organize the RegistryObjects in the same way that the Dewey Decimal Classification System is used to
organize the books in a library.
The information model defines classes and relationships so that both single level and multi-level Classifications
can be supported. For example, in the model that underlies the EPSG Registry, Coordinate Reference Systems
are classified as GeodeticCRS, ProjectedCRS, EngineeringCRS and VerticalCRS.
A general ClassificationScheme can be viewed as a tree structure of ClassificationNodes that describes a
hierarchical taxonomy for organizing and classifying RegistryObjects by referencing a node within the scheme.
2.3.6
Slots
Slots provide a means to add attributes to RegistryObject instances, thus providing extensibility of the
information model. Slots may be thought of as spaces on an index card that a librarian or a reader may fill in
with notes that provide additional information about the book described on the card. See Annex B for a list of
slots used in the EPSG Registry.
Page 8 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
3
ENTITY LIFE CYCLE STATUS AND ACCESS CONTROL
3.1
Entity life cycle status
The life-cycle of an entity is defined by the status attribute of its RegistryObject. Each RegistryObject instance
has a life cycle status attribute. The status of a RegistryObject will change throughout its life cycle. The
following table lists the possible states that a RegistryObject may be in as defined by the value of its status
attribute and relates them to typical EPSG terminology.
Entity
Validity
EPSG term
Registry life-cycle status
Description
Valid
Published
Approved
Retired
Superseded with
supersessionType property =
“Retirement”
Invalid
Deprecated
Deprecated
Not
released
Pending
Submitted
An entity that has been publicly released
and which has not been deprecated.
A released entity describing information
that has been withdrawn by its information
source; it may, or may not, have been
replaced. The entity may be referenced by
old datasets and is still valid in the sense
that it is free from errors. It should no longer
be used for new datasets.
Entities that have been identifed as invalid.
Deprecated entities contain significant error
and should only be used when documenting
or reversing the use of the entity that was
made before it was declared invalid.
Deprecated entities remain in the dataset.
Entities that have not yet been published.
They may be either entirely new entities or
versions of valid entities with minor
amendments applied.
Valid(R)
From the perspective of the user, the EPSG Dataset comprises of valid and deprecated records, but excludes
pending data.
3.2
Access control
The access control levels for the EPSG Registry are dependent upon user status and entity status.
3.2.1
API access to records
Through the API it is possible to access all Valid records as well as Deprecated records. Records with a status
of ‘Submitted’ cannot be accessed through the API.
3.2.2
Graphic User Interface access to records
The GUI is accessible through an internet browser using the URL http://www-epsg-registry.org. It offers a
facility to browse contents, generate reports, and export a GML Dictionary of individual entities or of the
complete EPSG Dataset. For members of the OGP Geodesy Subcommittee only, it additionally allows
facilities for data maintenance. Only OGP Geodesy Subcommittee members have access to pending records
(records with status of 'Submitted').
The following user statuses are available:
• Guest User
• Registered User
3.2.2.1
GUI Guest User
Guest access is the default access level to the GUI. The Guest users are users that do not have a registered
account in the EPSG Registry or are Registered Users who are accessing the registry without logging in. Guest
Page 9 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
Users have access only to Valid entities; they do not have access to records with status of ‘Deprecated’ or
‘Submitted’. They can download GML dictionaries of individual Valid entities but not of the whole dataset.
3.2.2.2
GUI Registered User
Registered Users are users that have registered a user account with the EPSG Registry and have logged in
through the GUI. The EPSG Registry maintains a list of user accounts. Registered Users are able to access
both Valid and (at their option) ‘Deprecated’ records, but are not able to access records with status of
‘Submitted’. Registered Users are able download GML dictionaries of individual Valid or ‘Deprecated’ entities
and to use the capability to export the full dataset as a GML dictionary or as a SQL script
To apply for a Registered User account with the EPSG Registry:
1)
Open a browser window and enter the address for the EPSG Geodetic Parameter Registry:
http://www.epsg-registry.org/
2)
Click on the link to (login or register);
3)
On the Registry Login page, click on the link to Register as a new user;
4)
Read through and accept the Terms of Use for the EPSG Geodetic Parameter Registry;
5)
Fill in all the required fields in the form and add any additional information as desired;
6)
Submit the form to create an account.
Page 10 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
4
API SERVICE METHODS
The EPSG Registry API is strictly read-only; it only supports finding and retrieving of entities from the
database. This section lists the service methods provided by the API and describes how to use them. In the
following examples, <host> is the IP address for the registry, and <port> is the INdicio port number. For the
EPSG Registry the port number is not necessary.
GML 3.1.1 is used for queries because the ebRIM Profile dictates the use
of GML 3.1.1. GML 3.2 is used to define entities in the EPSG Geodetic
Parameter Dataset because GML 3.2 is the application schema that was
chosen for the registry model. A copy of the application schema is
contained within the Developer Guide Package.
By default, queries from registered users will return both valid and
deprecated (invalid) entities. Deprecated entities include significantly
erroneous information and, in general, should not be used. Therefore, in
general, queries from registered users should filter out entities with the
status of ‘Deprecated’. There may, however, occasionally be a need to
use the information in a deprecated entity, for example to rework
computations which used the erroneous information before the entity was
deprecated.
The Application Model for the EPSG Registry is described in Annex A.
4.1
Basic Query Mechanisms
Two methods of query are used to access ExtrinsicObjects and RepositoryItems respectively:
Figure 3: Registry query mechanisms
Page 11 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
4.1.1
GetRecords
The query endpoint allows a user to execute a number of different requests against the registry service
(INdicio). The query can be executed by performing an HTTP GET or POST request on the following URL:
HTTP://<host>:<port>/indicio/query
For the EPSG Registry :<port> is not required (as it uses the default port 80). The following URL is used:
http://www.epsg-registry.org/indicio/query
For POST the desired query is attached in the message body (XML), and for GET the correct KVP parameters
are specified. In most cases a GetRecords (POST), GetRecordById (GET), or GetRepositoryItem
(GET) request is used to query the registry and retrieve the desired ebRIM records or underlying GML data.
4.1.1.1
GetRecordById
The GetRecordById method retrieves a single ebRIM metadata record for an entity. To execute a
GetRecordById query, perform an HTTP GET request on the following URL:
http://<host>:<port>/indicio/query?request=GetRecordById&id=[ID]&ElementSetName
=full
[ID] is the URN identifier of the item to be retrieved, and ElementSetName specifies the amount of
information INdicio will return about the object (allowed values are full, summary, and brief).
Specifying ElementSetName=brief returns the following information:
Information
Description
rim:RegistryObject/@id
the identifier for the object
rim:RegistryObject/@objectType
a URN from the ObjectType ClassificationScheme
rim:RegistryObject/@status
a URN from the StatusType ClassificationScheme
rim:RegistryObject/rim:VersionInfo
the object specific version details
Specifying ElementSetName=summary returns the same amount of information as for the brief view, plus
the following:
Information Level
Description
rim:RegistryObject/rim:Slot
additional entity properties
rim:RegistryObject/rim:Name
a short descriptive name for the object
rim:RegistryObject/rim:Description
a description of the object
Specifying an ElementSetName=full returns a complete representation of all entity properties.
4.1.2
GetRepositoryItem
The GetRepositoryItem method retrieves the definitive GML form of an entity through an HTTP GET
request using the id of the related ExtrinsicObject.
To execute a GetRepositoryItem query, perform an HTTP GET on the following URL:
http://<host>:<port>/indicio/query?request=GetRepositoryItem&id=[ID]
This will return the RepositoryItem with the specified [ID]. The mime type of the HTTP response will be the
mime type of the ExtrinsicObject. For example, the request:
Page 12 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
http://www.epsg-registry.org/indicio/query?request=GetRepositoryItem&id=
urn:ogc:def:crs:EPSG::4610
will return the repository GML data for CRS code 4610.
4.2
Property Based Queries
The following is a case-insensitive query that will return a list of all entities that have the string “paris” in
either their Name or Description:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Query on Entity by matching a search term to its Name or Description
property. -->
<Query typeNames="wrs:ExtrinsicObject rim:ClassificationNode_cnode3_cnode5">
<?indicio-distinct-values true?>
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- Search the entity's textual content using wildcards -->
<ogc:Or>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/wrs:ExtrinsicObject/rim:Name/rim:LocalizedS
tring@value</ogc:PropertyName>
<ogc:Literal>*paris*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/wrs:ExtrinsicObject/rim:Description/rim:Loc
alizedString@value</ogc:PropertyName>
<ogc:Literal>*paris*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Or>
<!-- Restrict ObjectType of Entity to an EPSG entity type; this
excludes EPSG Metadata record types such as Change Request,
Deprecation, etc. -->
<ogc:And>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$cnode3/@parent</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:ObjectType:GML:GeodeticEntity</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:Or>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@objectType</ogc:Proper
tyName>
<ogc:PropertyName>/$cnode3/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:And>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@objectType</ogc:Proper
tyName>
<ogc:PropertyName>/$cnode5/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$cnode5/@parent</ogc:PropertyName>
<ogc:PropertyName>/$cnode3/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Or>
</ogc:And>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
Page 13 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
4.2.1
Find Entity by Type
Unless specified explicitly, queries will return both valid and deprecated (invalid) entities. Deprecated entities
include significantly erroneous information and in general should not be used. (There may occasional be a need
to use them to rework computations using the erroneous information). The following query will return a list of
all valid (i.e. not deprecated) Projected CRS entities.
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Query on Entity by entity-type. -->
<Query typeNames="wrs:ExtrinsicObject">
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- Specify the entity type via a URN from the ObjectType
ClassificationScheme -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@objectType</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:ObjectType:GML:ProjectedCRS</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:Not>
<ogc:Or>
<!-- Constrain the Status of the entity to be Valid ... -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Deprecated</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- ... and it must not be a new, unreleased, entity either -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Submitted</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Not>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
4.2.2
Find Entity by Code
The following query will return a list of entities with code “1250”:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<Query typeNames="wrs:ExtrinsicObject">
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>/wrs:ExtrinsicObject/@id</ogc:PropertyName>
<ogc:Literal>*:1250</ogc:Literal>
</ogc:PropertyIsLike>
<!-- Typically these metadata records (non-entities) would be
excluded from the result set -->
<ogc:Not>
Page 14 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
<ogc:Or>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@objectType</ogc:PropertyName>
<ogc:Literal>urn:xogp:def:ObjectType:EPSG:deprecation</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@objectType</ogc:PropertyName>
<ogc:Literal>urn:xogp:def:ObjectType:EPSG:supersession</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@objectType</ogc:PropertyName>
<ogc:Literal>urn:xogp:def:ObjectType:EPSG:ReleaseDelta</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Not>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
4.2.3
Find Entity by Type + Code
Because codes are only unique within an entity type, a query for entities with a specific code may return more
than one result. Qualifying a search by code tthrough adding criteria for the entity type or name will narrow the
search results. The following query will return the specific Coordinate Transformation with code “1250”:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Query on Entity Code and by ObjectType. By also constraining the results
by ObjectType we eliminate entities which are not of interest. -->
<Query typeNames="wrs:ExtrinsicObject">
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>/wrs:ExtrinsicObject/@id</ogc:PropertyName>
<ogc:Literal>*:1250</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@objectType</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:ObjectType:GML:CoordinateTransformation</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
4.2.4
Find Entity by Name + Type
The following query will return a list of any Projected CRS with the string “scotia” in its name that is also a
valid entity:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Query on Entity by matching a search-term to its Name or Alias property.
Page 15 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
-->
<Query typeNames="wrs:ExtrinsicObject">
<?indicio-distinct-values true?>
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- Specify the entity type via a URN from the ObjectType
ClassificationScheme -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@objectType</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:ObjectType:GML:ProjectedCRS</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:Or>
<!-- Search the textual content of Name and Alias properties -->
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/wrs:ExtrinsicObject/rim:Name/rim:LocalizedString/@value</ogc
:PropertyName>
<ogc:Literal>*scotia*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>wrs:ExtrinsicObject/rim:Slot[@name =
'EntityAlias']/rim:ValueList/rim:Value</ogc:PropertyName>
<ogc:Literal>*[*scotia*]*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Or>
<ogc:Not>
<ogc:Or>
<!-- Constrain the Status of the entity to be Valid ... -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Deprecated</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- ... and it must not be a new, unreleased, entity either -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Submitted</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Not>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
Page 16 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
4.3
Spatial Queries
Certain geodetic entity types in the EPSG Registry have an association with an Area (of use). The geodetic
entities associated with an Area are Coordinate Reference System, Datum and Coordinate Operation. All other
entity types (for example ellipsoid) are not associated with and Area. Areas in the EPSG Registry include a
textual description and bounding box coordinates; valid Areas will usually also have a polygon. See figure 4.
Figure 4: Object Relationships available for use in Spatial Queries
Spatial queries retrieve geodetic entities (CRS, datum, coordinate operation) from the dataset based on either
the bounding box or the geometry of the Area associated with the geodetic entity. Queries of this type involve
either entering the coordinates for a user-defined bounding box, or by specifying a user-defined geometry.
The supported GML Envelope and Geometry types that may be used in queries are:
gml:Envelope
gml:Point
gml:MultiPoint
gml:Polygon
gml:MultiPolygon
gml:LineString
gml:MultiLineString
The supported OGC Filter Spatial Operators are:
BBOX
Equals
Disjoint
4.3.1
Intersects
Touches
Crosses
Within
Contains
Overlaps
Querying Against an Area Envelope
4.3.1.1
Find Entity by BBOX
This query compares a search geometry, here a GML Envelope (or BBOX), against Area of Use Envelopes.
Entities are returned if their related Area of Use Envelope matches according to the chosen spatial operator,
here ogc:BBOX is used.
The following query will return all entities whose related Area of Use Envelope interacts with the defined
bounding box area (which contains the region around the City of Vancouver):
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
Page 17 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Use a Spatial query (BBOX) to match an Area record, then select the
"Valid" entity records that are related to the selected Area via an "Extent"
Association. -->
<Query typeNames="wrs:ExtrinsicObject_entity_extent
rim:Association rim:ClassificationNode">
<ElementSetName typeNames="entity">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<ogc:And>
<!-- The source of the association is the object we return -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>
/rim:Association/@sourceObject
</ogc:PropertyName>
<ogc:PropertyName>/$entity/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- The target of the association is the area specified
as search criteria (BBOX or Envelope) -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>
/rim:Association/@targetObject
</ogc:PropertyName>
<ogc:PropertyName>/$extent/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- The association type must be correct -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>
/rim:Association/@associationType
</ogc:PropertyName>
<ogc:Literal>
urn:x-ogp:def:AssociationType:EPSG:Extent
</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- Specify that the query is against EPSG Area records -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$extent/@objectType</ogc:PropertyName>
<ogc:Literal>urn:x-ogp:def:ObjectType:EPSG:area</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- Specify the bounding box for the search -->
<ogc:BBOX>
<ogc:PropertyName>
/$extent/rim:Slot[@name =
'http://www.opengis.net/gml/Envelope']
/wrs:ValueList/wrs:AnyValue
</ogc:PropertyName>
<gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326">
<gml:lowerCorner>49.1 -123.3</gml:lowerCorner>
<gml:upperCorner>49.3 -122.8</gml:upperCorner>
</gml:Envelope>
</ogc:BBOX>
</ogc:And>
<ogc:Not>
<ogc:Or>
<!-- Constrain the Status of the entity to be Valid ... -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Deprecated</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- ... and it must not be a new, unreleased, entity either -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Submitted</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Not>
<ogc:And>
<!-- Find the classification node for the object type -->
<ogc:PropertyIsEqualTo>
Page 18 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
<ogc:PropertyName>/rim:ClassificationNode/@id</ogc:PropertyName>
<ogc:PropertyName>/$entity/@objectType</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:Or>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>
/rim:ClassificationNode/@path
</ogc:PropertyName>
<ogc:Literal>
/urn:oasis:names:tc:ebxmlregrep:classificationScheme:ObjectType/RegistryObject/ExtrinsicObject/GeodeticEntity*
</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>
/rim:ClassificationNode/@path
</ogc:PropertyName>
<ogc:Literal>
/urn:oasis:names:tc:ebxmlregrep:classificationScheme:ObjectType/RegistryObject/ExtrinsicObject/EPSGMetadata*
</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Or>
</ogc:And>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
4.3.1.2
Find Entity by Geometry
This query compares a search geometry, here a Polygon, against Area of Use Envelopes. Entities are returned
if their related Area of Use Envelope matches according to the chosen spatial operator, here ogc:Intersects is
used. Other filter operators may be combined with geometries to create more sophisticated queries.
The following query returns valid entities whose Area of Use Envelope intersects the region defined by the
coordinates of the specified polygon (in this example around Stonehenge in the UK):
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Use a Spatial operator to match an Area related to an entity of
interest; constrain the entity to have a Status of "Approved" or
"Superseded". -->
<Query typeNames="rim:Association wrs:ExtrinsicObject_entity_extent">
<ElementSetName typeNames="entity">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<ogc:And>
<!-- The source of the association is the object we return -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>
/rim:Association/@sourceObject
</ogc:PropertyName>
<ogc:PropertyName>/$entity/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- The target of the association is an area record -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>
/rim:Association/@targetObject
</ogc:PropertyName>
<ogc:PropertyName>/$extent/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- The association type must be 'Extent' -->
<ogc:PropertyIsEqualTo>
Page 19 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
<ogc:PropertyName>
/rim:Association/@associationType
</ogc:PropertyName>
<ogc:Literal>
urn:x-ogp:def:AssociationType:EPSG:Extent
</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- Specify that the spatial component of the query
is against EPSG Area of Use records -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$extent/@objectType</ogc:PropertyName>
<ogc:Literal>urn:x-ogp:def:ObjectType:EPSG:area</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!—Specify the spatial operation, here a polygon -->
<ogc:Intersects>
<ogc:PropertyName>
/$extent/rim:Slot[@name =
'http://www.opengis.net/gml/Envelope']
/wrs:ValueList/wrs:AnyValue
</ogc:PropertyName>
<gml:Polygon srsDimension="2"
srsName="urn:ogc:def:crs:EPSG::4326" gml:id="test1">
<gml:exterior>
<gml:LinearRing>
<gml:posList>51.17 -1.83 51.17 -1.815 51.181 -1.815
51.181 -1.83 51.17 -1.83</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</ogc:Intersects>
</ogc:And>
<ogc:Not>
<ogc:Or>
<!-- Constrain the Status of the entity to be Valid ... -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Deprecated</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- ... and it must not be a new, unreleased, entity either -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Submitted</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Not>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
4.3.2
4.3.2.1
Querying Against an Area Polygon
Find Entity by BBOX
This query compares a search geometry, here a GML Envelope (or BBOX), against Area of Use Polygon.
Entities are returned if their related Area of Use Polygon matches according to the chosen spatial operator, here
ogc:BBOX is used.
The following query will return all entities whose related Area of Use Polygon interacts – as defined by the
ogc:BBOX operator – with the defined bounding box area:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords
xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
outputFormat="application/xml; charset=UTF-8"
Page 20 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
service="WRS" version="1.0.1"
startPosition="1" maxRecords="10"
resultType="results">
<!-Use a Spatial operator to match an Area related to an entity of interest;
spatial query targets the AoU-related Polygon instead of AoU Envelope.
-->
<Query typeNames="Association_extentAssoc_extpolyAssoc
ExtrinsicObject_entity_extent_polygon">
<ElementSetName typeNames="entity">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<ogc:And>
<!-- The source of the association is the object we return -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>
/$extentAssoc/@sourceObject
</ogc:PropertyName>
<ogc:PropertyName>/$entity/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- The target of the association is an area record -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>
/$extentAssoc/@targetObject
</ogc:PropertyName>
<ogc:PropertyName>/$extent/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- The association type must be 'Extent' -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>
/$extentAssoc/@associationType
</ogc:PropertyName>
<ogc:Literal>
urn:x-ogp:def:AssociationType:EPSG:Extent
</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- specify that the entity is related to the Polygon metadata
record through the EPSG Area of Use records -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$extent/@objectType</ogc:PropertyName>
<ogc:Literal>urn:x-ogp:def:ObjectType:EPSG:area</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- source of the association is the Polygon metadata record -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>
/$extpolyAssoc/@sourceObject
</ogc:PropertyName>
<ogc:PropertyName>/$polygon/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- The target of the association is an area record -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>
/$extpolyAssoc/@targetObject
</ogc:PropertyName>
<ogc:PropertyName>/$extent/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- The association type must be 'Extends' -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>
/$extpolyAssoc/@associationType
</ogc:PropertyName>
<ogc:Literal>
urn:oasis:names:tc:ebxml-regrep:AssociationType:Extends
</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$polygon/@objectType</ogc:PropertyName>
<ogc:Literal>
urn:x-ogp:def:ObjectType:EPSG:extent-polygon
</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- specify the spatial operation, here Intersects -->
<ogc:Intersects>
<!-- identify target geometry, here it's a Polygon
in slot named '../spatial' -->
Page 21 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
<ogc:PropertyName>
/$polygon/rim:Slot[@name =
'http://purl.org/dc/terms/spatial']/wrs:ValueList/wrs:AnyValue
</ogc:PropertyName>
<gml:Polygon srsDimension="2"
srsName="urn:ogc:def:crs:EPSG::4326" gml:id="test2">
<gml:exterior>
<gml:LinearRing>
<gml:posList>51.17 -1.83 51.17 -1.815 51.181 -1.815
51.181 -1.83 51.17 -1.83</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</ogc:Intersects>
</ogc:And>
<ogc:Not>
<ogc:Or>
<!-- Constrain the Status of the entity to be Valid ... -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Deprecated</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- ... and it must not be a new, unreleased, entity either -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Submitted</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Not>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
4.4
Association Based Queries
Association based queries retrieve entities from the dataset based on their association to an entity specified in
the query. Queries of this type involve traversing one or more associations to retrieve entities associated with
the original entity.
4.4.1
Find CRS by Datum
The following query will find and return all the CRS entities that are based upon (use) the specified datum
code.
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Return all CRS entities which used the specified Datum. -->
<Query typeNames="rim:Association wrs:ExtrinsicObject">
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- The source of the association is the object we return -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@id</ogc:PropertyName>
<ogc:PropertyName>/rim:Association/@sourceObject</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@associationType</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:AssociationType:GML:Datum</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- The ID of a Datum must be specified -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@targetObject</ogc:PropertyName>
Page 22 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
<ogc:Literal>urn:ogc:def:datum:EPSG::6003</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
4.4.2
Find Projected CRS by Base CRS
The following query will return all the Projected CRS entities that use the base CRS having code “4600”:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Return all CRS entities which use the specified BaseCRS code. -->
<Query typeNames="rim:Association wrs:ExtrinsicObject">
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- The source of the association is the object we return -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@id</ogc:PropertyName>
<ogc:PropertyName>/rim:Association/@sourceObject</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@associationType</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:AssociationType:GML:BaseCRS</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- The ID of a BaseCRS must be specified -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@targetObject</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:crs:EPSG::4600</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
4.4.3
Find Coordinate Operation by Method Used
The following query will return coordinate operations that use the method having code “9664”:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Return all Coordinate Operation entities which use the specified Method
code. -->
<Query typeNames="rim:Association wrs:ExtrinsicObject">
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- The source of the association is the object we return -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@id</ogc:PropertyName>
<ogc:PropertyName>/rim:Association/@sourceObject</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@associationType</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:AssociationType:GML:Method</ogc:Literal>
Page 23 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
</ogc:PropertyIsEqualTo>
<!-- The ID of a Operation Method must be specified -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@targetObject</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:method:EPSG::9664</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
4.4.4
Find Coordinate Operation by CRS
The following query will return all coordinate operations that use the CRS having code “4973”:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Return all Coordinate Operation entities which use the specified Source
CRS code. -->
<Query typeNames="rim:Association wrs:ExtrinsicObject">
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- The source of the association is the object we return -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@id</ogc:PropertyName>
<ogc:PropertyName>/rim:Association/@sourceObject</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@associationType</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:AssociationType:GML:SourceCRS</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- The ID of a CRS must be specified -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@targetObject</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:crs:EPSG::4973</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
Note: Many transformation methods are reversible and allow the
coordinate transformation to be used both from CRS ‘A’ to CRS ‘B’ and
from CRS ‘B’ to CRS ‘A’. A coordinate transformation between CRS ‘A’ and
CRS ‘B’ which is reversible is stored in the EPSG Registry only once. If a
user wishes to derive information about this coordinate transformation
between CRS ‘A’ and CRS ‘B’, the described query should be run twice (or
extended), once with CRS ‘A’ as SourceCRS and CRS ‘B’ as TargetCRS and
once with CRS ’B’ as SourceCRS and CRS ‘A’ as TargetCRS. This will find
the transformation irrrespective of the direction (A to B or B to A) in which
it is stored. In both cases multiple transformation entities may be
returned. OGP Geomatics Guidance Note 13 provides advice on the
strategy to adopt and select the most appropriate Coordinate
Transformation version or variant.
Page 24 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
4.5
Query by Slot
The following query will find all Geodetic CRS records that have a Slot (“EntitySubType”) with value
“geographic 3D”:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Query Geographic 3D CRS records. -->
<Query typeNames="wrs:ExtrinsicObject">
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- The type of the entity we are searching for is GeodeticCRS -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@objectType</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:ObjectType:GML:GeodeticCRS</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- The sub-type is specified in the EntitySubType slot -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/Slot[@name =
'EntitySubType']/ValueList/Value</ogc:PropertyName>
<ogc:Literal>geographic 3D</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
Page 25 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
5
API SERVICE EXAMPLES
This section is a collection of query examples organized around a series of real-world scenarios for using the
EPSG Registry dataset. The queries use the methods for the basic query mechanisms described in section 4.
5.1
How To... Dereference URNs
Accessing the value that a reference points to instead of the reference itself is known as “dereferencing” it. A
reference is an identifier that points to an object located somewhere else. Using references improves flexibility
and allows objects to be stored in separate locations, allocated in different ways, and pointed to from within the
code instead of being included in it. References may be followed from one object to another to lead from a
known object to an unknown one.
Whenever an xlink is encountered, the URN may be resolved to its referenced object by:
5.2
•
using a GetRecordById request;
•
using the same id to retrieve the associated GML document using a GetRepositoryItem request.
How To... Check the Dataset Version
The following query will return a list of Version History records for the dataset in the registry.
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Retrieve approved Version History records. Sort by the Version History
Slot named "VersionDate"; use Ascending order so the last record in the
result list will represent the current version of the dataset. -->
<Query typeNames="wrs:ExtrinsicObject">
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>wrs:ExtrinsicObject/@id</ogc:PropertyName>
<ogc:Literal>*:EPSG::*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>wrs:ExtrinsicObject/@objectType</ogc:PropertyName>
<ogc:Literal>urn:x-ogp:def:ObjectType:EPSG:versionhistory</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal>urn:oasis:names:tc:ebxmlregrep:StatusType:Approved</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>wrs:ExtrinsicObject/rim:Slot/@name</ogc:PropertyName>
<ogc:Literal>VersionDate</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
</Constraint>
<ogc:SortBy>
<ogc:SortProperty>
<ogc:PropertyName>wrs:ExtrinsicObject/rim:Slot[@name =
'VersionDate']/rim:ValueList/rim:Value</ogc:PropertyName>
<ogc:SortOrder>ASC</ogc:SortOrder>
</ogc:SortProperty>
</ogc:SortBy>
</Query>
</GetRecords>
Page 26 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
5.3
How To... Export a Release
The following query uses the current version history record to retrieve a GML dictionary of the dataset as a .zip
file which can be saved to an appropriate location:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Retrieve the ReleaseObject related to the current Version History
record. Then use the ReleaseObject identifier to obtain the actual
compressed GML Dictionary file containing the EPSG Dataset via a
getRepositoryItem request. -->
<Query typeNames="rim:Association rim:RegistryObject">
<ElementSetName typeNames="rim:RegistryObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- Find the correct association -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>rim:Association/@targetObject</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:version-history:EPSG::7.6.5</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>rim:Association/@associationType</ogc:PropertyName>
<ogc:Literal>urn:xogp:def:AssociationType:EPSG:ReleaseFor</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- Now relate it to the ReleaseObject -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>rim:Association/@sourceObject</ogc:PropertyName>
<ogc:PropertyName>rim:RegistryObject/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
5.4
How To... Retrieve An Entity in its Entirety
To retrieve an entity in its entirety starts with first obtaining the ebRIM record for the given CRS. This may be
accomplished via any of the GetRecords requests provided in this guide. Secondly, the GML which represents
the entity definition must be obtained. The GML document can be acquired by executing a
GetRepositoryItem request using the identifier of the ebRIM record for the desired CRS. Thirdly, once the
GML has been obtained, all of the references contained in it must be extracted and resolved.
The following is the ebRIM metadata for the (Projected) CRS having EPSG code “2295”:
<?xml version="1.0" encoding="utf-8"?>
<wrs:ExtrinsicObject xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
id="urn:ogc:def:crs:EPSG::2295" lid="urn:ogc:def:crs:EPSG::2295"
objectType="urn:ogc:def:ObjectType:GML:ProjectedCRS"
status="urn:oasis:names:tc:ebxml-regrep:StatusType:Approved"
mimeType="application/xml">
<rim:Slot name="isDeprecated"
slotType="urn:oasis:names:tc:ebxml-regrep:DataType:Boolean">
<rim:ValueList>
<rim:Value>false</rim:Value>
</rim:ValueList>
</rim:Slot>
<rim:Slot name="AreaOfUse"
slotType="urn:oasis:names:tc:ebxml-regrep:DataType:String">
<rim:ValueList>
Page 27 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
<rim:Value>Canada - Nova Scotia - west of 63°W</rim:Value>
</rim:ValueList>
</rim:Slot>
<rim:Slot name="EntityAlias"
slotType="urn:oasis:names:tc:ebxml-regrep:DataType:String">
<rim:ValueList>
<rim:Value>[ATS77 / MTM NS zone 5]</rim:Value>
</rim:ValueList>
</rim:Slot>
<rim:Slot name="DataSource"
slotType="urn:oasis:names:tc:ebxml-regrep:DataType:String">
<rim:ValueList>
<rim:Value>OGP</rim:Value>
</rim:ValueList>
</rim:Slot>
<rim:Slot name="SortKey"
slotType="urn:oasis:names:tc:ebxml-regrep:DataType:String">
<rim:ValueList>
<rim:Value>1ats77 / mtm nova scotia zone 5</rim:Value>
</rim:ValueList>
</rim:Slot>
<rim:Name>
<rim:LocalizedString xml:lang="en" value="ATS77 / MTM Nova Scotia zone 5"/>
</rim:Name>
<rim:Description/>
<rim:VersionInfo versionName="20110407T185230Z" comment=""/>
<rim:ContentVersionInfo versionName="20110407T180930Z" comment=""/>
<wrs:repositoryItemRef xlink:type="simple" xlink:href=
"http://localhost/indicio/query?request=GetRepositoryItem&amp;service=CSWebRIM&amp;id=urn:ogc:def:crs:EPSG::2295"/>
</wrs:ExtrinsicObject>
The identifier for this CRS is: urn:ogc:def:crs:EPSG::2295. Using this id in a GetRepositoryItem
request yields the GML form of this entity:
<?xml version="1.0"?>
<ProjectedCRS xmlns:gmd="http://www.isotc211.org/2005/gmd"
xmlns:gco="http://www.isotc211.org/2005/gco"
xmlns:epsg="urn:x-ogp:spec:schema-xsd:EPSG:1.0:dataset"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns="http://www.opengis.net/gml/3.2"
gml:id="epsg-crs-2295">
<metaDataProperty>
<epsg:CommonMetaData>
<epsg:type>projected</epsg:type>
<epsg:alias alias="ATS77 / MTM NS zone 5" code="229"
codeSpace="urn:ogc:def:naming-system:EPSG::7302"/>
<epsg:informationSource>Geomatics Centre; Nova Scotia Ministry of Housing
and Municipal Affairs.</epsg:informationSource>
<epsg:revisionDate>1997-11-13</epsg:revisionDate>
<epsg:show>true</epsg:show>
<epsg:isDeprecated>false</epsg:isDeprecated>
</epsg:CommonMetaData>
</metaDataProperty>
<identifier codeSpace="OGP">urn:ogc:def:crs:EPSG::2295</identifier>
<name>ATS77 / MTM Nova Scotia zone 5</name>
<remarks>In use from 1979. To be phased out in late 1990's.</remarks>
<domainOfValidity xlink:href="urn:ogc:def:area:EPSG::1535"/>
<scope>Large and medium scale topographic mapping and engineering
survey.</scope>
<conversion xlink:href="urn:ogc:def:coordinateOperation:EPSG::17795"/>
<baseGeodeticCRS xlink:href="urn:ogc:def:crs:EPSG::4122"/>
<cartesianCS xlink:href="urn:ogc:def:cs:EPSG::4400"/>
<style/>
</ProjectedCRS>
The following is a list of references contained in this entity:
an Area of Use:
urn:ogc:def:area:EPSG::1535
a Coordinate System:
urn:ogc:def:cs:EPSG::4400
Page 28 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
a base CRS:
urn:ogc:def:crs:EPSG::4122
a Coordinate Conversion:
urn:ogc:def:coordinateOperation:EPSG::17795
Each of these related entities may be retrieved via the GetRepositoryItem request, as was done for the
CRS itself. These entities may, in turn, contain further references which, again, will need to be retrieved.
The model for the EPSG Registry is described in Appendix B. It includes
aggregations, for example a geodetic CRS has component datum which in
turn has a component ellipsoid and this in turn has attributes which have
units. When querying for the complete definition of a higher level entity it
is necessary to iteratively mine down to the lower-level entities. The
essential elements for the description of CRSs and coordinate
transformations are described in Guidance Note 7-1.
5.5
How To... Find All CRS's with a Common Property
The following query filters on two criteria: an objectType whose "parent" is CRS (the base type CRS, thus
effectively selecting all CRS sub-types), and whose Name contains the search term "Europe". This illustrates
how one can query against an entire class of entity types. This technique is also applicable for other entity
types which are grouped within a base-type: Coordinate Systems, Datums and Coordinate Operations. Refer to
Appendix A.2.1.
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Return all CRS entities which contain the search term in their Name. -->
<Query typeNames="wrs:ExtrinsicObject ClassificationNode_cnode_baseType">
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- The entity's objectType matches a ClassificationNode -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@objectType</ogc:PropertyName>
<ogc:PropertyName>/$cnode/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- The objectType ClassificationNode has baseType as a parent -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$cnode/@parent</ogc:PropertyName>
<ogc:PropertyName>/$baseType/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- The baseType URN must be CRS -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$baseType/@id</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:ObjectType:GML:CRS</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- Name property contains the search-term -->
<ogc:PropertyIsLike wildCard="*" singleChar="?" escapeChar=".">
<ogc:PropertyName>/wrs:ExtrinsicObject/rim:Name/rim:LocalizedString/@value</ogc
:PropertyName>
<ogc:Literal>*Europe*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:And>
</ogc:Filter>
Page 29 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
</Constraint>
</Query>
</GetRecords>
5.6
How To... Find All Entities in a Named Region
The following query will return an unsorted list of all the entities that are related to an area with “scotia” in
their area description:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Return all Entity objects related to an Area which matches the text
search term specified. Note: SortBy clause included – see following example
5.7. -->
<Query typeNames="rim:Association rim:ClassificationNode
wrs:ExtrinsicObject_entity_extent">
<ElementSetName typeNames="entity">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<ogc:And>
<!-- The source of the association is the object we return -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$entity/@id</ogc:PropertyName>
<ogc:PropertyName>/rim:Association/@sourceObject</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@associationType</ogc:PropertyName>
<ogc:Literal>urn:xogp:def:AssociationType:EPSG:Extent</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@targetObject</ogc:PropertyName>
<ogc:PropertyName>/$extent/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$extent/@objectType</ogc:PropertyName>
<ogc:Literal>urn:x-ogp:def:ObjectType:EPSG:area</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- A couple of predicates to ensure the Sort Key slot is
represented fully -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$entity/rim:Slot/@name</ogc:PropertyName>
<ogc:Literal>SortKey</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsGreaterThan>
<ogc:PropertyName>/$entity/rim:Slot/rim:ValueList/rim:Value</ogc:PropertyName>
<ogc:Literal>0</ogc:Literal>
</ogc:PropertyIsGreaterThan>
<!-- Search the Extent's textual description using wildcards -->
<ogc:Or>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/$extent/rim:Name/rim:LocalizedString/@value
</ogc:PropertyName>
<ogc:Literal>*scotia*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/$extent/rim:Description/rim:LocalizedString
/@value</ogc:PropertyName>
<ogc:Literal>*scotia*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Or>
</ogc:And>
<ogc:Not>
<ogc:Or>
Page 30 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
<!-- Constrain the Status of the entity to be Valid ... -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Deprecated</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- ... and it must not be a new, unreleased, entity either -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Submitted</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Not>
<ogc:And>
<!-- Find the classification node for the object type -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:ClassificationNode/@id</ogc:PropertyName>
<ogc:PropertyName>/$entity/@objectType</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- Ensure that the ClassificationNode belongs to either the
Geodetic object scheme, or the EPSG metadata scheme (this effectively
screens out entity types which are not of interest) -->
<ogc:Or>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>/rim:ClassificationNode/@path</ogc:PropertyName>
<ogc:Literal>/urn:oasis:names:tc:ebxmlregrep:classificationScheme:ObjectType/RegistryObject/ExtrinsicObject/GeodeticEntity*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>/rim:ClassificationNode/@path</ogc:PropertyName>
<ogc:Literal>/urn:oasis:names:tc:ebxmlregrep:classificationScheme:ObjectType/RegistryObject/ExtrinsicObject/EPSGMetadata*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Or>
</ogc:And>
</ogc:And>
</ogc:Filter>
</Constraint>
<ogc:SortBy>
<ogc:SortProperty>
<ogc:PropertyName>/$entity/rim:Slot[@name=
'SortKey']/rim:ValueList/rim:Value[1]</ogc:PropertyName>
<ogc:SortOrder>ASC</ogc:SortOrder>
</ogc:SortProperty>
</ogc:SortBy>
</Query>
</GetRecords>
5.7
How To... Sort Result Sets (Using SortBy)
The SortBy command may be used to apply different criteria to sort the result set from a query. The basic
SortBy clause looks like this:
<ogc:SortBy xmlns:ogc="http://www.opengis.net/ogc">
<ogc:SortProperty>
<ogc:PropertyName>{property-name}</ogc:PropertyName>
<ogc:SortOrder>{sort-order-keyword}</ogc:SortOrder>
</ogc:SortProperty>
</ogc:SortBy>
The SortOrder element may have the value ‘ASC’, for ascending order, or ‘DESC’, for descending order.
The SortBy clause may contain multiple SortProperty elements. A partial example with two sort properties
looks like this:
<Query typeNames="wrs:ExtrinsicObject">
...
<ogc:SortBy>
<ogc:SortProperty>
<ogc:PropertyName>/wrs:ExtrinsicObject/rim:Slot[@name =
‘country’]/rim:ValueList/rim:Value</ogc:PropertyName>
<ogc:SortOrder>DESC</ogc:SortOrder>
Page 31 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
</ogc:SortProperty>
<ogc:SortProperty>
<ogc:PropertyName>/wrs:ExtrinsicObject
/rim:Name/rim:LocalizedString/@value</ogc:PropertyName>
<ogc:SortOrder>ASC</ogc:SortOrder>
</ogc:SortProperty>
</ogc:SortBy>
...
</Query>
The following query will return a list of all the entities that are related to an area with the specified name and
the result set will be sorted by the entity name:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Return all Entity objects related to an Area which matches the text
search term specified. -->
<Query typeNames="rim:Association rim:ClassificationNode
wrs:ExtrinsicObject_entity_extent">
<ElementSetName typeNames="entity">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<ogc:And>
<!-- The source of the association is the object we return -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$entity/@id</ogc:PropertyName>
<ogc:PropertyName>/rim:Association/@sourceObject</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@associationType</ogc:PropertyName>
<ogc:Literal>urn:xogp:def:AssociationType:EPSG:Extent</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@targetObject</ogc:PropertyName>
<ogc:PropertyName>/$extent/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$extent/@objectType</ogc:PropertyName>
<ogc:Literal>urn:x-ogp:def:ObjectType:EPSG:area</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- A couple of predicates to ensure the Sort Key slot is
represented fully -->
<ogc:PropertyIsGreaterThan>
<ogc:PropertyName>/$entity/rim:Slot[@name =
'SortKey']/rim:ValueList/rim:Value</ogc:PropertyName>
<ogc:Literal>0</ogc:Literal>
</ogc:PropertyIsGreaterThan>
<!-- Search the Extent's textual description using wildcards -->
<ogc:Or>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/$extent/rim:Name/rim:LocalizedString/@value</ogc:PropertyNam
e>
<ogc:Literal>*scotia*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/$extent/rim:Description/rim:LocalizedString/@value</ogc:Prop
ertyName>
<ogc:Literal>*scotia*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Or>
</ogc:And>
<ogc:Not>
<ogc:Or>
<!-- Constrain the Status of the entity to be Valid ... -->
Page 32 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Deprecated</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- ... and it must not be a new, unreleased, entity either -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Submitted</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Not>
<ogc:And>
<!-- Find the classification node for the object type -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:ClassificationNode/@id</ogc:PropertyName>
<ogc:PropertyName>/$entity/@objectType</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- Ensure that the ClassificationNode belongs to either the
Geodetic object scheme, or the EPSG metadata scheme (this effectively
screens out entity types which are not of interest) -->
<ogc:Or>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>/rim:ClassificationNode/@path</ogc:PropertyName>
<ogc:Literal>/urn:oasis:names:tc:ebxmlregrep:classificationScheme:ObjectType/RegistryObject/ExtrinsicObject/GeodeticEntity*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>/rim:ClassificationNode/@path</ogc:PropertyName>
<ogc:Literal>/urn:oasis:names:tc:ebxmlregrep:classificationScheme:ObjectType/RegistryObject/ExtrinsicObject/EPSGMetadata*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Or>
</ogc:And>
</ogc:And>
</ogc:Filter>
</Constraint>
<ogc:SortBy>
<ogc:SortProperty>
<ogc:PropertyName>/$entity/rim:Slot[@name=
'SortKey']/rim:ValueList/rim:Value[1]</ogc:PropertyName>
<ogc:SortOrder>ASC</ogc:SortOrder>
</ogc:SortProperty>
</ogc:SortBy>
</Query>
</GetRecords>
5.8
How To... Filter Out Duplicate Results (Using DISTINCT)
The EPSG Registry uses the OGC Filter language as its primary query language. Queries expressed in OGC
Filter syntax are ultimately converted into SQL for querying the underlying database. Some OGC Filter
constructs can result in the selection of duplicate records which, in certain cases, may be undesirable. INdicio
provides a processing instruction (PI) to reduce a result set containing duplicates to a set of distinct records
based on the records identifier.
The DISTINCT processing instruction is expressed as follows:
<?indicio-distinct-values true?>
Note that the DISTINCT processing instruction must occur immediately following the start tag of the “Query”
element. If it occurs anywhere else it is ignored. The following example shows the correct placement of the
DISTINCT processing instruction:
<GetRecords ... >
<Query typeNames="wrs:ExtrinsicObject">
<?indicio-distinct-values true?>
<ElementSetName typeNames="wrs:ExtrinsicObject">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
Page 33 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
...lines omitted...
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
The following query will return a list of all the entities that are related to an area with the specified name and
will remove any duplicate entities from the result set:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Return all Entity objects related to an Area which matches the text
search term specified. Note: No SortBy clause. Filter clause to also match
search term in Alias property. Requires use of DISTINCT processing
instruction to exclude duplicates. -->
<Query typeNames="rim:Association rim:ClassificationNode
wrs:ExtrinsicObject_entity_extent">
<?indicio-distinct-values true?>
<ElementSetName typeNames="entity">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<ogc:And>
<!-- The source of the association is the object we return -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$entity/@id</ogc:PropertyName>
<ogc:PropertyName>/rim:Association/@sourceObject</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@associationType</ogc:PropertyName>
<ogc:Literal>urn:xogp:def:AssociationType:EPSG:Extent</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@targetObject</ogc:PropertyName>
<ogc:PropertyName>/$extent/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$extent/@objectType</ogc:PropertyName>
<ogc:Literal>urn:x-ogp:def:ObjectType:EPSG:area</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- Search the Extent's textual description using wildcards -->
<ogc:Or>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/$extent/rim:Name/rim:LocalizedString@value</ogc:PropertyName
>
<ogc:Literal>*scotia*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/$extent/rim:Description/rim:LocalizedString@value</ogc:Prope
rtyName>
<ogc:Literal>*scotia*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/$extent/rim:Slot[@name =
'SortKey']/rim:ValueList/rim:Value</ogc:PropertyName>
<ogc:Literal>*scotia*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Or>
</ogc:And>
<ogc:Not>
<ogc:Or>
<!-- Constrain the Status of the entity to be Valid ... -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
Page 34 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Deprecated</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- ... and it must not be a new, unreleased, entity either -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Submitted</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Not>
<ogc:And>
<!-- Find the classification node for the object type -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:ClassificationNode/@id</ogc:PropertyName>
<ogc:PropertyName>/$entity/@objectType</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- Ensure that the ClassificationNode belongs to either the
Geodetic object scheme, or the EPSG metadata scheme (this effectively
screens out entity types which are not of interest) -->
<ogc:Or>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>/rim:ClassificationNode/@path</ogc:PropertyName>
<ogc:Literal>/urn:oasis:names:tc:ebxmlregrep:classificationScheme:ObjectType/RegistryObject/ExtrinsicObject/GeodeticEntity*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>/rim:ClassificationNode/@path</ogc:PropertyName>
<ogc:Literal>/urn:oasis:names:tc:ebxmlregrep:classificationScheme:ObjectType/RegistryObject/ExtrinsicObject/EPSGMetadata*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Or>
</ogc:And>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
5.9
How To... Combine SortBy and DISTINCT Commands
The SortBy and DISTINCT commands may also be used together within a query.
WARNING: for when using SortBy together with the DISTINCT
processing instruction. The SortBy command supports multi-level sort
criteria. However, when the DISTINCT processing instruction is used,
SortBy, if also present, must only have a SINGLE sort criterion. This is
due to the interaction between these two features.
The following query will return a list of all the entities that are related to an area with the specified name, sorted
by name, and with duplicate entities removed from the result set:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Return ANY Entity object which is related to an Area which matches the
text search term specified. Note: includes SortBy clause. Filter clause to also
match search term in Alias property. Requires use of DISTINCT processing
instruction to exclude duplicates. -->
Page 35 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
<Query typeNames="rim:Association rim:ClassificationNode
wrs:ExtrinsicObject_entity_extent">
<?indicio-distinct-values true?>
<ElementSetName typeNames="entity">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<ogc:And>
<!-- The source of the association is the object we return -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$entity/@id</ogc:PropertyName>
<ogc:PropertyName>/rim:Association/@sourceObject</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@associationType</ogc:PropertyName>
<ogc:Literal>urn:xogp:def:AssociationType:EPSG:Extent</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:Association/@targetObject</ogc:PropertyName>
<ogc:PropertyName>/$extent/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$extent/@objectType</ogc:PropertyName>
<ogc:Literal>urn:x-ogp:def:ObjectType:EPSG:area</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- A couple of predicates to ensure the Sort Key slot is
represented fully -->
<ogc:PropertyIsGreaterThan>
<ogc:PropertyName>/$entity/rim:Slot[@name =
'SortKey']/rim:ValueList/rim:Value</ogc:PropertyName>
<ogc:Literal>0</ogc:Literal>
</ogc:PropertyIsGreaterThan>
<!-- Search the Extent's textual description using wildcards -->
<ogc:Or>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/$extent/rim:Name/rim:LocalizedString@value</ogc:PropertyName
>
<ogc:Literal>*scotia*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/$extent/rim:Description/rim:LocalizedString@value</ogc:Prope
rtyName>
<ogc:Literal>*scotia*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<?indicio-case-sensitive false?>
<ogc:PropertyName>/$extent/rim:Slot[@name =
'Alias']/rim:ValueList/rim:Value</ogc:PropertyName>
<ogc:Literal>*scotia*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Or>
</ogc:And>
<ogc:Not>
<ogc:Or>
<!-- Constrain the Status of the entity to be Valid ... -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Deprecated</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- ... and it must not be a new, unreleased, entity either -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/wrs:ExtrinsicObject/@status</ogc:PropertyName>
<ogc:Literal> urn:oasis:names:tc:ebxmlregrep:StatusType:Submitted</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Not>
<ogc:And>
<!-- Find the classification node for the object type -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/rim:ClassificationNode/@id</ogc:PropertyName>
Page 36 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
<ogc:PropertyName>/$entity/@objectType</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<!-- Ensure that the ClassificationNode belongs to either the
Geodetic object scheme, or the EPSG metadata scheme (this effectively
screens out entity types which are not of interest) -->
<ogc:Or>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>/rim:ClassificationNode/@path</ogc:PropertyName>
<ogc:Literal>/urn:oasis:names:tc:ebxmlregrep:classificationScheme:ObjectType/RegistryObject/ExtrinsicObject/GeodeticEntity*</ogc:Literal>
</ogc:PropertyIsLike>
<ogc:PropertyIsLike wildCard="*" escapeChar="." singleChar="?">
<ogc:PropertyName>/rim:ClassificationNode/@path</ogc:PropertyName>
<ogc:Literal>/urn:oasis:names:tc:ebxmlregrep:classificationScheme:ObjectType/RegistryObject/ExtrinsicObject/EPSGMetadata*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Or>
</ogc:And>
</ogc:And>
</ogc:Filter>
</Constraint>
<ogc:SortBy>
<ogc:SortProperty>
<ogc:PropertyName>/$entity/rim:Slot[@name =
'SortKey']/rim:ValueList/rim:Value[1]</ogc:PropertyName>
<ogc:SortOrder>ASC</ogc:SortOrder>
</ogc:SortProperty>
</ogc:SortBy>
</Query>
</GetRecords>
5.10 How To... Find Valid Entities that replace a Deprecated Entity
Assuming that an entity which is not valid has been identified, the valid entity which replaced it may need to be
located. This can be done by following what is called the “deprecation trail”. In instances where no replacement
entity was provided, the query would be expected to return an empty result set.
Figure 5: Associations Connecting a Deprecated Entity to its Valid Replacement Entity
Page 37 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
The following is an example of an INVALID entity, a Geodetic CRS:
<?xml version="1.0"?>
<GeodeticCRS xmlns:gmd="http://www.isotc211.org/2005/gmd"
xmlns:gco="http://www.isotc211.org/2005/gco"
xmlns:epsg="urn:x-ogp:spec:schema-xsd:EPSG:1.0:dataset"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns="http://www.opengis.net/gml/3.2"
gml:id="epsg-crs-4902">
<metaDataProperty>
<epsg:CommonMetaData>
<epsg:type>geographic 2D</epsg:type>
<epsg:revisionDate>2004-01-06</epsg:revisionDate>
<epsg:changes>
<epsg:changeID xlink:href="urn:ogc:def:change-request:EPSG::2000.070"/>
</epsg:changes>
<epsg:show>true</epsg:show>
<epsg:isDeprecated>true</epsg:isDeprecated>
</epsg:CommonMetaData>
</metaDataProperty>
<identifier codeSpace="OGP">urn:ogc:def:crs:EPSG::4902</identifier>
<name>NDG (Paris)</name>
<domainOfValidity xlink:href="urn:ogc:def:area:EPSG::1369"/>
<scope>Geodetic survey.</scope>
<ellipsoidalCS xlink:href="urn:ogc:def:cs:EPSG::6403"/>
<geodeticDatum xlink:href="urn:ogc:def:datum:EPSG::6902"/>
</GeodeticCRS>
Using the identifier from the invalid entity, create a query to find the replacement records which are related to it
via its Deprecation trail:
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ogc="http://www.opengis.net/ogc"
startPosition="1" maxRecords="10" resultType="results"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1">
<!-- Find any entities which have replaced an invalid (or deprecated)
entity. -->
<Query typeNames="wrs:ExtrinsicObject_entity_depn Association_repl_depd">
<ElementSetName typeNames="entity">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- Constrain the objectType of the Deprecation record -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$depn/@objectType</ogc:PropertyName>
<ogc:Literal>urn:xogp:def:ObjectType:EPSG:deprecation</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- The Deprecated association links the Deprecation record to the
invalid entity -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$depd/@sourceObject</ogc:PropertyName>
<ogc:PropertyName>/$depn/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$depd/@associationType</ogc:PropertyName>
<ogc:Literal>urn:xogp:def:AssociationType:EPSG:Deprecated</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$depd/@targetObject</ogc:PropertyName>
<ogc:Literal>urn:ogc:def:crs:EPSG::4902</ogc:Literal>
</ogc:PropertyIsEqualTo>
<!-- The Replaces association links the Deprecation record to the new
entity -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$repl/@targetObject</ogc:PropertyName>
<ogc:PropertyName>/$depn/@id</ogc:PropertyName>
Page 38 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$repl/@associationType</ogc:PropertyName>
<ogc:Literal>urn:oasis:names:tc:ebxmlregrep:AssociationType:Replaces</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/$repl/@sourceObject</ogc:PropertyName>
<ogc:PropertyName>/$entity/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
If a replacement entity was specified when the initial entity was deprecated, the above query will return it.
Verify that the Status property of the replacement entity is not “Deprecated”. If the Status property of the
replacement entity is, in fact, “Deprecated”, this indicates that there is a multi-level Deprecation trail. In this
situation, the query must be repeated, after substitution of the replacement entity’s identifier for the
“Deprecated” Association’s targetObject property
5.11 How To... Retrieve the Area Polygons archive
The EPSG Area Polygons archive is stored as a repository item, under the registry object ID
“urn:x-ogp:def:archive:EPSG::extent-polygons”.
This archive is a zip file that contains all of the current Area Polygon files for the registry. The archive can be
downloaded from the client UI, or directly through the registry via the GetRepositoryItem request described
below.
Retrieve the Area Polygons archive via an HTTP GET request:
http://www.epsg-registry.org/indicio/query
?request=GetRepositoryItem
&id=urn:x-ogp:def:archive:EPSG::extent-polygons
Note: The above URL is spread across multiple lines to increase readability. When submitted through a
browser, first remove all whitespace (including line feed characters).
5.12 How To… Retrieve a Polygon Metadata Record for a known Area of Use
As shown in Figure 4. “Object Relationships available for use in Spatial Queries”, Area of Use records may
have an associated Polygon record which will have a GML Polygon as its repository item. When you know the
identifier of the Area record and want to retrieve its Polygon, use the query below, by first substituting the Area
record identifier for the ${area-id} property. An empty result set indicates that the given Area record does not
have a related Polygon.
Note 1: The Polygon metadata record includes the Polygon geometry in a Slot named
“http://purl.org/dc/terms/spatial” for indexing purposes. This may be sufficient for some uses. If, however, the
Polygon geometry is required as a stand-alone GML document, it can be obtained once the Polygon metadata
record has been retrieved. See clause 5.13 for further details.
Note 2: This request can also be viewed as the first step in obtaining the Polygon geometry for an Area of Use
record. The two steps required, are: 1) Retrieve the Polygon metadata record (if one exists), in order to obtain
its identifier, and 2) Retieve the Polygon geometry via the GetRepositorItem request (which requires the
identifier obtained in step 1). See clause 5.13 for how to accomplish the second step.
<?xml version="1.0" encoding="UTF-8"?>
<GetRecords
xmlns="http://www.opengis.net/cat/csw/2.0.2"
xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
xmlns:ogc="http://www.opengis.net/ogc"
outputFormat="application/xml; charset=UTF-8"
service="WRS" version="1.0.1"
Page 39 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
startPosition="1" maxRecords="5"
resultType="results">
<Query typeNames="ExtrinsicObject_polygon Association_extentAssoc">
<ElementSetName typeNames="polygon">full</ElementSetName>
<Constraint version="1.1.0">
<ogc:Filter>
<ogc:And>
<!-- substitute an Area identifier -->
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>$extentAssoc/@targetObject</ogc:PropertyName>
<ogc:Literal>${area-id}</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>$extentAssoc/@associationType</ogc:PropertyName>
<ogc:Literal>urn:oasis:names:tc:ebxmlregrep:AssociationType:Extends</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>$extentAssoc/@sourceObject</ogc:PropertyName>
<ogc:PropertyName>$polygon/@id</ogc:PropertyName>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>$polygon/@objectType</ogc:PropertyName>
<ogc:Literal>
urn:x-ogp:def:ObjectType:EPSG:extent-polygon
</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
</Constraint>
</Query>
</GetRecords>
5.13 How To… Retrieve a Polygon Geometry given a Polygon Metadata Record Identifier
Note: This request represents the second step necessary to obtain Polygon geometry for a known Area of Use.
See clause 5.12 for further details.
Assuming one has obtained a Polygon metadata record, its related repository item is a Polygon geometry. The
GetRepositoryItem request is used to return the geometry. Substitute the Polygon metadata record identifier for
the ${identifier} string in this request:
http://www.epsg-registry.org/indicio/query
?request=GetRepositoryItem
&id=${identifier}
Note: The above URL is spread across multiple lines to increase readability. When submitted through a
browser, first remove all whitespace (including line feed characters).
Page 40 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
ANNEX A – THE EPSG REGISTRY APPLICATION MODEL
This annex provides an overview of the information model of the EPSG Registry. The dataset is composed of
geodetic entities which are maintained within the registry as GML 3.2.1 objects in XML format. The following
sections provide brief descriptions and diagrams for:
• the GML 3.2.1 model;
• the Registry Model for the ebRIM 3.0 objects which are generated from the GML objects.
A.1
GML Model and Application Schema
The GML application schemas for the EPSG Registry conform GML 3.2.1. The scope of the data content of the
EPSG dataset is limited to GML CRS entities. The schema files for the EPSG Registry are available from
http://www.epsg.org/EPSGDataset/DownloadDataset.aspx in the "EPSG supporting files" section. The schema
files in the zip file archive include the following:
- Folder “epsg”:
Contains the EPSG Registry Schema.
- Folder "gml":
Contains the GML 3.2.1 Schema set; the root document of the GML Schema is file
"gml.xsd".
- Folder "w3c":
Contains the imported W3C schemas (XLink 1.1, etc).
- Folder "iso":
Contains the imported GMD schema and related schemas (see ISO/TS 19139).
The namespace for the EPSG Registry GML application schema is:
urn:x-ogp:spec:schema-xsd:EPSG:1.0:dataset
Prior to August 2012 the EPSG dataset used the draft specification of GML, v ersion3.2.0. Note that there have
been a number of changes between GML 3.2.0 and GML 3.2.1, that affect the EPSG Dataset definitions. These
are summarised in Annex E.
Page 41 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
A.2
Geodetic Model
The two diagrams which follow describe, in a simplified manner, the geodetic model for the EPSG Registry.
They are taken from “ISO 19111:2007 Geographic information – Spatial referencing by coordinates” as
implemented in GML through “ISO 19136 Geographic information – Geographic mark-up language (GML)”.
Figure A–1: Coordinate Reference System
Page 42 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
Figure A–2: Coordinate Operations
Note: Concatenated Operations cannot contain other Concatenated
Operations, only Transformations and/or Conversions. For reasons of
simplicity that constraint has not been expressed in the above diagram.
Page 43 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
A.3
ebRIM Model
The EPSG Dataset, once converted to GML form, is used to generate metadata records (or registry objects), in
ebRIM format, for insertion into the EPSG Registry. These metadata records serve as the target for queries used
to find geodetic entity content held by the registry.
The object type for a given ebRIM ExtrinsicObject and the association types which may be used to relate two
ExtrinsicObjects are shown from the diagrams presented in figures A-3 through A-6 below. The short name for
the object or association is used in the diagram and matches a URN in the tables which follow the diagrams.
The URN’s in the tables should be used when constructing OGC Filter queries for the EPSG Registry.
Figure A–3: EPSG Registry Model (ebRIM): CRS and Related Entities
Page 44 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
Figure A–4: EPSG Registry Model (ebRIM): ProjectedCRS
Page 45 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
Figure A–5: EPSG Registry Model (ebRIM): Coordinate Operations
Page 46 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
In the EPSG Registry, for performance reasons area description and bounding box data is stored separately
from the polygon data describing the area boundary.
Figure A–6: Area
Page 47 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
Figure A–7: EPSG Registry Model (ebRIM): Additional EPSG Metadata Objects
Page 48 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
A.3.1
Entity Types
There are four entity types for which there exists an abstract base-type: Datum, CRS, Coordinate System and
Coordinate Operation. Concrete entity instances in the dataset always reference a sub-type, but these base-type
definitions can be used for querying at the type level.
A.3.1.1
CRS
The CRS base-type URN is: urn:ogc:def:ObjectType:GML:CRS
urn:ogc:def:ObjectType:GML:CompoundCRS
urn:ogc:def:ObjectType:GML:DerivedCRS
urn:ogc:def:ObjectType:GML:EngineeringCRS
urn:ogc:def:ObjectType:GML:GeodeticCRS
urn:ogc:def:ObjectType:GML:ImageCRS
urn:ogc:def:ObjectType:GML:ProjectedCRS
urn:ogc:def:ObjectType:GML:TemporalCRS
urn:ogc:def:ObjectType:GML:VerticalCRS
A.3.1.2
Coordinate System
The Coordinate System base-type URN is: urn:ogc:def:ObjectType:GML:CoordinateSystem
urn:ogc:def:ObjectType:GML:AffineCS
urn:ogc:def:ObjectType:GML:CartesianCS
urn:ogc:def:ObjectType:GML:CylindricalCS
urn:ogc:def:ObjectType:GML:EllipsoidalCS
urn:ogc:def:ObjectType:GML:LinearCS
urn:ogc:def:ObjectType:GML:PolarCS
urn:ogc:def:ObjectType:GML:SphericalCS
urn:ogc:def:ObjectType:GML:TimeCS
urn:ogc:def:ObjectType:GML:UserDefinedCS
urn:ogc:def:ObjectType:GML:VerticalCS
A.3.1.3
Datum
The Datum base-type URN is: urn:ogc:def:ObjectType:GML:Datum
urn:ogc:def:ObjectType:GML:GeodeticDatum
urn:ogc:def:ObjectType:GML:EngineeringDatum
urn:ogc:def:ObjectType:GML:ImageDatum
urn:ogc:def:ObjectType:GML:TemporalDatum
urn:ogc:def:ObjectType:GML:VerticalDatum
A.3.1.4
Coordinate Operation
The Coordinate Operation base-type URN is: urn:ogc:def:ObjectType:GML:CoordinateOperation
urn:ogc:def:ObjectType:GML:CoordinateConversion
urn:ogc:def:ObjectType:GML:CoordinateTransformation
urn:ogc:def:ObjectType:GML:ConcatenatedCoordinateOperation
Page 49 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
A.3.1.5
Other Object Types
urn:ogc:def:ObjectType:GML:Ellipsoid
urn:ogc:def:ObjectType:GML:PrimeMeridian
urn:ogc:def:ObjectType:GML:OperationMethod
urn:ogc:def:ObjectType:GML:OperationParameter
urn:ogc:def:ObjectType:GML:Unit
urn:x-ogp:def:ObjectType:EPSG:area
urn:x-ogp:def:ObjectType:EPSG:axis-name
urn:x-ogp:def:ObjectType:EPSG:change-request
urn:x-ogp:def:ObjectType:EPSG:deprecation
urn:x-ogp:def:ObjectType:EPSG:supersession
urn:x-ogp:def:ObjectType:EPSG:naming-system
urn:x-ogp:def:ObjectType:EPSG:version-history
urn:x-ogp:def:ObjectType:EPSG:Release
urn:x-ogp:def:ObjectType:EPSG:extent-polygon
A.3.2
Association Types
The association types which may be used to relate two ExtrinsicObjects can be inferred from the diagrams in
figures A-3 through A-6 above. The association’s short name is used in the diagrams and matches a URN in the
following tables. The URN’s in these tables should be used when constructing OGC Filter queries for the EPSG
Registry.
A.3.2.1
Association Types
urn:ogc:def:AssociationType:GML:BaseCRS
urn:ogc:def:AssociationType:GML:CRS
urn:ogc:def:AssociationType:GML:CoordinateSystem
urn:ogc:def:AssociationType:GML:Datum
urn:ogc:def:AssociationType:GML:Conversion
urn:ogc:def:AssociationType:GML:Transformation
urn:ogc:def:AssociationType:GML:Operation
urn:ogc:def:AssociationType:GML:SourceCRS
urn:ogc:def:AssociationType:GML:TargetCRS
urn:ogc:def:AssociationType:GML:Meridian
urn:ogc:def:AssociationType:GML:Ellipsoid
urn:ogc:def:AssociationType:GML:Method
urn:ogc:def:AssociationType:GML:Parameter
urn:ogc:def:AssociationType:GML:AxisName
urn:ogc:def:AssociationType:GML:Unit
urn:x-ogp:def:AssociationType:EPSG:Superseded
urn:x-ogp:def:AssociationType:EPSG:Deprecated
urn:x-ogp:def:AssociationType:EPSG:ChangeRequest
urn:x-ogp:def:AssociationType:EPSG:Extent
urn:x-ogp:def:AssociationType:EPSG:NamingSystem
urn:x-ogp:def:AssociationType:EPSG:ReleaseFor
urn:oasis:names:tc:ebxml-regrep:AssociationType:Extends
Page 50 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
ANNEX B – SLOTS USED IN THE EPSG REGISTRY
Slot Names and Descriptions
The following is a description of each slot:
Slot Name
AreaOfUse
Description
This slot contains the code for the area of use associated with this entity
CodesAffected
This slot contains the “codes affected” field for the change request entity
DataSource
This slot contains the data source for the entity
DateClosed
This slot contains the closed date of the change request. It also
distinguishes between an open change request and a closed change
request.
This slot contains the entity aliases for the entity
EntityAlias
Envelope
This slot is used for geodetic CRSs to distinguish between geographic
2d, geographic 3d and geocentric
This slot contains the “entity types affected” field for the change request
entity
This slot contains a GML envelope to do geospatial queries against
isDeprecated
This slot contains the deprecation state for the entity
Request
This slot contains the “request” field for the change request entity
SortKey
This slot is used for sorting in the UI
Status
This slot is used for tracking the state of an open change request
VersionDate
This slot is used for tracking Dataset version release dates
Format
This slot is used to determine what type of release is referred to. It can
be SQL or GML.
This slot name indicates a GML geometry. Currently used on Extent
Polygon metadata record for slot containing the Polygon geometry.
EntitySubType
EntityTypeAffected
http://purl.org/dc/terms/spatial
Page 51 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
Entities Containing Slots
The following table shows which objects contain which slots:
Page 52 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
ANNEX C – STANDARDS AND SPECIFICATIONS
This appendix lists the various specifications, standards, and protocols that are implemented in whole or in part
by the registry software, or are used in the definition of the dataset entities or the structure of queries.
ebRIM and Web Services
The following standards and specifications are implemented by the registry software:
Specification
Version
Document
Short Name
OpenGIS® Catalogue
1.0.0
OGC document 05-025r3
WRS *
Services - ebRIM
(ISO/TS 15000-3) profile
of CSW
(CSW ebRIM)
OGC Catalogue Services
2.0.1
OGC document 04-017r3
CSW
Specification
OASIS ebXML Registry
3.0
OASIS regrep-rim-3.0-OS
ebRIM
Information Model
OGC Web Services
1.0.0
OGC document 05-008
OWS Common
Common Specification
OpenGIS® Filter
1.1.0
OGC document 04-095
OGC Filter
Encoding Implementation
Specification
OpenGIS® Geography
3.2.1
OGC document 07-036 or
GML
Markup Language
http://www.opengeospatial.org/standards/gml
(GML) Encoding
Specification
Definition identifier
1.2
OGC document 07-092r2
URNs
URNs in OGC
namespace
*The WRS application profile is based on Clause 10 of the CSW specification, which describes HTTP protocol
binding for catalogue services.
For additional information about various standards:
• The OpenGis Consortium Website address is http://www.opengeospatial.org/
• The OASIS Website address is http://www.oasis-open.org/
XML and HTTP
The following standards and recommendations define the protocols and data structure for requests:
Specification
Network Working Group
Hypertext Transfer Protocol -HTTP/1.1
World Wide Web Consortium
(W3C) Extensible Markup
Language
World Wide Web Consortium
(W3C) XML Linking Language
(XLink)
Version
N/A
Document
RFC 2616
Short Name
HTTP
1.0 (Fourth
Edition)
N/A
XML
1.1
http://www.w3.org/TR/xlink11/
Xlink
For more information about HTTP basic authentication:
Page 53 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
•
RFC 2616 (Hypertext Transfer Protocol – HTTP/1.1) http://tools.ietf.org/html/rfc2616
•
RFC 2617 (HTTP Authentication: Basic and Digest Access Authentication)
http://tools.ietf.org/html/rfc2617
Dataset Entities
The entities in the EPSG Geodetic Parameter dataset, held as RepositoryItems, conform to the following
specifications:
Specification
OpenGIS® Geography Markup
Language (GML) Encoding
Specification
which is equivalent to
ISO Geographic information –
Geography Markup Language
(GML)
Version
3.2.1
Document
OGC document 07-036
Short Name
GML
2007
ISO 19136:2007
19136
OGC Abstract Specification
Topic 2, Spatial referencing by
coordinates
which is equivalent to
ISO Geographic information –
Spatial referencing by
coordinates
r4
OGC document 08-015r2
Topic 2
2007
ISO 19111:2007
19111
Page 54 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
ANNEX D – SUMMARY OF AUGUST 2011 CHANGES TO REGISTRY SERVICE MESSAGE FORMAT
The EPSG web interface software (INdicio) was upgraded in August 2011. As a consequence of this upgrade
the registry service interface methods have not changed, however their message content has. The following list
of changes summarises the key differences in message content between the previous version (1.2.x) and the
current version (2.2.x) of the application EPSG Registry.
•
Namespaces –
The following XML namespaces have changed:
o CSW – the CSW namespace has been changed from “http://www.opengis.net/cat/csw” to
“http://www.opengis.net/cat/csw/2.0.2”.
o
WRS – the WRS namespace has been changed from “http://www.opengis.net/cat/wrs” to
“http://www.opengis.net/cat/wrs/1.0”.
•
ExtrinsicObject
The namespace of the ExtrinsicObject has changed. It is now in the WRS namespace, whereas
previously it was in the RIM namespace. Therefore, instead of rim:ExtrinsicObject, one must use
wrs:ExtrinsicObject.
•
OGC Filter syntax – used in GetRecords requests.
o Slot names – Instead of having to use an ogc:And operator to filter on a Slot name and value
using two separate predicates, a single predicate can be used to select a Slot value by its name
attribute, e.g. an ogc:PropertyName to filter on Slots with the name “EntitySubType” would
appear as follows:
/wrs:ExtrinsicObject/Slot[@name = 'EntitySubType']/ValueList/Value
o
Aliases – An alias is declared by appending the alias name to its objectType name in the
typeNames property, using an underscore character. Additionally, an alias specified in an
ElementSetName no longer uses a prefixed dollar sign, e.g. the following shows two
Association aliases (note the aliases “assoc1” and “assoc2”, referenced as “$assoc1” and
“$assoc2” within any subsequent filter predicates):
<csw:Query typeNames="rim:Association_assoc1_assoc2">
•
GET requests case sensitivity
The software is now rigorous in checking case sensitivity of GET requests. Therefore, instead of
getRepositoryItem, one must use GetRepositoryItem.
Page 55 of 56
IOGP Publication 373-7-3 – Geomatics Guidance Note number 7, part 3 – September 2016
To facilitate improvement, this document is subject to revision. The current version is available at www.epsg.org.
ANNEX E – SUMMARY OF AUGUST 2012 CHANGES TO REGISTRY
Several factors caused changes to be made to the EPSG Registry schema in August 2012:
1.
2.
3.
4.
5.
A change in OGC policy to adopt W3C Xlink v1.1 schema (see
http://www.opengeospatial.org/blog/1597).
An update of the registry schema replacing GML v3.2.0 with v3.2.1. This causes change to the GML
namespace URI.
The EPSG v0.1 application schema had an Area of Use entity definition which did not conform fully
with GML. The primary issue was that the Area of Use definition contained the spatial extent
(gmd:EX_Extent) definition instead of being derived from it – and therefore was not a valid substitute
for the gmd:EX_Extent within GML documents. This prevented the EPSG GML representation from
being processed fully by schema-aware XML processors.
Changes to accommodate the addition of area polygons.
Addition of wrapping elements – epsg:ExtentDefinition and epsg:extent – for Area of Use
definitions within an exported EPSG Dictionary file. These elements conform to GML’s ObjectProperty rule and enable Area of Use definitions to reside within a gml:dictionaryEntry element in a
schema valid manner. The duplicated epsg:ExtentDefinition/gml:identifier element is a mandatory
GML property.
Collectively these changes impact API service message syntax. In summary the changes required are :
Prior to August 2012
urn:x-ogp:spec:schema-xsd:EPSG:0.1:dataset
From August 2012
urn:x-ogp:spec:schema-xsd:EPSG:1.0:dataset
http://schemas.opengis.net/xlink/1.0.0/xlinks.xsd
xlink:simpleLink
http://www.opengis.net/gml
http://www.w3.org/1999/xlink.xsd
xlink: simpleAttrs
http://www.opengis.net/gml/3.2
<gml:CoordinateSystemAxis gml:uom="...">
<isSphere>Sphere</isSphere>
<gml:CoordinateSystemAxis uom="...">
<isSphere>true</isSphere>
<gml:dictionaryEntry>
<epsg:AreaOfUse>
…
</epsg:AreaOfUse>
</gml:dictionaryEntry>
<gml:dictionaryEntry>
<epsg:ExtentDefinition
gml:id="epsg-area-1024">
<gml:identifier codeSpace="OGP">
urn:ogc:def:area:EPSG::1024
</gml:identifier>
<epsg:extent>
<epsg:AreaOfUse>
…
</epsg:AreaOfUse>
</epsg:extent>
</epsg:ExtentDefinition>
</gml:dictionaryEntry>
© OGP 2012
Page 56 of 56
Registered Office
Brussels Office
Houston Office
City Tower
40 Basinghall Street
14th Floor
London EC2V 5DE
United Kingdom
Bd du Souverain,165
4th Floor
B-1160 Brussels
Belgium
10777 Westheimer Road
Suite 1100
Houston, Texas 77042
United States
T +44 (0)20 3763 9700
F +44 (0)20 3763 9701
[email protected]
T +32 (0)2 566 9150
F +32 (0)2 566 9159
[email protected]
T +1 (713) 470 0315
[email protected]
www.iogp.org