i. Abstract
This document is the specification for the OpenSearch extension for Earth Observation collections and products search.
This standard is intended to provide a very simple way to make queries to a repository that contains Earth Observation information and to allow syndication of repositories.
ii. Keywords
The following are keywords to be used by search engines and document catalogues.
ogcdoc, OGC document, OpenSearch, Earth Observation Extension, OpenSearch Earth Observation Service, EO Collection, EO Product, ISO19115, INSPIRE, OGC O&M EOP
iii. History
The first release of the document was the result of work undertaken within the GENESI-DR (Ground European Network for Earth Science Interoperations - Digital Repositories) project funded by the 7th Framework program of the European (EC Grant Agreement no. 212073), the follow-up project GENESI-DEC (Ground European Network for Earth Science Interoperations -Digital Earth Community) funded by the same program (Contract nº RI-261623). This document was initially produced during the ESA HMA (Heterogeneous Missions Accessibility) initiative [RD.25] and related projects.
iv. Preface
The recent release of the document is the result of work sponsored by EUMETSAT and ESA in the context of the continuation of the ESA HMA (Heterogeneous Missions Accessibility) initiative [RD.25].
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.
Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.
v. Submitting organizations
The following organizations submitted this Document to the Open Geospatial Consortium (OGC):
- EUMETSAT
- European Space Agency (ESA)
- con terra GmbH
- Spacebel s.a.
- Terradue SRL
The editors would like to acknowledge that this work is the result of collaboration and review of many organizations and would like to thank for the comments and contributions from:
- CEOS/WGISS
- NASA
- AIRBUS
- CGI
- EOX GmbH
- Luciad
- Terradue
- VITO
Note: this collaboration not imply a complete endorsement by these organizations.
vi. Submitters
All questions regarding this submission should be directed to the editor or the submitters:
Name | Affiliation | OGC Member? |
---|---|---|
Uwe Voges |
con terra GmbH |
Yes |
Yves Coene |
Spacebel s.a. |
Yes |
Pedro Gonçalves |
Terradue Srl |
Yes |
Andrea della Vecchia |
ESA |
Yes |
Olivier Barois |
ESA |
Yes |
Michael Schick |
EUMETSAT |
Yes |
John Taylor |
CGI |
Yes |
vii. Future Work
In a future release of OGC 10-032, that standard should include things which are specified for the time being within this document:
- Encoding of paging (using atom:link rel="prev", rel="next",…) and OS metadata (such as os:totalResults).
1. Scope
The OpenSearch specification originated in a community effort built around Amazon's A9.com. The specification was intended to allow syndication of search results that could then be aggregated by one large index. OpenSearch provides a simple to use description of the search interface, which is called an OpenSearch Description document (OSDD). A client (e.g., a browser) can use this description to check which response formats are supported and how a query/filter can be formulated.
The OpenSearch specification [RD.15] is made available under the Creative Commons Attribution-Sharealike 2.5 license (http://www.opensearch.org/Specifications/License).
Earth Observation (EO) products have specific characteristics that follow a specific logic inherent to the EO community of users of satellite datasets. Typically, an EO product contains information regarding:
- The platform or satellite from where it originates (e.g. SPOT, ENVISAT);
- The sensor used to acquire the data;
- The processing centre responsible for its elaboration together with the date and software used for the processing; and
- Specific satellite orbit information like the orbit number, wrsLatitudeGrid, and direction.
The OSDD format permits the use of extensions that allow search engines to inform clients about specific and contextual query parameters and response formats. This OGC standard specifies an Earth Observation extension to OpenSearch that defines query parameters that permit the filtering of search results with those fields and a search response model supporting different search response encodings.
This specification is complementary to the OpenSearch Geo and Time Extensions (OGC 10-032 [RD.3]) and recommends its use for spatial and temporal queries. Further the standard defines a default response encoding based on Atom 1.0/XML [RD.22].
Other formats may be supported by the server as well. One of these formats is GeoJSON(-LD) as defined in the document OGC 17-047 [RD.6]. The document does not (re)define the OpenSearch search parameters as these are already defined in this specification. Their mapping to the GeoJSON response format is included that document.
This document incorporates feedback from developers in the open source geospatial community and includes several annexes showing result sets in several possible formats and giving details that reflect a sample implementation.
Services that support the OpenSearch Specification and the Earth Observation extension defined in this document are called OpenSearch Earth Observation Services (OpenSearch-EO).
2. Conformance
Conformance with this standard shall be checked using all the relevant tests specified in Annex A (normative) of this document. Annex C presents the different RELAX-NG schemas for the OpenSearch Description and the Atom Response Documents. The framework, concepts, and methodology for testing, and the criteria to be achieved to claim conformance are specified in the OGC Compliance Testing Policies and Procedures and the OGC Compliance Testing web site[1].
To conform to this OGC standard, a software implementation shall implement the Core conformance class and may implement any other of the conformance classes specified in Table 1. The implementation can be validated with the conformance tests defined in Annex A (normative). An implementation candidate to conformance shall minimally pass all applicable tests specified in the Abstract Test Suite belonging to core conformance class (minimal support).
The mappings between the conformance classes and the requirement classes are shown in Table 1.
Note 1: If a requirement class r11 depends on another requirement class r1 then also r1 must be implemented.
Note 2: Every requirement class (except the Core requirement class) depends on the Core requirement class.
All requirements-classes, conformance-classes and conformance tests described in this document are owned by the specification identified as http://www.opengis.net/spec/opensearcheo/1.0.
For each conformance class listed in Table 1 there is a corresponding requirement class with the same name. Table 2 lists each requirement classes and the set of requirements that correspond to each requirement class. Furthermore, each requirement in Table 2 is covered by a test in the conformance tests defined in Annex A: Abstract Test Suite (Normative).
Conformance Class Name | Conformance Class URI | Requirements Classes (URI's) |
---|---|---|
Core |
/conf/Core |
/req/Core |
Core | /conf/Core | /req/Core |
INSPIRE | /conf/INSPIRE | /req/INSPIRE |
ParameterExtension | /conf/ParameterExtensio | n /req/ParameterExtension |
CustomSearch | /conf/CustomSearch | /req/CustomSearch |
SetsAndRanges | /conf/SetsAndRanges | /req/SetsAndRanges |
LinkTypeAttribute | /conf/LinkTypeAttribute | /req/LinkTypeAttribute |
OSGeoTempParameters | /conf/OSGeoTempParameters | /req/OSGeoTempParameters |
OSGeoNameParamete | /conf/OSGeoNameParameter | /req/OSGeoNameParameter |
GeometryTypes | /conf/GeometryTypes | /req/GeometryTypes |
Paging | /conf/Paging | /req/Paging |
SpecReference | /conf/SpecReference | req/SpecReference |
Spatial Extent | /conf/SpatialExtent | /req/SpatialExtent |
Data Access | /conf/DataAccess | /req/DataAccess |
TwoStepSearch | /conf/TwoStepSearch | /req/TwoStepSearch |
MetadataLink | /conf/MetadataLink | /req/MetadataLink |
InlineMetadata | /conf/InlineMetadata | /req/InlineMetadata |
ImagesByLink | /conf/ImagesByLink | /req/ImagesByLink |
ImagesByMediaRSS | /conf/ImagesByMediaRSS | /req/ImagesByMediaRSS |
EntrySummary | /conf/EntrySummary | /req/EntrySummary |
Offerings | /conf/Offerings | /req/Offerings |
Exception | /conf/Exceptions | /req/Exceptions |
The mappings between the requirements and the associated requirement class are shown in the table below.
Requirements Class Name / URI | Dependendcy | Requirements URIs |
---|---|---|
Core /req/Core |
OpenSearch-Geo [RD.3] | /req/osdd /req/osdd/namespaces /req/osdd/atom /req/request/parameters /req/request/kvpget /req/osdd/optionalTemplateParameters /req/response/ATOM /req/response/ATOM/model /req/response/ATOM/feed /req/response/ATOM/entry /req/response/ATOM/entry/identifier /req/request/osParameters /req/request/multiWordsSearchTerms /req/request/stringParameters |
ParameterExtension /req/ParameterExtension |
/req/Core | /req/osdd/parameterExtension |
CustomSearch /req/CustomSearch |
/req/Core /req/ParameterExtension |
/req/osdd/customSearch |
SetsAndRanges /req/SetsAndRanges |
/req/Core /req/ParameterExtension |
/req/osdd/setsAndRanges |
LinkTypeAttribute /req/LinkTypeAttribute |
/req/Core | /req/response/ATOM/entry/linkTypeAttribute |
OSGeoTempParameters /req/osGeoTempParameters |
/req/Core | /req/request/osGeoTempParameters |
OSGeoNameParameter /req/osGeoNameParameter |
/req/Core | /req/request/osGeoNameParameter |
GeometryTypes /req/GeometryTypes |
/req/Core /req/ParameterExtension |
/req/osdd/supportedGeometryTypes |
Paging /req/Paging |
/req/Core | /req/response/ATOM/entry/resultSetNavigation /req/response/ATOM/feed/useOfStartIndexOverStartPage |
SpecReference /req/SpecReference |
/req/Core | req/response/ATOM/feed/specReference |
Spatial Extent /req/spatialExtent |
/req/Core | /req/response/ATOM/feed/extent /req/response/ATOM/entry/extent req/response/ATOM/entry/GeoRSSMultiPolygonFootprint /req/response/ATOM/entry/GeoRSSMultiPointFootprint /req/response/ATOM/entry/GeoRSSMultiLineFootprint |
Data Access /req/DataAccess |
/req/Core | /req/response/ATOM/entry/datalink /req/response/ATOM/entry/ordering /req/response/ATOM/entry/documentationLink |
TwoStepSearch /req/TwoStepSearch |
/req/Core /req/LinkTypeAttribute |
/req/response/ATOM/entry/searchContextLink /req/response/ATOM/entry/parentIdentifier /req/osdd/relAttributeOfURL /req/osdd/queryElement |
MetadataLink /req/MetadataLink |
/req/Core /req/LinkTypeAttribute |
/req/response/ATOM/entry/metadataLink |
InlineMetadata /req/InlineMetadata |
/req/Core /req/ParameterExtension |
/req/response/ATOM/entry/inlineMetadata /req/osdd/inlineMetadataSchemas |
ImagesByLink /req/ImagesByLink |
/req/Core /req/LinkTypeAttribute |
/req/response/ATOM/entry/imagesByLink |
ImagesByMediaRSS /req/ImagesByMediaRSS |
/req/Core | /req/response/ATOM/entry/imagesByMediaRSS |
EntrySummary /req/EntrySummary |
/req/Core | /req/response/ATOM/entry/atomSummary |
Offerings /req/Offerings |
/req/Core | /req/response/ATOM/entry/offerings |
INSPIRE /req/INSPIRE |
/req/Core | /req/request/INSPIREParameters |
Exceptions /req/Exceptions |
/req/Core | /req/exceptions |
3. References
3.1 Normative References
The following normative documents contain provisions that, through reference in this text, constitute provisions of this document. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply. For undated references, the latest edition of the normative document referred to applies.
- [RD.1] OGC: OGC 06-121r9 - OpenGIS® Implementation Standard: OGC Web Services Common Standard, 2010
- [RD.2] OASIS: OASIS OpenSearch - searchRetrieve: Part 4. APD Binding for OpenSearch Version 1.0, OASIS Standard, 2013, http://docs.oasis-open.org/search-ws/searchRetrieve/v1.0/searchRetrieve-v1.0-part4-opensearch.html
- [RD.3] OGC: OGC 10-032r8 - OpenGIS® Implementation Standard: OpenSearch Geo and Time Extensions, 2014
- [RD.4] OGC: OGC 10-157r3 – OpenGIS® Implementation Standard: Earth Observation Metadata profile of Observations & Measurements, V 1.0, 2012
- [RD.5] OGC: OGC 10-157r4 – OpenGIS® Implementation Standard: Earth Observation Metadata profile of Observations & Measurements, V 1.1, 2016
- [RD.6] OGC: OGC 17-047 – OGC OpenSearch-EO GeoJSON(-LD) Response Encoding Standard, 2019
- [RD.7] OGC: OGC 17-003 – OGC EO Dataset Metadata GeoJSON(-LD) Encoding Standard, 2019
- [RD.8] W3C: Linked Data Platform Paging 1.0, W3C Working Group Note, 2015, http://www.w3.org/TR/ldp-paging/
- [RD.9] CEOS: CEOS OpenSearch Best Practice, Issue 1.2, 2017.
- [RD.10] The Library of Congress – Information Resource Retrieval Protocols: SRU/SRW (Search and Retrieve URL/Web Service) DC Schema for SRU (http://www.loc.gov/standards/sru/recordSchemas/dc-schema.html)
- [RD.11] OGC: OGC 12-084r2 – OGC OWS Context Atom Encoding Standard, V 1.0, 2013
- [RD.12] OGC: OGC 13-043 – OGC Download Service for Earth Observation Products, OGC Best Practice, V 1.0, 2014
- [RD.13] OGC: OGC 06-141r6 - Ordering Services Framework for Earth Observation Products Interface Standard (OSEO), V 1.0, 2012
- [RD.14] OGC: OGC 13-043 – OGC Download Service for Earth Observation Products Best Practice (ROSEO), V 1.0, 2014
- [RD.15] OpenSearch.org: OpenSearch - http://www.opensearch.org/Specifications/OpenSearch/1.1, 2018
- [RD.16] OGC: OGC GeoRSS Community standard, V 1.0, OGC 17-002r1, 2017 http://www.opengeospatial.org/standards/georss.
- [RD.17] OpenSearch.org: OpenSearch Parameter Extension - http://www.opensearch.org/Specifications/OpenSearch/Extensions/Parameter/1.0/Draft_2
- [RD.18] OpenSearch.org: OpenSearch SRU Extension - http://www.opensearch.org/Community/Proposal/Specifications/OpenSearch/Extensions/SRU/1.0/Draft_1
- [RD.19] European Commission: INSPIRE Metadata Implementing Rules: Technical Guidelines based on EN ISO 19115 and EN ISO 19119, 2013 (http://inspire.ec.europa.eu/Technical-Guidelines2/Metadata/6541)
- [RD.20] European Commission: Technical Guidance for the implementation of INSPIRE Discovery Services, 2011 (http://inspire.ec.europa.eu/documents/technical-guidance-implementation-inspire-discovery-services-0)
- [RD.21] RSS Advisory Board: Media RSS Specification, Version 1.5.1, 2009 http://www.rssboard.org/media-rss
- [RD.22] IETF: Atom - The Atom Syndication Format (IETF RFC4287), 2005
- [RD.23] no longer assigned.
- [RD.24] no longer assigned.
- [RD.25] ESA HMA (Heterogeneous Missions Accessibility). http://www.esa.int/About_Us/ESA_Publications/ESA_TM-21_Heterogeneous_Missions_Accessibility
- [RD.26] ISO: ISO 19115:2003, Geographic Information – Metadata, 2003
- [RD.27] ISO: ISO/TS 19139:2007, Geographic information -- Metadata -- XML schema implementation, 2007
- [RD.28] ISO: ISO19115-2:2009, Geographic information – Metadata – Part 2: Extensions for imagery and gridded data, 2009
- [RD.29] ISO: ISO/TS 19139-2:2012, Geographic information - Metadata - XML schema implementation - Part 2: Extensions for imagery and gridded data, 2012
- [RD.30] ISO: ISO 19115-1:2014, Geographic information -- Metadata -- Part 1: Fundamentals, 2014
- [RD.31] ISO: ISO/TS 19115-3, Geographic information -- Metadata -- Part 3: XML schema implementation for fundamental concepts, 2016
3.2 Other References
- Dublin Core Metadata Initiative term declarations represented in RDF schema language, http://dublincore.org/schemas/rdfs/.
- ESA: HMA - Heterogeneous Missions Accessibility – Design Methodology, Architecture and Use of Geospatial Standards for the Ground Segment Support of Earth Observation missions ESA TM-21, 2012 http://www.esa.int/About_Us/ESA_Publications/ESA_TM-21_Heterogeneous_Missions_Accessibility
- ISO: ISO 19115:2003/Cor 1:2006, Geographic information – Metadata - Corrigendum 1, 2006
- W3C: RDF 1.1 Concepts and Abstract Syntax - Richard Cyganiak, David Wood, Markus Lanthaler, Editors. 2014. W3C Proposed Recommendation. URL: http://www.w3.org/TR/rdf11-concepts/.
- RDFS - http://schema.rdfs.org/
- IETF: RFC 3339 - Date and Time on the Internet: Timestamps. Internet profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar, 2002 http://www.ietf.org/rfc/rfc3339.txt
- IETF: RFC 5646 - Tags for Identifying Languages, 2009 http://tools.ietf.org/html/rfc5646
- IETF: RFC 5988 - Web Linking, 2010 http://tools.ietf.org/html/rfc5988, http://www.iana.org/assignments/link-relations/link-relations.xhtml
4. Terms and Definitions
This document uses the terms defined in Sub-clause 5.3 of [RD.1], which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word "shall" (not "must") is the verb form used to indicate a requirement to be strictly followed to conform to this standard.
For the purposes of this document, the following additional terms and definitions apply.
- 4.1 Collection
-
A Collection or a Dataset Series (in short Series) defines a container for a list of Products (or datasets) that have common properties. Products inherit all the Collection properties that are not explicitly overridden.
- 4.2 Product
-
A Product or a Dataset corresponds to an identifiable collection of data under one single identifier. It is independent of a physical form or an encoding even if it is normally distributed in a single file.
- 4.3 OpenSearch
-
Draft specification for web search syndication, originating from Amazon’s A9 project and given a corresponding interface binding by the OASIS Search Web Services working group.
- 4.4 OpenSearch Geospatial Service
-
Defines services that comply with the OpenSearch Specification and the Geo extension defined in OGC 10-032 [RD.3]
- 4.5 OpenSearch GeoTemporal Service
-
Defines services that comply with the OpenSearch Specification, the Geo and Time extensions defined in OGC 10-032 [RD.3]
- 4.6 OpenSearch Description Document (OSDD)
-
An XML document available at a consistent location describing metadata for the service and providing templates for queries.
- 4.7 OpenSearch Earth Observation Service
-
Defines services that comply with the OpenSearch Specification and the Earth Observation extension defined in this document.
- 4.8 Search feed
-
The response document of search service request containing zero or several entries.
- 4.9 Entry
-
An element of the search response representing a catalogued resource.
5. Conventions
5.1 Abbreviated terms
Some of the abbreviated terms listed in Subclause 5.1 of the OWS Common Implementation Specification [RD.1] apply to this document, plus the following:
ATS Abstract Test Suite
CEOS Committee on Earth Observation Satellites
DM Download Manager
EC European Commission
EO Earth Observation
EOP Earth Observation Product
ESA European Space Agency
GML Geography Markup Language
HMA Heterogeneous Missions Accessibility
HTTP HyperText Transfer Protocol
IRI Internationalised Resource Identifier
ISO International Organisation for Standardisation
OASIS Advancing Open Standards for the Information Society
OGC Open Geospatial Consortium
OSDD OpenSearch Description Document
O&M Observations and Measurements
OWC OGC Web Services Context
RDF Resource Description Framework
RDFS RDF Schema
REST Representational State Transfer
SRU Search/Retrieval via URL
SWS Search Web Services
UML Unified Modelling Language
UMM Unified Metadata Model
URI Uniform Resource Identifier
URL Uniform Resource Locator
URN Uniform Resource Name
W3C World Wide Web Consortium
WGISS Working Group on Information Systems and Services
WKT Well-Known Text
WMC Web Map Context
WMS Web Map Service
XML eXtensible Markup Language
XSD XML Schema Definition Language
5.2 Namespace prefix conventions
Table 3 lists the namespaces used in this document and the specifications in which they are defined. The prefixes are not normative and are merely chosen for convenience; they may appear in examples without being formally declared, and have no semantic significance. The namespaces to which the prefixes correspond are normative, however.
Prefix | Namespace URI | Specification |
---|---|---|
atom | http://www.w3.org/2005/Atom | The Atom Syndication Format [RD.22] |
dc | http://purl.org/dc/elements/1.1/ | Namespace Policy for the DCMIa |
dct | http://purl.org/dc/terms/ | Namespace Policy for the DCMIa |
eo | http://a9.com/-/opensearch/extensions/eo/1.0/ | OpenSearch Extension for EO V 1.0 (this document) |
eop | http://www.opengis.net/eop/2.0 or http://www.opengis.net/eop/2.1 |
EO product schema namespace defined in OGC 10-157r3 [RD.4] or EO product schema namespace defined in OGC 10-157r4 [RD.5] |
geo | http://a9.com/-/opensearch/extensions/geo/1.0/ | OpenSearch Geo Extension [RD.3] |
georss | http://www.georss.org/georss | GeoRSS Specification b [RD.16] |
gmd | http://www.isotc211.org/2005/gmd | ISO19115/ISO19139 [RD.26][RD.27] |
gmi | http://www.isotc211.org/2005/gmi | ISO19115-2/ISO19139-2 [RD.28][RD.29] |
lmb | http://www.opengis.net/lmb/2.1/ | [RD.5] |
mdb | http://standards.iso.org/iso/19115/-3/mdb/1.0 | ISO19115-1/ISO19115-3 [RD.30][RD.31] |
media | http://search.yahoo.com/mrss/ | Media RSS [RD.21] |
os | http://a9.com/-/spec/opensearch/1.1/ | OpenSearch 1.1 Specification [RD.2] |
owc | http://www.opengis.net/owc/1.0/ | OGC OWS Context Atom Encoding Standard [RD.11] |
param | http://a9.com/-/opensearch/extensions/param/1.0/ | OpenSearch parameter extension [RD.17] |
rdfs | http://www.w3.org/2000/01/rdf-schema# | RDF Schema c |
sru | http://a9.com/-/opensearch/extensions/sru/2.0/ | OpenSearch SRU Extension [RD.18] |
srw_dc | info:srw/schema/1/dc-schema | Dublin Core Schema for SRU [RD.10] |
time | http://a9.com/-/opensearch/extensions/time/1.0/ | OpenSearch Time Extension [RD.3] |
a See http://dublincore.org/documents/dcmi-namespace/ b See http://www.georss.org/ c See https://www.w3.org/TR/rdf-schema/ |
6. OpenSearch-EO - Overview
As the OpenSearch specification [RD.15] is defined in the OASIS SWS bindings [RD.2], this document is confined to the OpenSearch Earth Observation extension (OpenSearch-EO). This standard is complementary to the OpenSearch Geo and Time Extensions (OGC 10-032 [RD.3]) and recommends its use for spatial and temporal queries especially for EO collection and EO product metadata. Further it defines a default response encoding based on Atom 1.0/XML [RD.22].
OpenSearch-EO specifies a series of parameters that can be used to constrain search results. These are discussed in more detail in section 7.2. In short, provision is made to filter results by sensor information, acquisition, processing parameters and other information. The purpose of OpenSearch-EO is to make sure that OpenSearch parameters are aligned with OGC 10-157r4 [RD.5] that describes EO products metadata and with ISO19115(-1) [RD.26, RD.30]/ISO19115-2 [RD.28] that is used for describing EO collection metadata (see 6.1). An OpenSearch Earth Observation Service is not expected to support all the elements defined here, but use them in accordance with a given use case and search service contents.
Further an important aspect is the definition of search responses supporting best practices which are relevant in the context hypermedia web guidelines such as HATEOAS (Hypermedia As The Engine Of Application State).
6.1 Collections and Products
An EO Collection (i.e., dataset series) is defined as a set of EO Products (i.e., datasets), sharing a common specification or characteristics. Below are a few examples on how to define an EO Collection:
- EO products of the same platform (e.g.; Sentinel-1) and the same instrument (C-SAR sensor) acquired over a specific Area of Interest (AOI) and Time of Interest (TOI);
- EO products of several SAR instruments over AOI and TOI (e.g., Time series with ENVISAT ASAR, Sentinel-1A/b, TSX); and
- EO products acquired from a combination of platforms/instrument (e.g., Sentinel-1/SAR, Sentinel-2/MSI and SMOS/MIRAS) over AOI and TOI to address specific purposes. Definition of a "Thematic Collection" would permit the users to get direct access to EO products, necessary for specific application domains (e.g., Forestry, land monitoring, Emergency, ice monitoring, etc.), instead of searching in all the collections for different satellite products.
Definition of flexible EO collections that are as close as possible to users’ needs requires the possibility to associate a specific EO product to more than one EO Collection.
6.2 Two Step Search
In a typical search scenario, a client will first request for a catalogue´s OpenSearch Description Document - OSDD (see Figure 1), which will detail the catalogue’s support for searching for collections. Then, the client will submit a query searching for EO collections, according to allowed search parameters specified in this OSDD (See 7.2), and will receive the results in XML encoding (e.g., atom). In the search response, the user will find the details of the collections that match the search, these can be used to select a collection of interest and to identify how to request its specific search support (e.g., via the identifier or the hyperlink to the OSDD for the collection). This OSDD can then be retrieved and used to search for products of interest in this EO products collection.
7. OpenSearch-EI Search Service
The OpenSearch Description Document (OSDD) allows clients to retrieve service metadata from a server. The response to a request for a Description shall be an XML document in the form specified by the SWS OpenSearch bindings published by OASIS. A brief summary of the Description’s requirements is provided in OGC 10-032 [RD.3].
The OpenSearch Earth Observation Extension is designed to provide a search facility of Earth Observation metadata to the OpenSearch protocol. One namespace is provided for use in URL templates that form part of the OSDD (see Example 1, below), published by the server in XML at a stable URL.
A server provides an OSDD that a client reads to determine the response formats available and how to formulate a search/retrieve request. The OSDD includes a mandatory URL element containing a mandatory request template. Where several request templates are provided, a client may choose the one offering the most useful format (specified by MIME-type defined in the type attribute of the element) as shown in Example 1 below.
Requirement /req/osdd An OpenSearch Earth Observation Service shall return (upon request) a valid OpenSearch description document (OSDD). Requirement Class /req/Core Requirement /req/osdd/namespaces The namespace below and a corresponding namespace prefix shall be included when parameters from the EO Extension are used in an OpenSearch Description document: http://a9.com/-/opensearch/extensions/eo/1.0/ Requirement Class /req/Core Requirement /req/osdd/atom Any server supporting the Earth Observation extension shall provide an access point returning documents complying with the rules specified in [RD.22] (Atom 1.0). Requirement Class /req/Core
Requirement 1 | /req/osdd |
---|---|
An OpenSearch Earth Observation Service shall return (upon request) a valid OpenSearch description document (OSDD). |
|
Requirement Class | /req/Core |
Requirement 2 | /req/osdd/namespaces |
---|---|
This namespace and a corresponding namespace prefix shall be included when parameters from the EO Extension are used in an OpenSearch Description document: · http://a9.com/-/opensearch/extensions/eo/1.0/ |
|
Requirement Class | /req/Core |
Requirement 3 | /req/osdd/atom |
---|---|
Any server supporting the Earth Observation extension shall provide an access point returning documents complying with the rules specified in [RD.22] (Atom 1.0). | |
Requirement Class | /req/Core |
EXAMPLE 1 The following XML document provides a sample response to a request for an OpenSearch Description Document from a repository supporting the Earth Observation Extension. Note that the response type is given in the type attribute and not implicitly on the URL path
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:eo="http://a9.com/-/opensearch/extensions/eo/1.0/">
<ShortName>Web Search</ShortName>
<Description>Use Example.com to search the Web.</Description>
<Contact>admin@example.com</Contact>
<Url type="application/atom+xml" template="http://example.com/myatom/?q= {searchTerms}&pw={startPage?}&platform={eo:platform?}"/>
<Url type="application/geo+json" template="http://example.com/geojson/?q= {searchTerms}&pw={startPage?}&platform={eo:platform?}"/>
<Url type="text/html" template="http://example.com/?q= {searchTerms}&platform={eo:platform?}&pw={startPage?}"/>
<LongName>Example.com Web Search</LongName>
<Query role="example" searchTerms="cat" eo:platform="ENVISAT"/>
<Attribution>Copyright 2005, Example.com, Inc.</Attribution>
<SyndicationRight>open</SyndicationRight>
</OpenSearchDescription>
Requirement 4 | /req/osdd/relAttributeOfURL |
---|---|
The rel attribute of the Url element shall be used in the following manner:
|
|
Requirement Class | /req/TwoStepSearch |
Requirement 5 | /req/osdd/queryElement |
---|---|
For testability purposes, it is recommended that an OSDD at least contains one
|
|
Requirement Class | /req/TwoStepSearch |
7.2 Search operation request
7.2.1 Fundamental search request parameters to search by time and space
The time and geo extensions defined in OGC10-032 [RD.3] give a list of fundamental search parameters sufficient to constrain a search by time and space. This OpenSearch Extension for EO complements those extensions with optional parameters specific to EO data.
Requirement 6 | /req/request/osParameters |
---|---|
From OpenSearch the implementation shall support the following minimum set of search parameters for both "collection" and "granule" levels:
|
|
Requirement Class | /req/Core |
Requirement 7 | /req/request/osGeoTempParameters |
---|---|
From the time and geo extensions (OGC10-032 [RD.3]) an OpenSearch-EO implementation is recommended to support the following minimum set of search parameters for both "collection" and "granule" levels:
|
|
Requirement Class | /req/OSGeoTempParameters |
Requirement 8 | /req/request/osGeoNameParameter |
---|---|
It is recommend to support geo:name and optionally, geo:radius (see (OGC10-032 [RD.3])). If geo:name is supported but geo:radius is not, it is recommended that the search be interpreted as a point search .
When a server supports geo:radius the default value should be specified in the OSDD within the "title" attribute of the corresponding Parameter element. Example:
|
|
Requirement Class | /req/OSGeoNameParameter |
7.2.2 Concept of search request parameters for the Earth Observation Extension
This Earth Observation Extension defines in Table 4, Table 5, Table 6 and Table 7 an extensive list of OpenSearch parameters that can (all parameters are optional) be supported by a search engine when searching via EO-related attributes. It is not expected or advisable for an OpenSearch Earth Observation Service to support all the parameters. Their use is largely dependent on the search engine contents and capabilities.
If a search engine use case is for the discovery of collections, typically the parameters of tables 4-6 are relevant. Those tables include parameters like: platform, orbitType, instrument, sensorType, spectralRange, processingLevel or compositeType. Table 6 includes the parameters which are aligned with the INSPIRE requirements like title, topicCategory, organisationName, useLimitation or accessConstraint.
Conversely, if the search engine use case is for the discovery of products (usually when a collection was already identified and afterwards a subset of interesting products of that collection shall be selected), it is recommended to select relevant parameters e.g., from: orbitNumber, orbitDirection, wrsLatitudeGrid, archivingCenter, processingCenter, processingSoftware, processingDate, cloudCover, snowCover as defined in Table 7.
In some situations, it may happen that for the selection of a subset of interesting products all parameters of tables 4-7 may become relevant. This is the case for example:
- when there is no strict separation between collections and products (e.g., because products are described and indexed by parameters which include those which are typically only used for collections); and
- for "thematic collections" in cases where:
- products in a collection are of various types/sensors/missions/... ("a logical collection could be defined as a group of products from a given number of collections…"); and
- the same product belongs to several collections.
Requirement 9 | /req/request/parameters |
---|---|
An OpenSearch-EO implementation shall support the OpenSearch-EO Parameters (all optional) as specified in: Table 4, Table 5, Table 6 and Table 7. | |
Requirement Class | /req/Core |
7.2.3 Informing clients about constraints on search request parameters
To inform clients about permitted values (supported value list, range, ...) for a given parameter an OpenSearch Earth Observation Service should make use of the OpenSearch Parameter Extension [RD.17]. The Parameter Extension explicitly advertises the valid lists and ranges of search parameters. Thus, it allows reducing ambiguities and errors dramatically.
Requirement 10 | /req/osdd/parameterExtension |
---|---|
It is recommended to support the OpenSearch Parameter Extension with the following constraints:
In case of inconsistency1 between the Parameter extension annotations and the |
|
Requirement Class | /req/parameterExtension |
1 Examples of "inconsistencies" are when the |
The following example provides a sample response to a request for an OpenSearch Description from a repository supporting the Earth Observation and Temporal Extensions. The OpenSearch Parameter extension elements are used to suggest to clients the possible values for temporal range and acquisition station names
Example 2: OpenSearch Desction Document supporting the OpenSearch Parameter extension
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:eo="http://a9.com/-/opensearch/extensions/eo/1.0/"
xmlns:param="http://a9.com/-/spec/opensearch/extensions/parameters/1.0/"
xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/">
<ShortName>Web Search</ShortName>
<LongName>Example.com Web Search</LongName>
<Description>Use Example.com to search the Web.</Description>
<Tags>example web</Tags>
<Contact>admin@example.com</Contact>
<Url type="application/atom+xml" template="http://example.com/myatom/?pw={startPage?}&acq={eo:acquisitionStation?}&start={time:start?}&end={time:end?}">
<param:Parameter name="start" value="{time:start}" minimum="0"
minInclusive="2011-01-01T00:00:00Z" maxExclusive="2012-01-01T00:00:00Z"/>
<param:Parameter name="end" value="{time:end}" minimum="0"
minInclusive="2011-01-01T00:00:00Z" maxExclusive="2012-01-01T00:00:00Z"/>
<param:Parameter name="acq" value="{eo:acquisitionStation}" minimum="0"
title="Acquisition Station">
<param:Option value="PDHS-K" label="Kiruna"/>
<param:Option value="PDHS-E" label="ESRIN"/>
</param:Parameter>
</Url>
<Attribution>Copyright 2005, Example.com, Inc.</Attribution>
<SyndicationRight>open</SyndicationRight>
</OpenSearchDescription>
For conveying the server’s search support condition on ranges and sets (used in request parameters to express that a set or a whole range of values are accepted) the Parameter Extension can be used as well.
Requirement 11 | /req/osdd/setsAndRanges |
---|---|
It is recommended that the server suggests the support for range and/or set notations in the OSDD using the Parameter Extension with the EO specific attributes eo:rangeAllowed and/or eo:setAllowed. If "pattern attribute" is provided in the Parameter Extension, it shall describe the syntax of each one of the n* values (i.e., n1, n2, …) used in the range or set notation.
|
|
Requirement Class | /req/SetsAndRanges |
8. OpenSearch Earth Observation operation
8.1 Search operation request
8.1.1 Search request parameters
An OpenSearch Earth Observation Service should use the time and geo extensions defined in OGC10-032 when supporting the search respectively by acquisition times and acquisition footprint. This Earth Observation Extension defines in Table 3, Table 4, Table 5 and Table 6 an extensive list of OpenSearch parameters that can be supported by a search engine.
It is not expected or advisable for an OpenSearch Earth Observation Service to support all the elements defined in this specification. The elements defined should be used to constrain search results and their use is largely dependent on the search engine contents and capabilities (see also 6).
If a search engine use case is for the discovery of collections, it is recommended to use the elements of Table 3 and Table 4 that include parameters like: platform, orbitType, instrument, sensorType, spectralRange, processingLevel, compositeType, organisationName, useLimitation or accessConstraint. If the search engine is obliged to be aligned with INSPIRE requirements it SHALL support the elements of Table 4.
Conversely, if the search engine use case is for the discovery of products[2] associated to a single collection, it is recommended to select additional relevant parameters e.g. from: orbitNumber, orbitDirection, track, frame, archivingCenter, processingCenter, processingSoftware, processingDate, cloudCover and snowCoveras shown in Table 5. The specific parameters related to the acquisition of Earth Observation products are shown on Table 6.
Requirement 4 /req/request/parameters |
The eo OpenSearch Parameters shall be used as specified in Table 3, Table 5 and Table 6 |
OpenSearch Parameter a | Definition | Data Type |
---|---|---|
productType |
A string identifying the entry type (e.g. ER02_SAR_IM__0P, MER_RR__1P, SM_SLC__1S, GES_DISC_AIRH3STD_V005) |
String c |
doi |
Digital Object Identifier identifying the product (see http://www.doi.org) |
String c |
platform |
A string with the platform short name (e.g. Sentinel-1) |
String c |
platformSerialIdentifier |
A string with the Platform serial identifier |
String c |
instrument |
A string identifying the instrument (e.g. MERIS, AATSR, ASAR, HRVIR. SAR). |
String c |
sensorType |
A string identifying the sensor type. Suggested values are: OPTICAL, RADAR, ALTIMETRIC, ATMOSPHERIC, LIMB |
String c |
compositeType |
Type of composite product expressed as time period that the composite product covers (e.g. P10D for a 10 day composite) |
String c |
processingLevel |
A string identifying the processing level applied to the entry |
String c |
orbitType |
A string identifying the platform orbit type (e.g. LEO, GEO) |
String c |
spectralRange |
A string identifying the sensor spectral range (e.g. INFRARED, NEAR-INFRARED, UV, VISIBLE) |
String c |
wavelength |
A number, set or interval requesting the sensor wavelengths in nanometers. |
Integer b d |
hasSecurityConstraints |
A string informing if the resource has any security constraints. Possible values: TRUE, FALSE |
String c |
dissemination |
A string identifying the dissemination method (e.g. EUMETCast, EUMETCast-Europe, DataCentre) |
String c |
sru:recordSchema f |
Metadata model in which additional metadata should be provided inline (e.g. OGC O&M EOP, ISO19115(-1|-2|-3)/ISO19139(-2), Sensor ML 1.0/2.0 or Dublin Core Schema for SRU. For further details see 8.2.4. |
String (URI) e |
a The name capitalization rules are specified in
Subclause 11.6.2 of [OGC 06-121]. [n1 equals to n1<= field ]n1 equals to n1 < field n2] equals to field <= n2 n2[ equals to field
< n2. e OpenSearch Earth Observation Services are recommended to suggest the supported list of values on the OpenSearch Description document using the OpenSearch Parameter Extension, standard values are e.g.:
f This parameter relates to collection and product search |
OpenSearch Parameter a | Definition | Data Type |
---|---|---|
title |
A name given to the resource i |
String |
topicCategory |
Main theme(s) of the dataset i |
String c |
keyword |
Commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject. h |
String c |
abstract |
Abstract. i |
String |
resolution |
Using this (optional) parameter mandates the usage of one of the following 2 parameter groups within one search request:i. |
|
denominator: Level of detail expressed as a scale factor or a ground distance. Here: the number below the line in a vulgar fraction. Only used, if distanceValue and distanceUOM are not used.i |
Integer b d |
|
distanceValue: Sample ground distance. Here: the distance as decimal value. distanceUOM: Sample ground distance. Here: the name of the unit of measure. CodeList, one of: meter, km,… Only used, if Denominator is not used. i |
Double b d
String c |
|
organisationName |
A string identifying the name of the organization responsible for the resource i |
String c |
organisationRole |
The function performed by the responsible party i |
String j,c |
publicationDate |
The date when the resource was issued |
Date timed |
lineage |
General explanation of the data producer’s knowledge about the lineage of a dataset. i |
String c |
useLimitation |
A string identifying informing if the resource has usage limitations i |
String c |
accessConstraint |
Applied to assure the protection of privacy or intellectual property, and any special restrictions or limitations on obtaining the resource i |
String e,c |
otherConstraint |
Other restrictions and legal prerequisites for accessing and using the resource or metadata. i |
String c |
classification |
Name of the handling restrictions on the resource or metadata i |
String f,c |
language |
Language of the intellectual content of the metadata record i |
String g,c |
specification |
Using this (optional) parameter mandates the usage of the following 4 parameters within one search request:i. specificationTitle: Title of the specification i. specificationDate: Reference date of specification i specificationdateType: Type reference date of specification i degree: This is the degree of conformity of the resource to the related specification. i Possible values: true (if conformant), false (if not conformant), null (if not evaluated) |
String c Date timed String k,c String c |
|
|
|
a The name capitalization rules are specified in
Subclause 11.6.2 of [OGC 06-121]. [n1 equals to n1<= field ]n1 equals to n1 < field n2] equals to field <= n2 n2[ equals to field
< n2. e Codelist (MD_RestrictionCode), one of: copyright, patent, patentPending, trademark, license, intellectualPropertyRights, restricted, otherRestrictions f Codelist (MD_ClassificationCode), one of: unclassified, restricted, confidential, secret, topSecret g ISO 639-2, other parts may be used h Optional parameter, for INSPIRE mandatory: the use of one keyword expressing the INSPIRE Data theme is required. Relevant INSPIRE data themes concerning EO Product collections are "Land cover" and "Orthoimagery" (see [RD12] Table 15 and Table 21) i Optional parameter, mandatory for INSPIRE. For details see INSPIRE Metadata Implementing Rules: Technical Guidelines based on EN ISO 19115 and EN ISO 19119 and Technical Guidance for the implementation of INSPIRE Discovery Services j Codelist (CI_RoleCode codelist), one of: resourceProvider, custodian, owner, user, distributor, originator, pointOfContact, principalInvestigator, processor, publisher, author k Codelist (CI_DateTypeCode), one of: creation, revision or publication |
Requirement 5 /req/request/INSPIRE |
The OpenSearch Parameters relevant for INSPIRE shall be supported as specified in Table 4. |
OpenSearch Parameter a | Definition | Data Type |
---|---|---|
parentIdentifier |
A string identifying the parent of the entry in a hierarchy of resources |
String c |
productionStatus |
A string identifying the status of the entry (e.g. ARCHIVED, ACQUIRED, CANCELLED) |
String c |
acquisitionType |
Used to distinguish at a high level the appropriateness of the acquisition for "general" use, whether the product is a nominal acquisition, special calibration product or other. Values: NOMINAL, CALIBRATION, OTHER |
String c |
orbitNumber |
A number, set or interval requesting the acquisition orbit |
Integer b |
orbitDirection |
A string identifying the acquisition orbit direction. Possible values are: ASCENDING, DESCENDING |
String |
track |
A string identifying the orbit track |
String c |
frame |
A string identifying the orbit frame |
String c |
swathIdentifier |
Swath identifier (e.g. Envisat ASAR has 7 distinct swaths (I1,I2,I3...I7) that correspond to precise incidence angles for the sensor). Value list can be retrieved with codeSpace. |
String c |
cloudCover |
A number, set or interval of the cloud cover % (0-100). |
Integer b |
snowCover |
A number, set or interval of the snow cover % (0-100). |
Integer b |
lowestLocation |
A number, set or interval of the bottom height of datalayer (in meters). |
Double b |
highestLocation |
A number, set or interval of the top height of datalayer (in meters). |
Double b |
productVersion |
A string identifying the version of the Product |
String c |
productQualityStatus |
This optional field must be provided if the product passed a quality check. Possible values: NOMINAL and DEGRADED |
String c |
productQuality DegradationTag |
Keywords giving information on the degradations affecting the product. Possible values are mission specific and can be freely define (e.g. "RADIOMETRY", "MISSING_LINES") |
String c |
processorName |
A string identifying the processor software name |
String c |
processingCenter |
A string identifying the processing center (e.g. PDHS-E, PDHS-K, DPA, F-ACRI) |
String c |
creationDate |
The date when the metadata item was ingested for the first time (i.e. inserted) in the catalogue |
Date timed |
modificationDate |
The date when the metadata item was last modified (i.e. updated) in the catalogue. |
Date timed |
processingDate |
A date interval requesting entries processed within a given time interval |
Date timed |
sensorMode |
A string identifying the sensor mode. |
String c |
archivingCenter |
A string identifying the archiving center. |
String c |
processingMode |
Processing mode. Often referred to as Real Time, Near Real Time etc. |
String c |
a The name capitalization rules are specified in
Subclause 11.6.2 of [OGC 06-121]. [n1 equals to n1<= field ]n1 equals to n1 < field n2]
equals to field <= n2 n2[ equals to field
< n2. |
OpenSearch Parameter a | Definition | Data Type |
---|---|---|
availabilityTime |
The time when the result became available (e.g. if postprocessing or laboratory analysis is required, it might be different to the phenomenonTime). dateTime in ISO 8601 format (CCYY-MM- DDThh:mm[:ss[.cc]]Z) |
Date Time b d |
acquisitionStation |
A string identifying the station used for the acquisition |
String c |
acquisitionSub Type |
Acquisition sub-type |
String c |
startTimeFrom AscendingNode |
Start time of acquisition in milliseconds from Ascending node date. |
Integer b d |
completionTime FromAscending Node |
Completion time of acquisition in milliseconds from Ascending node date. |
Integer b d |
illumination AzimuthAngle |
Mean illumination/solar azimuth angle given in degrees. (i.e. uom='deg') |
Double b d |
illumination ZenithAngle |
Mean illumination/solar zenith angle given in degrees. |
Double b d |
illumination ElevationAngle |
Mean illumination/solar elevation angle given in degrees. (i.e. uom='deg') |
Double b d |
polarisationMode |
Polarisation mode taken from codelist: S (for single), D (for dual), T (for twin), Q (for quad), UNDEFINED |
String c |
polarization Channels |
Polarisation channel transmit/receive configuration: horizontal, vertical. |
String c |
antennaLook Direction |
LEFT or RIGHT |
String c |
minimum IncidenceAngle |
Minimum incidence angle given in degrees (i.e. uom='deg') |
Double b d |
maximum IncidenceAngle |
Maximum incidence angle given in degrees (i.e. uom='deg') |
Double b d |
dopplerFrequency |
Doppler Frequency of acquisition |
Double b d |
incidenceAngle Variation |
Incidence angle variation |
Double b d |
a The name capitalization rules are specified in
Subclause 11.6.2 of [OGC 06-121]. [n1 equals to n1<= field ]n1 equals to n1 < field n2]
equals to field <= n2 n2[ equals to field
< n2 |
To suggest clients of the possible values of a given parameter an OpenSearch Earth Observation Service should make use of the OpenSearch Parameter Extension.
EXAMPLE 2 The following XML document provides a sample response to a request for an OpenSearch Description from a repository supporting the Earth Observation and Temporal Extensions. The OpenSearch Parameter extension elements are used to suggest clients the possible values for temporal range and acquisition station names:
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:eo="http://a9.com/-/opensearch/extensions/eo/1.0/"
xmlns:param="http://a9.com/-/spec/opensearch/extensions/parameters/1.0/"
xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/">
<ShortName>Web Search</ShortName>
<LongName>Example.com Web Search</LongName>
<Description>Use Example.com to search the Web.</Description>
<Tags>example web</Tags>
<Contact>admin@example.com</Contact>
<Url type="application/atom+xml"
template="http://example.com/myatom/? pw={startPage?}&acq={eo:acquisitionStation?}&start={time:start?}& end={time:end?}">
<param:Parameter name="start" value="{time:start}" minimum="0"
minInclusive="2011-01-01T00:00:00Z" maxExclusive="2012-01-01T00:00:00Z"/>
<param:Parameter name="end" value="{time:end}" minimum="0"
minInclusive="2011-01-01T00:00:00Z" maxExclusive="2012-01-01T00:00:00Z"/>
<param:Parameter name="acq" value="{eo:acquisitionStation}" minimum="0"
title="Acquisition Station">
<param:Option value="PDHS-K" label="Kiruna"/>
<param:Option value="PDHS-E" label="ESRIN"/ >
</param:Parameter>
</Url>
<Attribution>Copyright 2005, Example.com, Inc.</Attribution>
<SyndicationRight>open</SyndicationRight>
</OpenSearchDescription>
Requirement 6 /req/suggestions |
The server implements a list of suggestions for string parameters for the Earth Observation extension elements on the OpenSearch Description document. |
Requirement 7 /req/suggestions-range |
The server implements a suggestion of parameters range for the Earth Observation extension elements on the OpenSearch Description document. |
All parameters of the OpenSearch query should be mapped to the appropriate catalogue or metadata fields of the underlying metadata management system. Annex D shows the suggested mappings for
- Earth Observation Metadata profile of Observations & Measurements (OGC 10-157)
- ISO 19115 / ISO19115-2 Geographic information – Metadata
- OGC Catalogue Services Standard 2.0 Extension Package for ebRIM Application Profile Earth Observation Products (OGC 06-131)
- OGC I15 (ISO19115 Metadata) Extension Package of CS-W ebRIM Profile (OGC 13-084)
- OGC Catalogue Services Specification 2.0 Extension Package for ebRIM Application Profile: SensorML (OGC 09-163)
8.1.2 Search request KVP encoding (mandatory)
Requirement 8 /req/request/kvpget |
Servers shall implement HTTP GET transfer of the Search operation request, using KVP encoding. |
Note that for the given key-value pairs, the key can be an arbitrary string, specified by one given instance of an OpenSearch repository. For example, one Description may provide a URL template asking for platform={eo:platform}, another specifying plat={eo:platform}. It is the responsibility of the client application to parse the URL template and create the appropriate keys for each key-value pair. These parameter sets are templates from which URLs can be constructed. The search client must replace every instance of a template parameter with a value before the search request is performed. If a search engine wishes to indicate that a template parameter is optional and can be replaced with the empty string, then the "?" notation described in the section on optional template parameters should be used. Clients should take special consideration to the fact that according to the OpenSearch specification the OpenSearch parameters usage is not restricted to the URL query string and can be used as templates values in any of URL components (e.g. path, host).
EXAMPLE 3 A search operation URL template with the OpenSearch parameter as a query string parameter and the corresponding request:
<Url template="http://foo.com/atom/?count={count?}&st={startIndex?}& platform={eo:platform}" type="application/atom+xml" />
http://foo.com/atom/?count=&st=&platform=ENVISAT
EXAMPLE 4 A search operation URL template with one of OpenSearch Parameter as the URL path and the corresponding request:
<Url template="http://foo.com/{eo:platform}/atom/?count={count?}& st={startIndex?}" type="application/atom+xml" />
http://foo.com/ENVISAT/atom/?count=&st=
8.2 Search operation response
8.2.1 Normal response parameters
The normal response to a valid Search operation request shall be in one of several formats that are specified in the OpenSearch Description for a given instance. The mandatory response format is Atom but the server may support other formats.
8.2.2 Normal response XML encoding
The normative response format for an OpenSearch service using Earth Observation Extension shall be ATOM 1.0. The properties shown in the Atom and OpenSearch namespaces are those mandated by the core specification.
Following the Atom format the response is made of a atom:feed element that may contain several atom:entry elements. While the latter describe the returned resources that respect the query performed the first describes the discovery service or search engine.
Requirement 9 /req/response/atom |
The server response in Atom encoding shall be in accordance with the rules defined in Table 7 and Table 8. |
In the atom:feed element the response should include the elements listed in Table 7and the atom:entry elements should include the elements listed in Table 8. The metadata for each item in the result set should provide a link to a "full" view of the result, where more detailed metadata according to OGC O&M EOP (OGC 10-157r3, OGC 10-157r4), ISO19115(-1|-2|-3)/ISO19139(-2), SensorML 1.0 (OGC 07-122r2), SensorML 2.0 (OGC 12-000) or Dublin Core Schema for SRU (http://www.loc.gov/standards/sru/recordSchemas/dc-schema.html) can be provided (see 8.2.4) and, when available, a direct link to the resource using the atom:link element.
Requirement 10 /req/entry-eop |
The response includes an eop:EarthObservation element or a more specialized element such as opt:EarthObservation, sar:EarthObservation or other allowed by OGC 10-157r4 for each entry. |
Term | OGC core returnable | Atom Element | Description | Mult. |
---|---|---|---|---|
Title |
dc:title |
atom:feed/ |
A title for the search feed. |
1 mandatory |
Creator |
dc:creator |
atom:feed/ |
An entity primarily responsible for making the content of the search feed |
1 mandatory |
Subject |
dc:subject |
atom:feed/ |
A topic of the search feed. |
n optional |
Abstract |
dct:abstract |
atom:feed/ |
An account of the content of the search feed |
1 optional |
Publisher |
dc:publisher |
atom:feed/ |
An entity or agent responsible for making the search feed. |
1 optional |
Contributor |
dc:contributor |
atom:feed/ |
An entity responsible for making contributions to the content of the search feed |
n optional |
Modified |
dc:date |
atom:feed/ |
A date of a creation or update of the search feed (RFC 3339) |
1 optional |
Identifier |
dc:identifier |
atom:feed/ |
An IRI as a unique identifier of the feed (it excludes relative references). Not to be assumed dereferenceable. |
1 mandatory |
atom:feed/ |
The local identifier of the feed. |
1 optional |
||
Source |
dc:source |
atom:feed/atom:link[@rel=’search’][@type=‘application/opensearchdescription+xml‘] |
A reference to a resource from which the present feed is derived. This points to the OpenSearch document that describes the search engine |
1 mandatory |
Language |
dc:language |
atom:feed/ |
A language of feed’s content (RFC 5646) |
1 optional |
Envelope |
dct:spatial |
atom:feed/ georss:* |
The maximal spatial extent of the search feed (GEORSS). |
n optional |
Rights |
dc:rights |
atom:feed/ |
Information about rights held in and over the resource |
1 optional |
Relation (first,next, last page and previous pages) |
dc:relation
|
atom:feed/atom:link[@rel= ‘first‘] |
Reference to the next page of the search feed |
1 optional |
atom:feed/atom:link[@rel= ‘next‘] |
Reference to the next page of the search feed |
1 optional |
||
atom:feed/atom:link[@rel= ‘last‘] |
Reference to the next page of the search feed |
1 optional |
||
atom:feed/atom:link[@rel= ‘previous‘ or @rel="prev"] |
Reference to the previous page of the search feed |
1 optional |
||
atom:feed/atom:link[@rel=’up’] |
Refers to a parent resource in a hierarchy of resources. |
n optional |
||
Query |
- |
atom:feed/os:Query |
Defines the search request query. |
1 optional |
Extent (total results, start index and items per page) |
dct:extent |
atom:feed/ |
OpenSearch element with the total number of feed’s entries |
1 mandatory |
atom:feed/ |
OpenSearch element with the index of the first feed’s entry. |
1 mandatory |
||
atom:feed/ |
OpenSearch element with the number of entries returned per page. |
1 mandatory |
||
Note: This table is equal Table 6 of OGC 10-032r8 |
Term | OGC returnable | Atom Element | Description | Mult. |
---|---|---|---|---|
Title |
dc:title |
atom:entry/ |
A title given to the resource. |
1 mandatory |
Creator |
dc:creator |
atom:entry/ |
An entity primarily responsible for making the content of the resource |
1 optional |
Subject |
dc:subject |
atom:entry/ |
A topic of the content of the resource (a topic category or other taxonomy can be applied) |
n optional |
Abstract |
dct:abstract |
atom:entry/ |
An account of the content of the resource |
1 optional |
Contributor |
dc:contributor |
atom:entry/ |
An entity responsible for making contributions to the content of the resource |
n optional |
Modified |
dc:date |
atom:entry/ |
A date of a creation or update of the metadata resource (RFC-3339) a |
1 optional |
Date |
eop:EarthObservation /om:phenomenonTime/gml:TimePeriod |
atom:entry/ |
A date or range of dates relevant to the resource (RFC-3339) a. |
1 optional |
Identifier |
dc:identifier |
atom:entry/ |
A unique identifier of the entry. Its content MUST be an IRI (it excludes relative references). It should not be assumed that it can be dereferenced. |
1 mandatory |
atom:entry/ |
The identifier of the resource within the search engine context (local reference). |
1 mandatory |
||
Source |
dc:source |
atom:entry/ |
A reference to a document that is the source of the information provided in the entry d. |
n optional |
Language |
dc:language |
atom:entry/ |
A language of the intellectual content of the resource as defined in RFC 5646 |
1 optional |
Rights |
dc:rights |
atom:entry/ |
Information about rights held in and over the resource |
1 optional |
Envelope |
eop:Footprint |
atom:entry/ georss:* |
The spatial extent or scope of the content of the resource defined with an GEORSS element |
1 optional |
Relation |
dc:relation |
atom:entry/ |
Reference to the OpenSearch description document when the resource is search service or a collection |
1 optional |
atom:entry/ |
Reference to the location of the data resource described in the entry |
n optional |
||
atom:entry/atom:link[@rel=’icon’] |
Reference to a quicklook or browse image representing the entry b |
n optional |
||
atom:entry/ |
A reference to a document with the entry information in an alternative format c, d For more details see 8.2.4 |
n optional |
||
atom:entry/atom:link[@rel=’up’] |
Refers to a parent resource in a hierarchy of resources |
n optional |
||
Format |
dc:format |
atom:entry/atom:link[@rel=’enclosure’]/@type |
The MIME types of the data resources available |
n optional |
Additional Metadata |
|
|
For more details see 8.2.4 |
1 optional |
a
When specifying a temporal range the element should contain two dates
separated by a slash, like: b The different images are differentiated by type and size.
c An atom:entry MUST NOT contain more than one atom:link element with a rel attribute value of "alternate" that has the same combination of type and hreflang attribute values d An atom:link element with a rel attribute value of "alternate" or "via" may have one of the following link "types": · "application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.1" for OGC O&M EOP (OGC 10-157r4) · "application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.0" for OGC O&M EOP (OGC 10-157r3) · "application/vnd.iso.19139+xml" for ISO19115/19139 · "application/vnd.iso.19139-2+xml" for ISO19115-2/19139-2 · "application/vnd.iso.19115-3+xml" for ISO19115-1/19115-3 · "text/xml;subtype="sensorML/2.0" for SensorML 2.0 · "text/xml;subtype=sensorML/1.0.1" for SensorML 1.0 · "application/xml" for Dublin Core schema for SRU
Note: Grey rows show differences with Table 7 of OGC 10-032r8 |
8.2.3 Search context propagation to external end points
If the resource described in the response entry aggregates other resources (e.g. is a collection or a search service) it should possess an atom:link with the relation "search" [RFC 5988]. This feature can be used to define recursive searches where the search context (e.g. queriables) is propagated to an internal or external service (see e.g. 6.2). It can also allow the aggregation of entries into collections or groups.
EXAMPLE 5 Defining access to the product file of the atom:entry
<atom:link rel="search" type="application/opensearchdescription+xml"
href="http://search.acme.com/osd.xml" title="Search this resource" />
When an entry contains a link with the rel attribute equal to "search" and the type attribute equal to "application/opensearchdescription+xml" clients are recommended to propagate the query parameters to the search engine described by the OpenSearch description document located on the href attribute value using the original query parameters.
8.2.4 Linking entry with metadata
If possible, the access to the original authoritative metadata source of the entry should be given using one atom:link element with the atom:rel equal to "via" [RFC5988] with the corresponding format announced in the type attribute.
If the information of this entry is available in other metadata encodings, then a server can include atom:link elements for each format using the "alternate" [RFC 5988] relation name and corresponding format in the type attribute.
EXAMPLE 6 Defining the access to authoritative source and alternative representations of the atom:entry
<atom:link rel="alternate" type="application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.1"
title="EOP O&M Metadata" href="http://site.com/eo/asarimageEOOM.xml" length="1245"/>
<atom:link rel="via" type="application/vnd.iso.19139+xml" length="845"
title="ISO 19139 Metadata" href="http://site.com/eo/asarimageISO.xml"/>
If a server allows to obtain metadata inline, it can advertise that it supports the sru:recordSchema (see Table 3) and use the parameter extension to say which ones.
EXAMPLE 7 Defining metadata inline
<georss:where><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList
srsDimension="2">42.2879 128.7535 42.4897 127.4932 41.4254 127.1936 41.2326 128.3991 42.2879 128.7535
</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></georss:where>
…
<eop:EarthObservation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=http://www.opengis.net/opt/2.1 ../xsd/opt.xsd
xmlns:eop="http://www.opengis.net/eop/2.1" … gml:id="eo_ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1">
<om:phenomenonTime><gml:TimePeriod
gml:id="tp_ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1">
<gml:beginPosition>2010-01-22T01:44:41.316Z</gml:beginPosition>
…
EXAMPLE 8 Use of parameter extension for sru:recordSchema
<param:Parameter name="rec" value="{sru:recordSchema}" minimum="0"
title="Metadata model in which additional metadata should be provided inline">
<param:Option value="http://www.isotc211.org/2005/gmi" label="ISO19115-2/ISO19139-2"/>
</param:Parameter>
Advertising sru:recordSchema means it can provide metadata inline in the Atom response. Not advertising it means it cannot do this but will provide the available alternative atom:links instead. A server supporting sru:recordSchema can also support providing alternate links instead - support for both mechanisms by a single server are not mutually exclusive (the client can then decide what he wants by using or not using the sru:recordSchema parameter).
8.2.5 Linking an entry with its thumbnail, quicklook or masks
To define the reference to a resource representing a quicklook, browse image or cloud mask that represents the entry, the "Media RSS Specification" should be used [Media RSS]. Each of the images should be included as a separate media:content element. Multiple elements (e.g. Quicklook and cloud mask) for the same entry single entry should be included in the same media:groupelement.
The scheme parameter in the media:category element should reflect a thesaurus/codelist covering the various possibilities, e.g. the values allowed in the OGC 10-157r4 codelist for browse/BrowseInformation/type (THUMBNAIL, QUICKLOOK, ALBUM) and mask/MaskInformation/type (SNOW, CLOUD, QUALITY).
EXAMPLE 9 Defining the reference to the quicklook image of the atom:entry
<feed xmlns="http://www.w3.org/2005/Atom
xmlns:media="http://search.yahoo.com/mrss/" …>
…
<entry>
…
<media:group>
<media:content url="http://mda.com/browse/RADARSAT-2/2012/08/01/PASS_RS2_210671_3_32488_1.jpg" type="image/jpeg" medium="image">
<media:category scheme="http://www.opengis.net/spec/EOMPOM/1.1">QUICKLOOK</media:category>
</media:content>
…
</media:group>
</entry>
8.2.6 Error handling
The Atom and the OpenSearch specifications do not directly specify how to deal with server and request errors. It is recommended that an OpenSearch Earth Observation Service use the HTTP error codes for client (4xx) and server (5xx) errors. In particular, it is recommended to use the following error codes in the particular situations of client error:
- 400 Bad Request: The request has an invalid syntax (i.e. badly formatted geometry)
- 413 Request Entity Too Large: The request originates too many returnable hits
For server side errors the following error codes are recommended:
- 500 Internal Server Error: Default code for the server side for an execution error.
- 501 Not Implemented: When requesting an unimplemented feature.
- 503 Service Unavailable: When the search service is temporarily not available (due to overload or other reasons)
- 504 Gateway Timeout: When the search engine is a broker or aggregator to other services that fail to produce a answer within a giving time frame.
EXAMPLE 10 Response example for a bad request (incorrect eo:orbitNumber format)
HTTP/1.1 400 Bad Request
Content-Type: text/plain
Date: Mon, 6 Feb 2012 14:27:37 GMT
Content-Length: 56
Bad Request - Wrong orbitNumber format (number or range)
Annex A
Conformance Class Abstract Test Suite (Normative)
A.1 Conformance Test Class Core (/conf/Core)
A.1.1 OpenSearch description document | ||
Requirements |
/req/osd |
|
Test Purpose: |
Verify that the server generates a valid OpenSearch description document. |
|
Test Method: |
Execute an HTTP GET request to retrieve a server's description document. Verify that the response is correct XML and is valid according to the description in this standard. |
|
References: |
Section 7 |
|
Test type: |
Capability |
A.1.2 Atom Response Type | ||
Requirements |
/req/atom |
|
Test Purpose: |
Verify that the server defines an URL template for the Atom response. |
|
Test Method: |
Execute an HTTP GET request to retrieve a server's description document. Verify that an URL element with the type equal to "application/atom+xml" exists. |
|
References: |
Section 7 |
|
Test type: |
Capability |
A.1.3 Namespaces | ||
Requirements |
/req/namespaces |
|
Test Purpose: |
Verify that the server uses the EO extension namespaces |
|
Test Method: |
Execute an HTTP GET request to retrieve a server's description document. Verify that the EO extensions namespace is present |
|
References: |
Section 7 |
|
Test type: |
Capability |
A.1.4 ATOM response | ||
Requirements |
/req/response/atom |
|
Test Purpose: |
Verify that the server response is a valid ATOM document |
|
Test Method: |
Execute search request and validate the ATOM document |
|
References: |
Section 8.2.2 |
|
Test type: |
Capability |
A.1.5 KVP GET | ||
Requirements |
/req/request/kvpget |
|
Test Purpose: |
Verify that the server accepts search parameters as KVP |
|
Test Method: |
Execute an HTTP GET request to retrieve a server's description document. Verify that the OpenSearch template accepts URL parameters |
|
References: |
Section 8.1.2 |
|
Test type: |
Capability |
A.1.6 Parameters | ||
Requirements |
/req/request/parameters |
|
Test Purpose: |
Verify that the server accepts search parameters from the EO extension |
|
Test Method: |
Execute an HTTP GET request to retrieve a server's description document. Verify that the OpenSearch template accepts template parameters from the EO extension |
|
References: |
Section 8.1.1 |
|
Test type: |
Capability |
A.2 Conformance Test Class EarthObservationForeignElement (/conf/EarthObservationForeignElement)
A.2.1 EarthObservationForeignElement | ||
Requirements |
/req/entry-eop |
|
Test Purpose: |
Verify that the server response includes a eop:EarthObservation (or derived) element for each entry. |
|
Test Method: |
Submit a series of requests to the server and verify that the server responds as include an eop:EarthObservation (or derived) element for each entry. |
|
References: |
Section 8.2.2 Table 7 Note d |
|
Test type: |
Capability
|
A.3 Conformance Test Class Suggestions (/conf/Suggestions)
A.3.1 Suggestions | ||
Requirements |
/req/suggestions |
|
Test Purpose: |
Verify that the server implements a list of suggestions for string parameters for the Earth Observation extension elements on the OpenSearch Description document. |
|
Test Method: |
Execute an HTTP GET request to retrieve a server's description document. Verify that the URL template includes parameters of the character string type (Table 5, note c). Verify that the document includes a parameter element with the attribute pattern or with child Option elements with suggested values. |
|
References: |
Section 8.1.1 |
|
Test type: |
Capability |
A.3.2 Suggestions-Range | ||
Requirements |
/req/suggestions-range |
|
Test Purpose: |
Verify that the server implements a suggestion of parameters range for the Earth Observation extension elements on the OpenSearch Description document. |
|
Test Method: |
Execute an HTTP GET request to retrieve a server's description document. Verify that the URL template includes parameters of the numeric type (Table 5, note d). Verify that the document includes a parameter element with the attribute suggesting the value range. |
|
References: |
Section 9.2.1 Table 5 Note c |
|
Test type: |
Capability
|
A.4 Conformance Test Class INSPIRE (/conf/INSPIRE)
A.4.1 INSPIRE | ||
Requirements |
/req/request/INSPIRE |
|
Test Purpose: |
Verify that the server supports the INSPIRE relevant (mandatory) OpenSearch parameters (queryables are: useLimitation, accessConstraint, otherConstraint, classification, organisationName, organisationRole, topicCategory, lineage, keyword, denominator, distanceValue, distanceUOM, language, title, abstract, start, end, box, specificationTitle, specificationDate, specificationdateType, Degree). |
|
Test Method: |
Verify that the OpenSearch Description Document includes a URL Search Template providing all INSPIRE relevant search parameters. |
|
References: |
Section 8.1.1 |
|
Test type: |
Capability |
Annex B: XML Schema Documents
B.1 Atom Schema (schemas/atom/2005/rfc4287.rnc)[4]
# -*- rnc -*-
# RELAX NG Compact Syntax Grammar for the
# Atom Format Specification
# Taken from http://tools.ietf.org/html/rfc4287#page-35
# Defined a new constructor for Atom Feed and Entry
namespace atom = "http://www.w3.org/2005/Atom"
namespace xhtml = "http://www.w3.org/1999/xhtml"
namespace s = "http://purl.oclc.org/dsdl/schematron"
namespace local = ""
start = atomFeed | atomEntry
# Common attributes
atomCommonAttributes = attribute xml:base { atomUri }?,
attribute xml:lang { atomLanguageTag }?, undefinedAttribute*
# Text Constructs
atomPlainTextConstruct = atomCommonAttributes,
attribute type { "text" | "html" }?, text
atomXHTMLTextConstruct = atomCommonAttributes, attribute type { "xhtml" }, xhtmlDiv
atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct
# Person Construct
atomPersonConstruct = atomCommonAttributes,
(element atom:name { text } & element atom:uri { atomUri }?
& element atom:email { atomEmailAddress }? & extensionElement*)
# Date Construct
atomDateConstruct = atomCommonAttributes, xsd:dateTime
# atom:feed
atomFeed = [
s:pattern [ name="check authors"
s:rule [ context = "atom:feed"
s:assert [test = "atom:author or not(atom:entry[not(atom:author)])"
"An atom:feed must have an atom:author unless all"
~ "of its atom:entry children have an atom:author."]]]]
element atom:feed { atomFeedConstruct }
atomFeedConstruct =
atomCommonAttributes, (atomAuthor* & atomCategory* & atomContributor*
& atomGenerator? & atomIcon? & atomId & atomLink* & atomLogo? & atomRights? &
atomSubtitle? & atomTitle & atomUpdated & extensionElement*), atomEntry*
# atom:entry
atomEntry = [
s:pattern [ name="check entry’s alternate link"
s:rule [ context = "atom:entry" s:assert [
test = "atom:link[@rel=’alternate’]"
~ "or atom:link[not(@rel)] or atom:content"
"An atom:entry must have at least one atom:link element"
~ "with a rel attribute of ‘alternate’ or an atom:content."
]]]
s:pattern [ name="check entry’s author"
s:rule [ context = "atom:entry" s:assert [
test = "atom:author or ../atom:author or atom:source/atom:author"
"An atom:entry must have an atom:author if its feed does not."
]]]]
element atom:entry { atomEntryConstruct }
atomEntryConstruct =
atomCommonAttributes,
(atomAuthor* & atomCategory* & atomContent? & atomContributor*
& atomId & atomLink* & atomPublished? & atomRights? & atomSource?
& atomSummary? & atomTitle & atomUpdated & extensionElement*)
# atom:content
atomInlineTextContent = element atom:content { atomCommonAttributes,
attribute type { "text" | "html" }?, (text)* }
atomInlineXHTMLContent = element atom:content { atomCommonAttributes,
attribute type { "xhtml" }, xhtmlDiv }
atomInlineOtherContent = element atom:content { atomCommonAttributes,
attribute type { atomMediaType }?, (text|anyElement)*}
atomOutOfLineContent = element atom:content { atomCommonAttributes,
attribute type { atomMediaType }?, attribute src { atomUri }, empty }
atomContent = atomInlineTextContent | atomInlineXHTMLContent
| atomInlineOtherContent | atomOutOfLineContent
atomAuthor = element atom:author { atomPersonConstruct }
atomCategory =
element atom:category { atomCommonAttributes, attribute term { text },
attribute scheme { atomUri }?, attribute label { text }?,
undefinedContent }
atomContributor = element atom:contributor { atomPersonConstruct }
atomGenerator = element atom:generator { atomCommonAttributes,
attribute uri { atomUri }?, attribute version { text }?, text }
atomIcon = element atom:icon { atomCommonAttributes, (atomUri) }
atomId = element atom:id { atomCommonAttributes, (atomUri) }
atomLogo = element atom:logo { atomCommonAttributes, (atomUri)}
atomLink =
element atom:link { atomCommonAttributes, attribute href { atomUri },
attribute rel { atomNCName | atomUri }?, attribute type { atomMediaType }?,
attribute hreflang { atomLanguageTag }?, attribute title { text }?,
attribute length { text }?, undefinedContent }
atomPublished = element atom:published { atomDateConstruct }
atomRights = element atom:rights { atomTextConstruct }
atomSource = element atom:source {
atomCommonAttributes, (atomAuthor* & atomCategory* & atomContributor* &
atomGenerator? & atomIcon? & atomId? & atomLink* & atomLogo? & atomRights?
& atomSubtitle? & atomTitle? & atomUpdated? & extensionElement*)}
atomSubtitle = element atom:subtitle { atomTextConstruct }
atomSummary = element atom:summary { atomTextConstruct }
atomTitle = element atom:title { atomTextConstruct }
atomUpdated = element atom:updated { atomDateConstruct }
# Low-level simple types
atomNCName = xsd:string { minLength = "1" pattern = "[^:]*" }
# Whatever a media type is, it contains at least one slash
atomMediaType = xsd:string { pattern = ".+/.+" }
# As defined in RFC 5646
atomLanguageTag = xsd:string { pattern = "[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*"}
# Unconstrained; it’s not entirely clear how IRI fit into
# xsd:anyURI so let’s not try to constrain it here
atomUri = text
# Whatever an email address is, it contains at least one @
atomEmailAddress = xsd:string { pattern = ".+@.+" }
# Simple Extension
simpleExtensionElement = element * - atom:* { text }
# Structured Extension
structuredExtensionElement = element * - atom:* {
(attribute * { text }+, (text|anyElement)*)
| (attribute * { text }*, (text?, anyElement+, (text|anyElement)*))}
# Other Extensibility
extensionElement = simpleExtensionElement | structuredExtensionElement
undefinedAttribute = attribute * - (xml:base | xml:lang | local:*) { text }
undefinedContent = (text|anyForeignElement)*
anyElement = element * { (attribute * { text } | text | anyElement)* }
anyForeignElement = element * - atom:* { (attribute * { text } | text | anyElement)* }
# XHTML
anyXHTML = element xhtml:* { (attribute * { text } | text | anyXHTML)* }
xhtmlDiv = element xhtml:div { (attribute * { text } | text | anyXHTML)* }
# EOF
B.2 OpenSearch Atom Schema (schemas/opensearch/1.1/osatom.rnc)
# -*- rnc -*-
# RELAX NG Compact Syntax Grammar for
# Atom encoding and foreign elements for OpenSearch
namespace s = "http://purl.oclc.org/dsdl/schematron"
namespace atom = "http://www.w3.org/2005/Atom"
namespace os = "http://a9.com/-/spec/opensearch/1.1/"
# Redefine atom:feed to include new OpenSearch elements
atomFeedConstruct &= osQuery ? & osTotalResults? &osStartIndex? &osItemsPerPage?
osQuery = element os:Query { undefinedAttribute*, ( osQueryAttr ) }
osTotalResults = element os:totalResults { xsd:int }
osStartIndex = element os:startIndex { xsd:int }
osItemsPerPage = element os:itemsPerPage { xsd:int }
include "osquery.rnc"
# Replacing definitions on RFC4287
# relative path schemas/atom folder
include "../../atom/2005/rfc4287.rnc"{
# Redefine the Simple Extension to exclude os:* elements
simpleExtensionElement = element * - (atom:* | os:*) { text }
# Redefine the Structured Extension to exclude os:* elements
structuredExtensionElement = element * -
(atom:* | os:* ) { (attribute * { text }+,(text|anyElement)*)
| (attribute * { text }*, (text?, anyElement+, (text|anyElement)*))}
# Redefine Atom rules
atomFeed = [
s:rule [ context = "atom:feed"
s:assert [ test = "atom:author or not(atom:entry[not(atom:author)])"
"An atom:feed must have an atom:author unless all"
~ "of its atom:entry children have an atom:author."]]
]
element atom:feed { atomFeedConstruct }
atomEntry =[
s:pattern [ name="check entry content"
s:rule [ context = "atom:entry"
s:assert [ test = "atom:content"
"An atom:entry must have one atom:content MUST have content"
~ "element in a format understandable by generic Atom readers"
~ " ( @type equal to ‘html’ is recommended)"]]]
]
element atom:entry { atomEntryConstruct }
}
# EOF
B.3 OpenSearch Description Document Schema (schemas/opensearch/1.1/osdd.rnc)
# -*- rnc -*-
# RELAX NG Compact Syntax Grammar for
# OpenSearch Description Document
namespace os = "http://a9.com/-/spec/opensearch/1.1/"
namespace s = "http://purl.oclc.org/dsdl/schematron"
namespace local = ""
start = osDocument
osDocument = element os:OpenSearchDescription { osDocumentConstruct }
osDocumentConstruct =
element os:ShortName { xsd:string { maxLength = "16" } }
& element os:Description { xsd:string { maxLength = "1024" } }
& element os:Url { osdUrlAttr } *
& element os:Contact { xsd:string {pattern=".+@.+"}}?
& element os:Tags { text }? & element os:LongName { xsd:string {maxLength="48"}}?
& element os:Image { osdImage } *
& element os:Query { undefinedAttribute*, ( osQueryAttr ) }*
& element os:Developer { xsd:string { maxLength = "64" } }?
& element os:Attribution { xsd:string { maxLength = "256" } }?
& element os:SyndicationRight { osdSyndicationRightValues } ?
& element os:AdultContent { "false" | "true" } ?
& element os:Language {xsd:string { pattern="[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*"}}?
& element os:InputEncoding { text } ? & element os:OutputEncoding { text } ?
& undefinedAttribute*
& extensionElement*
osdUrlAttr = attribute template { text }, attribute type { text },
attribute rel { osdRelationValues }?, attribute indexOffset { xsd:int }?,
attribute pageOffset { xsd:int }?, undefinedAttribute*, extensionElement*
osdImage = attribute height {xsd:int}, attribute width {xsd:int},
attribute type {xsd:string}, text
include "osquery.rnc"
osdRelationValues = "results" | "suggestions" | "self" | "collection"
osdSyndicationRightValues = "open" | "limited" | "private" | "closed"
# Simple Extension
simpleExtensionElement = element * - os:* { text }
# Structured Extension
structuredExtensionElement = element * - os:* {
(attribute * { text }+, (text|anyElement)*)
| (attribute * { text }*, (text?, anyElement+, (text|anyElement)*))}
# Other Extensibility
extensionElement = simpleExtensionElement | structuredExtensionElement
undefinedAttribute = attribute * - (local:* ) { text }
undefinedContent = (text|anyForeignElement)*
anyElement = element * { (attribute * { text } | text | anyElement)* }
anyForeignElement = element * - os:* { (attribute * { text } | text | anyElement)* }
# EOF
B.4 OpenSearch Query Element Schema (schemas/opensearch/1.1/osquery.rnc)
# -*- rnc -*-
# RELAX NG Compact Syntax Grammar for
# OpenSearch Query element
namespace os = "http://a9.com/-/spec/opensearch/1.1/"
namespace s = "http://purl.oclc.org/dsdl/schematron"
namespace local = ""
osQueryAttr = attribute role { osQueryRoleValues },
attribute title { xsd:string { maxLength="256"}}?, attribute searchTerms { text }?,
attribute totalResults { xsd:int }?, attribute count { text }?,
attribute startIndex { text }?, attribute startPage { text }?,
attribute inputEncoding { text }?, attribute outputEncoding { text }?,
attribute language { text }?
osQueryRoleValues = "request" | "example" | "related" | "correction" | "subset" | "superset"
# EOF
B.5 GeoRSS Schema (schemas/georss/1.1/georss.rnc)
# -*- rnc -*-
# RELAX NG Compact Syntax Grammar for the GEORSS
# This defines the conformance to the rules of GEORSS
namespace georss="http://www.georss.org/georss"
namespace gml="http://www.opengis.net/gml"
namespace local = ""
georssElement = ( georssSimple | georssWhere)
georssWhere = element georss:where { gmlAttribute*, gmlElement }
georssSimple = georssPoint | georssLine | georssPolygon | georssBox | georssCircle
| georssFeatureTypeTag | georssFeatureName | georssElev | georssFloor
georssPoint = element georss:point { list { xsd:decimal, xsd:decimal } }
georssLine = element georss:line { list { (xsd:decimal, xsd:decimal)+ } }
georssPolygon = element georss:polygon { list { (xsd:decimal, xsd:decimal)+ } }
georssBox = element georss:box {
list { (xsd:decimal, xsd:decimal, xsd:decimal, xsd:decimal) } }
georssCircle = element georss:circle {
list { (xsd:decimal, xsd:decimal, xsd:decimal) } }
georssFeatureTypeTag = element georss:featureTypeTag { text }
georssRelationshipTag = element georss:relationshipTag { text }
georssFeatureName = element georss:featureName { text }
georssElev = element georss:elev {xsd:decimal}
georssFloor = element georss:floor {xsd:decimal}
georssRadius = element georss:radius {xsd:decimal}
gmlAttribute = attribute (xml:base | xml:lang | local:* | gml:* ) { text }
gmlElement = (gmlPointElement | gmlLineStringElement |
gmlPolygonElement | gmlEnvelopeElement )
gmlPointElement =
element gml:Point { gmlAttribute*,
element gml:pos { gmlAttribute*, list { xsd:decimal, xsd:decimal }}}
gmlLineStringElement = element gml:LineString { gmlAttribute*,
element gml:posList {gmlAttribute*, list { (xsd:decimal, xsd:decimal)+ }}}
gmlPolygonElement = element gml:Polygon { gmlAttribute*,
element gml:exterior { gmlAttribute*,
element gml:LinearRing { gmlAttribute*,
element gml:posList { gmlAttribute*,
list { (xsd:decimal, xsd:decimal)+ }}}}}
gmlEnvelopeElement = element gml:Envelope { gmlAttribute*,
( element gml:lowerCorner { gmlAttribute*,
list { xsd:decimal, xsd:decimal } }
& element gml:upperCorner { gmlAttribute*,
list { xsd:decimal, xsd:decimal } }) }
# EOF
B.6 Earth Observation Extension Description Document Schema (schemas/opensearch/extensions/eo/1.0/osddeo.rnc)
# -*- rnc -*-
# RELAX NG Compact Syntax Grammar for OpenSearch Description Documents
# as defined in OGC 13-026
namespace s = "http://purl.oclc.org/dsdl/schematron"
namespace local = ""
namespace os = "http://a9.com/-/spec/opensearch/1.1/"
namespace time = "http://a9.com/-/opensearch/extensions/time/1.0/"
namespace geo = "http://a9.com/-/opensearch/extensions/geo/1.0/"
namespace eo = "http://a9.com/-/opensearch/extensions/eo/1.0/"
include "eo.rnc"
# Redefine the foreign attribute to exclude eo:* elements
# relative path schemas/opensearch/1.1/ folder
include "../../../1.1/osdd.rnc"{
undefinedAttribute = attribute * - (local:* | eo:* ) { text }
osDocument = [
s:pattern [ name="check Atom template"
s:rule [ context = "os:OpenSearchDescription"
s:assert [ test = "os:Url[@type=’application/atom+xml’]"
"An OpenSearch Description Document must have a Url template with"
~ " type of Atom document." ]]]]
element os:OpenSearchDescription { osDocumentConstruct }
}
#EOF
B.7 Earth Observation Extension Query Element Schema (schemas/opensearch/extensions/eo/1.0/eo.rnc)
# -*- rnc -*-
# RELAX NG Compact Syntax Grammar
# OpenSearch Query Element as defined in OGC 13-026 for the eo extension
namespace eo = "http://a9.com/-/opensearch/extensions/eo/1.0/"
# from Table 3
osQueryAttr &=
attribute eo:productType { text }?
& attribute eo:doi { text }?
& attribute eo:platform { text }?
& attribute eo:platformSerialIdentifier { text }?
& attribute eo:instrument { text }?
& attribute eo:sensorType { text }?
& attribute eo:compositeType { text }?
& attribute eo:processingLevel { text }?
& attribute eo:orbitType { text }?
& attribute eo:spectralRange { text }?
& attribute eo:wavelength {intValueOrSetOrRange }?
& attribute eo:hasSecurityConstraints { text }?
& attribute eo:dissemination { text }?
& attribute sru:recordSchema { text }?
# from Table 4
osQueryAttr &=
attribute eo:title { text }?
& attribute eo:topicCategory { text }?
& attribute eo:keyword { text }?
& attribute eo:abstract { text }?
& attribute eo:denominator { intValueOrSetOrRange }?
& attribute eo:distanceValue { floatValueOrSetOrRange }?
& attribute eo:distanceUOM { text }?
& attribute eo:organisationName { text }?
& attribute eo:organisationRole { text }?
& attribute eo:publicationDate { dateValueOrSetOrRange }?
& attribute eo:lineage { text }?
& attribute eo:useLimitation { text }?
& attribute eo:accessConstraint { text }?
& attribute eo:otherConstraint { text }?
& attribute eo:classification { text }?
& attribute eo:language { text }?
& attribute eo:specificationTitle { text }?
& attribute eo:specificationDate { dateValueOrSetOrRange }?
& attribute eo:specificationdateType { text }?
& attribute eo:degree { text }?
# from Table 5
osQueryAttr &=
attribute eo:parentIdentifier { text }?
& attribute eo:productionStatus { text }?
& attribute eo:acquisitionType { text }?
& attribute eo:orbitNumber { intValueOrSetOrRange }?
& attribute eo:orbitDirection { orbitDirection }?
& attribute eo:track { text }?
& attribute eo:frame { text }?
& attribute eo:swathIdentifier { text }?
& attribute eo:cloudCover { intValueOrSetOrRange }?
& attribute eo:snowCover { intValueOrSetOrRange }?
& attribute eo:lowestLocation { floatValueOrSetOrRange }?
& attribute eo:highestLocation { floatValueOrSetOrRange }?
& attribute eo:productVersion { text }?
& attribute eo:productQualityStatus { text }?
& attribute eo:productQualityDegradationTag { text }?
& attribute eo:processorName { text }?
& attribute eo:processingCenter { text }?
& attribute eo:creationDate { dateValueOrSetOrRange }?
& attribute eo:modificationDate { dateValueOrSetOrRange }?
& attribute eo:processingDate { dateValueOrSetOrRange }?
& attribute eo:sensorMode { text }?
& attribute eo:archivingCenter { text }?
& attribute eo:processingMode { text }?
# from Table 6
osQueryAttr &=
attribute eo:availabilityTime
& attribute eo:acquisitionStation { text }?
& attribute eo:acquisitionSubType { text }?
& attribute eo:startTimeFromAscendingNode { intValueOrSetOrRange }?
& attribute eo:completionTimeFromAscendingNode { intValueOrSetOrRange }?
& attribute eo:illuminationAzimuthAngle { floatValueOrSetOrRange }?
& attribute eo:illuminationZenithAngle { floatValueOrSetOrRange }?
& attribute eo:illuminationElevationAngle { floatValueOrSetOrRange }?
& attribute eo:polarisationMode { polarisationMode }?
& attribute eo:polarizationChannels { text }?
& attribute eo:antennaLookDirection { antennaLookDirection }?
& attribute eo:minimumIncidenceAngle { floatValueOrSetOrRange }?
& attribute eo:maximumIncidenceAngle { floatValueOrSetOrRange }?
& attribute eo:dopplerFrequency { floatValueOrSetOrRange }?
& attribute eo:incidenceAngleVariation { floatValueOrSetOrRange }?
polarisationMode = "S" | "D" | "T" | "Q" | "UNDEFINED"
antennaLookDirection = "LEFT" | "RIGHT"
orbitDirection = "DESCENDING" | "ASCENDING"
# Ranges value|\{value(,value)*\}|[\]\[\(\)]value,value[\]\[\(\)]
intValueOrSetOrRange = xsd:string { pattern ="[\+\-]?[\d]*|\{[\+\-]?[\d]*(,[\d]*)*\}|[\]\[\(\)]?[\+\-]?[\d]*,[\+\-]?[\d]*[\]\[\(\)]?" }
floatValueOrSetOrRange = xsd:string { pattern ="[\+\-]?[\d]*(.[\d]+)?|\{[\+\-]?[\d]*(.[\d]+)?(,[\+\-]?[\d]*(.[\d]+)?)*\}|[\]\[\(\)]?[\+\-]?[\d]*(.[\d]+)?,[\+\-]?[\d]*(.[\d]+)?[\]\[\(\)]?" }
dateValueOrSetOrRange = xsd:string { pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?(Z|[\+\-][0-9]{2}:[0-9]{2}))?|\{[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?(Z|[\+\-][0-9]{2}:[0-9]{2}))?(,[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?(Z|[\+\-][0-9]{2}:[0-9]{2}))?)*\}|[\]\[\(\)][0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?(Z|[\+\-][0-9]{2}:[0-9]{2}))?,[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?(Z|[\+\-][0-9]{2}:[0-9]{2}))?[\]\[\(\)]"}
B.8 Earth Observation Extension Atom Response Schema (schemas/opensearch/extenstions/eo/1.0/atomeo.rnc)
# -*- rnc -*-
# RELAX NG Compact Syntax Grammar for Atom encoding and foreign elements
# as defined in OGC 13-026 for the eo extension
namespace s = "http://purl.oclc.org/dsdl/schematron"
namespace atom = "http://www.w3.org/2005/Atom"
namespace os = "http://a9.com/-/spec/opensearch/1.1/"
namespace eo = "http://a9.com/-/opensearch/extensions/eo/1.0/"
namespace eop = "http://www.opengis.net/eop/2.1"
namespace opt = "http://www.opengis.net/opt/2.1"
namespace sar = "http://www.opengis.net/sar/2.1"
namespace atm = "http://www.opengis.net/atm/2.1"
namespace alt = "http://www.opengis.net/alt/2.1"
namespace lmb = "http://www.opengis.net/lmb/2.1"
namespace ssp = "http://www.opengis.net/ssp/2.1"
namespace local = ""
# Redefine atom:entry to include the EO elements defined in OGC 10-157r4
atomEntryConstruct &= eopElements ?
eopElements = eopElement | optElement | sarElement | atmElement | altElement
| lmgElement | sspElement
eopElement = element eop:EarthObservation { anyChildren }
optElement = element opt:EarthObservation { anyChildren }
sarElement = element sar:EarthObservation { anyChildren }
atmElement = element atm:EarthObservation { anyChildren }
altElement = element alt:EarthObservation { anyChildren }
lmgElement = element lmb:EarthObservation { anyChildren }
sspElement = element ssp:EarthObservation { anyChildren }
anyChildren = undefinedAttribute*, extensionElement*
include "eo.rnc"
# Replacing definitions on RFC4287 plus OpenSearch
# relative path schemas/opensearch/1.1/ folder
include "../../../1.1/osatom.rnc"{
undefinedAttribute = attribute * - (xml:base | xml:lang | local:* | eo:* ) { text }
# Redefine the Simple Extension to exclude owc:* elements
simpleExtensionElement = element * -
(atom:* | os:* | eop:EarthObservation| opt:EarthObservation |
sar:EarthObservation | atm:EarthObservation | alt:EarthObservation |
lmb:EarthObservation | ssp:EarthObservation) { text }
# Redefine the Structured Extension to exclude owc:* elements
structuredExtensionElement = element * -
(atom:* | eop:EarthObservation | opt:EarthObservation | sar:EarthObservation |
atm:EarthObservation | alt:EarthObservation | lmb:EarthObservation |
ssp:EarthObservation | os:* ) {
(attribute * { text }+,(text|anyElement)*)
| (attribute * { text }*, (text?, anyElement+, (text|anyElement)*))}
# Redefine Atom rules
atomFeed = element atom:feed { atomFeedConstruct }
atomEntry =element atom:entry { atomEntryConstruct }
}
# EOF
B.9 Parameter Extension Query Element Schema (schemas/opensearch/extensions/parameter/1.0/parameter.rnc)
# -*- rnc -*-
# RELAX NG Compact Syntax Grammar for
# OpenSearch Description Parameter Extension
namespace s = "http://purl.oclc.org/dsdl/schematron"
namespace local = ""
namespace os = "http://a9.com/-/spec/opensearch/1.1/"
namespace param = "http://a9.com/-/opensearch/extensions/param/1.0/"
parameterConstruct = attribute name { xsd:token }?,
attribute value { xsd:token }?,
attribute minimum { xsd:unsignedInt }?,
attribute maximum { xsd:unsignedInt }?,
attribute pattern { text }?,
attribute title { xsd:string { maxLength = "1024" } }?,
attribute minExclusive { xsd:decimal | xsd:dateTime }?,
attribute maxExclusive { xsd:decimal | xsd:dateTime }?,
attribute minInclusive { xsd:decimal | xsd:dateTime }?,
attribute maxInclusive { xsd:decimal | xsd:dateTime }?,
attribute step { xsd:decimal }?,
undefinedAttribute*,
element param:Option { paramOption }*
paramMethod = "OPTIONS" | "GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "TRACE" | "CONNECT"
paramOption = attribute value { xsd:string },
attribute label { xsd:string }, undefinedAttribute*
paramUrl = attribute param:method { paramMethod }?
& attribute param:enctype { xsd:string { pattern = ".+/.+" } }?
& element param:Parameter { parameterConstruct } *
#extend the Url definition here
osdUrl &= paramUrl
# Redefine the foreign attribute to exclude param:* elements
# relative path schemas/opensearch/1.1/ folder
include "../../../1.1/osdd.rnc"{
# Simple Extension
simpleExtensionElement = element * - ( os:* | param:* ){ text }
# Structured Extension
structuredExtensionElement = element * - ( os:* | param:* ) {
(attribute * { text }+, (text|anyElement)*)
| (attribute * { text }*, (text?, anyElement+, (text|anyElement)*))}
# Other Extensibility
undefinedAttribute = attribute * - ( local:* | param:* ) { text }
anyForeignElement = element * - ( os:* | param:* ) { (attribute * { text } | text | anyElement)* }
osDocument = [ s:rule [ context = "os:OpenSearchDescription"
s:assert [ test = "os:Url/param:Parameter"
"This URL template does not contain a Parameter element." ]]]
element os:OpenSearchDescription { osDocumentConstruct }
}
# EOF
Annex C (informative): Example XML Documents
C.1 OpenSearch Description with Earth Observation Extension
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:eo="http://a9.com/-/opensearch/extensions/eo/1.0/"
xmlns:param="http://a9.com/-/opensearch/extensions/param/1.0/"
xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/"
xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/">
<ShortName>Web Search</ShortName>
<LongName>Example.com Web Search</LongName>
<Description>Use Example.com to search the Web.</Description>
<Tags>example web</Tags>
<Contact>admin@example.com</Contact>
<Url type="application/atom+xml" template="http://example.com/myatom/?pw={startPage?}&acq={eo:acquisitionStation?}&bbox={geo:box?}&start={time:start?}&end={time:end?}">
<param:Parameter name="start" value="{time:start}" minimum="0"
minInclusive="2011-01-01T00:00:00Z" maxExclusive="2012-01-01T00:00:00Z"/>
<param:Parameter name="end" value="{time:end}" minimum="0"
minInclusive="2011-01-01T00:00:00Z" maxExclusive="2012-01-01T00:00:00Z"/>
<param:Parameter name="acq" value="{eo:acquisitionStation}" minimum="0"
title="Acquisition Station">
<param:Option value="PDHS-K" label="Kiruna"/>
<param:Option value="PDHS-E" label="ESRIN" />
</param:Parameter>
</Url>
<Attribution>Copyright 2005, Example.com, Inc.</Attribution>
<SyndicationRight>open</SyndicationRight>
</OpenSearchDescription>
C.2 Atom Output of Earth Observation Metadata
<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/"
xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml"
xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" >
<title>Catalogue Search Feed for ASAR Image Mode source packets Level 0 (ASA_IM__0P)</title>
<subtitle type="html">The ASAR Image Mode source packets Level 0 data product offers Level 0 data for possible images processing on an other processing site. It includes some mandatory information for SAR processing. The Image Mode Level 0 product consists of time-ordered Annotated Instrument Source Packets (AISPs) collected while the instrument is in Image Mode. The echo samples contained in the AISPs are compressed to 4 bits/sample using Flexible Block Adaptive Quantisation (FBAQ). This is a high-rate, narrow swath mode so data is only acquired for partial orbit segments and may be from one of seven possible image swaths. The Level 0 product is produced systematically for all data acquired within this mode. This product provides a continuation of the ERS-SAR_RAW product.</subtitle>
<generator uri="http://www.terradue.com" version="1.4.0">Terradue CAS</generator>
<updated>2013-03-24T17:54:40Z</updated>
<id>http://eo-virtual-archive4.esa.int/search/ASA_IM__0P/atom/</id>
<link rel="self" type="application/atom+xml" href="http://eo-virtual-archive4.esa.int/search/ASA_IM__0P/atom//?startIndex=0&start=2010-01-01&stop=2010-01-31&bbox=125,39.9,132.7,43.5"/>
<link rel="search" type="application/opensearchdescription+xml" href="http://eo-virtual-archive4.esa.int/search/ASA_IM__0P/description"/>
<os:totalResults>1</os:totalResults>
<os:startIndex>0</os:startIndex>
<os:itemsPerPage>20</os:itemsPerPage>
<os:Query role="request" startIndex="0" time:start="2010-01-01" time:end="2010-01-31" geo:box="125,39.9,132.7,43.5"/>
<georss:where><gml:Polygon><gml:exterior><gml:LinearRing>
<gml:posList>39.9 125 43.5 125 43.5 132.7 39.9 132.7 39.9 132.7</gml:posList>
</gml:LinearRing></gml:exterior></gml:Polygon></georss:where>
<author><name>GEOSS Supersites</name></author>
<entry>
<id>http://eo-virtual-archive4.esa.int/search/ASA_IM__0P/ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1/atom</id>
<title>ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1</title>
<dc:identifier>ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1</dc:identifier>
<published>2012-03-06T00:10:33.000Z</published>
<updated>2013-05-16T22:25:57.124Z</updated>
<dc:date>2010-01-22T01:44:41.316Z/2010-01-22T01:44:57.596Z</dc:date>
<georss:where><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList srsDimension="2">42.2879 128.7535 42.4897 127.4932 41.4254 127.1936 41.2326 128.3991 42.2879 128.7535
</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></georss:where>
<link rel="alternate" type=" application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.1" title="EOMPOM 1.1 file" href="http://eo-virtual-archive4.esa.int/search/ASA_IM__0P/ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1/xml"/>
<link rel="alternate" type="text/html" title="HTML page" href="http://eo-virtual-archive4.esa.int/search/ASA_IM__0P/ASA_IM__0CNPDE20100122_014441_ 000000162086_00146_41282_7918.N1/html"/>
<link rel="via" type="application/rdf+xml" title="RDF metadata entry" href="http://eo-virtual-archive4.esa.int/search/ASA_IM__0P/ASA_IM__ 0CNPDE20100122_014441_000000162086_00146_41282_7918.N1/rdf"/>
<link rel="enclosure" type="application/binary" length="157076059" title=" File ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1 in the N1 (ENVISAT) format" href="https://eo-virtual-archive4.esa.int/supersites/ASA_IM__ 0CNPDE20100122_014441_000000162086_00146_41282_7918.N1"/>
<content type="html">
<ul> <li> <b>Date</b>: 2010-01-22 <br/>
(2010-01-22T01:44:41.316Z / 2010-01-22T01:44:57.596Z) </li>
<li> <b>Orbit Number</b>: 41282 </li>
<li> <b>Processing Center</b>: PDHS-E </li>
<li> <b>Processing Date</b>: 2010-01-22 </li>
<br/>
<a href="https://eo-virtual-archive4.esa.int/supersites/ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1">Product Download </a>
</ul>
</content>
<eop:EarthObservation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/opt/2.1 ../xsd/opt.xsd"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:eop="http://www.opengis.net/eop/2.1" xmlns:swe="http://www.opengis.net/swe/1.0" xmlns:om="http://www.opengis.net/om/2.0"
gml:id="eo_ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1">
<om:phenomenonTime><gml:TimePeriod
gml:id="tp_ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1">
<gml:beginPosition>2010-01-22T01:44:41.316Z</gml:beginPosition>
<gml:endPosition>2010-01-22T01:44:57.596Z</gml:endPosition>
</gml:TimePeriod></om:phenomenonTime><om:resultTime>
<gml:TimeInstant
gml:id="ad_ ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1">
<gml:timePosition>2010-01-22T02:35:06.000Z</gml:timePosition>
</gml:TimeInstant></om:resultTime>
<om:procedure>
<eop:EarthObservationEquipment
gml:id="eq_ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1">
<eop:platform><eop:Platform><eop:shortName>ENVISAT</eop:shortName>
</eop:Platform></eop:platform>
<eop:instrument><eop:Instrument><eop:shortName>ASAR</eop:shortName>
</eop:Instrument>
</eop:instrument>
<eop:sensor><eop:Sensor><eop:sensorType>RADAR</eop:sensorType>
</eop:Sensor></eop:sensor>
</eop:EarthObservationEquipment>
</om:procedure>
<om:observedProperty xlink:href="#params1"/>
<om:featureOfInterest>
<eop:Footprint gml:id="fp_ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1">
<eop:multiExtentOf><gml:MultiSurface gml:id="ms_ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1" srsName="EPSG:4326"><gml:surfaceMember><gml:Polygon gml:id="p_ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1">
<gml:exterior><gml:LinearRing>
<gml:posList>42.2879 128.7535 42.4897 127.4932 41.4254 127.1936 41.2326 128.3991 42.2879 128.7535</gml:posList>
</gml:LinearRing></gml:exterior></gml:Polygon>
</gml:surfaceMember></gml:MultiSurface></eop:multiExtentOf>
</eop:Footprint>
</om:featureOfInterest>
<om:result></om:result>
<eop:metaDataProperty>
<eop:EarthObservationMetaData>
<eop:identifier> ASA_IM__0CNPDE20100122_014441_000000162086_00146_41282_7918.N1 </eop:identifier>
<eop:acquisitionType>NOMINAL</eop:acquisitionType>
<eop:productType>ASA_IM__0P</eop:productType>
<eop:status>ARCHIVED</eop:status>
<eop:downlinkedTo><eop:DownlinkInformation>
<eop:acquisitionStation>PDHS-E</eop:acquisitionStation>
</eop:DownlinkInformation></eop:downlinkedTo>
<eop:processing><eop:ProcessingInformation>
<eop:processingCenter>PDHS-E</eop:processingCenter>
</eop:ProcessingInformation></eop:processing>
</eop:EarthObservationMetaData>
</eop:metaDataProperty>
</eop:EarthObservation>
</entry>
</feed>
C.3 Atom Output of Earth Observation Collection Metadata
<atom:feed xml:lang="en" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:georss="http://www.georss.org/georss" xmlns:eop="http://a9.com/-/opensearch/extensions/eo/1.0/" xmlns:eum="http://a9.com/-/opensearch/extensions/eumetsat/1.0/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:kml="http://earth.google.com/kml/2.2">
<atom:title>EUMETSAT Product Navigator COLOS Adaptor results feed</atom:title>
<atom:subtitle type="html">Number of results: 58</atom:subtitle>
<atom:id>http://46.51.189.235:80/atom</atom:id>
<atom:generator version="2.1" uri="http://46.51.189.235:80">EUMETSAT Product Navigator</atom:generator>
<atom:author>
<atom:name>EUMETSAT</atom:name>
</atom:author>
<atom:category>climatologyMeteorologyAtmosphere</atom:category>
<atom:contributor>con terra GmbH</atom:contributor>
<atom:rights>Copyright</atom:rights>
<atom:updated>2014-03-14T11:23:28Z</atom:updated>
<atom:icon>http://46.51.189.235:80/soapServices/feed-icon-14x14.png</atom:icon>
<atom:logo>http://46.51.189.235:80/soapServices/terraCatalog_feed.png</atom:logo>
<opensearch:totalResults>58</opensearch:totalResults>
<opensearch:startIndex>1</opensearch:startIndex>
<opensearch:itemsPerPage>10</opensearch:itemsPerPage>
<opensearch:Query role="request" searchTerms="wind" startIndex="1" count="1"/>
<atom:link title="Product Navigator search" type="application/opensearchdescription+xml" href="http://46.51.189.235:80/soapServices/os-description.xml" rel="search"/>
<atom:link title="Product Navigator search" type="application/opensearchdescription+xml" href="http://46.51.189.235:80/soapServices/os-description.xml" rel="up"/>
<atom:link title="self" type="application/atom+xml" href="http://46.51.189.235:80/soapServices/OpenSearch?format=atom&sI=1&c=1&q=wind" rel="self"/>
<atom:link title="next" type="application/atom+xml" href="http://46.51.189.235:80/soapServices/OpenSearch?format=atom&sI=1&c=1&q=wind&pw=2" rel="next"/>
<entry xml:lang="en" xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:eum="http://www.eumetsat.int/2008/gmi" xmlns:gmi="http://www.isotc211.org/2005/gmi">
<title>ASCAT AHRPT - Metop</title>
<category term="climatologyMeteorologyAtmosphere"/>
<category term="Observation"/>
<category term="Marine"/>
<category term="Satellite_Data"/>
<category term="Sea_Ice"/>
<id>EO:EUM:DAT:METOP:ASCATAHRPT</id>
<dc:identifier>EO:EUM:DAT:METOP:ASCATAHRPT</dc:identifier>
<link href="http://46.51.189.235:80/soapServices/CSWStartup?service=CSW&version=2.0.2&request=GetRecordById&outputSchema=http://www.isotc211.org/2005/gmi&Id=EO:EUM:DAT:METOP:ASCATAHRPT" rel="alternate" type="application/vnd.iso.19139+xml"/>
<link href="http://46.51.189.235:80/discovery/Start/DirectSearch/DetailResult.do?f(r0)=EO:EUM:DAT:METOP:ASCATAHRPT" rel="alternate" title="ASCAT AHRPT - Metop" type="text/html"/>
<generator uri="http://navigator.eumatsat.int" version="2.1">EUMETSAT Product Navigator</generator>
<author>
<name>EUMETSAT</name>
<email>ops@eumetsat.int</email>
</author>
<updated>2010-09-21</updated>
<summary>The prime objective of the Advanced SCATterometer (ASCAT) is to measure wind speed and direction over the oceans, and the main operational application is the assimilation of ocean winds in NWP models. Other operational applications, based on the use of measurements of the backscattering coefficient, are sea ice edge detection and monitoring, monitoring sea ice, snow cover, soil moisture and land surface parameters.</summary>
<georss:where>
<gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.7:4326">
<gml:exterior>
<gml:LinearRing>
<gml:posList srsDimension="2">90.0 -180.0 -90.0 -180.0 -90.0 180.0 90.0 180.0 90.0 -180.0</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</georss:where>
<rights>-</rights>
<link href="http://www.eumetsat.int/Home/Main/Satellites/Metop/Services/SP_2010034162824650?l=en" rel="enclosure" title="Metop Direct Readout Service" type="text/html"/>
<content type="html"><![CDATA[<a href="http://www.eumetsat.int/Home/Main/Satellites/Metop/Services/SP_2010034162824650?l=en">Metop Direct Readout Service</a>
<br/>
<a href="http://46.51.189.235:80/discovery/Start/DirectSearch/DetailResult.do?f(r0)=EO:EUM:DAT:METOP:ASCATAHRPT">Metadata (HTML)</a>
<br/>
<a href="http://46.51.189.235:80/soapServices/CSWStartup?service=CSW&version=2.0.2&request=GetRecordById&outputSchema=http://www.isotc211.org/2005/gmi&Id=EO:EUM:DAT:METOP:ASCATAHRPT">Metadata (ISO19139 XML)</a>
<br/>
<a href="http://46.51.189.235:80/soapServices/OpenSearch?format=atom&id=EO:EUM:DAT:METOP:ASCATAHRPT">ATOM</a>
<br/>]]></content>
</entry>
</atom:feed>
Annex D (informative): Metadata Mappings
D.1 Mapping for EO Metadata profile of Observations & Measurements
In the table below the informative mappings of the queryables for the Product Search to "Earth Observation Metadata profile of Observations & Measurements" (OGC 10-157r4) are defined.
OpenSearch Parameter | GML Metadata XPath |
---|---|
productType |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:productType |
doi |
/eop:EarthObservation/eop:metaDataProperty/eop:EarthObservationMetaData/eop:doi |
creationDate |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:creationDate |
modificationDate |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:modificationDate |
platform |
/om:procedure/eop:EarthObservationEquipment/eop:platform/eop:Platform/eop:shortName |
platformSerialIdentifier |
/om:procedure/eop:EarthObservationEquipment/eop:platform/eop:Platform/eop:serialIdentifier |
instrument |
/om:procedure/eop:EarthObservationEquipment/eop:instrument/eop:Instrument/eop:shortName |
sensorType |
/om:procedure/eop:EarthObservationEquipment/eop:sensor/eop:Sensor/eop:sensorType |
compositeType |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:processing/eop:ProcessingInformation/eop:compositeType |
processingLevel |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:processing/eop:ProcessingInformation/eop:processingLevel |
orbitType |
/om:procedure/eop:EarthObservationEquipment/eop:platform/eop:Platform/eop:orbitType |
resolution |
/om:procedure/eop:EarthObservationEquipment/eop:sensor/eop:Sensor/eop:resolution |
spectralRange |
/om:procedure/eop:EarthObservationEquipment/eop:sensor/eop:Sensor/ eop:wavelengthInformation/eop:WavelengthInformation/eop:spectralRange |
wavelengths |
/om:procedure/eop:EarthObservationEquipment/eop:sensor/eop:Sensor/ eop:wavelengthInformation/eop:WavelengthInformation/eop:discreteWavelengths |
geo:box |
to be derived from: /eopr:EarthObservation/om:featureOfInterest/eop:Footprint |
geo:name |
N/A |
time:start |
/eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:beginPosition |
time:end |
/eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:endPosition |
geo:uid |
/eop:EarthObservation/eop:metaDataProperty/eop:EarthObservationMetaData/eop:identifier |
useLimitation |
N/A |
hasSecurityConstraints |
N/A |
organisationName |
N/A |
publicationDate |
N/A |
dissemination |
N/A |
parentIdentifier |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:parentIdentifier |
productionStatus |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:status |
acquisitionType |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:acquisitionType |
orbitNumber |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/eop:Acquisition/eop:orbitNumber |
orbitDirection |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/eop:Acquisition/eop:orbitDirection |
track |
/om:procedure/eop:EarthObservationEquipment/ eop:acquisitionParameters/eop:Acquisition/eop:wrsLongitudeGrid |
frame |
/om:procedure/eop:EarthObservationEquipment/ eop:acquisitionParameters/eop:Acquisition/eop:wrsLatitudeGrid |
swathIdentifier |
/om:procedure/eop:EarthObservationEquipment/eop:sensor/eop:Sensor/eop:swathIdentifier |
cloudCover |
/om:result/opt:EarthObservationResult/opt:cloudCoverPercentage or /atm:EarthObservation/om:result/atm:EarthObservationResult/atm:cloudCoverPercentage |
snowCover |
/om:result/opt:EarthObservationResult/opt:snowCoverPercentage or /atm:EarthObservation/om:result/atm:EarthObservationResult/atm:snowCoverPercentage |
lowestLocation |
/atm:EarthObservation/om:resultOf/atm:EarthObservationRe sult/atm:dataLayers/atm:DataLayer/atm:lowestLocation |
highestLocation |
/atm:EarthObservation/om:resultOf/atm:EarthObservationRe sult/atm:dataLayers/atm:DataLayer/atm:highestLocation |
productVersion |
/eop:EarthObservation/om:result/eop:EarthObservationResult/eop:product/eop:ProductInformation/eop:version |
acquisitionStation |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:downlinkedTo/eop:DownlinkInformation/eop:acquisitionStation |
productQualityStatus |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:productQualityDegradation |
productQualityDegradationTag |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:productQualityDegradationTag |
processorName |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:processing/eop:ProcessingInformation/eop:processorName |
processingCenter |
/eop:metaDataProperty/eop:EarthObservationMetadata/eop:processing/eop:ProcessingInformation/eop:processingCenter |
processingDate |
/eop:metaDataProperty/eop:EarthObservationMetadata/eop:processing/eop:ProcessingInformation/eop:processingDate |
sensorMode |
/om:procedure/eop:EarthObservationEquipment/eop:sensor/eop:Sensor/eop:operationalMode |
archivingCenter |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:archivedIn/eop:ArchivingInformation/eop:archivingCenter |
processingMode |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:processing/eop:ProcessingInformation/eop:ProcessingMode |
availabilityTime |
om:resultTime/gml:TimeInstant/gml:timePosition |
acquisitionSubType |
/eop:metaDataProperty/eop:EarthObservationMetaData/eop:acquisitionSubType |
startTimeFromAscendingNode |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/eop:Acquisition/eop:startTimeFromAscendingNode |
completionTimeFromAscendingNode |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/eop:Acquisition/eop:completionTimeFromAscendingNode |
illuminationAzimuthAngle |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/eop:Acquisition/eop:illuminationAzimuthAngle |
illuminationZenithAngle |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/eop:Acquisition/eop:illuminationZenithAngle |
illuminationElevationAngle |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/eop:Acquisition/eop:illuminationElevationAngle |
polarisationMode |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/sar:Acquisition/sar:polarisationMode |
polarisationChannels |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/sar:Acquisition/sar:polarisationChannels |
antennaLookDirection |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/sar:Acquisition/sar:antennaLookDirection |
minimumIncidenceAngle |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/sar:Acquisition/sar:minimumIncidenceAngle |
maximumIncidenceAngle |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/sar:Acquisition/sar:maximumIncidenceAngle |
dopplerFrequency |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/sar:Acquisition/sar:dopplerFrequency |
incidenceAngleVariation |
/om:procedure/eop:EarthObservationEquipment/eop:acquisitionParameters/sar:Acquisition/sar:incidenceAngleVariation |
D.2 ISO 19115 / ISO19115-2 Geographic information – Metadata
In the table below the informative mappings of the queryables for the Collection Search to ISO19115(-2)/ISO19139(-2) are defined.
The table also includes the mappings of the spatial and temporal parameters of the OpenSearch Geo- and Time-Extension to the appropriate XPath in ISO 19115 / ISO 19115-2.
OpenSearch Parameter | ISO191(15|39) Metadata XPath[5] |
---|---|
useLimitation |
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_Data-Identification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:useLimitation/gco:CharacterString |
accessConstraint |
/gmi:MI_Metadata|gmd:MD_Metadata)/identificationInfo/MD_DataIdentification/resourceConstraints/MD_LegalConstraints/accessConstraints/MD_RestrictionCode/@codeListValue Sample: license |
otherConstraint |
/gmi:MI_Metadata/gmd:identificationInfo/…/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:otherConstraints |
classification |
/gmi:MI_Metadata/gmd:identificationInfo/…/gmd:resourceConstraints/gmd:MD_SecurityConstraints/gmd:classification
Sample: confidential |
hasSecurityConstraints |
/gmi:MI_Metadata/identificationInfo/MD_DataIdentification/resourceConstraints[2]/MD_SecurityConstraints/ If an instance of the class MD_SecurityConstraint exists for a resource, the "HasSecurityConstraints" is "true", otherwise "false" |
organisationName |
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName/gco:CharacterString |
organisationRole |
//(gmi:MI_Metadata|gmd:MD_Metadata)/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/*/role |
publicationDate |
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:date/gco:Date[../../gmd:dateType/gmd:CI_DateTypeCode/@codeListValue='publication']/text() |
dissemination |
/gmi:MI_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:name or /gmi:MI_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:distributor/gmd:MD_Distributor/gmd:distributorTransferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:name |
topicCategory |
gmi:MI_Metadata/identificationInfo/MD_DataIdentification/topicCategory/gco:CharacterString |
lineage |
/gmi:MI_Metadata/gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:lineage/gmd:LI_Lineage/gmd:statement/gco:CharacterString |
keyword |
/gmi:MI_Metadata/gmd:identificationInfo//gmd:descriptiveKeywords/gmd:MD_Keywords [gmd:type/gmd:MD_KeywordTypeCode/@codeListValue = 'theme'] |
doi |
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:code/gco:CharacterString[../../codeSpace/gco:CharacterString='http://doi.org'] |
denominator |
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/MD_Resolution/gmd:equivalentScale/MD_RepresentativeFraction/gmd:denominator/gco:Integer Sample: <gmd:MD_Resolution> <equivalentScale> <MD_RepresentativeFraction> <denominator> <gco:Integer>50000</gco:Integer> </denominator> </MD_RepresentativeFraction> </equivalentScale> </gmd:MD_Resolution> |
distanceValue distanceUOM |
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/MD_Resolution/gmd:distance/gco:Distance /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/MD_Resolution/gmd:distance/gco:Distance/@uom Sample 1: <gmd:MD_Resolution> <gmd:distance> <gco:Distance uom="m">1000</gco:Distance> </gmd:distance> </gmd:MD_Resolution> |
language |
/gmi:MI_Metadata/gmd:language |
modificationDate |
/gmi:MI_Metadata/gmd:dateStamp |
title |
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title |
abstract |
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract |
searchTerms |
Minimally this should be mapped to search on: /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName/gco:CharacterString /gmi:MI_Metadata/gmd:identificationInfo//gmd:descriptiveKeywords/gmd:MD_Keywords [gmd:type/gmd:MD_KeywordTypeCode/@codeListValue = 'theme'] |
platform |
/gmi:MI_Metadata/gmi:acquisitionInformation/ gmi:MI_AcquisitionInformation /gmi:platform/gmi:MI_Platform/ gmi:description/gco:CharacterString OR: /gmi:MI_Metadata/gmi:acquisitionInformation/ gmi:MI_AcquisitionInformation/gmi:platform/ gmi:MI_Platform/gmi:instrument/gmi:MI_Instrument/ gmi:mountedOn/gmi:MI_Platform/ gmi:description/gco:CharacterString Sample: Meteosat8 |
platformSerialIdentifier |
/gmi:MI_Metadata/gmi:acquisitionInformation/ gmi:MI_AcquisitionInformation/gmi:platform/ gmi:MI_Platform/gmi:identifier/gmd:MD_Identifier/ gmd:code/gco:CharacterString OR: /gmi:MI_Metadata/gmi:acquisitionInformation/ gmi:MI_AcquisitionInformation/gmi:platform/ gmi:MI_Platform/gmi:instrument/gmi:MI_Instrument/ gmi:mountedOn/gmi:MI_Platform/gmi:identifier/ MD_Identifier/code/gco:CharacterString |
instrument |
/gmi:MI_Metadata/gmi:acquisitionInformation/ gmi:MI_AcquisitionInformation/ /gmi:instrument/gmi:MI_Instrument/ gmi:citation/gmd:CI_Citation/gmd:identifier /gmd:MD_Identifier/gmd:code/gco:CharacterString OR: /gmi:MI_Metadata/gmi:acquisitionInformation/ gmi:MI_AcquisitionInformation/gmi:platform/ gmi:MI_Platform/gmi:instrument/gmi:MI_Instrument/ gmi:citation/gmd:CI_Citation/gmd:identifier /gmd:MD_Identifier/gmd:code/gco:CharacterString
…..OR…..
/gmi:MI_Metadata/gmi:acquisitionInformation/ gmi:MI_AcquisitionInformation/ /gmi:instrument/gmi:MI_Instrument/ gmi:description/gco:CharacterString OR: /gmi:MI_Metadata/gmi:acquisitionInformation/ gmi:MI_AcquisitionInformation/gmi:platform/ gmi:MI_Platform/gmi:instrument/gmi:MI_Instrument/ gmi:description/gco:CharacterString
Instrument name (sensor name). Used as ID for the instrument Note: MI_Instrument/identifier not existent within XML schema of ISO19115-2 Sample: SEVERI |
sensorType |
/gmi:MI_Metadata/gmi:acquisitionInformation/ gmi:MI_AcquisitionInformation/gmi:instrument/ gmi:MI_Instrument/ gmi:type/gmi:MI_SensorTypeCode/@id OR: |
orbitType |
N/A (not available in ISO19115(-2))
|
spectralRange |
/gmi:MI_Metadata/gmd:contentInfo/gmi:MI_CoverageDescription/gmd:dimension/gmi:MI_Band |
wavelengths |
/gmi:MI_Metadata/gmd:contentInfo/gmi:MI_CoverageDescription/gmd:dimension/gmi:MI_Band/gmi:bandBoundaryDefinition |
geo:box |
/gmi:MI_Metadata/gmd:identificationInfo/*/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude /gmi:MI_Metadata/gmd:identificationInfo/*/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude /gmi:MI_Metadata/gmd:identificationInfo/*/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLatitude /gmi:MI_Metadata/gmd:identificationInfo/*/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLatitude |
geo:name |
/gmi:MI_Metadata/gmd:identificationInfo/*/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicDescription/gmd:geographicIdentifier |
time:start |
/gmi:MI_Metadata/identificationInfo/MD_DataIdentification/extent/EX_Extent/temporalElement/EX_TemporalExtent/extent/gml:TimePeriod/beginPosition |
time:end |
/gmi:MI_Metadata/identificationInfo/MD_DataIdentification/extent/EX_Extent/temporalElement/EX_TemporalExtent/extent/gml:TimePeriod/endPosition |
geo:uid |
gmd:MD_Metadata/gmd:fileIdentifier |
specificationTitle |
//dataQualityInfo/*/report/*/result/*/specification/*/title |
specificationDate |
//dataQualityInfo/*/report/*/result/*/specification/*/date/*/date |
specificationdateType |
//dataQualityInfo/*/report/*/result/*/specification/*/date/*/dateType |
degree |
//dataQualityInfo/*/report/*/result/*/pass |
processingLevel |
N/A |
compositeType |
N/A |
productType |
N/A |
D.3 Mapping for OGC CS Extension Package for ebRIM AP: EO Products
This mapping is based on information from "OGC Catalogue Services Standard 2.0 Extension Package for ebRIM Application Profile Earth Observation Products" (OGC 06-131r6).
OpenSearch Parameter | EOProduct ExtrinsicObject Attribute |
---|---|
productType |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::productType" ]/rim:ValueList/rim:Value[1] |
doi |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name= "urn:ogc:def:slot:OGC-CSW-ebRIMEO::doi"]/rim:ValueList/rim:Value[1] |
modificationDate |
N/A |
platform |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOAcquisitionPlatform" ]/rim:Name/rim:LocalizedString/@value |
platformSerialIdentifier |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOAcquisitionPlatform" ]/rim:Slot[ @name = "urn:ogc:def:slot:O GC-CSW-ebRIM- EO::platformSerialIdentifier" ]/rim:ValueList/rim:Value[1] |
instrument |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOAcquisitionPlatform" ]/rim:Slot[ @name = "urn:ogc:def:slot:O GC-CSW-ebRIM- EO::instrumentShortName" ]/rim:ValueList/rim:Value[1] |
sensorType |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOAcquisitionPlatform" ]/rim:Slot[ @name = "urn:ogc:def:slot:O GC-CSW-ebRIM-EO::sensorType" ]/rim:ValueList/rim:Value[1] |
compositeType |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::compositeType" ]/rim:ValueList/rim:Value[*] |
processingLevel |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::processingLevel" ]/rim:ValueList/rim:Value[*] |
orbitType |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOAcquisitionPlatform" ]/rim:Slot[ @name = "urn:ogc:def:slot:O GC-CSW-ebRIM- EO::platformOrbitType" ]/rim:ValueList/rim:Value[1] |
resolution |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOAcquisitionPlatform" ]/rim:Slot[ @name = "urn:ogc:def:slot:O GC-CSW-ebRIM- EO::sensorResolution" ]/rim:ValueList/rim:Value[1] |
spectralRange |
N/A |
wavelengths |
N/A |
geo:box |
/rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-bRIMEO::EOProduct"]/rim:Slot[@name="urn:ogc:def:slot:OGC-CSW-ebRIMEO::multiExtentOf"]/wrs:ValueList/wrs:AnyValue[1] |
geo:name |
N/A |
time:start |
/rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-bRIMEO::EOProduct"]/rim:Slot[@name="urn:ogc:def:slot:OGC-CSW-ebRIMEO::beginPosition"]/rim:ValueList/rim:Value[1] |
time:end |
/rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-ebRIMEO::EOProduct"]/rim:Slot[@name="urn:ogc:def: |
geo:uid |
/rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-ebRIMEO::EOProduct"]/@id or /rim:ExternalIdentifier/@value (linked to the EOProduct ExtrinsicObject by the ExternalIdentifier’s registryObject attribute) |
useLimitation |
N/A |
hasSecurityConstraints |
N/A |
organisationName |
N/A |
publicationDate |
N/A |
dissemination |
N/A |
parentIdentifier |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::parentIdentifier" ]/rim:ValueList/rim:Value[1] |
productionStatus |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::status" ]/rim:ValueList/rim:Value[1] |
acquisitionType |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::acquisitionType" ]/rim:ValueList/rim:Value[1] |
orbitNumber |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::orbitNumber" ]/rim:ValueList/rim:Value[1] |
orbitDirection |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::orbitDirection" ]/rim:ValueList/rim:Value[1] |
track |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::wrsLongitudeGrid" ]/rim:ValueList/rim:Value[1] |
frame |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::wrsLatitudeGrid" ]/rim:ValueList/rim:Value[1] |
swathIdentifier |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM-EO:: EOAcquisitionPlatform" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC- CSW-ebRIM-EO::swathIdentifier" ]/rim:ValueList/rim:Value[1] |
cloudCover |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::cloudCoverPercentage" ]/rim:ValueList/rim:Value[1] |
snowCover |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::snowCoverPercentage" ]/rim:ValueList/rim:Value[1] |
lowestLocation |
/rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGCCSW- ebRIM-EO::EODataLayer"]/rim:Slot[@name=" urn:ogc:def:slot:OGC-CSW-ebRIMEO::lowestLocation"]/rim:ValueList/rim:Value[1] |
highestLocation |
/rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGCCSW- ebRIM-EO::EODataLayer"]/rim:Slot[@name=" urn:ogc:def:slot:OGC-CSW-ebRIMEO::highestLocation"]/rim:ValueList/rim:Value[1] |
productVersion |
/rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGCCSW- ebRIMEO::EOProductInformation"]/rim:Slot[@name="urn:ogc:def:slot:OGC-CSW-ebRIM-EO::version"]/rim:ValueList/rim:Value[1] |
acquisitionStation |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::acquisitionStation" ]/rim:ValueList/rim:Value[1] |
productQualityStatus |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::imageQualityDegradation" ]/rim:ValueList/rim:Value[1] |
productQualityDegradationTag |
N/A |
processorName |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::processorName" ]/rim:ValueList/rim:Value[*] |
processingCenter |
N/A |
processingDate |
N/A |
sensorMode |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOAcquisitionPlatform" ]/rim:Slot[ @name = "urn:ogc:def:slot:O GC-CSW-ebRIM- EO::sensorOperationalMode" ]/rim:ValueList/rim:Value[1] |
archivingCenter |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOArchivingInformation" ]/rim:Name/rim:LocalizedString/@value |
processingMode |
N/A |
availabilityTime |
N/A |
acquisitionSubType |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::acquisitionSubType" ]/rim:ValueList/rim:Value[1] |
startTimeFromAscendingNode |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::startTimeFromAscendingNode" ]/rim:ValueList/rim:Value[1] |
completionTimeFromAscendingNode |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC-CSW-ebRIM-EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::completionTimeFromAscendingNode" ]/rim:ValueList/rim:Value[1] |
illuminationAzimuthAngle |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM- EO::illuminationAzimuthAngle" ]/rim:ValueList/rim:Value[1] |
illuminationZenithAngle |
N/A |
illuminationElevationAngle |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM- EO::illuminationElevationAngle" ]/rim:ValueList/rim:Value[1] |
polarisationMode |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::polarisationMode" ]/rim:ValueList/rim:Value[1] |
polarisationChannels |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::polarisationChannels" ]/rim:ValueList/rim:Value[1] |
antennaLookDirection |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::antennaLookDirection" ]/rim:ValueList/rim:Value[1] |
minimumIncidenceAngle |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::minimumIncidenceAngle" ]/rim:ValueList/rim:Value[1] |
maximumIncidenceAngle |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::maximumIncidenceAngle" ]/rim:ValueList/rim:Value[1] |
dopplerFrequency |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::dopplerFrequency" ]/rim:ValueList/rim:Value[1] |
incidenceAngleVariation |
/rim:ExtrinsicObject[ @objectType = "urn:ogc:def:objectType:OGC- CSW-ebRIM- EO::EOProduct" ]/rim:Slot[ @name = "urn:ogc:def:slot:OGC-CSW-ebRIM-EO::incidenceAngleV ariation" ]/rim:ValueList/rim:Value[1] |
D.4 Mapping for OGC CS Extension Package for ebRIM AP: I15
In the table below the informative mappings of the queryables for the Collection Search to the CSW ebRIM I15 Extension Package (OGC 13-084) are defined.
The table also includes the mapping of the spatial and temporal parameters of the OpenSearch Geo- and Time-Extension to the CSW ebRIM I15 Extension Package.
OpenSearch Parameter | I15 Extension Package Elements (OGC 13-084) |
---|---|
useLimitation |
<<ExtrinsicObject>> LegalConstraints -> <<Description>> |
accessConstraint |
<<ExtrinsicObject>> LegalConstraints -> <<classification>> RestrictionCode (the classification is classified with RestrictionType "access") |
otherConstraint |
<<ExtrinsicObject>> LegalConstraints -> <<slot>> Rights |
classification |
<<ExtrinsicObject>> SecurityConstraints -> <<classification>> ClassificationCode |
hasSecurityConstraints |
Map to a check for availability of any of the predefined constraints |
organisationName |
<<RegistryObject>> Organization -> Name |
publicationDate |
<<ExtrinsicObject>> ResourceMetadata -> <<slot>> Issued |
dissemination |
N/A |
abstract |
<<ExtrinsicObject>> ResourceMetadata -><<Description>> |
topicCategory |
<<ExtrinsicObject>> ResourceMetadata -> <<classification> TopicCategory |
lineage |
<<ExtrinsicObject>> ResourceMetadata -> <<slot>> Lineage |
parentIdentifier |
<<association >> parentMetadata from <<ExtrinsicObject>> ResourceMetadata to MetadataInformation -> <<slot>> Identifier |
keyword |
Classification with KeywordSchemeUntyped or KeywordSchemeTheme |
doi |
N/A |
distanceValue distanceUOM |
<<slot>> Resolution |
denominator |
<<slot>> ScaleDenominator |
language |
<<ExtrinsicObject>> MetadataInformation -> <<slot>> Language |
modificationDate |
<<ExtrinsicObject>> MetadataInformation -> <<slot>> Date |
title |
<<ExtrinsicObject>> ResourceMetadata -> Name |
searchTerms |
Minimally this should be mapped to the corresponding mappings of: · abstract · title · organisationName · keyword |
platform |
<<ExtrinsicObject>> Platform -> Description |
platformSerialIdentifier |
<<ExtrinsicObject>> Platform -> <<slot>> Identifier |
instrument |
<<ExtrinsicObject>> Instrument -> <<slot>> Identifier …..OR….. <<ExtrinsicObject>> Instrument -> Description |
sensorType |
<<ExtrinsicObject>> Instrument -> Name |
orbitType |
N/A |
spectralRange |
N/A |
wavelengths |
N/A |
specificationTitle |
<<ExtrinsicObject>> ReferenceSpecification -> <<Name>> |
specificationDate specificationdateType |
<<ExtrinsicObject>> ReferenceSpecification -> <<slot>> Created or <<slot>> Modified or <<slot>> Issued or |
degree |
<<ExtrinsicObject>> ReferenceSpecification -> <<slot>> Conformance |
organisationRole |
Handled through the CitedResponsibleParty classification on the CitedResponsibleParty association. |
processingLevel |
N/A |
compositeType |
N/A |
productType |
N/A |
geo:box |
<<slot>> Envelope (type gml:Envelope): The WestBoundLongitude corresponds to the longitude of "lowerCorner" in gml:Envelope The EastBoundLongitude corresponds to the longitude of "upperCorner" in gml:Envelope The SouthBoundLatitude corresponds to the latitude of "lowerCorner" in gml:Envelope. The NorthBoundLongitude corresponds to the latitude of "upperCorner" in gml:Envelope |
geo:name |
<<ExtrinsicObject>> ResourceMetadata -> <<slot>> Coverage |
time:start |
<<ExtrinsicObject>> ResourceMetadata -> <<slot>> TemporalBegin |
time:end |
<<ExtrinsicObject>> ResourceMetadata -> <<slot>> TemporalEnd |
geo:uid |
<<ExtrinsicObject>> MetadataInformation -> <<slot>> Identifier |
D.5 Mapping for OGC CS Extension Package for ebRIM AP: SensorML
In the table below the informative mappings of the queryables to "OGC Catalogue Services Specification 2.0 Extension Package for ebRIM Application Profile: SensorML" (OGC 09-163) is defined.
OpenSearch Parameter | ExtrinsicObject Attribute | Section in OGC 09-163r2 |
---|---|---|
platform |
wrs:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-ebRIM-Sensor::System"]/rim:Slot /rim:ValueList/rim:Value[1] |
13.1 |
instrument |
wrs:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-ebRIM-Sensor::System"]/rim:Slot /rim:ValueList/rim:Value[1] |
13.1 |
orbitType |
Use Classification to the Corresponding ClassificationNode of the " urn:ogc:def: classificationScheme:OGC-CSW-ebRIM-Sensor::OrbitTypes " ClassificationScheme
|
B.6.1 |
sensorType |
Use Classification to the Corresponding ClassificationNode of the "urn:ogc:def:classificationScheme:OGC-CSW-ebRIM-Sensor::SystemTypes:SensorType:EOInstrumentType" ClassificationScheme
|
B.6.2 |
pointingAcrossTrackAngle
|
rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-ebRIM-Sensor::System"]/rim:Slot[@name=" urn:ogc:def:slot:OGC-CSW-ebRIM-Sensor:: AcrossTrackPointingLowerBound"]/rim:ValueList/rim:Value[1] rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-ebRIM-Sensor::System"]/rim:Slot[@name=" urn:ogc:def:slot:OGC-CSW-ebRIM-Sensor:: AcrossTrackPointingUpperBound"]/rim:ValueList/rim:Value[1]
|
B.6.2 |
pointingAlongTrackAngle
|
/rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-ebRIM-Sensor::System"]/rim:Slot[@name=" urn:ogc:def:slot:OGC-CSW-ebRIM-Sensor:: AlongTrackPointingLowerBound"]/rim:ValueList/rim:Value[1] /rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-ebRIM-Sensor::System"]/rim:Slot[@name=" urn:ogc:def:slot:OGC-CSW-ebRIM-Sensor:: AlongTrackPointingUpperBound"]/rim:ValueList/rim:Value[1] |
B.6.2 |
resolution |
/rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-ebRIM-Sensor::System"]/rim:Slot[@name=" urn:ogc:def:slot:OGC-CSW-ebRIM-Sensor:: AlongTrackGroundResolution"]/rim:ValueList/rim:Value[1]
|
B.6.4 |
spectralRange |
/rim:ExtrinsicObject[@objectType="urn:ogc:def:objectType:OGC-CSW-ebRIM-Sensor::System"]/rim:Slot[@name=" urn:ogc:def:slot:OGC-CSW-ebRIM-Sensor::SpectralRange"]/rim:ValueList/rim:Value[1] |
B.6.4 |
D.6 Response Mapping: EOP O&M / EOP EP to ATOM
Response mapping for Atom encoding to the EO Metadata profile of O&M (OGC 10-157r4)
Atom Element | Mapping to EO O&M |
---|---|
atom:entry/ |
eop:metaDataProperty/eop:EarthObservationMetaData/eop:identifier |
atom:entry/ |
N/A |
atom:entry/ |
N/A |
atom:entry/ |
N/A |
atom:entry/ |
om:resultTime
|
atom:entry/ |
om:phenomenonTime
|
atom:entry/ |
N/A |
atom:entry/ |
eop:metaDataProperty / eop:EarthObservationMetaData / eop:identifier |
atom:entry/ |
N/A |
atom:entry/ |
N/A |
atom:entry/ georss:* |
om: featureOfInterest |
atom:entry/ |
N/A |
atom:entry/ atom:link[@rel=’icon’] |
om:result/eop:EarthObservationResult/eop:product/eop: BrowseInformation/eop:fileName
|
atom:entry/ atom:link[@rel=’alternate’]
|
N/A |
atom:entry/ |
om:result/eop:EarthObservationResult/eop:product/eop:ProductInformation/eop:fileName |
D.7 Response Mapping: ISO191(15|39)[-2] / I15 EP to ATOM
The following table defines the mappings from ISO191(15|39)[-2] and I15 EP (OGC 13-084) to ATOM response elements.
Atom Element | Mapping from ISO19139-2 | Mapping from I15 |
---|---|---|
atom:entry/ |
gmd:MD_Metadata/gmd:identificationInfo/<gmd:MD_DataIdentification |srv:SV_ServiceIdentification>/gmd:citation/gmd:CI_Citation/gmd:title |
<<ExtrinsicObject>> ResourceMetadata -> Name |
atom:entry/ |
The organization name and email of the corresponding field in ISO19139-2: mapped from /gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/-> /gmd:organisationName/ gco:CharacterString and /gmd:contactInfo/ gmd:CI_Contact/gmd:address/ gmd:CI_Address/ gmd:electronicMailAddress/ gco:CharacterString |
<<RegistryObject>> Organization -> Name And <<RegistryObject>> Organization -> EmailAddress |
atom:entry/ |
Shall include: /gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory and gmd:identificationInfo//gmd:descriptiveKeywords/gmd:MD_Keywords [gmd:type/gmd:MD_KeywordTypeCode/@codeListValue = 'theme'] and possibly entries from: /gmi:MI_Metadata/gmd:hierarchyLevelName/gco:CharacterString
|
<<ExtrinsicObject>> ResourceMetadata -> <<classification> TopicCategory and Classifications with KeywordSchemeUntyped or KeywordSchemeTheme and possibly <<ExtrinsicObject>> ResourceMetadata -> <<slot>> Type
|
atom:entry/ |
/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract |
<<ExtrinsicObject>> ResourceMetadata -> <<Description>> |
atom:entry/ |
N/A |
|
atom:entry/ |
gmd:MD_Metadata/gmd:identificationInfo/<gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date (of dateType revision, if not available of dateType creation) |
<<ExtrinsicObject>> ResourceMetadata -> <<slot>> Modified (or <<slot>> Created)
|
atom:entry/ |
DateTime or DateTime Interval (aka: 2007-03-01T13:00:00Z/2008-05-11T15:30:00Z) -> to be mapped from /gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/extent/EX_Extent/temporalElement/EX_TemporalExtent/extent/gml:TimePeriod/gml:beginPosition / /gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/extent/EX_Extent/temporalElement/EX_TemporalExtent/extent/gml:TimePeriod/gml:endPosition |
<<ExtrinsicObject>> ResourceMetadata -> <<slot>> TemporalBegin
<<ExtrinsicObject>> ResourceMetadata -> <<slot>> TemporalEnd |
atom:entry/ |
The identifier shall be created (as already done in the I15ToISO-Bridge) in a way that it can be used as parentIdentifier parameter for a subsequent EOP product search. Sample: urn:ogc:def:EOP:EUM:acronym:ASCxxx1A:satellite:M02:fileid:EO:EUM:DAT:METOP:ASCSZO1B |
see notes column left |
atom:entry/ |
To be mapped from: /gmd:MD_Metadata/gmd:fileIdentifier |
<<ExtrinsicObject>> MetadataInformation -> <<slot>> Identifier
|
atom:entry/ |
/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:language |
<<ExtrinsicObject>> ResourceMetadata -> <<slot>> Language |
atom:entry/ |
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_Data-Identification/ gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:useLimitation/gco:CharacterString[6] |
<<ExtrinsicObject>> Rights -> <<Description>> |
atom:entry/ georss:* |
Polygon -> to be mapped from the /gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent//gmd:geographicElement/gmd:EX_GeographicBoundingBox[7] |
<<ExtrinsicObject>> ResourceMetadata -> <<slot>> Envelope |
atom:entry/ |
The atom/link[@rel='search'] element should provide a link to a search engine (OSDD document) to search for specific products of the collection described in the atom:entry. In this OSDD a link with @rel='results' should be found that provides gives the template for the product query (e.g. …&parentIdentifier=<atom:id of current collection>&…) |
see notes column left |
atom:entry/atom:link[@rel=’icon’] |
Per 8.2.5 the media:content@url should be mapped from /gmd:MD_BrowseGraphic/gmd:filename, the media:content@type from /gmd:MD_BrowseGraphic/gmd:filetype. |
<<ExtrinsicObject>> MD_BrowseGraphic |
atom:entry/atom:link[@rel=’via’][8] atom:entry/atom:link[@rel=’alternate’]
|
For the rel "via" a link to the original/native source (from which the other metadata types are derived by conversion or translation) shall be provided. For the rel "alternate" links to alternative formats/representations of the original source shall be provided.
E.g. link to the GetRecordById operation: Reference (Link) to the data source (e.g. original ISO19139 collection metadata). The "type" attribute set to "application/vnd.iso.19139+xml". Example: <atom:link rel="via" type="application/vnd.iso.19139+xml" length="845" title="ISO 19139 Metadata" href=" http://46.51.189.235:80/soapServices/CSWStartup?service=CSW&version=2.0.2&request=GetRecordById&outputSchema=http://www.isotc211.org/2005/gmi&Id=EO:EUM:DAT:METOP:OAS025"/> It may also make sense to include other links, e.g. a link (with rel="alternate") to the HTML-based metadata-representation – but now with the "type" attribute set to "text/html" and the "href" attribute set to the additional HTML representation of the metadata. Example: <link href="http://46.51.189.235:80/discovery/Start/DirectSearch/DetailResult.do?f(r0)=EO:EUM:DAT:METOP:OAS025" rel="alternate" title="ASCAT Winds and Soil Moisture at 25 km Swath Grid - Metop" type=" text/html "/> |
|
atom:entry/ |
Provide here the dissemination endpoints: atom:link elements reference every single dissemination endpoint of the data resource. Proposal: Link element includes a "rel" attribute with value "enclosure", a "type" attribute with "text/html" and a "title" attribute with the name of the dissemination point. Example: <link href="http://eoportal.eumetsat.int/userMgmt" rel="enclosure" title="EO Portal Registration" type="text/html"/>
The XPaths in ISO19139 are as follows: · The link itself: /gmd:MD_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:distributor[1]/gmd:MD_Distributor/gmd:distributorTransferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine[2]/gmd:CI_OnlineResource/gmd:linkage/gmd:URL · The title: /gmd:MD_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:distributor[1]/gmd:MD_Distributor/gmd:distributorTransferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine[1]/gmd:CI_OnlineResource/gmd:name/gco:CharacterString |
|
atom:entry/atom:link[@rel=’up’] |
N/A |
|
atom:content[@type=’html’] |
An atom:content element may be added to the atom:entry to allow to visualization links to the additional metadata presentations and the dissemination links. The content element of the atom:entry includes a "type" attribute with "html". Example:
<content type="html"><a href="http://46.51.189.235:80/discovery/Start/DirectSearch/DetailResult.do?f(r0)=EO:EUM:DAT:METOP:ASCAT25">Metadata (HTML)</a> <br/><a href="http://46.51.189.235:80/soapServices/CSWStartup?service=CSW&version=2.0.2&request=GetRecordById&outputSchema=http://www.isotc211.org/2005/gmi&Id=EO:EUM:DAT:METOP:ASCAT25">Metadata (ISO19139 XML)</a> <br/> <a href="http://46.51.189.235:80/soapServices/OpenSearch?format=atom&id=EO:EUM:DAT:METOP:ASCAT25">Metadata (ATOM)</a> <br/> <a href="http://eoportal.eumetsat.int/userMgmt/protected/dataCentre.faces?acronym=OASW025">EUMETSAT Data Centre (until 28/02/2011) </a> <br/> <a href="/discovery/Start/DirectSearch/Extended.do?freeTextValue(resourceidentifier)=EO:EUM:DAT:METOP:OAS025">Please order from ASCAT Winds and Soil Moisture for data from 28/02/11 onwards</a> <br/> <a href="http://www.osi-saf.org">OSI SAF Archive and FTP</a> <br/></content> The content without URL-encoding looks as follows: <a href="http://46.51.189.235:80/discovery/Start/DirectSearch/DetailResult.do?f(r0)=EO:EUM:DAT:METOP:ASCAT25">Metadata (HTML)</a> <br/><a href="http://46.51.189.235:80/soapServices/CSWStartup?service=CSW&version=2.0.2&request=GetRecordById&outputSchema=http://www.isotc211.org/2005/gmi&Id=EO:EUM:DAT:METOP:ASCAT25">Metadata (ISO19139 XML)</a> <br/> <a href="http://46.51.189.235:80/soapServices/OpenSearch?format=atom&id=EO:EUM:DAT:METOP:ASCAT25">Metadata (ATOM)</a> <br/> <a href="http://eoportal.eumetsat.int/userMgmt/protected/dataCentre.faces?acronym=OASW025">EUMETSAT Data Centre (until 28/02/2011) </a> <br/> <a href="/discovery/Start/DirectSearch/Extended.do?freeTextValue(resourceidentifier)=EO:EUM:DAT:METOP:OAS025">Please order from ASCAT Winds and Soil Moisture for data from 28/02/11 onwards</a> <br/> <a href="http://www.osi-saf.org">OSI SAF Archive and FTP</a> <br/></a> |
|
Annex E: Revision history
Date | Release | Author | Paragraph modified | Description |
---|---|---|---|---|
2013-03-15 |
0.0.1 |
Pedro Gonçalves |
|
Consolidation of Earth Observation Extension
|
2013-08-12 |
0.0.2 |
Pedro Goncalves |
Annex B and C All |
Addition of Schemas and examples Revision and typo correction |
2013-12-13 |
0.0.3 |
Pedro Goncalves |
Annexes |
Reorganization of Annexes. Correction of example values on tables 3, 4 and 5. |
2014-06-02 |
0.0.4 |
Uwe Voges |
All |
Included definitions of Collection, Product etc, included additional queryables for Collection Discovery, included informative mappings of all Collection queryables to ISO19115/1939 and to CSW ebRIM EP I15, included all informative response mappings from ISO19115/1939 and CSW ebRIM EP I15 to ATOM,…. |
2014-06-26 |
0.0.4 |
Uwe Voges |
All |
Added an INSPIRE conformance class, updated rnc file regarding additional query parameters, resolved some comments, mainly in "Response Mapping: ISO191(15|39)[-2] / I15 EP to ATOM", renamed platformShortName now platform, uniquely named "productQualityStatus" and "productQualityDegradationTag" in the whole doc and added those to rnc schema definition, fixed the "resolution" for Collections as follows: Splitted resolution into 2 (groups) of parameters (see my mapping in annex D2): denominator AND distanceValue + distanceUOM (for resolution an UOM is needed) This is the only useful way it can be done (this was done in the same way in CSW AP ISO). |
2014-07-11 |
0.0.4 |
Uwe Voges |
All |
Added reference to INSPIRE specifications. Added requirement for INSPIRE. |
2014-07-25 |
0.0.4 |
Uwe Voges |
All |
Split parameters table for collections into 2 tables: one for INSPIRE conformance In the INSPIRE table: degree now has possible values of "true", "false", "null" and I grouped queryables which make only sense if used together. Extended the "Overview" section. Added 6.2 "Two step search" for a better understanding how search for collections and products may work. Reorganized the requirements in the text and their mappings to conformance classes in table 1. Reorganized and extended the ATS: organized the ATS so that tests are grouped related to conformance classes and assigned requirement(s) to the tests. Corrected specification references, added SensorML EP Ref Updated response mappings to ATOM Added comments to: B.7. Earth Observation Extension Query Element Schema (schemas/opensearch/extensions/eo/1.0/eo.rnc) which must be solved by Pedro |
2014-07-28 |
0.0.4 |
Pedro Gonçalves |
Conformance Classes Schemas |
Content review of requirements and their mappings to conformance classes / test classes Review of EO Schemas |
2014-10-27 |
0.0.5 |
Yves Coene |
All |
Corrected eop entry in Table 2 and Annex B.8. Updated requirement /req/entry-eop. Added eo:creationDate and eo:modificationDate mapping in Table 5, Annex B.7 and Annex D.1. Reworded Conformance Test Class A.2.1 to allow also derived types such as opt:EarthObservation or sar:EarthObservation etc. Updated OGC 10-032r7 references to OGC 10-032r8 and updated its title. |
2016-05-25 |
0.0.7 (0.0.6 was only internal) |
Uwe Voges |
All |
Included the changes solving all comments received on the OGC OpenSearch Extension for Earth Observation candidate standard during the TC voting period: Comment 2.1: Added new queryables highestLocation and lowestLocation to table 5, B7, mappings to D1 and D3 (not applicable to collections). Extended mappings for cloudCover and snowCover in D1 Comment 2.2: We now use (in all tables) "organisation" instead "organization" for: organisationName organisationRole Comment 2.3: Made the type of eo:frame and eo:track equal to "string" in Table 5, B7, . Comment 2.5: "doi" was added as queryable. Added definition to table 3 and B7. Added mappings for collection and products to D1, D2, D3, D4 Comment 2.6: "publicationDate" was added as queryable. The type of the queryable is now of type date. Added definition to table 4. Added definition to B7. Added mappings for collection and products to D1, D2, D3, D4 Comment 2.7 Product Identifier is not defined as new queryable but is mapped to OGC 10-032 geo:uid Added to table D1 and D3. Comment 2.8: "productVersion" was added as queryable. The type of the queryable is now of type string. Added definition to table 5 and B7. Added mappings for products to D1, D3 Comment 2.9: recordSchema was added as queryable. The type of the queryable is now of type string. Standard values are e.g. http://www.opengis.net/eop/2.1 (OGC O&M EOP), http://www.isotc211.org/2005/gmi (ISO19115-2), http://www.isotc211.org/2005/gmd (ISO19115) Added definition to table 3 Added definition to B7. Comment 2.10: Modified not added as queryable: this is already covered by queryable modificationDate. But mappings were added in D2, D3, D4. Comment 2.11: Mapping of the basic OGC 10-032 queryables geo:box, geo:name, geo:uid, time:start, time.end in D1 and D3 Editorial: Added keywords Hints on "alternative" representations in atom response entries Editorial changes |
2016-05-30 |
0.0.7 (0.0.6 was only internal) |
Uwe Voges |
All |
Table 2: added media namespace from example 7. Added param namespace used in Annex C. Instead of adding recordSchema in the eo: namespace, we keep it in the sru: namespace and added a note in the same way as for the Parameter extension where also the param: namespace is kept instead of moving everything to the eo: namespace. Table 7: added relation to first and last page in ATOM response |
2016-05-31 |
0.0.7 (0.0.6 was only internal) |
Uwe Voges |
All |
Added links to first and last entry to atom feed. atom:entry/dc:identifier now mandatory Added root nodes to be provided for every recordSchema Added hint to the official Atom.XSD file used by NASA CWICSmart conformance tests |
2016-06-01 |
0.0.7 (0.0.6 was only internal) |
Uwe Voges |
Table-2 Chapter 8.1, 8.2 all |
Added namespaces for ISO19115(-2) Added recordSchemas for Sensor ML 2.0 and Dublin Core Editorial |
2016-07-06 |
0.0.8 |
Uwe Voges, Yves Coene |
Table-3 Chapter 8.2.2 Table 8
Chapter 8.2.4 |
In summary the inclusion and linking to additional/alternative metadata in the ATOM response was clarified and updated. Metadata model references (namespaces, identifier, media types,..) were updated (ISO19115-1/ISO19115-3 was added), the list of reference documents was updated, document references were added in different positions and examples were updated and clarified clarified sru:recordSchema
improved text on detailed metadata
Clarified atom:entry/atom:link[@rel= ’alternative’] and Additional Metadata. Extended chapter 8.2.4 with additional explanations |
2016-09-06 |
1.0.0 |
Uwe Voges |
Requirements / Conformance Classes Conformance Tests Table 6 |
Improved explanation for what kind of search which parameters should be used Definitions of requirements / conformance classs aligned with usual OGC definitions
Updated references
Definition of availabilityTime improved |
[1] www.opengeospatial.org/cite
[2] Including products of logical collections (e.g. containing items of different types, sensor, sensor mode, platforms)
[3] For the identifier see: https://www.loc.gov/standards/sru/recordSchemas/index.html
[4] Note: the official Atom.XSD file used by NASA CWICSmart conformance tests is stricter than this RELAX NG which allows more flexibility. See https://tools.oasis-open.org/version-control/browse/wsvn/cmis/trunk/SchemaProject/schema/ATOM.xsd
[5] Can be applied to gmd:MD_Metadata (ISO19139) and gmi:MI_Metadata (ISO19139-2)
[6] the semantic of atom:rights is not 100%: therefore other mappings (accessConstraints, otherConstraints, useConstratints, classification) may make sense.
[7] Note: it makes sense to provide a gml:Polygon/gml:exterior/gml:LinearRing/gml:posList entry as different clients are able to render this.
[8] An alternative (or in addition to this) is to include gmd:MD_Metadata into the ATOM response (see below).