License Agreement

Permission is hereby granted by the Open Geospatial Consortium, ("Licensor"), free of charge and subject to the terms set forth below, to any person obtaining a copy of this Intellectual Property and any associated documentation, to deal in the Intellectual Property without restriction (except as set forth below), including without limitation the rights to implement, use, copy, modify, merge, publish, distribute, and/or sublicense copies of the Intellectual Property, and to permit persons to whom the Intellectual Property is furnished to do so, provided that all copyright notices on the intellectual property are retained intact and that each person to whom the Intellectual Property is furnished agrees to the terms of this Agreement.

If you modify the Intellectual Property, all copies of the modified Intellectual Property must include, in addition to the above copyright notice, a notice that the Intellectual Property includes modifications that have not been approved or adopted by LICENSOR.

THIS LICENSE IS A COPYRIGHT LICENSE ONLY, AND DOES NOT CONVEY ANY RIGHTS UNDER ANY PATENTS THAT MAY BE IN FORCE ANYWHERE IN THE WORLD.

THE INTELLECTUAL PROPERTY IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE DO NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE INTELLECTUAL PROPERTY WILL MEET YOUR REQUIREMENTS OR THAT THE OPERATION OF THE INTELLECTUAL PROPERTY WILL BE UNINTERRUPTED OR ERROR FREE. ANY USE OF THE INTELLECTUAL PROPERTY SHALL BE MADE ENTIRELY AT THE USER’S OWN RISK. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ANY CONTRIBUTOR OF INTELLECTUAL PROPERTY RIGHTS TO THE INTELLECTUAL PROPERTY BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM ANY ALLEGED INFRINGEMENT OR ANY LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR UNDER ANY OTHER LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH THE IMPLEMENTATION, USE, COMMERCIALIZATION OR PERFORMANCE OF THIS INTELLECTUAL PROPERTY.

This license is effective until terminated. You may terminate it at any time by destroying the Intellectual Property together with all copies in any form. The license will also terminate if you fail to comply with any term or condition of this Agreement. Except as provided in the following sentence, no such termination of this license shall require the termination of any third party end-user sublicense to the Intellectual Property which is in force as of the date of notice of such termination. In addition, should the Intellectual Property, or the operation of the Intellectual Property, infringe, or in LICENSOR’s sole opinion be likely to infringe, any patent, copyright, trademark or other right of a third party, you agree that LICENSOR, in its sole discretion, may terminate this license without any compensation or liability to you, your licensees or any other party. You agree upon termination of any kind to destroy or cause to be destroyed the Intellectual Property together with all copies in any form, whether held by you or by any third party.

Except as contained in this notice, the name of LICENSOR or of any other holder of a copyright in all or part of the Intellectual Property shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Intellectual Property without prior written authorization of LICENSOR or such copyright holder. LICENSOR is and shall at all times be the sole entity that may authorize you or any third party to use certification marks, trademarks or other special designations to indicate compliance with any LICENSOR standards or specifications. This Agreement is governed by the laws of the Commonwealth of Massachusetts. The application to this Agreement of the United Nations Convention on Contracts for the International Sale of Goods is hereby expressly excluded. In the event any provision of this Agreement shall be deemed unenforceable, void or invalid, such provision shall be modified so as to make it valid and enforceable, and as so modified the entire Agreement shall remain in full force and effect. No decision, action or inaction by LICENSOR shall be construed to be a waiver of any rights or remedies available to it.


 

i. Abstract

The OpenSearch specification [NR3] is defined as a binding of the Abstract Protocol Definition (APD) for the searchRetrieve operation, one of a set of documents [NR4] for the OASIS Search Web Services (SWS) initiative [OR1]. The OpenSearch Description Document (OSDD) allows clients to retrieve service metadata from an OpenSearch implementation. The OSDD format allows the use of extensions that allow search engines to inform clients about specific and contextual query parameters and response formats. The OpenSearch extension for Earth Observation (EO) collections and products search is defined in [OR20]. The mandatory response format is based on Atom 1.0/XML [OR14].

JavaScript Object Notation (JSON) [NR1] has been gaining in popularity for encoding data in Web-based applications. JSON consists of sets of objects described by name/value pairs.  GeoJSON [NR2] is a format for encoding collections of simple geographical features along with their non-spatial attributes using JSON. This OGC standard describes a GeoJSON [NR2] and JSON-LD [NR15] encoding for OpenSearch Response documents.

The GeoJSON encoding defined in this document is defined as a compaction[1] through a normative context, of the proposed JSON-LD encoding, with some extensions as presented in section 8 of this document.  Therefore, the JSON-LD encoding can also be applied to other RDF [OR8] encodings including RDF/XML [OR11] and RDF Turtle [OR12].

Although this document makes no assumptions as to the "service" interfaces through which the Search Response is obtained and applies equally well to a Service Oriented Architecture as well as a Resource Oriented or RESTful architecture.  The documented approach is mainly intended to be applied in combination with the following technologies:

  • OGC OpenSearch extensions [OR19], [OR20], [NR3].

GeoJSON is a format for encoding collections of simple geographical features along with their non-spatial attributes using JSON. GeoJSON objects may represent a geometry, a feature, or a collection of features. GeoJSON supports the following geometry types derived from the OGC Simple Features specification: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon and GeometryCollection. Features in GeoJSON contain a geometry object and additional properties, and a feature collection represents a list of features.

JSON is human readable and easily parseable. However, JSON is schemaless.  JSON and GeoJSON documents do not include an explicit definition of the structure of the JSON objects contained in them.  Therefore, this standard is based on a normative JSON-LD context which allows each property to be explicitly defined as a URI.  Furthermore, the JSON encoding is defined using JSON Schema [OR24] which allows validation of instances against these schemas.

ii.   Keywords

The following are keywords to be used by search engines and document catalogues

ogcdoc, ogc documents, Earth Observation, EO Collection, EO Product, GeoJSON, JSON, JSON-LD, Linked Data, Metadata, OpenSearch, OpenSearch Earth Observation Service

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

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 when possible.

iv.   Submitting organizations

The following organizations will submit the original document or its revisions to the Open Geospatial Consortium (OGC):

  • CEOS – Committee on Earth Observation Satellites
  • CGI
  • Con terra GmbH
  • ESA – European Space Agency
  • EUMETSAT
  • Spacebel s.a.

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:

  • DLR
  • GeoSolutions
  • VITO

Note: this acknowledgement does not imply a complete endorsement by these organizations.

v.   Submitters

All questions regarding this submission should be directed to the editor or the submitters:

Name

Affiliation

Yves Coene

Spacebel s.a.

Uwe Voges

con terra GmbH

Olivier Barois

ESA

Andrea Della Vecchia

ESA

John Taylor

CGI

Michael Schick

EUMETSAT

 

1        Scope

1.1       OpenSearch Extension for Earth Observation

The OpenSearch extension for Earth Observation (EO) is defined in OGC 13-026r9 [OR20]. It is complementary to the OpenSearch Geo and Time Extensions [OR19] and recommends their use for spatial and temporal queries. It specifies a series of additional parameters that can be used to constrain searches especially for EO collection and EO product metadata. Further it defines a search operation response model supporting best practices for REST API´s such as HATEOAS (Hypermedia As The Engine Of Application State) and a default response encoding based on Atom 1.0/XML [OR14].

The OpenSearch Description Document (OSDD) allows clients to retrieve service metadata from an OpenSearch implementation. The OSDD format allows the use of extensions that allow search engines to inform clients about specific and contextual query parameters and response formats.

1.2       OpenSearch Extension for Earth Observation Response Model

The response of an OpenSearch search request can be considered a container which contains resources as search response entries. The container itself includes information about the discovery service or search engine. It further adds some specific "search metadata" (e.g., total results of a search). The resources of an OpenSearch search response can be of different types, e.g., EO collection metadata or EO product metadata. The model is applicable to multiple types of resources. Therefore, this model just includes elements which can easily be derived (mapped) from different native metadata models used to describe different kinds of resources.

Further resource details can be acquired by following hyperlinks (see below) which, for example, lead to related searches (to implement two-step-searches [OR20]) or to alternative representations (including full native metadata descriptions, the data described by the metadata,  previews etc.). Those hyperlinks support the best practices for (Hypermedia) API´s such as HATEOAS.

The supported response formats for a search operation are advertised in the OSDD of a given OpenSearch instance. The default response format is Atom/XML and is defined in [OR20]. Other formats may be supported by the server as well. One of these formats is GeoJSON(-LD), a format for encoding a feature (representing a resource) and a collection of features (representing a container).

This OGC standard defines a GeoJSON [NR2] and JSON-LD [NR15] encoding of the OpenSearch response format as an alternative to its default Atom/XML representation.  It does not (re)define the OpenSearch search parameters as these were defined in [OR20]. Their mapping to the GeoJSON response format is included in Annex F: of the current document for the convenience of the reader.

Table : Overview of OpenSearch Extension for EO Documents

 

Atom/XML
Implementation

GeoJSON(-LD) Implementation

Search request and search parameter definitions

OGC 13-026r9

OGC 13-026r9

Search response definition

OGC 13-026r9

OGC 17-047r1

 

It is worthwhile noting that although the encoding is intended for use in the Earth Observation domain (i.e., searches for EO collections or products), the proposed encoding can also be applied to other domains.  The only assumption made is that resource metadata is modelled as GeoJSON features. 

1.3       Design Approach and Rationale

This section is non-normative.

The response encoding defined in the document satisfies the following design goals.

  • Feature-based GeoJSON model: The model maximises reuse of pre-existing standardised property names.  Whereever possible, existing properties from the GeoJSON [NR2] and OWS Context [NR5] FeatureCollection objects are used for modelling Search response properties instead of proposing new property names.  Existing properties are extended where needed (e.g., links).
  • Generic solution: The document proposes JSON objects and properties for representing OpenSearch response elements.  The model remains very close to the original XML encoding (e.g., same property names where possible) and can express the same information.  There is no assumption about the content of the actual "features."

 

1.4       Document Outline

Hereafter a brief outline of the document content allows readers to jump directly to the topic of their interest.

  • Chapter 3 lists the normative and informative references used in this document.
  • Chapter 4 defines the main terms used in the document.
  • The conventions used in this document are explained in Chapter 5.
  • Chapter 6 gives an overview.
  • Chapter 7 specifies the proposed GeoJSON encoding.
  • Chapter 8 describes how the encoding can be extended with additional properties and describes the extension to JSON-LD which allows for describing multi-dimensional arrays as allowed by GeoJSON.
  • Chapter 9 provides information about the expected MIME media types which correspond to the proposed encodings.
  • Chapter 10 describes future work.

Finally, the following information was moved to the appendices.

  • Annex A defines the Abstract Test Suite for the standard.
  • Annex B includes normative JSON-LD @context definitions that allow interpreting the GeoJSON encoding as JSON-LD.
  • Annex C.1 presents the mapping of the properties proposed in this specification to the XML Response model. Annex C.2 compares the response elements with the corresponding elements of the OpenSearch Atom response and OASIS Abstract Protocol Binding.
  • Annex D contains the complete listing of examples illustrating the encodings defined in this document.
  • Annex E includes the JSON schema definitions defining the GeoJSON encoding.
  • Annex F defines the mapping of OpenSearch parameters defined in OGC 13-026r9 on JSON properties defined in OGC 17-003r2 and OGC 17-084.
  • Annex G explains where the schema file, context files and examples can be found in the OGC schema repository.
  • Annex H provides the revision history of this document.

 


2        Conformance

2.1       Conformance to base specifications

This section describes the compliance testing required for an implementation of this standard.

2.2       Conformance classes

The framework, concepts, and methodology for testing, and the criteria to be achieved in order to claim conformance are specified in the OGC Compliance Testing Policies and Procedures and the OGC Compliance Testing web site[2].

Annex A defines a set of tests and conformance classes that will support various applications with a range of different requirements.  The following conformance classes are distinguished. Testing is based on data validation. In order to conform to this OGC standard, an implementation shall implement all conformance classes specified in Annex A (normative).

 

Table : Conformance classes related to data instances

Conformance Class

Description

Clause

/conf/core

Core conformance class.

7.1

/conf/feature-collection

FeatureCollection objects.

7.2

/conf/properties

Properties objects.

7.2.1

/conf/links

Links objects.

7.2.5

/conf/control-information

ControlInformation objects.

7.3

/conf/queries

Queries objects.

7.3.1

/conf/feature

Feature objects.

7.4

/conf/feature-properties

Feature Property objects.

7.4.1

/conf/exceptions

Exception related objects.

7.5

/conf/exception-report

ExceptionReport objects.

7.5.2


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

3.1       Normative references

 

[NR1]          RFC 7159, The JavaScript Object Notation (JSON) Data Interchange Format, 2014, http://www.ietf.org/rfc/rfc7159.txt

[NR2]          RFC 7946, The GeoJSON Format, 2016, https://tools.ietf.org/html/rfc7946

[NR3]          OpenSearch 1.1 Draft 5, http://www.opensearch.org/Specifications/OpenSearch/1.1

[NR4]          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

[NR5]          OGC 14-055r2, OGC OWS Context GeoJSON Encoding, 2017, http://docs.opengeospatial.org/is/14-055r2/14-055r2.html

[NR6]          OGC 06-121r9, OGC Web Services Common Standard, Version 2.0.0, 2010, http://portal.opengeospatial.org/files/?artifact_id=38867

[NR7]          RFC 3986, Uniform Resource Identifiers (URI): Generic Syntax, 2005, http://www.ietf.org/rfc/rfc3986.txt

[NR8]          RFC 3987, Internationalised Resource Identifiers (IRIs), 2005, https://tools.ietf.org/html/rfc3987.

[NR9]          RFC 2616, Hypertext Transfer Protocol – HTTP/1.1, 1999, http://www.ietf.org/rfc/rfc2616.txt

[NR11]         RFC 5988, Web Linking, 2010,  http://www.ietf.org/rfc/rfc5988.txt

[NR12]         ECMA International, "ECMAScript Language Specification, Edition 5.1", Standard ECMA-262, 2011, http://www.ecma-international.org/publications/standards/Ecma-262.htm

[NR13]         The JSON Data Interchange Format, 2017, http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf        

[NR15]         JSON-LD 1.0, A JSON-based Serialisation for Linked Data, W3C Recommendation, 2014, http://www.w3.org/TR/json-ld/

3.2       Other references

 

[OR1]          OASIS searchRetrieve: Part 0. Overview, OASIS Standard, 2013, http://docs.oasis-open.org/search-ws/searchRetrieve/v1.0/os/part0-overview/searchRetrieve-v1.0-os-part0-overview.html.

[OR2]          OASIS searchRetrieve: Part 3. searchRetrieve Operation: APD Binding for SRU 2.0, Version 1.0, OASIS Standard, 2013, http://docs.oasis-open.org/search-ws/searchRetrieve/v1.0/os/part3-sru2.0/searchRetrieve-v1.0-os-part3-sru2.0.html.

[OR3]          Dublin Core Metadata Initiative, DCMI Metadata Terms, 2012, http://dublincore.org/documents/dcmi-terms/.

[OR4]          JSON-LD 1.0 Processing Algorithms and API, W3C Recommendation, 2014, https://www.w3.org/TR/json-ld-api/

[OR5]          OGC 12-084r2, OWS Context Atom Encoding Standard, 2013, http://docs.opengeospatial.org/is/12-084r2/12-084r2.html 

[OR6]          OGC 15-053, Implementing JSON/GeoJSON in an OGC Standard ER, 2015, Joan Masó.

[OR7]          OGC 11-052r4, OGC GeoSPARQL – A Geographic Query Language for RDF Data, Version 1.0, 2012, https://portal.opengeospatial.org/files/?artifact_id=47664, http://www.essepuntato.it/lode/owlapi/http://schemas.opengis.net/geosparql/1.0/geosparql_vocab_all.rdf

[OR8]          RDF 1.1 Primer, W3C Working Group Note, 2014, http://www.w3.org/TR/rdf11-primer/

[OR9]          RDF 1.1 Concepts and Abstract Syntax, W3C Recommendation, 2014, http://www.w3.org/TR/rdf11-concepts/

[OR10]        RDF Schema 1.1, W3C Recommendation, 2014, http://www.w3.org/TR/rdf-schema/

[OR11]        RDF 1.1 XML Syntax, W3C Recommendation, 2014, http://www.w3.org/TR/rdf-syntax-grammar/

[OR12]        RDF 1.1 Turtle, Terse RDF Triple Language, W3C Recommendation, 2014, http://www.w3.org/TR/turtle/

[OR13]        Data Catalog Vocabulary (DCAT), W3C Recommendation, 2014, https://www.w3.org/TR/vocab-dcat/.

[OR14]        RFC 4287, The Atom Syndication Format, 2005, https://tools.ietf.org/html/rfc4287 

[OR15]        Building JSON-LD APIs: Best Practices, Draft Community Group Report, 2016, http://json-ld.org/spec/latest/json-ld-api-best-practices/

[OR16]        Google JSON Style Guide, Revision 0.9, https://google.github.io/styleguide/jsoncstyleguide.xml

[OR17]        W3C vCard Ontology - for describing People and Organizations, W3C Interest Group Note, 2014, http://www.w3.org/TR/vcard-rdf/

[OR18]        GeoJSON-LD Vocabulary, http://geojson.org/geojson-ld/, http://geojson.org/geojson-ld/vocab.rdf

[OR19]        OGC 10-032r8, OGC OpenSearch Geo and Time Extensions, 2014, http://www.opengeospatial.org/standards/opensearchgeo

[OR20]        OGC 13-026r9, OGC OpenSearch Extension for Earth Observation Products

[OR21]        JSON-LD 1.1, "A JSON-based Serialisation for Linked Data", W3C Editor’s Draft, 2018, https://www.w3.org/TR/json-ld11/.

[OR22]        OGC 08-167r2, Semantic Annotations in OGC Standards, Version 2.0, 2012, https://portal.opengeospatial.org/files/?artifact_id=47857.

[OR23]        FOAF Vocabulary Specification 0.99, Namespace Document, 2014 – Paddington Edition, http://xmlns.com/foaf/spec/ .

[OR24]        JSON Schema, https://tools.ietf.org/html/draft-zyp-json-schema-04

[OR25]        http://goessner.net/articles/JsonPath/index.html

[OR26]        OGC 17-003r2, OGC EO Dataset Metadata GeoJSON(-LD) Encoding Standard

[OR27]        OGC 17-084, OGC EO Collection Metadata GeoJSON(-LD) Encoding Standard, 2019

[OR29]        Dublin Core Metadata Initiative term declarations represented in RDF schema language, http://dublincore.org/schemas/rdfs/.

[OR31]        SKOS Simple Knowledge Organization System Reference, W3C Recommendation, 2009, http://www.w3.org/TR/skos-reference/.

4        Terms and definitions

This document uses the terms defined in Sub-clause 5.3 of OGC 06-121r9 [NR6], 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.          compaction

While expansion removes context from a given input, compaction’s primary function is to perform the opposite operation: to express a given input according to a particular context. Compaction applies a context that specifically tailors the way information is expressed for a particular person or application. This simplifies applications that consume JSON or JSON-LD by expressing the data in application-specific terms, and it makes the data easier to read by humans [OR4].

4.2.          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.3.          context

A set of rules for interpreting a JSON-LD document as specified in the section "The Context" of the JSON-LD specification [NR15].

4.4.          dataset

Observation obtained by satellite instruments (OGC 10-140).  See granule and product.

4.5.          Domain (RDF)

Domain (rdfs:domain) is used to state that any resource that has a given property is an instance of one or more classes  [OR10].

4.6.          embedding

Embedding is a JSON-LD feature that allows using node objects as property values [NR15].

4.7.          expansion

The algorithm that removes [JSON-LD] context is called expansion [OR4].

4.8.          fatal exception

A server supplies exceptions (diagnostics) in the response as appropriate. A diagnostic is fatal or non-fatal. A fatal diagnostic is generated when the execution of the request cannot proceed and no results are available. For example, if the client supplied an invalid query there might be nothing that the server can do. A non-fatal diagnostic is one where processing may be affected but the server can continue (See section 2.9 of [OR2]).

4.9.          GeoJSON

A geospatial data interchange format based on Javascript Object Notation (JSON) [NR2].

4.10.       granule

The smallest aggregation of data that can be independently managed.  Granule usually matches the individual file of EO satellite data.

4.11.       identifier

A character string that may be composed of numbers and characters that is exchanged between the client and the server with respect to a specific identity of a resource.

4.12.       JSON

A lightweight, text-based, language-independent data interchange format, based on the Javascript programming language.

4.13.       JSON Schema

JSON Schema is a JSON media type for defining the structure of JSON data.  JSON Schema provides a contract for what JSON data is required for a given application and how to interact with it [OR24]. 

4.14.       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.15.       OpenSearch Description Document (OSDD)

An XML document available at a consistent location describing metadata for the service and providing templates for queries (See [NR4] §5).

 

4.16.       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.17.       Range (RDF)

Range (rdfs:range) is used to state that values of a property are instances of one or more classes  [OR10].

4.18.       RDF Triple

An RDF triple consists of three components: the subject, the predicate and the object.  An RDF triple is conventionally written in the order subject, predicate, object.  [OR9].

4.19.       search entry

An element of the search response representing a catalogued resource [OR19].

4.20.       search feed

The response document of a search service request containing zero or more entries [OR19].

4.21.       service interface

Shared boundary between an automated system or human being and another automated system or human being [ISO 19101].


5        Conventions

This section provides details and examples for any conventions used in the document. Examples of conventions are symbols, abbreviations, use of XML schema, or special notes regarding how to read the document.

5.1       Abbreviated terms

Some frequently used abbreviated terms:

APD                 Abstract Protocol Definition

API                  Application Programming Interface

ATS                 Abstract Test Suite

CEOS               Committee on Earth Observation Satellites

EO                   Earth Observation

EOP                 Earth Observation Product

GML                Geography Markup Language

HATEOAS       Hypermedia As The Engine Of Application State

HMA               Heterogeneous Missions Accessibility

HTTP               HyperText Transfer Protocol

IRI                   Internationalised Resource Identifier

ISO                  International Organisation for Standardisation

JSON               JavaScript Object Notation

JSON-LD         JavaScript Object Notation for Linked Data

LDP                 Linked Data Protocol

OASIS             Organization for the Advancement of Structured Information Standards

OGC                Open Geospatial Consortium

O&M               Observations and Measurements

OWC               OGC Web Services Context

RDF                 Resource Description Framework

RDFS               RDF Schema

REST               Representational State Transfer

SI                     International System of Units (French: Système international d’unités)

SRU                 Search/Retrieval via URL

UML                Unified Modeling Language

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

XML                eXtensible Markup Language

XSD                 XML Schema Definition Language

5.2       Symbols

5.2.1       JSON Schema diagrams

The schema diagrams[3] included in the document show the JSON structure expressed in JSON Schema [OR24] and documented in Annex E.1.

 

Table : JSON Schema diagram symbols

JSON Schema Entity

Representation

Description

Definition

definition

Definitions are shown as blue rectangles with solid borders.

Mandatory property

mandatory property

Mandatory properties are shown with solid borders.

Optional property

optional property

Optional properties are shown with dashed borders.

Property of type "Object" referring to a "Definition" of the Object.

property of type object

The "Def" attribute inside a rectangle representing a property of type Object refers to the corresponding Object definition.

Pattern property

pattern property

A pattern property defines the property's name as a regular expression.  There are no minimum or maximum occurrence settings for a pattern property.

Unspecified property

unspecified property

A property can be implicitly specified by adding a suitable pattern property or property wildcard.

"All Of" operator

all of

Contains one or more sub-schemas (definitions), added as children of the operator. An instance is valid if it is valid against all these sub-schemas.

"Any Of" operator

any of

Contains one or more sub-schemas (definitions), added as children of the operator. An instance is valid if it is valid against at least one of these sub-schemas.

"One Of" operator

one of

Contains one or more sub-schemas (definitions), added as children of the operator. An instance is valid if it is valid against exactly one of these sub-schemas.

Subschema (definitions)

subschema

The "Def" attribute inside a rectangle representing a (Sub) Schema refers to the corresponding Object definition.

5.2.2       JSONPath

The data dictionary tables in the current document use the JSONPath notation [OR25].  A brief overview of this notation is included in the table below which is taken from [OR25].

 

Xpath

JSONPath

Description

/

$

the root object/element

.

@

the current object/element

/

. or []

child operator

//

..

recursive descent. JSONPath borrows this syntax from E4X.

*

*

wildcard. All objects/elements regardless their names.

[]

[]

subscript operator. Xpath uses it to iterate over element collections and for predicates. In Javascript and JSON it is the native array operator.

|

[,]

Union operator in Xpath results in a combination of node sets. JSONPath allows alternate names or array indices as a set.

[]

?()

applies a filter (script) expression.

 

5.3       Namespace abbreviations

The following namespace abbreviations will be used in this document:

 

Table : Namespace abbreviations

Abbreviation

Full namespace URI

Reference

atom

http://www.w3.org/2005/Atom/

[OR14]

dcat

http://www.w3.org/ns/dcat#

[OR13]

dct

http://purl.org/dc/terms/

[OR29]

eo

http://a9.com/-/opensearch/extensions/eo/1.0/

[OR20]

foaf

http://xmlns.com/foaf/0.1/

[OR23]

geo

http://a9.com/-/opensearch/extensions/geo/1.0/

[OR19]

gj

https://purl.org/geojson/vocab#

[OR18]

gsp

http://www.opengis.net/ont/geosparql#

[OR7]

os

http://a9.com/-/spec/opensearch/1.1/

[NR3]

owc

http://www.opengis.net/ont/owc/1.0/

[OR5]

owl

http://www.w3.org/2002/07/owl#

 

rdf

http://www.w3.org/1999/02/22-rdf-syntax-ns#

[OR11]

rdfs

http://www.w3.org/2000/01/rdf-schema#

[OR10]

skos

http://www.w3.org/2004/02/skos/core#

[OR31]

sru

http://docs.oasis-open.org/ns/search-ws/sruResponse/

[OR2]

sru

http://a9.com/-/opensearch/extensions/sru/2.0/   

 

time

http://a9.com/-/opensearch/extensions/time/1.0/

[OR19]

xs

http://www.w3.org/2001/XMLSchema-datatypes#

 

xsd

http://www.w3.org/2001/XMLSchema#

 

 

5.4       Layout and identifiers

The normative provisions in the current document are denoted by the URI http://www.opengis.net/spec/os-geojson/1.0.  All requirements and conformance classes that appear in this document are denoted by relative URIs which are relative to this base URI.

5.5       Style

This document applies the "double quote" guideline defined in [OR16]:  "If a property requires quotes, double quotes must be used. All property names must be surrounded by double quotes. Property values of type string must be surrounded by double quotes. Other value types (like boolean or number) should not be surrounded by double quotes."

5.6       Data dictionary tables

This document includes data dictionary tables with information as per sub-clause 5.5 of OGC 06-121r9 [NR6].  The following comment applies:

  • Column 1 provides the JSON property name as well as the corresponding JSONPath [OR25] expression.

 


6        Overview

This standard defines a GeoJSON-based [NR2] serialization syntax for OpenSearch Responses that conforms to a subset of [NR15] syntax constraints but does not require JSON-LD processing. While other serialization forms are possible, such alternatives are not discussed in this document.

When serialized, absent properties are represented by either (a) setting the property value to null, or (b) by omitting the property declaration altogether at the option of the publisher. These representations are semantically equivalent. If a property has an array value, the absence of any items in that array shall be represented by omitting the property entirely or by setting the value to null. The appropriate interpretation of an omitted or explicitly null value is that no value has been assigned as opposed to the view that the given value is empty or nil.

JSON does not have a formal class model. JSON objects are just sets of properties. However, the JSON encoding described in this standard features a "type" property on each JSON object.

An OpenSearch Response Document conforming to this standard is a GeoJSON document whose root value is a FeatureCollection object, and whose MIME media type corresponds to one of the media types described in chapter 9.

6.1       JavaScript Object Notation

JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format that defines a small set of formatting rules for the portable representation of structured data.  JSON is derived from the object literals of JavaScript, as defined in the ECMAScript Programming Language Standard [NR12] and can represent four primitive types (strings, numbers, boolean values, and null) and two structured types (objects and arrays).  The ordering of the members or properties of any JSON object is considered irrelevant. Even though JSON is based on a subset of the JavaScript Programming Language it is currently well supported by nearly all programming languages, including Java, Python, and C#.

The JSON format is currently described by two independent standards, RFC7159 [NR1] and ECMA-404 [NR13]. Both standards documents are consistent, but the latter defines mainly the grammatical syntax where the former provides some additional semantic and security points.

6.2       GeoJSON Format Specification

GeoJSON [NR2] is a format for encoding collections of simple geographical features along with their non-spatial attributes using JSON. GeoJSON consists of a single object representing a geometry, feature, or collection of features. The geometries supported are Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon and Geometry Collections.


 

7        GeoJSON Encoding Specification

7.1       Requirements class: Core

Requirements Class

/req/core

Target type

Data instance

Dependency

HTTP 1.1

Dependency

/req/feature-collection

Dependency

/req/diagnostics

Requirement

/req/core/feature-collection

Requirement

/req/core/exceptions

Requirement 1
/req/core/feature-collection

Nominal search responses (with or without non-fatal exceptions) shall comply with the /req/feature-collection requirements class presented in section 7.2 and have an HTTP Status Code 200.

 

Requirement 2
/req/core/exceptions

In case of fatal exceptions, search responses shall comply with the req/exceptions requirements class presented in section 7.5 and have an HTTP Status Code different from 200.

If the API of an OpenSearch interface compliant with the current specification is described with an OpenAPI[4] description, then it should contain a Response Object as below.  It shows how a FeatureCollection is returned when HTTP Status Code is 200, while an ExceptionReport object is to be returned in case of exceptions.

Example 1: Extract of OpenAPI Description for a compliant interface


{
   "200": {
      "description": "Nominal search response",
      "content": {
         "application/geo+json": {
           "schema": {
              "$ref": "#/components/schemas/FeatureCollection"
           }
         }
      }
   },
   "default": {
      "description": "Unexpected fatal exception",
      "content": {
         "application/geo+json": {
           "schema": {
              "$ref": "#/components/schemas/ExceptionReport"
           }
         }
      }
   }
}

 

7.2       Requirements class: Feature Collection

 

Requirements Class

/req/feature-collection

Target type

Data instance

Dependency

/req/control-information

Dependency

/req/properties

Dependency

/req/feature

Dependency

/req/exception

Dependency

JSON [NR1]

Dependency

GeoJSON [NR2]

Dependency

http://www.opengis.net/spec/owc-geojson/1.0/core

Requirement

/req/feature-collection/properties

Requirement

/req/feature-collection/control-information

Requirement 3
/req/feature-collection/properties

A "FeatureCollection" object shall implement the properties shown in Table 5, with the value matching the type shown, and with the obligation shown.

 

Requirement 4
/req/feature-collection/control-information

A "FeatureCollection" object shall implement the properties of a ControlInformation object (Table 13).

The FeatureCollection object (originally defined in [NR2]) models a search response containing one of more search entries (Features). It may contain an optional @context property.  The @context properties are typically absent in the GeoJSON encoding and implicitly refer to the normative @context defined in Annex B.

The FeatureCollection inherits all ControlInformation properties.

Such response objects are typically used in responses from service interfaces compliant with OpenSearch [NR3], [NR4] or its extensions OGC 10-032r8 [OR19] and OGC 13-026r9 [OR20].  In the context of Earth Observation, the FeatureCollection can represent equally well the search responses of the first step and second step of a two-step search [OR20] (with different feature content for Dataset Series/Collections and Datasets/Products).  This is further explained in section 7.4 and examples of such responses are provided in appendices D1.1 and D1.2.

FeatureCollection Schema (GeoJSON)
Figure : FeatureCollection Schema (GeoJSON)

Complete description of the FeatureCollection is given in Table 5. 

Table : FeatureCollection object properties

GeoJSON Property

Definition

Data type and values

Multiplicity and use

@context

$.@context

 

Optional context property either embedding an actual context or a reference to the normative JSON-LD context defined in Annex B: "normative JSON-LD @context definition."

See Annex B.1.1.

Property

Zero or one

(optional)

type

$.type

As defined by [NR2].

Range: String

Fixed value: "FeatureCollection"

One (mandatory)

 

id

$.id

Unambiguous reference or identification of the search response (IRI).

Is defined by [NR5] §7.1.1.

Range: String (URI)

One (mandatory)

 

bbox

$.bbox

Information on the coordinate range of the geometry objects which are contained. The value is an array of length 4 (assuming the number of dimensions represented in the contained geometries is 2).  Typically south-west point and north-east point.  The value defines a shape with edges that have constant longitude and latitude. 

Is defined by [NR2].

Domain: FeatureCollection

Range: Array of Double

Zero or one (optional)

features

$.features

Collection of EarthObservation (Feature) objects as defined by [NR2].

It is possible for the Array to be empty.

Property [NR2].

Domain: FeatureCollection

Range: Array of Feature (See  Table 16)

Zero or more (optional)

properties

$.properties

Groups all other properties of the search response not covered by the properties higher in this table as imposed by [NR2]. See section 7.2.1.

Property [NR2].

Domain: FeatureCollection

Range: Properties (See Table 6)

One
(mandatory)

exceptions

$.exceptions

List of one of more non-fatal diagnostics (i.e., Exceptions).  If present, then list shall not be empty.

 

Property

Range: Array of Exception (See  Table 19)

Zero or one (optional)

The example below contains also the inherited ControlInformation properties defined in Table 13.

Example 2: FeatureCollection encoding example (GeoJSON)


{
   "type": "FeatureCollection",
   "id": "http://fedeo.esa.int/opensearch/request?startRecord=1&maximumRecords=10&platform=sentinel&httpAccept=application/geo%2Bjson",
   "bbox": [
      -180,
      -90,
      180,
      90
   ],
   "totalResults": 74,
   "startIndex": 1,
   "itemsPerPage": 10,
   "queries": {
      "request": [
         {
           "eo:platform": "sentinel",
           "count": 10,
           "startIndex": 1,
           "sru:recordSchema": "server-choice"
         }
      ]
   },
   "properties": { … },
   "features": []
}


 

Example 3: FeatureCollection encoding example (with explicit @context property)


{
   "@context": "https://www.opengis.net/spec/os-geojson/1.0",
   "type": "FeatureCollection",
   …
}


In the remainder of the document, we will not include the @context property in the GeoJSON encoding in which case it is implied as explained in Annex B.1.1.

7.2.1       Properties

 

Requirements Class

/req/properties

Target type

Data instance

Dependency

/req/category

Dependency

/req/agent

Dependency

/req/links

Dependency

/req/common-properties

Requirement

/req/properties/properties

Requirement

/req/properties/common-properties

 

Requirement 5

/req/properties/properties

A FeatureCollection "Properties" object shall implement the properties shown in Table 6, with the value matching the type shown, and with the obligation shown.

 

Requirement 6

/req/properties/common-properties

A FeatureCollection "Properties" object shall implement the properties of a CommonProperties object (Table 7).

The Properties block contains the properties and links to related objects. It contains all mandatory properties $.properties.* defined by OGC 14-055r2 [NR5]. Some optional properties defined by [NR5] can be added by implementations, but are not repeated in the table below.

Properties Schema (FeatureCollection)
Figure : Properties Schema (FeatureCollection)

Complete description of Properties is given in Table 6. 

Table : Properties object properties

JSON Property

Definition

Data type and values

Multiplicity and use

creator[5]

$.properties.creator

An entity or agent responsible for creating the response document.

Optional property in [NR5]

Domain: Properties

Range: String

One
(mandatory)

generator

$.properties.generator

 

Application responsible for creating the response document.

Optional[6] property in [NR5]

Domain: Properties

Range: Agent (See Table 9)

Zero or one
(optional)

subtitle

$.properties.subtitle

Description of the search response purpose or content.  Not empty string.

Optional property in [NR5]

Domain: Properties

Range: String

Zero or one
(optional)

lang

$.properties.lang

Language of response document.  Not empty string with an RFC-3066 code.

Mandatory property in [NR5]

Domain: Properties

Range: String

One
(mandatory)

links

$.properties.links

Refers to related and actionable resources including paging information.  See Table 10.

Mandatory property in [NR5]

Domain: Properties

Range: Links.  (See Table 10)

One (mandatory)

 

Example 4: Properties encoding example


{
 
  "properties": {
      "title": "FEDEO Clearinghouse - Search Response",
      "creator": "FEDEO Clearinghouse",
      "generator": {
           "type": "Agent",
           "title": "FEDEO Clearinghouse",
           "uri": "http://fedeo.esa.int/opensearch/readme.html",
            "version": "1.0"
      },
      "authors": [
         {
           "type": "Agent",
           "name": "FEDEO Clearinghouse",
           "email": "eohelp@eo.esa.int"
         }
      ],
      "updated": "2017-09-26T11:27:19Z",
      "lang": "en",
      "rights": "Copyright 2016-2017, European Space Agency",
      "links": { … }
   }
 
}


 

7.2.2       CommonProperties

Requirement 7

/req/common-properties

A "CommonProperties" object shall implement the properties shown in Table 7, with the value matching the type shown, and with the obligation shown.

The CommonProperties properties are inherited by the Properties block for FeatureCollections as well as Features.  They are taken from OGC 14-055r2 [NR5].

CommonProperties Schema
Figure : CommonProperties Schema

Complete description of CommonProperties is given in Table 7. 

Table : CommonProperties object properties

JSON Property

Definition

Data type and values

Multiplicity and use

type

$..properties.type

Unique identifier for the type of current element.  This property has the fixed value "Properties."

Domain: Properties

Range: String

 

Zero or one (optional)

title

$..properties.title

Title for the search response.

Mandatory property in [NR5]

Domain: Properties

Range: String

One
(mandatory)

publisher

$..properties.publisher

An entity or agent responsible for publishing the response document.

Optional property in [NR5]

Domain: Properties

Range: String

Zero or one
(optional)

authors

$..properties.authors

Entities or persons primarily responsible for making the response document.

Optional property in [NR5]

Domain: Properties

Range: Array of Agent (See Table 9)

Zero or one
(optional)

updated

$..properties.updated

Date of creation or last update of the response document (RFC3339 date).

Mandatory property in [NR5]

Domain: Properties

Range: DateTime

One
(mandatory)

date[7]

$..properties.date

Date or range of dates relevant to the response document.  String representing a date according to the ISO-8601 format.

Optional property in [NR5]

Domain: Properties

Range: String

Zero or one
(optional)

categories

$..properties.categories

Keywords related to the response document.

Optional property in [NR5]

Domain: Properties

Range: Array of Category (See Table 8)

Zero or one
(optional)

rights

$..properties.rights

 

Information about rights held in and over the response document.

Optional property in [NR5]

Domain: Properties

Range: String

Zero or one
(optional)

We refer to section 7.2.1 (FeatureCollection) and section 7.4.1 (Feature) for examples using the above properties.

7.2.3       Category

 

Requirement 8

/req/category

A "Category" object shall implement the properties defined in OGC 14-055r2 [NR5], with the value matching the type shown, and with the obligation shown.

The Category block contains the properties of a keyword and is defined in [NR5].

Category Schema
Figure : Category Schema

Complete description of Category is given in Table 8. 

Table : Category object properties

JSON Property

Definition

Data type and values

Multiplicity and use

type

$..properties/categories[*].type

Type of the element.  This property has the fixed value "Category."

Domain: Category

Range: String

Fixed value: "Category"

Zero or one (optional)

scheme

$..properties/categories[*].scheme

Identification of the code-list defining the keyword.

Defined in section 7.1.1.15 of [NR5]. 

Optional property in [NR5]

Domain: Category

Range: String (URI).

Zero or one (optional)

term

$..properties/categories[*].term

Identification of the keyword.  See also [OR22] for using of URI as string value.

Mandatory property in [NR5]

Domain: Category

Range: String

One (mandatory)

label

$..properties/categories[*].label

Human readable representation of the keyword.

Optional property in [NR5]

Domain: Category

Range: String

Zero or one (optional)

 

Example 5: Category encoding example


{
     "type":   "Category",
     "scheme": "http://www.eionet.europa.eu/gemet/",
     "term":   "http://www.eionet.europa.eu/gemet/concept/4612",
     "label":  "Land cover"
}


 

7.2.4       Agent

Requirement 9

/req/agent

An "Agent" object shall implement the properties defined in Table 9, with the value matching the type shown, and with the obligation shown.

The Agent object is a parent class which can contain the properties of a person, an organization or a software application.  It is based on foaf:Agent [OR23] and some of its properties were defined/renamed in [NR5].

Agent Schema
Figure : Agent Schema

Complete description of Agent is given in Table 9. 

Table : Agent object properties

JSON Property

Definition

Data type and values

Multiplicity and use

type

$..properties.authors[*].type

Type of the element.  This property can have one of the following fixed values "Agent," "Person," or "Organization."

Domain: Agent

Range: String

Zero or one (optional)

name

$..properties.authors[*].name

Human readable name of Person or Organization.

Defined in section 7.1.1.7 of [NR5].

Optional property in [NR5]

Domain: Agent

Range: String.

Zero or one (optional)

email

$..properties.authors[*].email

Email of Person or Organization.

Optional property in [NR5]

Domain: Agent

Range: String.

Zero or one (optional)

uri

$..properties.authors[*].uri

$.properties.generator.uri

 

URI of Agent, Person or Organization.

Optional property in [NR5]

Domain: Agent

Range: String (URI).

Zero or one (optional)

title

$.properties.generator.title

 

Title of Agent (applicable to software applications).

Optional property in Table 8 of [NR5]

Domain: Agent

Range: String.

Zero or one (optional)

version

Version of Agent (applicable to software applications).

Optional property in Table 8 of [NR5]

Domain: Agent

Range: String.

Zero or one (optional)

Example 6: Agent encoding example (author)


{
     "type":   "Agent",
     "name":   "Earth Observation Helpdesk",
     "email":  "EOHelp@esa.int",
     "uri":    "http://earth.esa.int"
}


 

Example 7: Agent encoding example (generator)


{
     "type":     "Agent",
     "title":    "CMR-OpenSearch",
     "version":  "1.76.3",
     "uri":      "https://cmr.earthdata.nasa.gov/opensearch"
}


7.2.5       Links

 

Requirements Class

/req/links

Target type

Data instance

Dependency

/req/link

Requirement

/req/links/properties

 

Requirement 10

/req/links/properties

A "Links" object shall implement the properties shown in Table 10, with the value matching the type shown, and with the obligation shown.

The Links block contains references to related resources as hypermedia links.  They include specification references and references to alternative representations of the metadata.  For the JSON encoding of the Links object, we use the property names adopted by section 7.1.2 of the GeoJSON encoding for OWS Context OGC 14-055r2 [NR5]. 

The Links object is a map containing descriptions of potential Links. The key is the "relation" as defined in [NR11] or a relation defined in [NR5].

The Link objects are grouped in arrays according to the "relation" they represent.  Implementers may add additional properties if additional "relations" need to be represented.  For consistency, all relations refer to arrays of Link objects and not to single Link objects.  This allows to have similar references with different media types included for the same relation.  The general pattern is thus  $.properties.links.relation[*].href.  It should be noted that also in the Atom OpenSearch response, multiple Atom links are allowed by the response syntax, whatever the value of the "rel" attribute.  Clients shall use the combination of "rel" and "type" attribute to select the proper Link.

Links Schema
Figure : Links Schema

Complete description of Links is given in Table 10.

Table : Links object properties

JSON Property

Definition

Data type and values

Multiplicity and use

type

$..links.type

Type of the element.  This property has the fixed value "Links."

String

Fixed value: Links

Zero or one (optional)

profiles

$..links.profiles

 

 

 

$.features[*].properties.links.profiles

Specification references identifying which specifications the response document complies with.

Is defined by [NR5] §7.1.1.1.

Mandatory property in [NR5].

Range: array of Link as defined in Table 12.

One (mandatory)

 

Range: array of Link as defined in Table 12.

Zero or one (optional)

via

$..links.via

Reference to a description of the resource of which the response document is derived (e.g., source of information).

Is defined by [NR5] §7.1.1.14.

Range: array of Link as defined in Table 12.

Zero or one (optional)

alternates

$..links.alternates

Reference to a description of the resource in an alternative format.

Is defined by [NR5] §7.1.2.

Range: array of Link as defined in Table 12.

Zero or one (optional)

related

$..links.related

Reference to the location of a related resource.

Range: array of Link as defined in Table 12.

Zero or one (optional)

search

$.properties.links.search

 

 

 

 

$.properties.features[*].properties.links.search

 

Reference to a resource from which the present response document is derived.  This shall at least contain a reference to the OpenSearch Description Document that describes the search interface. 

 

Range: array of Link as defined in Table 12.

One (mandatory)

Reference to a resource representing the (machine to machine) search interface allowing for further two-step or recursive search (e.g., OpenSearch Description Document) when the resource is a search service or a dataset series.

Range: array of Link as defined in Table 12.

Zero or one (optional)

describedby

$.properties.links.describedby

 

 

 

 

$.properties.features[*].properties.links.describedby

 

Reference to a description of the response document or documentation or (human readable) information related to the response document.

Such link can also be used to associate the response document with the corresponding JSON Schema file as defined in section 8.2 of [OR24].

Range: array of Link as defined in Table 12.

 

Zero or one (optional)

Reference to a description of the resource or documentation or (human readable) information related to the resource.

Range: array of Link as defined in Table 12.

Zero or one (optional)

first

$.properties.links.first

Reference to the first set of search results.

Mandatory unless the result set is empty.

 

Range: array of Link as defined in Table 12.

Zero or one (optional)

previous

$.properties.links.previus

Reference to the previous set of search results.

Mandatory unless the result set is empty or current set is the first set.

 

Range: array of Link as defined in Table 12.

Zero or one (optional)

next

$.properties.links.next

Reference to the next set of search results.

Mandatory unless the result set is empty or current set is the last set.

 

 

Range: array of Link as defined in Table 12.

Zero or one (optional)

last

$.properties.links.last

Reference to the last set of search results.

Mandatory unless the result set is empty.

Range: array of Link as defined in Table 12.

Zero or one (optional)

It is mandatory to use a "search" Link object at the FeatureCollection level identifying the OpenSearch Description Document (OSDD) describing the search engine.  The additional "search" Link objects (with different media types) as shown below are optional.

Example 8: Search Link encoding example (FeatureCollection)


{
   "search": [
        {
          "title": "OpenSearch Description Document",
           "href": "http://fedeo.esa.int/opensearch/description.xml",
           "lang": "en",
           "type": "application/opensearchdescription+xml"
        },
        {
          "title": "OpenAPI 3.0 Document (YAML)",
           "href": "http://fedeo.esa.int/opensearch/description.yaml",
           "lang": "en", 
           "type": "text/vnd.yaml"
        },
          {
          "title": "OpenAPI 3.0 Document (JSON)",
           "href": "http://fedeo.esa.int/opensearch/description.json",
           "lang": "en", 
           "type": "application/json"
        }
   ]
}


If a search entry (Feature) aggregates other resources (e.g., represents a collection or is a search service), it is recommended to use a "search" Link object at the Feature level identifying its OpenSearch Description Document as shown below.

Example 9: Search Link encoding example (Feature)


{
  "search": [
      {
         "href": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC&sensorType=OPTICAL&startDate=1999-07-01T00:00:00Z&endDate=2003-12-31T00:00:00Z",
         "type": "application/opensearchdescription+xml"
      }
   ]
}


It is recommended to use "profile" Link objects at the FeatureCollection level identifying the specification(s) the response complies with as shown below.

Example 10: Profile Links encoding example (FeatureCollection)


{
   "profiles": [
      {
         "href": "http://www.opengis.net/spec/owc-geojson/1.0/req/core"
      },
      {
         "href": "http://www.opengis.net/spec/os-geojson/1.0/req/core"
      }
   ]
}


If metadata is included inline, it is recommended to use a "profile" Link object at the Feature level identifying the recordSchema which is used as shown below.

Example 11: Profile Link encoding example (Feature)


{
   "profiles": [
      {
         "href": "http://www.opengis.net/spec/eo-geojson/1.0"
      }
   ]
}


The following is a non-exhaustive list of recordSchema values with corresponding GeoJSON Feature representations:

Table : recordSchema URI

Specification

recordSchema URI

OGC 14-055r2  [NR5]

http://www.opengis.net/spec/owc-geojson/1.0

OGC 17-003r2 [OR26]

http://www.opengis.net/spec/eo-geojson/1.0

It is recommended to use "first", "last", "next" and "previous" Link objects (if applicable) to support paging of results as shown below.

Example 12: Paging Links encoding example (FeatureCollection)

 


{
   "first": [
      {
         "href": "http://fedeo.esa.int/opensearch/request?parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson&startRecord=1",
         "type": "application/geo+json",
         "title": "first results"
      }
   ],
   "next": [
      {
         "href": "http://fedeo.esa.int/opensearch/request?parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson&startRecord=11",
         "type": "application/geo+json",
         "title": "next results"
      }
   ],
   "last": [
      {
         "href": "http://fedeo.esa.int/opensearch/request?parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson&startRecord=1321",
         "type": "application/geo+json",
         "title": "last results"
      }
   ]
}


 

Example 13: Describedby Link encoding example (FeatureCollection)


{
   "describedby": [
         {
           "href": "http://schemas.opengis.net/spec/os-geojson/1.0/os-geojson-schema.json",
           "type": "application/json",
            "title": "JSON Schema used for validation"
         } 
    ]
}


 

Example 14: Describedby Link encoding example (Feature)


{
   "describedby": [
         {
           "href": "https://earth.esa.int/web/guest/data-access/browse-data-products/-/asset_publisher/y8Qb/content/landsat-7-etm-enhanced-thematic-mapper-plus-geolocated-terrain-corrected-systematic-processing-over-kiruna-and-masplomas",
           "type": "text/html"
         } 
    ]
}


 

7.2.6       Link

Requirement 11

/req/link

A "Link" object shall implement the properties shown in Table 12, with the value matching the type shown, and with the obligation shown.

The Link block contains the properties of a hypermedia link to a resource identified by its URI [NR5].

Link Schema
Figure : Link Schema

For the JSON encoding of each Link object, we use the encoding defined in section 7.1.10 of the GeoJSON encoding for OWS Context OGC 14-055r2 [NR5].  The equivalent JSON-LD encoding is consistent with section 6.1.2.2 of OGC 15-053 [OR6].

Complete description of Link is given in Table 12.

Table : Link object properties

JSON Property

Definition

Data type and values

Multiplicity and use

href

$.properties.links.*[*].href

URI describing the related resource.

Is defined by [NR5] §7.1.10.

Range: String

One (mandatory)

type

$.properties.links.*[*].type

Hint about the type of the representation that is expected to be returned when the value of href is dereferenced.

Range: String (contains a media type).

Zero or one (optional)

title

$.properties.links.*[*].title

Human readable information about the link. Is defined by [NR5] §7.1.10.

Range: String

Zero or one (optional)

length

$.properties.links.*[*].length

Hint about the content length (in bytes) of the representation that is expected to be returned when the value of href is dereferenced.  Is defined by [NR5] §7.1.10.

Range: Integer

Zero or one (optional)

lang

Language of the reference pointed to by the href attribute.  String type, not empty with an RFC-3066 code.

Range: String

Zero or one (optional)

 

Example 15: Profile Link encoding example (FeatureCollection)


{
   "profiles": [
        { "href": "http://www.opengis.net/spec/owc-geojson/1.0/req/core" },
        { "href": "http://www.opengis.net/spec/os-geojson/1.0/req/core" }
   ]
}


 

Example 16: Search Link encoding example (FeatureCollection)


{
   "search": [
        {
          "title": "OpenSearch Description Document",
           "href": "http://fedeo.esa.int/opensearch/description.xml",
           "lang": "en",
           "type": "application/opensearchdescription+xml"
        }
   ]
}


 

7.3       Requirements class: Control Information

 

Requirements Class

/req/control-information

Target type

Data instance

Dependency

JSON [NR1]

Dependency

GeoJSON [NR2]

Dependency

/req/queries

Dependency

 

Requirement

/req/control-information/properties

 

Requirement 12

/req/control-information/properties

A "ControlInformation" object shall implement the properties shown in Table 13, with the value matching the type shown, and with the obligation shown.

In addition to the "pure data" a response can contain control information that is represented as depicted below.

 

ControlInformation Schema
Figure : ControlInformation Schema

Complete description of the ControlInformation is given in Table 5. 

Table : ControlInformation object properties

JSON Property

Definition

Data type and values

Multiplicity and use

totalResults

$.totalResults

Number of search results available for the current search.

Property [NR3].

Range: Integer

One
(mandatory)

startIndex

$.startIndex

Index of the first search result in the current set of search results.

Property [NR3].

Range: Integer

One
(mandatory)

itemsPerPage

$.itemsPerPage

The number of search results returned per page.

Property [NR3].

Range: Integer

One
(mandatory)

queries

$.queries

Defines search queries that can be performed by search clients.   Please see the Queries element specification for more information.

Property [NR3].

Range: Queries (See Table 14)

Zero or one (optional)

 

Example 17: ControlInformation encoding example


{
   "totalResults": 74,
   "startIndex": 1,
   "itemsPerPage": 10,
   "queries": {
      "request": [
         {
           "eo:platform": "sentinel",
           "count": 10,
           "startIndex": 1,
           "sru:recordSchema": "server-choice"
         }
      ]
   }
}


 

7.3.1       Queries

Requirements Class

/req/queries

Target type

Data instance

Dependency

JSON [NR1]

Dependency

GeoJSON [NR2]

Dependency

/req/query

Requirement

/req/queries/properties

 

Requirement 13

/req/queries/properties

A "Queries" object shall implement the properties shown in Table 14, with the value matching the type shown, and with the obligation shown.

The Queries object corresponds to the JSON representation of one or more OpenSearch Query[8] elements as defined in [NR3]. A Query element describes a specific search request that can be made by the search client. 

The Queries object is a map containing descriptions of potential queries. The key is the "role" as defined in [NR3].  The object has members which are named according to the "role" attribute in the XML representation and refer to arrays with Query objects.  [NR3] defines the allowed role values[9] within the OpenSearch namespace.  If a role attribute is used with a value beyond this list, a corresponding property should be added in the Queries element below referring to an array with the corresponding Query object(s).

Queries Schema
Figure : Queries Schema

Complete description of Queries is given in Table 14. 

Table : Queries object properties

JSON Property

Definition

Data type and values

Multiplicity and use

@context

$.queries[@context]

Optional context property.  May be used to bind namespace prefixes for OpenSearch template parameters to IRI references.  Namespace prefixes already defined in the implicit context (See Annex B) do not need to be redefined.

Range: Object

Zero or one (optional)

type

$.queries.type

Type of the object.  This property has the fixed value "Queries."

Range: String

Fixed value: Queries.

Zero or one (optional)

request

$.queries.request

Refers to zero or more Query elements of role="request" defining a specific search request that can be performed by a search client.  Represents the search query that can be performed to retrieve the same set of search results.

Range: Array of Query (See Table 15)

Zero or more (optional)

example

$.queries.example

Refers to zero or more Query elements of role="example" defining a specific search request that can be performed by a search client.  Represents search queries that can be performed to demonstrate the search engine.

Range: Array of Query (See Table 15)

Zero or more (optional)

correction

$.queries.correction

Refers to zero or more Query elements of role="correction" defining a specific search request that can be performed by a search client.  Represents search queries that can be performed to improve the result set, such as with a spelling correction.

Range: Array of Query (See Table 15)

Zero or more (optional)

related

$.queries.related

Refers to zero or more Query elements of role="related" defining a specific search request that can be performed by a search client.  Represents search queries that can be performed to retrieve similar but different search results.

Range: Array of Query (See Table 15)

Zero or more (optional)

superset

$.queries.superset

Refers to zero or more Query elements of role="superset" defining a specific search request that can be performed by a search client.  Represents search queries that will broaden the current set of search results.

Range: Array of Query (See Table 15)

Zero or more (optional)

subset

$.queries.subset

Refers to zero or more Query elements of role="subset" defining a specific search request that can be performed by a search client.  Represents search queries that will narrow the current set of search results.

Range: Array of Query (See Table 15)

Zero or more (optional)

 

Example 18: Queries encoding example


{
   "queries": {
      "request": [
         {
           "eo:platform": "sentinel-2",
           "count": 10,
           "startIndex": 1,
           "sru:recordSchema": "server-choice"
         }
      ],
      "related": [
         {
           "eo:platform": "sentinel-1",
           "count": 7,
           "startIndex": 1,
           "sru:recordSchema": "server-choice"
         },
         {
           "eo:platform": "landsat",
           "count": 14,
           "startIndex": 1,
           "sru:recordSchema": "server-choice"
         }
      ]
   }
}


 

7.3.2       Query

Requirement 14

/req/query

A "Query" object shall implement the properties shown in Table 15, with the value matching the type shown, and with the obligation shown.

The Query object corresponds to the JSON representation of an OpenSearch Query[10] element (without its "role" attribute) as defined in [NR3]. A Query element describes a specific search request that can be made by the search client.  The Query element properties correspond to the search parameters in a URL template.   The core search parameters are explicitly defined as Query attributes and custom parameters can be added via namespaces as needed.   According to [NR3], the Query element may contain additional attributes if the extended attributes are associated with a namespace. Search clients should interpret extended attributes to represent the corresponding template parameter by the same name in the specified namespace.

Query Schema
Figure : Query Schema

Complete description of Query is given in Table 15. 

Table : Query object properties

JSON Property

Definition

Data type and values

Multiplicity and use

type

$.queries.*[*].type

Type of the object.  This property has the fixed value "Query."

Range: String

Fixed value: Query.

Zero or one (optional)

title

$.queries.*[*].title

Contains a human-readable plain text string describing the search request.  The value must contain 256 or fewer characters of plain text. The value must not contain HTML or other markup.

Is defined by [NR3][11].

Range: String

 

Zero or one (optional)

totalResults

$.queries.*[*].totalResult

Contains the expected number of results to be found if the search request were made.

Range: Integer

See [NR3].

Zero or one (optional)

searchTerms

$.queries.*[*].searchTerms

Contains the value representing the "searchTerms" as an OpenSearch 1.1 parameter.

Range: String See [NR3].

Zero or one (optional)

count

$.queries.*[*].count

Contains the value representing the "count" as an OpenSearch 1.1 parameter.

Range: Integer

 See [NR3].

Zero or one (optional)

startIndex

$.queries.*[*].startIndex

Contains the value representing the "startIndex" as an OpenSearch 1.1 parameter.

Range: Integer

 See [NR3].

Zero or one (optional)

startPage

$.queries.*[*].startPage

Contains the value representing the "startPage" as an OpenSearch 1.1 parameter.

Range: Integer

See [NR3].

Zero or one (optional)

language

$.queries.*[*].language

Contains the value representing the "language" as an OpenSearch 1.1 parameter.

Range: String

See [NR3].

Zero or one (optional)

inputEncoding

$.queries.*[*].inputEncoding

Contains the value representing the "inputEncoding" as an OpenSearch 1.1 parameter.

Range: String

See [NR3].

Zero or one (optional)

outputEncoding

$.queries.*[*].outputEncoding

Contains the value representing the "outputEncoding" as an OpenSearch 1.1 parameter.

Range: String

See [NR3].

Zero or one (optional)

$.queries.*[*].*

Any other extended property associated with a namespace. Search clients should interpret extended properties to represent the corresponding OpenSearch template parameter by the same name in the specified namespace.

Typical properties that can be used include but are not limited to search parameters defined in OpenSearch Extensions for Geo, Time and Earth Observations [OR19] [OR20].

See [NR3].

Zero or one (optional)

Example of a Query element representing a search request without extended properties that correspond to an extended search parameter:

Example 19: Query encoding example (without extended search parameters)


{
   "type": "Query",
   "language": "en-US",
   "inputEncoding": "UTF-8",
   "count": 10,
   "startIndex": 1,
   "searchTerms": "sentinel-2"
}


An example of a Query element representing a search request that contains extended properties that correspond to extended search parameters is shown below.  The abbreviated namespaces used in the parameter names shall correspond to the definitions included in the @context which may be implicit (See Annex B:).

Example 20: Query encoding example (with extended search parameters)


{
   "type": "FeatureCollection",
   "queries": {
      "@context": {
         "time": "http://a9.com/-/opensearch/extensions/time/1.0/",
         "geo": "http://a9.com/-/opensearch/extensions/geo/1.0/",
         "eo": "http://a9.com/-/opensearch/extensions/eo/1.0/"
      },
      "request": [
         {
           "type": "Query",
           "count": 10,
           "startIndex": 1,
           "eo:platform": "sentinel-2"
         }
      ]
   }
}


 

7.4       Requirements class: Feature

 

Requirements Class

/req/feature

Target type

Data instance

Dependency

JSON [NR1]

Dependency

GeoJSON [NR2]

Dependency

/req/geometry

Dependency

/req/feature-properties

Requirement

/req/feature/properties

Requirement

/req/feature/eo-series

Requirement

/req/feature/eo-dataset

 

Requirement 15

/req/feature/properties

A "Feature" object shall minimally implement the mandatory properties defined in OGC 14-055r2 [NR5] and the table below, with the value matching the type shown, and with the obligation shown.

The Feature block inherits all properties of the GeoJSON Feature object. 

Feature Schema (GeoJSON)
Figure : Feature Schema (GeoJSON)

The current specification can be applied to search results in JSON format which comply with the minimal Feature requirements as defined in [NR2] with minimal additional constraints which are defined in Table 17.

However, in case the specification is applied to represent search entries corresponding to Earth Observation resources, the following additional requirements apply.

 

Requirement 16

/req/feature/eo-series

A "Feature" object representing an Earth Observation Dataset Series shall implement the Feature properties defined in OGC 17-084 [OR27], with the value matching the type shown, and with the obligation shown.

 

Requirement 17

/req/feature/eo-dataset

A "Feature" object representing an Earth Observation Dataset shall implement the Feature properties defined in OGC 17-003r2 [OR26], with the value matching the type shown, and with the obligation shown.

For the complete description of the Feature object properties, we refer to the documents [NR5] OGC 17-003r2 and OGC 17-084 which inherit the properties from [NR2].  OGC 17-003r2 and OGC 17-084 inherit the minimum requirements from [NR5].

The minimal set of properties expected in a Feature is repeated in Table 16.  These properties are inherited from the Feature object defined in [NR2] and [NR5].    

 

Table : Feature object properties

JSON Property

Definition

Data type and values

Multiplicity and use

type

$.features[*].type

Type of the element.    This property is a string with fixed value "Feature."

Mandatory Property in [RD2].

Range: String

Fixed values: "Feature"

One (mandatory)

id

$.features[*].id

Unique identifier for the Feature (IRI).

Mandatory Property in [RD5].

Range: String

One
(mandatory)

bbox

$.features[*].bbox

Information on the coordinate range of the geometry object representing the footprint (See [NR2]). The value is an array of length 2*n where n is the number of dimensions represented in geometry.  Typically, south-west point and north-east point.  The value defines a shape with edges that have constant longitude and latitude.

Optional Property in [NR2].

Domain: Feature

Range: Array

Zero or one (optional)

geometry

$.features[*].geometry

Contains the description of the geometry of the feature.   

The value shall be either a Geometry object or a JSON null value.

Property [NR2].

Domain: Feature

Range: Geometry  or null value.

One
(mandatory)

properties

$.features[*].properties

Groups all other properties of the Feature not covered by the properties higher in this table as imposed by [NR2].   See section 7.4.1.

[NR5] imposes the mandatory properties "title" and "updated".  The current specification imposes one additional mandatory property "identifier".  All other properties are optional.

Mandatory Property in [NR5].

Domain: Feature

Range: Properties (See Table 17)

One
(mandatory)

 

If individual search results (i.e., metadata records) are GeoJSON Features themselves, then they can be embedded in the JSON response and all metadata properties are directly available as part of the search response[12]

Alternatively, responses can also refer to authoritative metadata (via) or alternative representations (alternates) by using one or more Link objects.  This response format can also be used to reduce the size of the response payload or when the metadata record is XML-based and cannot be embedded in a JSON payload.

 

Example 21: Feature encoding example (With metadata reference)


{
   "type": "Feature",
   "id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
   "bbox": [
      -21.7987,
      56.2923,
      -17.901,
      58.3046
   ],
   "geometry": {
      "type": "Polygon",
      "coordinates": [
         [
           [
              -21.7987,
              58.3046
           ],
           [
              -21.7569,
              56.3248
           ],
           [
              -18.063,
              56.2923
           ],
           [
              -17.901,
              58.2695
           ],
           [
              -21.7987,
              58.3046
           ]
         ]
      ]
   },
   "properties": {
      "title": "LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
      "identifier": "LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
      "date": "2000-01-20T12:16:02Z/2000-01-20T12:16:31Z",
      "updated": "2017-09-26T08:35:52Z",
      "links": {
         "alternates": [
           {
              "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&recordSchema=om",
              "type": "application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.1",
              "title": "O&M 1.1 metadata"
           }
         ],
         "via": [
           {
              "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&recordSchema=http://www.opengis.net/spec/eo-geojson/1.0",
              "type": "application/geo+json",
              "title": "OGC 17-003 Metadata"
           }
         ]
      }
   }
}


 

Metadata can only be embedded in the Search Response and comply with the current specification if it uses a JSON Feature representation and includes minimally the mandatory properties of a Feature as defined in [NR5][13].  Search clients should use the sru:recordSchema OpenSearch parameter defined in [OR20] to obtain this response format.

Example 22: Feature encoding example (Metadata embedded – OGC 14-055r2)


{
   "type": "Feature",
   "id": "http://fedeo.esa.int/opensearch/request/?parentIdentifier=SEA_GEC_1P&uid=SE1_OPER_SEA_GEC_1P_19780927T010430_19780927T010445_001316_0000_2267_9B4F",
   "bbox": [
      -2.69574,
      61.965195,
      0.135472,
      63.261372
   ],
   "geometry": {…},
   "properties": {…}
}


 

Example 23: Feature encoding example (Metadata embedded – OGC 17-003r2)


{
   "type": "Feature",
   "id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
   "bbox": [
      -21.7987,
      56.2923,
      -17.901,
      58.3046
   ],
   "geometry": {
      "type": "Polygon",
      "coordinates": [ …
      ]
   },
   "properties": {
      "status": "ARCHIVED",
      "identifier": "LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
      "parentIdentifier": "LANDSAT.ETM.GTC",
      "title": "LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
      "date": "2000-01-20T12:16:02Z/2000-01-20T12:16:31Z",
      "updated": "2017-09-26T08:35:52Z",
      "links": {
         "alternates": [
           {
              "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&recordSchema=server-choice",
              "type": "application/atom+xml",
              "title": "Atom format"
           },
           {
              "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&recordSchema=om",
              "type": "application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.1",
              "title": "O&M 1.1 metadata"
           }
         ],
         "data": [
           {
              "href": "http://landsat-ds.eo.esa.int/products/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.ZIP",
              "type": "application/x-binary",
              "title": "Download"
           }
         ],
         "previews": [
           {
              "href": "http://landsat-ds.eo.esa.int/metadata/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.BP.PNG",
              "type": "image/png",
              "title": "Quicklook"
           }
         ],
         "up": [
           {
              "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&uid=LANDSAT.ETM.GTC&recordSchema=iso",
              "type": "application/atom+xml",
              "title": "Up"
           }
         ]
      },
      "acquisitionInformation": [
         {
           "platform": {
              "platformShortName": "Landsat",
              "platformSerialIdentifier": "7"
           },
           "instrument": {
              "instrumentShortName": "ETM",
              "sensorType": "OPTICAL"
           },
           "acquisitionParameters": {
              "operationalMode": "IM",
              "beginningDateTime": "2000-01-20T12:16:02Z",
              "endingDateTime": "2000-01-20T12:16:31Z",
              "orbitDirection": "DESCENDING",
              "orbitNumber": 4076,
              "acquisitionType": "NOMINAL",
              "acquisitionSubType": "DEFAULT",
              "wrsLongitudeGrid": "216",
              "wrsLatitudeGrid": "20"
           }
         }
      ],
      "productInformation": {
         "productType": "ETM_GTC_1P",
         "size": 217432323,
         "availabilityTime": "2000-01-20T12:16:31Z",
         "referenceSystemIdentifier": "epsg:4326",
         "processingMode": "NOMINAL",
         "cloudCover": 6,
         "qualityInformation": {
           "qualityDegradation": 0
         }
      }
   }
}


If the GeoJSON representation is interpreted as JSON-LD, then applying the flattening[14] algorithms may allow representing a feature just by its identifier ("id" or "@id" property) as an element of the features array.  The example from Annex D.1.2.2 could then be represented as shown below.  In this case, if "id" identifies the object as being described in the (GeoJSON metadata) document with the corresponding IRI.   As the below representation is not considered valid according to GeoJSON[15], it is only allowed in the JSON-LD representation.

Example 24: Invalid flattened Feature encoding example


{
   "type": "FeatureCollection",
   "id": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson",
   "totalResults": 1329,
   "startIndex": 1,
   "itemsPerPage": 1,
   "queries": {
         …
   },
   "properties": {
      …
   },
   "features": [
      { 
         "id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4"              
       }
   ]
}


 

7.4.1       Properties

Requirements Class

/req/feature-properties

Target type

Data instance

Dependency

/req/category

Dependency

/req/agent

Dependency

/req/links

Dependency

/req/common-properties

Requirement

/req/feature-properties/properties

Requirement

/req/feature-properties/common-properties

 

Requirement 18

/req/feature-properties/properties

A Feature "Properties" object shall implement the properties shown in Table 17, with the value matching the type shown, and with the obligation shown.

 

Requirement 19

/req/feature-properties/common-properties

A Feature "Properties" object shall implement the properties of a CommonProperties object (Table 7).

The Feature Properties block contains the properties and links to related objects. It contains all mandatory properties $.features[*].properties.* defined by OGC 14-055r2 [NR5].  Some optional properties defined by [NR5] can be added by implementations, but are not repeated in the table below.

Properties (Feature) Schema
Figure : Properties (Feature) Schema

 

Complete description of Feature Properties is given in Table 17. 

Table : Properties (Feature) object properties

JSON Property

Definition

Data type and values

Multiplicity and use

identifier

$.features[*].properties.identifier

The identifier of the resource (i.e., search entry) within the search engine context (local reference).  Not empty string.

Domain: Properties

Range: String

One
(mandatory)

kind

$.features[*].properties.kind

Unique identifier (URI) for the type of the resource.

Value from a controlled vocabulary e.g.,  http://dublincore.org/documents/2002/07/13/dcmi-type-vocabulary/ (e.g.,  http://purl.org/dc/dcmitype/Collection, http://purl.org/dc/dcmitype/Dataset etc.).

Domain: Properties

Range: String (URI)

Zero or one
(optional)

abstract

$.features[*].properties.abstract

Generic description of the resource (i.e., search entry) purpose or content. Not empty string.

Optional property in [NR5]

Domain: Properties

Range: String

Zero or one
(optional)

recordSchema

$.features[*].properties.recordSchema

To state which recordSchema is used for inline (embedded) metadata (if requested via the sru:recordSchema) search parameter.

Domain: Properties

Range: String (URI)

Zero or one
(optional)

links

$.features[*].propertieslinks

Refers to related and actionable resources. 

Domain: Properties

Range: Links.  (See Table 10)

Zero or one
(optional)

links.via

$.features[*].propertieslinks.via

 

Reference to an authoritative description of the resource of which the search entry is derived (e.g., original metadata).

Is defined by [NR5] §7.1.2

Optional property in [NR5].

Range: array of Link as defined in Table 12.

Zero or one (optional)

links.alternates

$.features[*].properties.links.alternates

Reference to a description of the resource in an alternative format.

Is defined by [NR5] §7.1.2.

Optional property in [NR5].

Range: array of Link as defined in Table 12.

Zero or one (optional)

 

$.features[*].properties.*

Other properties allowed by a specification derived from GeoJSON, including but not limited to OGC 14-055r2, OGC 17-003r2 etc.

 

Zero or more (optional)

 

Example 25: Feature Properties encoding example


{
 
       "title": "LANDSAT 7 ETM+ (Enhanced Thematic Mapper Plus) Geolocated Terrain Corrected Systematic processing (LANDSAT.ETM.GTC)",
       "kind": "http://purl.org/dc/dcmitype/Collection",
       "identifier": "LANDSAT.ETM.GTC",
       "abstract": "This dataset contains all the Landsat 7 Enhanced Thematic Mapper high-quality ortho-rectified L1T dataset over Kiruna, Maspalomas and Matera visibility masks. The Landsat 7 ETM+ scenes typically covers 185 x 170 km. A standard full scene is nominally centred on the intersection between a Path and Row (the actual image centre can vary by up to 100m). Each band requires 50MB (uncompressed), and Band 8 requires 200MB (panchromatic band with resolution of 15m opposed to 30m).",
       "date": "1999-07-01T00:00:00Z/2003-12-31T00:00:00Z",
       "updated": "1999-07-01T00:00:00Z",
       "categories": [
              {
                 "term": "http://www.eionet.europa.eu/gemet/concept/3650",
                 "label": "Geology"
              },
              {
                 "term": "http://gcmdservices.gsfc.nasa.gov/kms/concept/03f0c0a3-04a7-4ef8-8ec0-3c2266510815",
                 "label": "Science Keywords > Earth Science > Spectral/Engineering > Visible Wavelengths > Visible Imagery"
              },
              {
                 "term": "http://gcmdservices.gsfc.nasa.gov/kms/concept/c7a09e9f-3c99-4b31-a521-313c379ba2b4",
                 "label": "LANDSAT-7"
              }
         ],
        
         "links": {
           "alternates": [
              {
                 "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19139%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC&recordSchema=iso",
                 "type": "application/vnd.iso.19139+xml",
                 "title": "ISO 19139 metadata"
              },
              {
                 "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19115-3%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC&recordSchema=iso19115-3",
                 "type": "application/vnd.iso.19115-3+xml",
                 "title": "ISO 19115-3 metadata"
              },
              {
                 "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/dif10%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC&recordSchema=dif10",
                 "type": "application/dif10+xml",
                 "title": "DIF-10 metadata"
              }
           ],
           "describedby": [
              {
                 "href": "https://earth.esa.int/web/guest/data-access/browse-data-products/-/asset_publisher/y8Qb/content/landsat-7-etm-enhanced-thematic-mapper-plus-geolocated-terrain-corrected-systematic-processing-over-kiruna-and-masplomas",
                 "type": "text/html",
                 "title": "Described by"
              }
           ],
           "search": [
              {
                 "href": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC&sensorType=OPTICAL&startDate=1999-07-01T00:00:00Z&endDate=2003-12-31T00:00:00Z",
                 "type": "application/opensearchdescription+xml"
              }
           ]
         }
}


7.5       Requirements class: Exceptions

Requirements Class

/req/exceptions

Target type

Data instance

Dependency

HTTP 1.1

Dependency

/req/status-code

Dependency

/req/exception-report

Requirement

/req/exceptions/properties

 

Requirement 20

/req/exceptions/properties

An OpenSearch response representing a (fatal) error condition shall contain a status code in the HTTP Header as defined in 7.5.1 and an "ExceptionReport" object in the HTTP Body as defined in section 7.5.2.

 

7.5.1       HTTP Status Code

Requirement 21

/req/status-code

The HTTP Status Code in case of fatal exceptions shall have values as exampled in the current section.

The OpenSearch specifications do not directly specify how to deal with server and request errors.   In case of exceptions, implementation shall return exceptions as defined in section 9.3.2 of the OGC 10-032r8 specification [OR19].

The status line of the HTTP response message shall contain a status code[16] for Client (4xx) and Server (5xx) Errors. It is recommended that the following codes are used:

  • 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;
  • 415 Unsupported media type: Media type in the request is not available or valid;
  • 500 Internal Server Error: Default code for the server side for an execution error;
  • 501 Not Implemented: When requesting an unimplemented feature (e.g., relation operator not supported);
  • 503 Service Unavailable: When the search service is temporarily not available (due to overload or other reasons); and
  • 504 Gateway Timeout: When the search engine is a broker or aggregator to other services that fail to produce an answer within a giving time frame.

7.5.2       ExceptionReport

Requirements Class

/req/exception-report

Target type

Data instance

Dependency

/req/exception

Requirement

/req/exception-report/properties

 

Requirement 22

/req/exceptions-report/properties

An "ExceptionReport" object shall implement the properties shown in Table 18, with the value matching the type shown, and with the obligation shown.

The message body should return an ExceptionReport [17] element which encodes the information as defined in OGC 06-121r9 [NR6] (chapter 8).  It can contain one or more Exceptions.

ExceptionReport Schema
Figure : ExceptionReport Schema

Complete description of ExceptionReport is given in Table 18

Table : ExceptionReport object properties

JSON Property

Definition

Data type and values

Multiplicity and use

type

$.type

Type of the element.    This property is a string with fixed value "ExceptionReport."

Property

Range: String

Fixed value: "ExceptionReport"

Zero or one (optional)

exceptions

$.exceptions

List of one of more diagnostics (i.e., Exceptions).  List shall not be empty.

Property

Range: Array of Exception (See  Table 19)

One (Mandatory)

 

Example 26: ExceptionReport encoding example


{
   "type": "ExceptionReport",
   "exceptions": [
      {
         "type": "Exception",
         "exceptionCode": "http://www.opengis.net/ows/2.0#InvalidParameterValue",
         "exceptionText": "Media type application//geo+json is not supported for collection RSAT2_NRT",
         "locator": "httpAccept parameter"
      }
   ]
}


 

7.5.3       Exception

Requirement 23

/req/exception

An "Exception" object shall implement the properties shown in Table 19, with the value matching the type shown, and with the obligation shown.

The Exception block contains the code, textual description and information about the location of a single exception.

Exception Schema
Figure : Exception Schema

Complete description of Exception is given in Table 19. 

Table : Exception object properties

JSON Property

Definition

Data type and values

Multiplicity and use

type

$.exceptions[*].type

Type of the element. This property is a string with fixed value "Exception."

Property

Range: String

Fixed value: "Exception"

Zero or one (optional)

exceptionCode

$.exceptions[*].exceptionCode

URI (Code) representing the type of the exception.

Equivalent to exceptionCode defined in [NR6] and uri in [OR2].

Domain: Exception

Range: String (URI).

One
(mandatory)

exceptionText

$.exceptions[*].exceptionText

Not empty character string describing the specific exception defined by the uri to display to the end user.  Language and style of the message is determined by the server, and clients should not rely on this text.

Equivalent to exceptionText defined in [NR6] and message in [OR2].

Domain: Exception

Range: String

Zero or one (optional)

locator

$.exceptions[*].locator

Any supplementary information available, often in the format specified by the exception.  E.g.,  indicator of the location in the client's operation request where the exception was encountered.

Equivalent to locator defined in [NR6] and details in [OR2].

Domain: Exception

Range: String

Zero or one (optional)

 

Example 27: Exception encoding example


      {
         "type": "Exception",
         "exceptionCode": "http://www.opengis.net/ows/2.0#InvalidParameterValue",
         "exceptionText": "Media type application//geo+json is not supported for collection RSAT2_NRT",
         "locator": "httpAccept parameter"
      }



 

8        Extensibility

8.1       Additional properties

In the current EO OpenSearch Response GeoJSON(-LD) Encoding Standard, an "extension" is any property, or object type not defined by the current document. Consuming implementations that encounter unfamiliar extensions shall not stop processing or signal an error and shall continue processing the items as if those properties were not present. Note that support for extensions can vary across implementations and no normative processing model for extensions is defined. Accordingly, implementations that rely too heavily on the use of extensions may experience reduced interoperability with other implementations.

For extensions, JSON-LD [NR15] is used as the primary mechanism for defining and disambiguating extensions. Implementations that wish to fully support extensions should use JSON-LD mechanisms.

It is important to note that the JSON-LD Processing Algorithms [OR4], as currently defined, will silently ignore any property not defined in a JSON-LD @context. Implementations that publish EO OpenSearch Response documents containing extension properties should provide a @context definition for all extensions.

8.2       JSON-specific constructs

It is important to note that there are valid JSON constructs which cannot be used within a JSON-LD document. For instance, JSON-LD forbids "arrays of arrays" as used by the GeoJSON specification. While implementations are free to use such constructs as extensions within an EO Dataset Metadata document, consumers that use the standard JSON-LD Processing Algorithms will be required to either ignore such extensions or map those to alternative compatible constructs prior to applying the JSON-LD algorithms. Complex geometries can be converted to GeoSPARQL [OR7] "Well-Known Text" representations as illustrated in the non-normative example below:

Example 28: JSON-LD encoding example using GeoSPARQL


{
   "@context": {
      "gj": "https://purl.org/geojson/vocab#",
      "gsp": "http://www.opengis.net/ont/geosparql#"
   },
   "@type": [
      "gj:Feature",
      "gsp:Feature"
   ],
   "@id": "http://fedeo.esa.int/opensearch/request/?parentIdentifier=SEA_GEC_1P&uid=SE1_OPER_SEA_GEC_1P_19780927T010430_19780927T010445_001316_0000_2267_9B4F",
   "gsp:hasGeometry": {
      "gsp:asWKT": "Polygon((-2.682513, 63.261372, -2.695740, 61.997604, 0.005087, 61.965195, 0.135472, 63.227173, -2.682513, 63.261372))",
      "@type": "gsp:Geometry"
   },
   "gj:properties": { … }
}


 

9        Media Types for any data encoding(s)

When EO OpenSearch Responses are delivered using HTTP, the following MIME media types shall be used:

Table : Media types

 

Media type

Description

#1

application/geo+json

GeoJSON representation with implicit normative context or normative context linked via a http://www.w3.org/ns/json-ld#context HTTP Link Header.

See examples in annexes D.1.*.2.

#2

application/ld+json;profile=" http://www.w3.org/ns/json-ld#compacted"

GeoJSON-LD representation compacted according to the normative context and with all context information within the body of the document.

See examples in annexes D.1.*.3.

#3

application/ld+json

GeoJSON-LD representation with all context information within the body of the document.

See examples in annexes D.1.*.4.

#4

application/ld+json;profile=" http://www.opengis.net/spec/os-geojson/1.0"

GeoJSON-LD representation20 with all context information within the body of the document.

See examples in annexes D.1.*.4.

#5

text/turtle;profile=" http://www.opengis.net/spec/os-geojson/1.0"

Turtle [OR12] representation20 equivalent to representation #4.

#6

application/rdf+xml;profile=" http://www.opengis.net/spec/os-geojson/1.0"

RDF/XML [OR11] representation[18] equivalent to representation #4.

See example in Annex D.1.2.5.


10    Future Work (Non-Normative)

Several future enhancements of this proposed document are possible.  Obvious enhancements are as follows.

  •   Refactor and refine JSON Schema [OR24] in Annex for documentation and structural validation by referring to external JSON schema for GeoJSON.  Schemas for GeoJSON are available on internet, e.g., geojson.json at http://www.jsonschemavalidator.net/.
  •   Include annex with W3C Shapes Constraint Language (SHACL)[19] to formally define the structure of the JSON-LD response elements.
  •   Propose JSON encoding for the OpenSearch Description Document and OpenSearch Parameter Extension which are XML-based to enable a JSON-only implementation of an OpenSearch interface considering alignment with OpenAPI specification.
  •   Extending JSON encoding of response to support "faceted search" considering OASIS searchRetrieve and OpenSearch SRU extensions as inputs.
  •   Extending JSON encoding to allow for "Delta responses" listing new, updated and removed entries considering CMR Harvesting Best Practices[20] and Chapter 14 of OASIS OData JSON Format v4.0[21] as input.

 

Example 29: FacetedResults encoding example


{
   "type": "FeatureCollection",
   "id": "http://fedeo.esa.int/opensearch/request?query=vegetation&startRecord=1&maximumRecords=1&httpAccept=application/geo%2Bjson&facetLimit=eo:platform",
   "totalResults": 3407,
   "startIndex": 1,
   "itemsPerPage": 1,
   "queries": {
      "request": [
         {
           "count": 1,
           "searchTerms": "vegetation",
           "startIndex": 1,
           "sru:facetLimit": "eo:platform",
           "sru:recordSchema": "server-choice"
         }
      ]
   },
   "facetedResults": {
       "dataSource": [
          …
       ]
   },
   "properties": {
      "title": "FEDEO Clearinghouse - Search Response",
      …
   },
   "features": [
      …
   ]
}


Annex :   Abstract Test Suite (Normative)

A.1        Introduction

Conformance is tested using a set of JSON Schema [OR24] definitions which formalize the requirements described above. Strictly, each object definition is a "JSON Schema," so a JSON schema document may include multiple, sometimes nested, "JSON Schemas," providing the definition of the objects. Using JSON References, JSON schema supports inclusion of schemas defined in a JSON schema document into new schemas defined in the same or another document, so standard JSON objects may be defined once and re-used in multiple contexts, and a set of related object definitions may be composed from multiple documents.

The dependencies of the requirement classes (green) and requirements (orange) correspond to the dependencies of the JSON Schema definitions as shown in the Figure below.  Arrows indicate dependencies.

Conformance and requirements class dependencies
Figure : Conformance and requirements class dependencies

 

A.2        Conformance Class: /conf/core

 

Conformance Class

/conf/core

Requirements

/req/feature-collection (A3)

/req/exceptions (A10)

Dependency

A JSON Schema Validator

Test

/conf/feature-collection

/conf/exceptions

 

A.3        Conformance Class: /conf/feature-collection

 

Conformance Class

/conf/feature-collection

Requirements

/req/feature-collection

Dependency

A JSON Schema Validator

Test

/conf/feature-collection

Requirement

req/feature-collection/properties,

req/feature-collection/control-information, 

[req/control-information],

[req/properties],

[req/feature].

Test purpose

Verify that the JSON instance document is a valid FeatureCollection object.

Test method

Validate the JSON instance document using the appropriate object definition from the JSON Schema (Annex E:).  Pass if no errors reported.  Fail otherwise.

Test type

Capability

A.4        Conformance Class: /conf/properties

 

Conformance Class

/conf/properties

Requirements

/req/properties

Dependency

A JSON Schema Validator

Test

/conf/properties

Requirement

req/properties/properties,

req/properties/common-properties,

req/category,

req/agent,

req/common-properties,

[req/links].

Test purpose

Verify that the JSON instance document is a valid Properties object.

Test method

Validate the JSON instance document using the appropriate object definition from the JSON Schema (Annex E:).  Pass if no errors reported.  Fail otherwise.

Test type

Capability

 

A.5        Conformance Class: /conf/links

 

Conformance Class

/conf/links

Requirements

/req/links

Dependency

A JSON Schema Validator

Test

/conf/links

Requirement

req/links/properties, 

req/link 

Test purpose

Verify that the JSON instance document is a valid Links object.

Test method

Validate the JSON instance document using the appropriate object definition from the JSON Schema (Annex E:).  Pass if no errors reported.  Fail otherwise.

Test type

Capability

 

A.6        Conformance Class: /conf/control-information

 

Conformance Class

/conf/control-information

Requirements

/req/control-information

Dependency

A JSON Schema Validator

Test

/conf/control-information

Requirement

req/control-information/properties, 

[req/queries] 

Test purpose

Verify that the JSON instance document is a valid ControlInformation object.

Test method

Validate the JSON instance document using the appropriate object definition from the JSON Schema (Annex E:).  Pass if no errors reported.  Fail otherwise.

Test type

Capability

A.7        Conformance Class: /conf/queries

 

Conformance Class

/conf/queries

Requirements

/req/queries

Dependency

A JSON Schema Validator

Test

/conf/queries

Requirement

req/queries/properties, 

req/query 

Test purpose

Verify that the JSON instance document is a valid Queries object.

Test method

Validate the JSON instance document using the appropriate object definition from the JSON Schema (Annex E:).  Pass if no errors reported.  Fail otherwise.

Test type

Capability

A.8        Conformance Class: /conf/feature

 

Conformance Class

/conf/feature

Requirements

/req/feature

Dependency

A JSON Schema Validator

Test

/conf/feature

Requirement

req/feature/properties 

Test purpose

Verify that the JSON instance document is a valid Feature object as defined in [NR2] and [NR5].

Test method

Validate the JSON instance document using the appropriate object definition from the JSON Schema (Annex E:).  Pass if no errors reported.  Fail otherwise.

Test type

Capability

A.9        Conformance Class: /conf/feature-properties

Conformance Class

/conf/feature-properties

Requirements

/req/feature-properties

Dependency

A JSON Schema Validator

Test

/conf/feature-properties

Requirement

req/feature-properties/properties,

req/feature-properties/common-properties,

req/category,

req/agent,

req/common-properties,

[req/links].

Test purpose

Verify that the JSON instance document is a valid Feature Properties object.

Test method

Validate the JSON instance document using the appropriate object definition from the JSON Schema (Annex E:).  Pass if no errors reported.  Fail otherwise.

Test type

Capability

 

A.10    Conformance Class: /conf/exceptions

 

Conformance Class

/conf/exceptions

Requirements

/req/exceptions

Dependency

A JSON Schema Validator

Test

/conf/exceptions

Requirement

req/exceptions/properties,

req/status-code,

[req/exception-report].

Test purpose

Verify that the HTTP response contains a status code in the HTTP Header and a valid ExceptionReport JSON instance object in the HTTP Body.

Test method

Validate the JSON instance document using the appropriate object definition from the JSON Schema (Annex E:).  Pass if no errors reported.  Fail otherwise.

Test type

Capability

 

A.11    Conformance Class: /conf/exception-report

 

Conformance Class

/conf/exception-report

Requirements

/req/exception-report

Dependency

A JSON Schema Validator

Test

/conf/exception-report

Requirement

req/exception-report/properties, 

req/exception

Test purpose

Verify that the JSON instance document is a valid ExceptionReport object.

Test method

Validate the JSON instance document using the appropriate object definition from the JSON Schema (Annex E:).  Pass if no errors reported.  Fail otherwise.

Test type

Capability

 

 

Annex :    Interpreting JSON as JSON-LD (Non-Normative)

The JSON-LD encoding proposed in this annex supports a seamless transition from GeoJSON based implementations to JSON-LD based implementations with a minimum number of edits.  The GeoJSON encoding proposed can be interpreted as JSON-LD by JSON-LD-aware implementations through the use of the normative @context document provided in this annex. 

B.1 Introduction

B.1.1 JSON-LD

The serialized GeoJSON form of an EO OpenSearch Response document shall be consistent with what would be produced by the standard JSON-LD 1.0 Processing Algorithms and API [OR4] Compaction Algorithm using, at least, the normative JSON-LD @context definition provided in "Annex B: normative JSON-LD @context definition".  Implementations may augment the provided @context with additional @context definitions but shall not override or change the normative context. Implementations may also use additional properties and values not defined in the JSON-LD @context with the understanding that any such properties will likely be unsupported and ignored by consuming implementations that use the standard JSON-LD algorithms. See the Extensibility section for more information on handling extensions within EO OpenSearch Response documents.

JSON-LD uses the special @context property to define the processing context. The value of the @context property is defined by the JSON-LD specification. Implementations producing EO OpenSearch Response documents should include a @context property with a value that includes a reference to the normative JSON-LD @context definition using the URL "https://www.opengis.net/spec/os-geojson/1.0". Implementations may use the alternative URL "http:// www.opengis.net/spec/os-geojson/1.0" instead.

When a JSON-LD enabled EO OpenSearch Response implementation encounters a GeoJSON document identified using the "application/geo+json" MIME media type, and that document does not contain a @context property whose value includes a reference to the normative JSON-LD @context definition, the implementation shall assume that the normative @context definition still applies.

Alternatively, implementations can refer to the normative JSON-LD context document via an HTTP Link header as described in section 6.8 of the JSON-LD specification [NR15]. This allows the GeoJSON documents to be unambiguously machine readable as JSON-LD.

Example 30: Referencing a JSON-LD context from a GeoJSON document


GET /document.json HTTP/1.1
Host: example.com
Accept: application/ld+json,application/geo+json,*/*;q=0.1
 
====================================
 
HTTP/1.1 200 OK
…
Content-Type: application/geo+json
Link: <https://www.opengis.net/spec/os-geojson/1.0>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"
 
{
  . . .
}


B.1.2 Semantic Web and JSON-LD

The W3C Semantic Web Activity is defining a collection of technologies that enables a "Web of data" where information is easily shared and reused across applications. Some key pieces of this technology stack are the RDF (Resource Description Framework), RDFS (RDF Schema) data models [OR9, OR10] and JSON-LD [NR15].  The JSON-LD encoding proposed in the current document can be interpreted as the proposed encoding in RDF for EO OpenSearch Responses.  Each JSON(-LD)  property proposed corresponds to an RDF predicate which is represented with a URI.

RDF Triple
Figure : RDF Triple

RDF is a data model built on edge-node "graphs." Each link in a graph consists of three things (with many aliases depending on the mapping from other types of data models):

Any of the three values in a single triple can be represented via a URI (with an optional fragment identifier). Subjects and objects are called nodes. Objects can also be represented as a literal value. Note that the same node may play the role of a Subject in some edges, and the role of the Object in others.

All proposed properties are defined (via a normative @context document) with an URI from existing, well-known, vocabularies where available, e.g.,  Dublin Core (dct:), GeoJSON-LD (gj:), Atom (atom:), OGC Web Context (owc:) etc. 

In the proposed specification, the "id" JSON property (or "@id" JSON-LD property) corresponds to a URI representing a Subject or Object.

 

B.2 JSON-LD @context definition

B.2.1 JSON-LD 1.1

The current annex provides the normative JSON-LD @context which is implied by the GeoJSON encoding as explained above.  It is available at http://schemas.opengis.net/os-geojson/1.0/os-geojson.jsonld (See Annex G:).

 


{
   "@context": "http://schemas.opengis.net/os-geojson/1.0/os-geojson.jsonld"
 
}


JSON-LD 1.1 [OR32] aware clients can apply this JSON-LD @context to interpret the GeoJSON encoding as JSON-LD.  The context relies on JSON-LD 1.1 specific features, in particular „scoped contexts" and „nested properties".    The expressiveness of JSON-LD 1.0 @context is too limited to isolate the required context information to support compacting and expansion in a single external context document.  It would require inserting inline contexts in the GeoJSON encoding.


{
   "@context": {
 
      "@version": 1.1,
 
      "dct": "http://purl.org/dc/terms/",
      "atom": "http://www.w3.org/2005/Atom/",
      "iana": "http://www.iana.org/assignments/relation/",
      "os": "http://a9.com/-/spec/opensearch/1.1/",
      "owc": "http://www.opengis.net/ont/owc/1.0/",
      "owl": "http://www.w3.org/2002/07/owl#",
      "gj": "https://purl.org/geojson/vocab#",
      "gsp": "http://www.opengis.net/ont/geosparql#",
      "vcard": "http://www.w3.org/2006/vcard/ns#",
      "foaf": "http://xmlns.com/foaf/0.1/",
 
      "skos": "http://www.w3.org/2004/02/skos/core#",
      "dcat": "http://www.w3.org/ns/dcat#",
      "xsd": "http://www.w3.org/2001/XMLSchema#",
      "sru": "http://docs.oasis-open.org/ns/search-ws/sruResponse/",
      "dc": "http://purl.org/dc/elements/1.1/",
      "eo": "http://a9.com/-/opensearch/extensions/eo/1.0/",
      "geo": "http://a9.com/-/opensearch/extensions/geo/1.0/",
      "time": "http://a9.com/-/opensearch/extensions/time/1.0/",
      "title": "dct:title",
      "identifier": "dct:identifier",
      "rights": "dct:rights",
      "recordSchema": "sru:recordSchema",
          
      "lang" : {
           "@id": "dct:language",
           "@type": "@id",
           "@context": {
                 "@base": "http://id.loc.gov/vocabulary/iso639-1/"
           }
      },
 
      "updated": "dct:modified",
      "creator": "dct:creator",
      "publisher": "dct:publisher",
      "abstract": "dct:description",
      "subtitle": "dct:description",
      "categories": "dcat:theme",
      "date": "dct:date",
      "kind": {
         "@id": "dct:type",
         "@type": "@id"
      },
     
          
      "links" : {
           "@id": "owc:links",
           "@context": {
                 "@vocab": "http://www.iana.org/assignments/relation/",
                ntexts as in OGC on with theation ument.document.oriented architecture (SOA) and  of the platform.tuellowing fo
                 "type" : "atom:type",                       
                 "data": "iana:enclosure",
                 "profiles": "iana:profile",         
                 "previews": "iana:icon",
                 "alternates": "iana:alternate",
                 "qualityReport": "iana:describedby"
           }
      },
 
      "queries": {
          "@id": "os:queries",
           "@context": {
                ntexts as in OGC on with theation ument.document.oriented architecture (SOA) and  of the platform.tuellowing fo
                 "sru": "http://a9.com/-/opensearch/extensions/sru/2.0/",     
                 "count": "os:count",
                 "searchTerms": "os:searchTerms",
                 "startPage": "os:startPage",
                 "inputEncoding": "os:inputEncoding",
                 "outputEncoding": "os:outputEncoding",
 
                 "request": "os:request",
                 "example": "os:example",
                 "correction": "os:correction",
                 "related": "os:related",
                 "superset": "os:superset",
                 "subset": "os:subset"
           }
      },
          
      "Links": "owc:Links",  
      "Link": "atom:link",
      "href": "@id",
      "length": "atom:length",
      "Category": "skos:Concept",
      "label": "skos:prefLabel",
      "term":  "@id",
      "scheme": "skos:inScheme",
 
      "hasGeometry": "gsp:hasGeometry",
      "asWKT": "gsp:asWKT",
      "Feature": "gj:Feature",
      "FeatureCollection": "gj:FeatureCollection",
      "GeometryCollection": "gj:GeometryCollection",
      "LineString": "gj:LineString",
      "MultiLineString": "gj:MultiLineString",
      "MultiPoint": "gj:MultiPoint",
      "MultiPolygon": "gj:MultiPolygon",
      "Point": "gj:Point",
      "Polygon": "gj:Polygon",
      "bbox": {
         "@container": "@list",
         "@id": "gj:bbox"
      },
      "coordinates": "gj:coordinates",
      "features": {
         "@container": "@set",
         "@id": "gj:features"
      },
      "geometry": "gj:geometry",
      "properties": "@nest",
     
 
      "id": "@id",
      "type": "@type",
     
      "Query": "os:Query",
     
     
      "totalResults": {
         "@id": "os:totalResults",
         "@type": "xsd:nonNegativeInteger"
      },
      "itemsPerPage": {
         "@id": "os:itemsPerPage",
         "@type": "xsd:nonNegativeInteger"
      },
     "startIndex": {
         "@id": "os:startIndex",
         "@type": "xsd:nonNegativeInteger"
      },
 
      "authors": {
          "@id": "dct:creator",
          "@context": {
            "@vocab": "http://xmlns.com/foaf/0.1/"
        
         }
      },
 
      "generator": {
          "@id": "dct:creator",
          "@context": {
            "@vocab": "http://xmlns.com/foaf/0.1/",
            "version": "owl:versionInfo",
            "title":   "foaf:name"
         }
      },
 
     
      "Individual":       "foaf:Person",
      "email":            "foaf:mbox",
      "name":             "foaf:name",
      "uri":              "@id",
 
      "ExceptionReport":  "sru:Diagnostics",      
      "exceptions":       "sru:diagnostics",
      "Exception":        "sru:Diagnostic",
      "exceptionCode":    "sru:uri",
      "exceptionText":    "sru:message",
      "locator":          "sru:details"
     
   }
}


 

 

Annex :    Vocabulary Mapping

C.1 Vocabulary to XML Mapping (Normative)

The table below maps the JSON and Vocabulary Properties to the equivalent property in the OpenSearch Atom/XML response encoding [OR14], [OR19], [OR20].

The JSON property name included in column 1 corresponds to the JSON-LD property name included in column 2, compacted according to the normative JSON-LD context provided in annex B.2 of the current document. 


JSON
Property

Vocabulary
Property

JSON Property Reference

Vocabulary Reference

OpenSearch XML Response Mapping
[OR14], [OR20]

Comments

@context

@context

 

[NR15]

/feed/namespace::*

Table 14: Queries object properties

abstract

dct:description

[NR5]

[OR3] , [OR13]

/feed/entry/summary

Table 17: Properties (Feature) object properties

Agent

foaf:Agent (Class)

[NR5]

[OR23]

/feed/author

/feed/entry/author

/feed/generator

Table 9: Agent object properties

alternates

iana:alternate

[NR5]

[NR11]

//link[@rel='alternate']

Table 10: Links object properties

authors

dct:creator

[NR5]

[OR13]

/feed/author

/feed/entry/author

Table 7: CommonProperties object properties

bbox

gj:bbox

[NR2]

[OR18]

//georss:box

Table 5: FeatureCollection object properties

Category

skos:Concept (Class)

[NR5]

[OR31]

//category

Table 8: Category object properties

categories

dcat:scheme

[NR5]

[OR13]

//category/@scheme

Table 7: CommonProperties object properties

 

 

 

 

/feed/contributor

/feed/entry/contributor

 

coordinates

gj:coordinates

[NR2]

[OR18]

/feed/entry/georss:*

 

correction

os:correction

 

[NR3]

/feed/os:Query[@role='correction']

Table 14: Queries object properties

count

os:count

 

[NR3]

/feed/os:Query/@os:count

Table 15: Query object properties

creator

dct:creator

[NR5]

[OR3]

/feed/generator

Table 6: Properties object properties

data

iana:enclosure

[NR5]

[NR11]

//link[@rel='enclosure']

Table 10: Links object properties

 

date

dct:date

[NR5]

[OR3]

/feed/entry/dc:date

Table 7: CommonProperties object properties

describedby

iana:describedby

 

[NR11]

//link[@rel='describedby']

Table 10: Links object properties

 

email

foaf:mbox

[NR5]

[OR23]

/feed/author/email

Table 9: Agent object properties

example

os:example

 

[NR3]

/feed/os:Query[@role='example']

Table 14: Queries object properties

Exception

sru:Diagnostic (Class)

[NR6]

[OR2]

ows:Exception

Table 19: Exception object properties

exceptionCode

sru:uri

[NR6]

[OR2]

ows:Exception/@ows:exceptionCode

Table 19: Exception object properties

ExceptionReport

sru:Diagnostics (Class)

[NR6]

[OR2]

ows:ExceptionReport

Table 18: ExceptionReport object properties

exceptions

sru:diagnostics

[NR6]

[OR2]

ows:ExceptionReport/ows:Exception

Table 18: ExceptionReport object properties

exceptionText

sru:message

[NR6]

[OR2]

ows:Exception/@ows:exceptionText

Table 19: Exception object properties

Feature

gj:Feature (Class)

[NR2]

[OR18]

/feed/entry

 

FeatureCollection

gj:FeatureCollection (Class)

[NR2]

[OR18]

/feed

Table 5: FeatureCollection object properties

features

gj:features

[NR2]

[OR18]

/feed/entry

Table 5: FeatureCollection object properties

first

iana:first

 

[NR11]

/feed/link[@rel='first']

Table 10: Links object properties

generator

dct:creator

[NR5]

[OR3]

/feed/generator

Table 6: Properties object properties

geometry

gj:geometry

[NR2]

[OR18]

/feed/entry/georss:*

Table 16: Feature object properties

href

@id

[NR5]

[NR15]

//link/@href

Table 12: Link object properties

id

@id

 

[NR15]

/feed/link[@rel='self']

Table 5: FeatureCollection object properties

id

@id

[NR2]

[NR15]

/feed/entry/id

Table 16: Feature object properties

identifier

dct:identifier

 

[OR3]

/feed/entry/dc:identifier

Table 17: Properties (Feature) object properties

inputEncoding

os:inputEncoding

 

[NR3]

/feed/os:Query/@os:inputEncoding

Table 15: Query object properties

itemsPerPage

os:itemsPerPage

 

[NR3]

/feed/os:Query/@os:itemsPerPage

Table 13: ControlInformation object properties

kind

dct:type

 

[OR3]

/feed/entry/dc:type

Table 17: Properties (Feature) object properties

label

skos:prefLabel

[NR5]

[OR31]

//category/@label

Table 8: Category object properties

lang

dct:language

[NR5]

[OR3] , [OR13]

N/A

//link/@hreflang

Table 6: Properties object properties

Table 12: Link object properties

language

dct:language

 

[OR3]

/feed/os:Query/@os:language

Table 15: Query object properties

last

iana:last

 

[NR11]

/feed/link[@rel='last']

Table 10: Links object properties

length

atom:length

[NR5]

[OR14]

//link/@length

Table 12: Link object properties

LineString

gj:LineString

[NR2]

[OR18]

/feed/entry/georss:*

 

Link

atom:link (Class)

 

[OR14]

/feed/link

Table 12: Link object properties

links

owc:links

[NR5]

[OR5]

/feed/link

Table 6: Properties object properties

Table 17: Properties (Feature) object properties

links

owc:links

[NR5]

[OR5]

/feed/entry/link

Table 16: Feature object properties

Links

owc:Links (Class)

 

 

 

Table 10: Links object properties

locator

sru:details

[NR6]

[OR2]

ows:Exception/@ows:locator

Table 19: Exception object properties

MultiLineString

gj:MultiLineString

[NR2]

[OR18]

/feed/entry/georss:*

 

MultiPoint

gj:MultiPoint

[NR2]

[OR18]

/feed/entry/georss:*

 

MultiPolygon

gj:MultiPolygon

[NR2]

[OR18]

/feed/entry/georss:*

 

name

foaf:name

[NR5]

[OR23]

/feed/author/name

Table 9: Agent object properties

next

iana:next

 

[NR11]

/feed/link[@rel='next']

Table 10: Links object properties

Organization

foaf:Organization (Class)

 

[OR23]

/feed/author

Table 9: Agent object properties

outputEncoding

os:outputEncoding

 

[NR3]

/feed/os:Query/@os:outputEncoding

Table 15: Query object properties

Person

foaf:Person (Class)

 

[OR23]

/feed/author

Table 9: Agent object properties

Point

 

[NR2]

[OR18]

/feed/entry/georss:*

 

Polygon

 

[NR2]

[OR18]

/feed/entry/georss:*

 

previews

iana:icon

[NR5]

[NR11]

//link[@rel='icon']

Table 10: Links object properties

previous

iana:previous

 

[NR11]

/feed/link[@rel='previous']

Table 10: Links object properties

profiles

iana:profile

 

[NR11]

/feed/link[@rel='profile']

Table 10: Links object properties

properties

 

[NR2]

[OR18]

/feed/*

/feed/entry/*

Table 5: FeatureCollection object properties

Table 16: Feature object properties

publisher

dct:publisher

[NR5]

[OR3]

N/A

Table 7: CommonProperties object properties

qualityReport

iana:describedby

[NR5]

[NR11]

//link[@rel='describedby']

Table 10: Links object properties

queries

os:queries

 

[NR3]

/feed/os:Query

Table 5: FeatureCollection object properties

Queries

os:Queries (Class)

 

[NR3]

/feed/os:Query

Table 14: Queries object properties

Query

os:Query (Class)

 

[NR3]

/feed/os:Query

Table 15: Query object properties

recordSchema

sru:recordSchema

 

[OR2]

/feed/entry/link[@rel='profile']

Table 17: Properties (Feature) object properties

related

iana:related

 

[NR11]

//link[@rel='related']

Table 10: Links object properties

related

os:related

 

[NR3]

/feed/os:Query[@role='related']

Table 14: Queries object properties

request

os:request

 

[NR3]

/feed/os:Query[@role='request']

Table 14: Queries object properties

rights

dct:rights

[NR5]

[OR3]

/feed/rights

/feed/entry/rights

Table 7: CommonProperties object properties

scheme

skos:inScheme

[NR5]

[OR31]

//category/@scheme

Table 8: Category object properties

search

iana:search

 

[NR11]

/feed/link[@rel='search']

//link[@rel='search']

Table 10: Links object properties

searchTerms

os:searchTerms

 

[NR3]

/feed/os:Query/@os:searchTerms

Table 15: Query object properties

startIndex

os:startIndex

 

[NR3]

/feed/os:startIndex

/feed/os:Query/@os:startIndex

Table 13: ControlInformation object properties

Table 15: Query object properties

startPage

os:startPage

 

[NR3]

/feed/os:Query/@os:startPage

Table 15: Query object properties

subset

os:subset

 

[NR3]

/feed/os:Query[@role='subset']

Table 14: Queries object properties

subtitle

dct:description

[NR5]

[OR3] , [OR13]

/feed/subtitle

Table 6: Properties object properties

superset

os:superset

 

[NR3]

/feed/os:Query[@role='superset']

Table 14: Queries object properties

term

@id

[NR5]

[NR15]

//category/@term

Table 8: Category object properties

title

dct:title

[NR5]

[OR3] , [OR13]

/feed/title, /feed/entry/title

//link/@title

/feed/os:Query/@os:title

Table 7: CommonProperties object properties

Table 12: Link object properties

Table 15: Query object properties

title

foaf:name

[NR5]

[OR3]

/feed/generator

Table 9: Agent object properties

totalResults

os:totalResults

 

[NR3]

/feed/os:totalResults

Table 13: ControlInformation object properties

Table 15: Query object properties

type

atom:type

[NR5]

[OR14]

//link/@type

Table 12: Link object properties

type

@type

[NR2]

[NR15]

/feed/entry

All tables except Table 12: Link object properties.

up

iana:up

 

[NR11]

//link[@rel='up']

Table 10: Links object properties

uri

@id

[NR5]

[NR15]

/feed/author/uri

/feed/generator/@uri

Table 9: Agent object properties

updated

dct:modified

[NR5]

[OR3], [OR13]

/feed/updated

/feed/entry/updated

Table 7: CommonProperties object properties

version

owl:versionInfo

[NR5]

 

/feed/generator/@version

Table 9: Agent object properties

via

iana:via

[NR5]

[NR11]

//link[@rel='via']

Table 10: Links object properties

via

iana:via

[NR5]

[NR11]

/feed/entry/link[@rel='via']

Table 16: Feature object properties

 

 

C.2 OASIS searchRetrieve APD Mapping (Non-normative)

The table below compares the abstract elements from the searchRetrieve Abstract Protocol Definition (APD) [OR1], with the OpenSearch actual elements [NR4] and the elements proposed in the current specification, with corresponding elements in the same row.

 

Abstract Element from APD [OR1]

OpenSearch Element
[NR4]

JSON Element

<numberOfItems>

<totalResults>

$.totalResults

<numberOfGroups>

(none)

 

<resultSetId>

(none)

 

<item>

Defined by the response schema, for example an <entry> in ATOM 1.0.

$.features[*] (GeoJSON Feature).

<nextPosition>

In page mode: find the <link> element where the value of the ‘rel’ attribute is "next". Within the corresponding query (‘href’ attribute) the value of the parameter corresponding to startPage is the number of the next page.

In stream mode: <startIndex> + <itemsPerPage> - 1.

 

<nextGroup>

(none)

 

<diagnostics>

(none)

 

<echoedRequest>

the value of the ‘href’ attribute for  the <link> element where the value of the ‘rel’ attribute is "self".

$.id

$.queries.request

 

(none)

startIndex

$.startIndex

(none)

itemsPerPage

$.itemsPerPage

(none)

Query

$.queries

 

Annex :    Encoding Examples (Non-Normative)

Extracts of the following examples were used in the body of the document.  The current Annex includes the complete examples in their original XML format and in the proposed encodings.

The following tools were very useful to improve readability and check the examples:

D.1 Nominal Response Examples

D.1.1 Example 1: EO Collections (OGC 14-055r2)

D.1.1.1 Atom

 


<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0" xmlns:semantic="http://a9.com/-/opensearch/extensions/semantic/1.0/" xmlns:sru="http://a9.com/-/opensearch/extensions/sru/2.0/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:wrs="http://www.opengis.net/cat/wrs/1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
   <author>
      <name>FEDEO Clearinghouse</name>
      <email>eohelp@eo.esa.int</email>
   </author>
   <generator>FEDEO Clearinghouse</generator>
   <id>http://fedeo.esa.int/opensearch/request</id>
   <rights>Copyright 2016-2017, European Space Agency</rights>
   <title>FEDEO Clearinghouse - Search Response</title>
   <updated>2017-09-26T11:23:52Z</updated>
   <link href="http://fedeo.esa.int/opensearch/request?startRecord=1&amp;maximumRecords=10&amp;query=ESA%20LDS&amp;httpAccept=application/atom%2Bxml&amp;platform=landsat&amp;status=2,0" hreflang="en" rel="self" type="application/atom+xml"/>
   <link href="http://fedeo.esa.int/opensearch/FedEO_OSGW_Service.xml" rel="describedby" type="application/xml"/>
   <link href="http://fedeo.esa.int/opensearch/request?&amp;maximumRecords=10&amp;query=ESA%20LDS&amp;httpAccept=application/atom%2Bxml&amp;platform=landsat&amp;startRecord=1&amp;status=2,0" rel="first" type="application/atom+xml"/>
   <link href="http://fedeo.esa.int/opensearch/request?&amp;maximumRecords=10&amp;query=ESA%20LDS&amp;httpAccept=application/atom%2Bxml&amp;platform=landsat&amp;startRecord=1&amp;status=2,0" rel="last" type="application/atom+xml"/>
   <link href="http://fedeo.esa.int/opensearch/description.xml" hreflang="en" rel="search" type="application/opensearchdescription+xml"/>
   <os:totalResults>2</os:totalResults>
   <os:startIndex>1</os:startIndex>
   <os:itemsPerPage>10</os:itemsPerPage>
   <os:Query xmlns:eo="http://a9.com/-/opensearch/extensions/eo/1.0/" dc:type="collection" eo:platform="landsat" os:count="10" os:searchTerms="ESA LDS" os:startIndex="1" role="request"/>
   <entry>
      <category label="Geology" term="http://www.eionet.europa.eu/gemet/concept/3650"/>
      <category label="Science Keywords &gt; Earth Science &gt; Spectral/Engineering &gt; Visible Wavelengths &gt; Visible Imagery" term="http://gcmdservices.gsfc.nasa.gov/kms/concept/03f0c0a3-04a7-4ef8-8ec0-3c2266510815"/>
      <category label="LANDSAT-7" term="http://gcmdservices.gsfc.nasa.gov/kms/concept/c7a09e9f-3c99-4b31-a521-313c379ba2b4"/>
   <id>http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&amp;parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&amp;uid=LANDSAT.ETM.GTC</id>
      <link href="http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&amp;parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&amp;uid=LANDSAT.ETM.GTC" rel="alternate" title="Atom format" type="application/atom+xml"/>
      <link href="http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC&amp;sensorType=OPTICAL&amp;startDate=1999-07-01T00:00:00Z&amp;endDate=2003-12-31T00:00:00Z" hreflang="en" rel="search" type="application/opensearchdescription+xml"/>
      <link href="https://earth.esa.int/web/guest/data-access/browse-data-products/-/asset_publisher/y8Qb/content/landsat-7-etm-enhanced-thematic-mapper-plus-geolocated-terrain-corrected-systematic-processing-over-kiruna-and-masplomas" rel="describedby" type="text/html"/>
      <link href="http://fedeo.esa.int/opensearch/images/esa.png" rel="icon" type="image/png"/>
      <link href="http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19139-2%2Bxml&amp;parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&amp;uid=LANDSAT.ETM.GTC&amp;recordSchema=iso19139-2" rel="alternate" title="ISO 19139-2 metadata" type="application/vnd.iso.19139-2+xml"/>
 
      <summary type="html"><![CDATA[<table xmlns="">
…
</table>]]></summary>
      <title>LANDSAT 7 ETM+ (Enhanced Thematic Mapper Plus) Geolocated Terrain Corrected Systematic processing (LANDSAT.ETM.GTC)</title>
      <updated>1999-07-01T00:00:00Z</updated>
      <dc:identifier>LANDSAT.ETM.GTC</dc:identifier>
      <dc:date>1999-07-01T00:00:00Z/2003-12-31T00:00:00Z</dc:date>
      <georss:polygon>-90 -180 -90 180 90 180 90 -180 -90 -180</georss:polygon>
   </entry>
   <entry>
      <category label="Geology" term="http://www.eionet.europa.eu/gemet/concept/3650"/>
      <category label="Science Keywords &gt; Earth Science &gt; Spectral/Engineering &gt; Visible Wavelengths &gt; Visible Imagery" term="http://gcmdservices.gsfc.nasa.gov/kms/concept/03f0c0a3-04a7-4ef8-8ec0-3c2266510815"/>
      <category label="LANDSAT-5" term="http://gcmdservices.gsfc.nasa.gov/kms/concept/fe920fff-7852-42cf-b1dc-b2223b24cf2e"/>
 
   <id>http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&amp;parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&amp;uid=LANDSAT.TM.GTC</id>
      <link href="http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&amp;parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&amp;uid=LANDSAT.TM.GTC" rel="alternate" title="Atom format" type="application/atom+xml"/>
      <link href="http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.TM.GTC&amp;sensorType=OPTICAL&amp;startDate=1985-01-01T00:00:00Z&amp;endDate=2003-08-31T00:00:00Z" hreflang="en" rel="search" type="application/opensearchdescription+xml"/>
      <link href="https://earth.esa.int/web/guest/data-access/browse-data-products/-/asset_publisher/y8Qb/content/landsat-5-thematic-mapper-geolocated-terrain-corrected-systematic-processing-over-kiruna" rel="describedby" type="text/html"/>
      <link href="http://fedeo.esa.int/opensearch/images/esa.png" rel="icon" type="image/png"/>
      <link href="http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19139-2%2Bxml&amp;parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&amp;uid=LANDSAT.TM.GTC&amp;recordSchema=iso19139-2" rel="alternate" title="ISO 19139-2 metadata" type="application/vnd.iso.19139-2+xml"/>
     
      <summary type="html"><![CDATA[<table xmlns="">
…
</table>]]></summary>
      <title>LANDSAT 5 Thematic Mapper Geolocated Terrain Corrected Systematic processing (LANDSAT.TM.GTC)</title>
      <updated>1985-01-01T00:00:00Z</updated>
      <dc:identifier>LANDSAT.TM.GTC</dc:identifier>
      <dc:date>1985-01-01T00:00:00Z/2003-08-31T00:00:00Z</dc:date>
      <georss:polygon>-90 -180 -90 180 90 180 90 -180 -90 -180</georss:polygon>
   </entry>
</feed>


 

D.1.1.2 GeoJSON


{
   "type": "FeatureCollection",
   "id": "http://fedeo.esa.int/opensearch/request?startRecord=1&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat",
   "totalResults": 2,
   "startIndex": 1,
   "itemsPerPage": 10,
   "queries": {
         "request": [
           {
              "dc:type": "collection",
              "eo:platform": "landsat"
              "count": 10,
              "searchTerms": "ESA LDS",
              "startIndex": 1,
              "sru:recordSchema": "server-choice"
           }
         ]
   },
   "properties": {
      "title": "FEDEO Clearinghouse - Search Response",
      "creator": "FEDEO Clearinghouse",
      "authors": [
         {
           "type": "Agent",
           "name": "FEDEO Clearinghouse",
           "email": "eohelp@eo.esa.int"
         }
      ],
      "updated": "2017-09-26T11:27:19Z",
      "lang": "en",
      "rights": "Copyright 2016-2017, European Space Agency",
      "links": {
         "profiles": [
           {
              "href": "http://www.opengis.net/spec/owc-geojson/1.0/req/core"
           },
            {
              "href": "http://www.opengis.net/spec/os-geojson/1.0/req/core"
           }
         ],
         "first": [
           {
              "href": "http://fedeo.esa.int/opensearch/request?&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat&startRecord=1&status=2,0",
              "type": "application/geo+json",
              "title": "first results"
           }
         ],
         "last": [
           {
              "href": "http://fedeo.esa.int/opensearch/request?&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat&startRecord=1&status=2,0",
              "type": "application/geo+json",
              "title": "last results"
           }
         ],
         "search": [
           {
              "href": "http://fedeo.esa.int/opensearch/description.xml",
              "type": "application/opensearchdescription+xml",
              "title": "search"
           }
         ]
      }
   },
   "features": [
      {
         "type": "Feature",
         "id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC",
         "geometry": {
           "type": "Polygon",
           "coordinates": [
              [
                 [
                    -180,
                    -90
                 ],
                 [
                    180,
                    -90
                 ],
                 [
                    180,
                    90
                 ],
                 [
                    -180,
                    90
                 ],
                 [
                    -180,
                    -90
                 ]
              ]
           ]
         },
         "properties": {
           "title": "LANDSAT 7 ETM+ (Enhanced Thematic Mapper Plus) Geolocated Terrain Corrected Systematic processing (LANDSAT.ETM.GTC)",
            "identifier": "LANDSAT.ETM.GTC",
            "abstract": "This dataset contains all the Landsat 7 Enhanced Thematic Mapper high-quality ortho-rectified L1T dataset over Kiruna, Maspalomas and Matera visibility masks. The Landsat 7 ETM+ scenes typically covers 185 x 170 km. A standard full scene is nominally centred on the intersection between a Path and Row (the actual image centre can vary by up to 100m). Each band requires 50MB (uncompressed), and Band 8 requires 200MB (panchromatic band with resolution of 15m opposed to 30m).",
           "date": "1999-07-01T00:00:00Z/2003-12-31T00:00:00Z",
           "updated": "1999-07-01T00:00:00Z",
           "categories": [
              {
                 "term": "http://www.eionet.europa.eu/gemet/concept/3650",
                 "label": "Geology"
              },
              {
                 "term": "http://gcmdservices.gsfc.nasa.gov/kms/concept/03f0c0a3-04a7-4ef8-8ec0-3c2266510815",
                 "label": "Science Keywords > Earth Science > Spectral/Engineering > Visible Wavelengths > Visible Imagery"
              },
              {
                 "term": "http://gcmdservices.gsfc.nasa.gov/kms/concept/c7a09e9f-3c99-4b31-a521-313c379ba2b4",
                 "label": "LANDSAT-7"
              }
           ],
        
            "links": {
              "alternates": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC&recordSchema=server-choice",
                    "type": "application/atom+xml",
                    "title": "Atom format"
                 },
                 {
                    "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19139-2%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC&recordSchema=iso19139-2",
                    "type": "application/vnd.iso.19139-2+xml",
                    "title": "ISO 19139-2 metadata"
                 }
              ],
              "describedby": [
                 {
                    "href": "https://earth.esa.int/web/guest/data-access/browse-data-products/-/asset_publisher/y8Qb/content/landsat-7-etm-enhanced-thematic-mapper-plus-geolocated-terrain-corrected-systematic-processing-over-kiruna-and-masplomas",
                    "type": "text/html",
                    "title": "Described by"
                 }
              ],
              "search": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC&sensorType=OPTICAL&startDate=1999-07-01T00:00:00Z&endDate=2003-12-31T00:00:00Z",
                    "type": "application/opensearchdescription+xml"
                 }
              ],
              "previews": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/images/esa.png",
                    "type": "image/png",
                    "title": "Quicklook"
                 }
              ]
            }
         }
      },
      {
         "type": "Feature",
         "id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.TM.GTC",
         "geometry": {
           "type": "Polygon",
           "coordinates": [
              [
                 [
                    -180,
                    -90
                 ],
                 [
                    180,
                    -90
                 ],
                 [
                    180,
                    90
                 ],
                 [
                    -180,
                    90
                 ],
                 [
                    -180,
                    -90
                 ]
              ]
           ]
         },
         "properties": {
           "title": "LANDSAT 5 Thematic Mapper Geolocated Terrain Corrected Systematic processing (LANDSAT.TM.GTC)",
            "identifier": "LANDSAT.TM.GTC",
         "abstract": "The Thematic Mapper (TM) is one of the instruments aboard the Landsat-4, Landsat-5 satellites. Landsat’s Global Survey Mission is to establish and execute a data acquisition strategy that ensures repetitive acquisition of observations over the Earth’s land mass, coastal boundaries, and coral reefs. From this collection you may order products of the following types: - LANDSAT 4/5 TM Raw Products (LANDSAT.TM.RAW) - LANDSAT 4/5 Thematic Mapper (TM) System Corrected Pre-Flight Radiometric Correction and Cubic Convolution resampling Product (LANDSAT.TM.SCPRCC) - LANDSAT 4/5 Thematic Mapper System Corrected Pre-Flight Radiometric Correction and Nearest neighbour resampling product (LANDSAT.TM.SCPRNN).",
           "date": "1985-01-01T00:00:00Z/2003-08-31T00:00:00Z",
            "updated": "1985-01-01T00:00:00Z",
           "categories": [
              {
                 "term": "http://www.eionet.europa.eu/gemet/concept/3650",
                 "label": "Geology"
              },
              {
                 "term": "http://gcmdservices.gsfc.nasa.gov/kms/concept/03f0c0a3-04a7-4ef8-8ec0-3c2266510815",
                 "label": "Science Keywords > Earth Science > Spectral/Engineering > Visible Wavelengths > Visible Imagery"
              },
              {
                 "term": "http://gcmdservices.gsfc.nasa.gov/kms/concept/fe920fff-7852-42cf-b1dc-b2223b24cf2e",
                 "label": "LANDSAT-5"
              }
           ],
        
            "links": {
              "alternates": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.TM.GTC&recordSchema=server-choice",
                    "type": "application/atom+xml",
                    "title": "Atom format"
                 },
                 {
                    "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19139-2%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.TM.GTC&recordSchema=iso19139-2",
                    "type": "application/vnd.iso.19139-2+xml",
                    "title": "ISO 19139-2 metadata"
                 }
              ],
              "describedby": [
                 {
                    "href": "https://earth.esa.int/web/guest/data-access/browse-data-products/-/asset_publisher/y8Qb/content/landsat-5-thematic-mapper-geolocated-terrain-corrected-systematic-processing-over-kiruna",
                    "type": "text/html",
                    "title": "Described by"
                 }
              ],
              "search": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.TM.GTC&sensorType=OPTICAL&startDate=1985-01-01T00:00:00Z&endDate=2003-08-31T00:00:00Z",
                    "type": "application/opensearchdescription+xml"
                 }
              ],
              "previews": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/images/esa.png",
                    "type": "image/png",
                    "title": "Quicklook"
                 }
              ]
           }
         }
      }
   ]
}


D.1.1.3 JSON-LD (Compacted)

 


{
   "@context": "http://schemas.opengis.net/os-geojson/1.0/os-geojson.jsonld",
 
  
   "type": "FeatureCollection",
  
   … same content as example in previous section …
 
}


 

D.1.1.4 JSON-LD (Expanded)

 


{
   "@context": {
      "xsd": "http://www.w3.org/2001/XMLSchema#",
      "dc": "http://purl.org/dc/elements/1.1/",
      "dct": "http://purl.org/dc/terms/",
      "dcat": "http://www.w3.org/ns/dcat#",
      "atom": "http://www.w3.org/2005/Atom/",
      "skos": "http://www.w3.org/2004/02/skos/core#",
      "iana": "http://www.iana.org/assignments/relation/",
      "foaf": "http://xmlns.com/foaf/0.1/",
      "eop": "http://www.opengis.net/ont/eo-geojson/1.0/",
      "owc": "http://www.opengis.net/ont/owc/1.0/",
      "gj": "https://purl.org/geojson/vocab#",
      "gsp": "http://www.opengis.net/ont/geosparql#",
      "os": "http://a9.com/-/spec/opensearch/1.1/",
      "ical": "http://www.w3.org/2002/12/cal/ical#",
      "media": "http://search.yahoo.com/mrss/",
      "eo": "http://a9.com/-/opensearch/extensions/eo/1.0/",
      "sru": "http://a9.com/-/opensearch/extensions/sru/2.0/",
      "geo": "http://a9.com/-/opensearch/extensions/geo/1.0/",
      "time": "http://a9.com/-/opensearch/extensions/time/1.0/"
   },
   "@id": "http://fedeo.esa.int/opensearch/request?startRecord=1&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat",
   "@type": "gj:FeatureCollection",
   "os:itemsPerPage": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 10
   },
   "os:queries": {
      "os:request": {
         "eo:platform": "landsat",
         "sru:recordSchema": "server-choice",
         "os:count": 10,
         "os:searchTerms": "ESA LDS",
         "os:startIndex": {
           "@type": "xsd:nonNegativeInteger",
           "@value": 1
         },
         "dc:type": "collection"
      }
   },
   "os:startIndex": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 1
   },
   "os:totalResults": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 2
   },
   "dct:creator": [
      {
         "@type": "foaf:Agent",
         "foaf:mbox": "eohelp@eo.esa.int",
         "foaf:name": "FEDEO Clearinghouse"
      },
      "FEDEO Clearinghouse"
   ],
   "dct:language": {
      "@id": "http://id.loc.gov/vocabulary/iso639-1/en"
   },
   "dct:modified": "2017-09-26T11:27:19Z",
   "dct:rights": "Copyright 2016-2017, European Space Agency",
   "dct:title": "FEDEO Clearinghouse - Search Response",
   "owc:links": {
      "iana:first": {
         "@id": "http://fedeo.esa.int/opensearch/request?&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat&startRecord=1&status=2,0",
         "dct:title": "first results",
         "atom:type": "application/geo+json"
      },
      "iana:last": {
         "@id": "http://fedeo.esa.int/opensearch/request?&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat&startRecord=1&status=2,0",
         "dct:title": "last results",
         "atom:type": "application/geo+json"
      },
      "iana:profile": [
         {
           "@id": "http://www.opengis.net/spec/owc-geojson/1.0/req/core"
         },
         {
           "@id": "http://www.opengis.net/spec/os-geojson/1.0/req/core"
         }
      ],
      "iana:search": {
         "@id": "http://fedeo.esa.int/opensearch/description.xml",
         "dct:title": "search",
         "atom:type": "application/opensearchdescription+xml"
      }
   },
   "gj:features": [
      {
         "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC",
         "@type": "gj:Feature",
         "dct:date": "1999-07-01T00:00:00Z/2003-12-31T00:00:00Z",
         "dct:description": "This dataset contains all the Landsat 7 Enhanced Thematic Mapper high-quality ortho-rectified L1T dataset over Kiruna, Maspalomas and Matera visibility masks. The Landsat 7 ETM+ scenes typically covers 185 x 170 km. A standard full scene is nominally centred on the intersection between a Path and Row (the actual image centre can vary by up to 100m). Each band requires 50MB (uncompressed), and Band 8 requires 200MB (panchromatic band with resolution of 15m opposed to 30m).",
         "dct:identifier": "LANDSAT.ETM.GTC",
         "dct:modified": "1999-07-01T00:00:00Z",
         "dct:title": "LANDSAT 7 ETM+ (Enhanced Thematic Mapper Plus) Geolocated Terrain Corrected Systematic processing (LANDSAT.ETM.GTC)",
         "owc:links": {
           "iana:alternate": [
              {
                 "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC&recordSchema=server-choice",
                 "dct:title": "Atom format",
                 "atom:type": "application/atom+xml"
              },
              {
                 "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19139-2%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC&recordSchema=iso19139-2",
                 "dct:title": "ISO 19139-2 metadata",
                 "atom:type": "application/vnd.iso.19139-2+xml"
              }
           ],
           "iana:describedby": {
              "@id": "https://earth.esa.int/web/guest/data-access/browse-data-products/-/asset_publisher/y8Qb/content/landsat-7-etm-enhanced-thematic-mapper-plus-geolocated-terrain-corrected-systematic-processing-over-kiruna-and-masplomas",
              "dct:title": "Described by",
              "atom:type": "text/html"
           },
           "iana:icon": {
              "@id": "http://fedeo.esa.int/opensearch/images/esa.png",
              "dct:title": "Quicklook",
              "atom:type": "image/png"
           },
           "iana:search": {
              "@id": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC&sensorType=OPTICAL&startDate=1999-07-01T00:00:00Z&endDate=2003-12-31T00:00:00Z",
              "atom:type": "application/opensearchdescription+xml"
           }
         },
         "dcat:theme": [
           {
              "@id": "http://www.eionet.europa.eu/gemet/concept/3650",
              "skos:prefLabel": "Geology"
           },
           {
              "@id": "http://gcmdservices.gsfc.nasa.gov/kms/concept/03f0c0a3-04a7-4ef8-8ec0-3c2266510815",
              "skos:prefLabel": "Science Keywords > Earth Science > Spectral/Engineering > Visible Wavelengths > Visible Imagery"
           },
           {
              "@id": "http://gcmdservices.gsfc.nasa.gov/kms/concept/c7a09e9f-3c99-4b31-a521-313c379ba2b4",
              "skos:prefLabel": "LANDSAT-7"
           }
         ],
         "gj:geometry": {
           "@type": "gj:Polygon",
           "gj:coordinates": [
              -180,
              -90,
              180,
              -90,
              180,
              90,
              -180,
              90,
              -180,
              -90
           ]
         }
      },
      {
         "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.TM.GTC",
         "@type": "gj:Feature",
         "dct:date": "1985-01-01T00:00:00Z/2003-08-31T00:00:00Z",
         "dct:description": "The Thematic Mapper (TM) is one of the instruments aboard the Landsat-4, Landsat-5 satellites. Landsat’s Global Survey Mission is to establish and execute a data acquisition strategy that ensures repetitive acquisition of observations over the Earth’s land mass, coastal boundaries, and coral reefs. From this collection you may order products of the following types: - LANDSAT 4/5 TM Raw Products (LANDSAT.TM.RAW) - LANDSAT 4/5 Thematic Mapper (TM) System Corrected Pre-Flight Radiometric Correction and Cubic Convolution resampling Product (LANDSAT.TM.SCPRCC) - LANDSAT 4/5 Thematic Mapper System Corrected Pre-Flight Radiometric Correction and Nearest neighbour resampling product (LANDSAT.TM.SCPRNN).",
         "dct:identifier": "LANDSAT.TM.GTC",
         "dct:modified": "1985-01-01T00:00:00Z",
         "dct:title": "LANDSAT 5 Thematic Mapper Geolocated Terrain Corrected Systematic processing (LANDSAT.TM.GTC)",
         "owc:links": {
           "iana:alternate": [
              {
                 "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.TM.GTC&recordSchema=server-choice",
                 "dct:title": "Atom format",
                 "atom:type": "application/atom+xml"
              },
              {
                 "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19139-2%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.TM.GTC&recordSchema=iso19139-2",
                 "dct:title": "ISO 19139-2 metadata",
                 "atom:type": "application/vnd.iso.19139-2+xml"
              }
           ],
           "iana:describedby": {
              "@id": "https://earth.esa.int/web/guest/data-access/browse-data-products/-/asset_publisher/y8Qb/content/landsat-5-thematic-mapper-geolocated-terrain-corrected-systematic-processing-over-kiruna",
              "dct:title": "Described by",
              "atom:type": "text/html"
           },
           "iana:icon": {
              "@id": "http://fedeo.esa.int/opensearch/images/esa.png",
              "dct:title": "Quicklook",
              "atom:type": "image/png"
           },
           "iana:search": {
              "@id": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.TM.GTC&sensorType=OPTICAL&startDate=1985-01-01T00:00:00Z&endDate=2003-08-31T00:00:00Z",
              "atom:type": "application/opensearchdescription+xml"
           }
         },
         "dcat:theme": [
           {
              "@id": "http://www.eionet.europa.eu/gemet/concept/3650",
              "skos:prefLabel": "Geology"
           },
           {
              "@id": "http://gcmdservices.gsfc.nasa.gov/kms/concept/03f0c0a3-04a7-4ef8-8ec0-3c2266510815",
              "skos:prefLabel": "Science Keywords > Earth Science > Spectral/Engineering > Visible Wavelengths > Visible Imagery"
           },
           {
              "@id": "http://gcmdservices.gsfc.nasa.gov/kms/concept/fe920fff-7852-42cf-b1dc-b2223b24cf2e",
              "skos:prefLabel": "LANDSAT-5"
           }
         ],
         "gj:geometry": {
           "@type": "gj:Polygon",
           "gj:coordinates": [
              -180,
              -90,
              180,
              -90,
              180,
              90,
              -180,
              90,
              -180,
              -90
           ]
         }
      }
   ]
}


D.1.2 Example 2: EO Products (OGC 17-003r2)

D.1.2.1 Atom


<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:alt11="http://www.opengis.net/alt/2.1" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:eo="http://a9.com/-/opensearch/extensions/eo/1.0/" xmlns:eop11="http://www.opengis.net/eop/2.1" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:georss11="http://www.georss.org/georss/11" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gmi="http://www.isotc211.org/2005/gmi" xmlns:gml="http://www.opengis.net/gml" xmlns:gml32="http://www.opengis.net/gml/3.2" xmlns:media="http://search.yahoo.com/mrss/" xmlns:opt11="http://www.opengis.net/opt/2.1" xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:sar11="http://www.opengis.net/sar/2.1" xmlns:semantic="http://a9.com/-/opensearch/extensions/semantic/1.0/" xmlns:sru="http://a9.com/-/opensearch/extensions/sru/2.0/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/">
   <author>
      <name>FEDEO Clearinghouse</name>
      <email>eohelp@eo.esa.int</email>
   </author>
   <generator>FEDEO Clearinghouse</generator>
   <id>http://fedeo.esa.int/opensearch/request</id>
   <rights>Copyright 2016-2017, European Space Agency</rights>
   <title>FEDEO Clearinghouse - Search Response</title>
   <updated>2017-09-26T08:42:34Z</updated>
   <link href="http://fedeo.esa.int/opensearch/request?maximumRecords=1&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;startDate=2000-01-01T00:00:00Z&amp;endDate=2000-01-31T00:00:00Z&amp;cloudCover=10]&amp;httpAccept=application/atom%2Bxml" hreflang="en" rel="self" type="application/atom+xml"/>
   <link href="http://fedeo.esa.int/opensearch/FedEO_OSGW_Service.xml" rel="describedby" type="application/xml"/>
   <link href="http://fedeo.esa.int/opensearch/request?maximumRecords=1&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;startDate=2000-01-01T00:00:00Z&amp;endDate=2000-01-31T00:00:00Z&amp;cloudCover=10]&amp;httpAccept=application/atom%2Bxml&amp;startRecord=1" rel="first" type="application/atom+xml"/>
   <link href="http://fedeo.esa.int/opensearch/request?maximumRecords=1&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;startDate=2000-01-01T00:00:00Z&amp;endDate=2000-01-31T00:00:00Z&amp;cloudCover=10]&amp;httpAccept=application/atom%2Bxml&amp;startRecord=2" rel="next" type="application/atom+xml"/>
   <link href="http://fedeo.esa.int/opensearch/request?maximumRecords=1&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;startDate=2000-01-01T00:00:00Z&amp;endDate=2000-01-31T00:00:00Z&amp;cloudCover=10]&amp;httpAccept=application/atom%2Bxml&amp;startRecord=1329" rel="last" type="application/atom+xml"/>
   <link href="http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC" rel="search" type="application/opensearchdescription+xml"/>
   <os:totalResults>1329</os:totalResults>
   <os:startIndex>1</os:startIndex>
   <os:itemsPerPage>1</os:itemsPerPage>
   <os:Query eo:cloudCover="10]" eo:parentIdentifier="LANDSAT.ETM.GTC" os:count="1" role="request" time:end="2000-01-31T00:00:00Z" time:start="2000-01-01T00:00:00Z"/>
   <entry>
      <id>http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4</id>
      <link href="http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4" rel="alternate" title="Atom format" type="application/atom+xml"/>
      <link href="http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&amp;uid=LANDSAT.ETM.GTC&amp;recordSchema=iso" rel="up" title="Up" type="application/atom+xml"/>
      <link href="http://landsat-ds.eo.esa.int/products/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.ZIP" rel="enclosure" title="Download" type="application/x-binary"/>
      <link href="http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&amp;recordSchema=om10" rel="alternate" title="O&amp;M metadata" type="application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.0"/>
      <link href="http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&amp;recordSchema=om" rel="alternate" title="O&amp;M 1.1 metadata" type="application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.1"/>
      <link href="http://fedeo.esa.int/opensearch/request/?httpAccept=application/rdf%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4" rel="alternate" title="RDF/XML format" type="application/rdf+xml"/>
      <link href="http://fedeo.esa.int/opensearch/request/?httpAccept=application/ld%2Bjson&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4" rel="alternate" title="JSON-LD format" type="application/ld+json"/>
      <link href="http://fedeo.esa.int/opensearch/request/?httpAccept=text/turtle&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4" rel="alternate" title="Turtle format" type="text/turtle"/>
      <link href="http://landsat-ds.eo.esa.int/metadata/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.BP.PNG" rel="icon" title="Quicklook" type="image/png"/>
      <summary type="html"><![CDATA[<table xmlns="" xmlns:eop="http://www.opengis.net/eop/2.1" xmlns:om="http://www.opengis.net/om/2.0">
…
</table>]]></summary>
      <title>LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4</title>
      <updated>2017-09-26T08:40:59Z</updated>
      <dc:identifier>LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4</dc:identifier>
      <dc:date>2000-01-20T12:16:02Z/2000-01-20T12:16:31Z</dc:date>
      <georss:polygon>58.3046 -21.7987 58.2695 -17.901 56.2923 -18.063 56.3248 -21.7569 58.3046 -21.7987</georss:polygon>
      <georss:box>56.2923 -21.7987 58.3046 -17.901</georss:box>
      <media:group>
         <media:content medium="image" type="image/png" url="http://landsat-ds.eo.esa.int/metadata/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.BP.PNG">
           <media:category scheme="http://www.opengis.net/spec/EOMPOM/1.1">QUICKLOOK</media:category>
         </media:content>
      </media:group>
   </entry>
</feed>


 

D.1.2.2 GeoJSON


{
   "type": "FeatureCollection",
   "id": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson",
   "totalResults": 1329,
   "startIndex": 1,
   "itemsPerPage": 1,
   "queries": {
         "request": [
           {
              "eo:cloudCover": "10]",
              "eo:parentIdentifier": "LANDSAT.ETM.GTC",
              "count": 1,
              "time:end": "2000-01-31T00:00:00Z",
              "time:start": "2000-01-01T00:00:00Z"
           }
         ]
   },
   "properties": {
      "title": "FEDEO Clearinghouse - Search Response",
      "creator": "FEDEO Clearinghouse",
      "authors": [
         {
           "type": "Agent",
           "name": "FEDEO Clearinghouse",
           "email": "eohelp@eo.esa.int"
         }
      ],
      "updated": "2017-09-26T08:37:28Z",
      "lang": "en",
      "rights": "Copyright 2016-2017, European Space Agency",
      "links": {
         "profiles": [
           {
              "href": "http://www.opengis.net/spec/owc-geojson/1.0/req/core"
           },
            {
              "href": "http://www.opengis.net/spec/os-geojson/1.0/req/core"
           }
 
         ],
         "first": [
           {
              "href": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson&startRecord=1",
              "type": "application/geo+json",
              "title": "first results"
           }
         ],
         "next": [
           {
              "href": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson&startRecord=2",
              "type": "application/geo+json",
              "title": "next results"
           }
         ],
         "last": [
           {
              "href": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson&startRecord=1329",
              "type": "application/geo+json",
              "title": "last results"
           }
         ],
         "search": [
           {
              "href": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC",
              "type": "application/opensearchdescription+xml",
              "title": "search"
           }
         ]
      }
   },
   "features": [
      {
         "type": "Feature",
         "id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
         "bbox": [
           -21.7987,
           56.2923,
           -17.901,
           58.3046
         ],
         "geometry": {
           "type": "Polygon",
           "coordinates": [
              [
                 [
                    -21.7987,
                    58.3046
                 ],
                 [
                    -21.7569,
                    56.3248
                 ],
                 [
                    -18.063,
                    56.2923
                 ],
                 [
                    -17.901,
                    58.2695
                 ],
                 [
                    -21.7987,
                    58.3046
                 ]
              ]
           ]
         },
         "properties": {
           "status": "ARCHIVED",
           "parentIdentifier": "LANDSAT.ETM.GTC",
           "title": "LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
           "identifier": "LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
           "date": "2000-01-20T12:16:02Z/2000-01-20T12:16:31Z",
           "updated": "2017-09-26T08:35:52Z",
           "links": {
              "alternates": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&recordSchema=server-choice",
                    "type": "application/atom+xml",
                    "title": "Atom format"
                 },
                 {
                    "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&recordSchema=om10",
                    "type": "application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.0",
                    "title": "O&M metadata"
                 },
                 {
                    "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&recordSchema=om",
                    "type": "application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.1",
                    "title": "O&M 1.1 metadata"
                 }
              ],
              "data": [
                 {
                    "href": "http://landsat-ds.eo.esa.int/products/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.ZIP",
                    "type": "application/x-binary",
                    "title": "Download"
                 }
              ],
              "previews": [
                 {
                   "href": "http://landsat-ds.eo.esa.int/metadata/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.BP.PNG",
                    "type": "image/png",
                    "title": "Quicklook"
                 }
              ],
              "up": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&uid=LANDSAT.ETM.GTC&recordSchema=iso",
                    "type": "application/atom+xml",
                    "title": "Up"
                 }
              ]
           },
           "acquisitionInformation": [
              {
                 "platform": {
                    "platformShortName": "Landsat",
                    "platformSerialIdentifier": "7"
                 },
                 "instrument": {
                    "instrumentShortName": "ETM",
                    "sensorType": "OPTICAL"
                 },
                 "acquisitionParameters": {
                    "operationalMode": "IM",
                    "beginningDateTime": "2000-01-20T12:16:02Z",
                    "endingDateTime": "2000-01-20T12:16:31Z",
                    "orbitDirection": "DESCENDING",
                    "orbitNumber": 4076,
                    "acquisitionType": "NOMINAL",
                    "acquisitionSubType": "DEFAULT",
                    "wrsLongitudeGrid": "216",
                    "wrsLatitudeGrid": "20"
                 }
              }
           ],
           "productInformation": {
              "productType": "ETM_GTC_1P",
              "size": 217432323,
              "availabilityTime": "2000-01-20T12:16:31Z",
              "referenceSystemIdentifier": "epsg:4326",
              "processingMode": "NOMINAL",
              "cloudCover": 6,
              "qualityInformation": {
                 "qualityDegradation": 0
              }
           }
         }
      }
   ]
}


D.1.2.3 JSON-LD (Compacted)

In this case a different @context is to be applied to the FeatureCollection and the Feature.  This can be done using a scoped context[22], or in a simpler way if the contexts contain no conflicting definitions.


{
   "@context": [
      "http://schemas.opengis.net/os-geojson/1.0/os-geojson.jsonld",
      {
         "features": {
           "@id": "gj:features",
           "@context": "http://schemas.opengis.net/eo-geojson/1.0/eo-geojson.jsonld"
         }
      }
   ]
}


The example below just concatenates the two contexts.  The second context may overwrite definitions from the first context, therefore the above method is recommended as more generally applicable.


{
 
  "@context":[  
      "http://schemas.opengis.net/os-geojson/1.0/os-geojson.jsonld",
      "http://schemas.opengis.net/eo-geojson/1.0/eo-geojson.jsonld"  ],
 
 
   "type": "FeatureCollection",
  
   … same content as example in previous section …
 
}


 

D.1.2.4 JSON-LD (Expanded)


{
   "@context": {
      "xsd": "http://www.w3.org/2001/XMLSchema#",
      "dc": "http://purl.org/dc/elements/1.1/",
      "dct": "http://purl.org/dc/terms/",
      "dcat": "http://www.w3.org/ns/dcat#",
      "atom": "http://www.w3.org/2005/Atom/",
      "skos": "http://www.w3.org/2004/02/skos/core#",
      "iana": "http://www.iana.org/assignments/relation/",
      "foaf": "http://xmlns.com/foaf/0.1/",
      "eop": "http://www.opengis.net/ont/eo-geojson/1.0/",
      "owc": "http://www.opengis.net/ont/owc/1.0/",
      "gj": "https://purl.org/geojson/vocab#",
      "gsp": "http://www.opengis.net/ont/geosparql#",
      "os": "http://a9.com/-/spec/opensearch/1.1/",
      "ical": "http://www.w3.org/2002/12/cal/ical#",
      "media": "http://search.yahoo.com/mrss/",
      "eo": "http://a9.com/-/opensearch/extensions/eo/1.0/",
      "sru": "http://a9.com/-/opensearch/extensions/sru/2.0/",
      "geo": "http://a9.com/-/opensearch/extensions/geo/1.0/",
      "time": "http://a9.com/-/opensearch/extensions/time/1.0/"
   },
   "@id": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson",
   "@type": "gj:FeatureCollection",
   "os:itemsPerPage": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 1
   },
   "os:queries": {
      "os:request": {
         "eo:cloudCover": "10]",
         "eo:parentIdentifier": "LANDSAT.ETM.GTC",
         "time:end": "2000-01-31T00:00:00Z",
         "time:start": "2000-01-01T00:00:00Z",
         "os:count": 1
      }
   },
   "os:startIndex": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 1
   },
   "os:totalResults": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 1329
   },
   "dct:creator": [
      {
         "@type": "foaf:Agent",
         "foaf:mbox": "eohelp@eo.esa.int",
         "foaf:name": "FEDEO Clearinghouse"
      },
      "FEDEO Clearinghouse"
   ],
   "dct:language": {
      "@id": "http://id.loc.gov/vocabulary/iso639-1/en"
   },
   "dct:modified": "2017-09-26T08:37:28Z",
   "dct:rights": "Copyright 2016-2017, European Space Agency",
   "dct:title": "FEDEO Clearinghouse - Search Response",
   "owc:links": {
      "iana:first": {
         "@id": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson&startRecord=1",
         "dct:title": "first results",
         "atom:type": "application/geo+json"
      },
      "iana:last": {
         "@id": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson&startRecord=1329",
         "dct:title": "last results",
         "atom:type": "application/geo+json"
      },
      "iana:next": {
         "@id": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&parentIdentifier=LANDSAT.ETM.GTC&startDate=2000-01-01T00:00:00Z&endDate=2000-01-31T00:00:00Z&cloudCover=10%5D&httpAccept=application/geo%2Bjson&startRecord=2",
         "dct:title": "next results",
         "atom:type": "application/geo+json"
      },
      "iana:profile": [
         {
           "@id": "http://www.opengis.net/spec/owc-geojson/1.0/req/core"
         },
         {
           "@id": "http://www.opengis.net/spec/os-geojson/1.0/req/core"
         }
      ],
      "iana:search": {
         "@id": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC",
         "dct:title": "search",
         "atom:type": "application/opensearchdescription+xml"
      }
   },
   "gj:features": {
      "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
      "@type": "gj:Feature",
      "dct:date": "2000-01-20T12:16:02Z/2000-01-20T12:16:31Z",
      "dct:identifier": "LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
      "dct:modified": "2017-09-26T08:35:52Z",
      "dct:title": "LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4",
      "eop:acquisitionInformation": {
         "eop:acquisitionParameters": {
           "eop:operationalMode": "IM"
           "eop:acquisitionSubType": "DEFAULT",
           "eop:acquisitionType": {
              "@id": "eop:AcquisitionType/NOMINAL"
           },
           "eop:wrsLatitudeGrid": "20",
           "eop:orbitDirection": {
              "@id": "eop:DESCENDING"
           },
           "eop:orbitNumber": 4076,
           "eop:wrsLongitudeGrid": "216",
           "ical:dtend": "2000-01-20T12:16:31Z",
           "ical:dtstart": "2000-01-20T12:16:02Z"
         },
         "eop:instrument": {
           "eop:instrumentShortName": "ETM",
           "eop:sensorType": {
              "@id": "eop:OPTICAL"
           }
         },
         "eop:platform": {
           "eop:platformSerialIdentifier": "7",
           "eop:platformShortName": "Landsat"
         }
      },
      "eop:parentIdentifier": "LANDSAT.ETM.GTC",
      "eop:productInformation": {
         "eop:availabilityTime": "2000-01-20T12:16:31Z",
         "eop:cloudCover": 6,
         "eop:processingMode": "NOMINAL",
         "eop:productType": "ETM_GTC_1P",
         "eop:qualityInformation": {
           "eop:qualityDegradation": 0
         },
         "eop:referenceSystemIdentifier": "epsg:4326",
         "eop:size": 217432323
      },
      "eop:status": {
         "@id": "eop:ARCHIVED"
      },
      "owc:links": {
         "iana:alternate": [
           {
              "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&recordSchema=server-choice",
              "dct:title": "Atom format",
              "atom:type": "application/atom+xml"
           },
           {
              "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&recordSchema=om10",
              "dct:title": "O&M metadata",
              "atom:type": "application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.0"
           },
           {
              "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&parentIdentifier=LANDSAT.ETM.GTC&uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&recordSchema=om",
              "dct:title": "O&M 1.1 metadata",
              "atom:type": "application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.1"
           }
         ],
         "iana:enclosure": {
           "@id": "http://landsat-ds.eo.esa.int/products/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.ZIP",
           "dct:title": "Download",
           "atom:type": "application/x-binary"
         },
         "iana:icon": {
           "@id": "http://landsat-ds.eo.esa.int/metadata/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.BP.PNG",
           "dct:title": "Quicklook",
           "atom:type": "image/png"
         },
         "iana:up": {
           "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&uid=LANDSAT.ETM.GTC&recordSchema=iso",
           "dct:title": "Up",
           "atom:type": "application/atom+xml"
         }
      },
      "gj:bbox": {
         "@list": [
           -21.7987,
           56.2923,
           -17.901,
           58.3046
         ]
      },
      "gj:geometry": {
         "@type": "gj:Polygon",
         "gj:coordinates": [
           -21.7987,
           58.3046,
           -21.7569,
           56.3248,
           -18.063,
           56.2923,
           -17.901,
           58.2695,
           -21.7987,
           58.3046
         ]
      }
   }
}


D.1.2.5 RDF/XML

JSON-LD can be deserialised to RDF 1.1 as per section 9.1 of [NR15].  If the optional @type property is present for all JSON objects, then the above JSON-LD representation is equivalent to the RDF/XML representation below.


<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:eo="http://a9.com/-/opensearch/extensions/eo/1.0/" xmlns:iana="http://www.iana.org/assignments/relation/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:owc="http://www.opengis.net/ont/owc/1.0/" xmlns:vcard="http://www.w3.org/2006/vcard/ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:ical="http://www.w3.org/2002/12/cal/ical#" xmlns:dcat="http://www.w3.org/ns/dcat#" xmlns:atom="http://www.w3.org/2005/Atom/" xmlns:dct="http://purl.org/dc/terms/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:gj="https://purl.org/geojson/vocab#" xmlns:eop="http://www.opengis.net/ont/eo-geojson/1.0/">
   <gj:FeatureCollection rdf:about="http://fedeo.esa.int/opensearch/request?maximumRecords=1&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;startDate=2000-01-01T00:00:00Z&amp;endDate=2000-01-31T00:00:00Z&amp;cloudCover=10]&amp;httpAccept=application/geo%2Bjson">
      <dct:creator>
         <foaf:Agent rdf:nodeID="N11f395db1ccc4f00adac6b3a674c705a">
           <foaf:name>FEDEO Clearinghouse</foaf:name>
           <foaf:mbox>eohelp@eo.esa.int</foaf:mbox>
         </foaf:Agent>
      </dct:creator>
      <dct:title>FEDEO Clearinghouse - Search Response</dct:title>
      <dct:creator>FEDEO Clearinghouse</dct:creator>
      <gj:features>
         <gj:Feature rdf:about="http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4">
           <gj:geometry>
              <gj:Polygon rdf:nodeID="N8e837a9e98a747fd9dde563883322a49">
                 <gj:coordinates rdf:datatype="http://www.w3.org/2001/XMLSchema#double">58.3046</gj:coordinates>
                 <gj:coordinates rdf:datatype="http://www.w3.org/2001/XMLSchema#double">-21.7569</gj:coordinates>
                 <gj:coordinates rdf:datatype="http://www.w3.org/2001/XMLSchema#double">58.2695</gj:coordinates>
                 <gj:coordinates rdf:datatype="http://www.w3.org/2001/XMLSchema#double">56.2923</gj:coordinates>
                 <gj:coordinates rdf:datatype="http://www.w3.org/2001/XMLSchema#double">-17.901</gj:coordinates>
                 <gj:coordinates rdf:datatype="http://www.w3.org/2001/XMLSchema#double">-18.063</gj:coordinates>
                 <gj:coordinates rdf:datatype="http://www.w3.org/2001/XMLSchema#double">56.3248</gj:coordinates>
                 <gj:coordinates rdf:datatype="http://www.w3.org/2001/XMLSchema#double">-21.7987</gj:coordinates>
              </gj:Polygon>
           </gj:geometry>
           <eop:acquisitionInformation>
              <eop:AcquisitionInformation rdf:nodeID="N633eb92bea874d899f299d2b740b21c9">
                 <eop:acquisitionParameters>
                    <eop:AcquisitionParameters rdf:nodeID="N5bea649a00fd413ca4b86269b6172362">
                       <eop:acquisitionType rdf:resource="http://www.opengis.net/ont/eo-geojson/1.0/NOMINAL"/>
                       <ical:dtstart>2000-01-20T12:16:02Z</ical:dtstart>
                       <eop:wrsLatitudeGrid>20</eop:wrsLatitudeGrid>
                       <ical:dtend>2000-01-20T12:16:31Z</ical:dtend>
                       <eop:wrsLongitudeGrid>216</eop:wrsLongitudeGrid>
                       <eop:acquisitionSubType>DEFAULT</eop:acquisitionSubType>
                       <eop:orbitDirection rdf:resource="http://www.opengis.net/ont/eo-geojson/1.0/DESCENDING"/>
                       <eop:orbitNumber rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">4076</eop:orbitNumber>
                        <eop:operationalMode>IM</eop:operationalMode>
                    </eop:AcquisitionParameters>
                 </eop:acquisitionParameters>
                 <eop:platform>
                    <eop:Platform rdf:nodeID="N48e52fa97a754dcb92adfa4cd086df41">
                       <eop:platformShortName>Landsat</eop:platformShortName>
                       <eop:platformSerialIdentifier>7</eop:platformSerialIdentifier>
                    </eop:Platform>
                 </eop:platform>
                 <eop:instrument>
                    <eop:Instrument rdf:nodeID="Nc0679558a290427e8546142d93de41af">
                       <eop:sensorType rdf:resource="http://www.opengis.net/ont/eo-geojson/1.0/OPTICAL"/>
                      
                       <eop:instrumentShortName>ETM</eop:instrumentShortName>
                    </eop:Instrument>
                 </eop:instrument>
              </eop:AcquisitionInformation>
           </eop:acquisitionInformation>
           <dct:title>LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4</dct:title>
           <eop:parentIdentifier>LANDSAT.ETM.GTC</eop:parentIdentifier>
           <eop:productInformation>
              <eop:ProductInformation rdf:nodeID="Nfbb4f28cc0644d8ab18fd716f99f930e">
                 <eop:productType>ETM_GTC_1P</eop:productType>
                 <eop:processingMode>NOMINAL</eop:processingMode>
                 <eop:availabilityTime>2000-01-20T12:16:31Z</eop:availabilityTime>
                 <eop:qualityInformation>
                    <eop:QualityInformation rdf:nodeID="Nabff1654d2bb49b2a1d4e3c802d5ca48">
                       <eop:qualityDegradation rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">0</eop:qualityDegradation>
                    </eop:QualityInformation>
                 </eop:qualityInformation>
                 <eop:size rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">217432323</eop:size>
                 <eop:referenceSystemIdentifier>epsg:4326</eop:referenceSystemIdentifier>
                 <eop:cloudCover rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">6</eop:cloudCover>
              </eop:ProductInformation>
           </eop:productInformation>
           <dct:modified>2017-09-26T08:35:52Z</dct:modified>
           <gj:bbox rdf:parseType="Collection">
              <rdf:Description rdf:about="-21.7987"/>
              <rdf:Description rdf:about="56.2923"/>
              <rdf:Description rdf:about="-17.901"/>
              <rdf:Description rdf:about="58.3046"/>
           </gj:bbox>
           <dct:date>2000-01-20T12:16:02Z/2000-01-20T12:16:31Z</dct:date>
           <eop:status rdf:resource="http://www.opengis.net/ont/eo-geojson/1.0/ARCHIVED"/>
           <owc:links>
              <owc:Links rdf:nodeID="N6e721a68acdb4d3f9b9584acb11c00fa">
                 <iana:alternate rdf:resource="http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&amp;recordSchema=om10"/>
                 <iana:icon rdf:resource="http://landsat-ds.eo.esa.int/metadata/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.BP.PNG"/>
                 <iana:alternate rdf:resource="http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&amp;recordSchema=server-choice"/>
                 <iana:enclosure rdf:resource="http://landsat-ds.eo.esa.int/products/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.ZIP"/>
                 <iana:alternate rdf:resource="http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&amp;recordSchema=om"/>
                 <iana:up rdf:resource="http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&amp;uid=LANDSAT.ETM.GTC&amp;recordSchema=iso"/>
              </owc:Links>
           </owc:links>
         </gj:Feature>
      </gj:features>
      <dct:modified>2017-09-26T08:37:28Z</dct:modified>
      <owc:links>
         <owc:Links rdf:nodeID="N944a7208125a4dd4ae0f34cafbcb0d24">
           <iana:last rdf:resource="http://fedeo.esa.int/opensearch/request?maximumRecords=1&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;startDate=2000-01-01T00:00:00Z&amp;endDate=2000-01-31T00:00:00Z&amp;cloudCover=10]&amp;httpAccept=application/geo%2Bjson&amp;startRecord=1329"/>
           <iana:first rdf:resource="http://fedeo.esa.int/opensearch/request?maximumRecords=1&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;startDate=2000-01-01T00:00:00Z&amp;endDate=2000-01-31T00:00:00Z&amp;cloudCover=10]&amp;httpAccept=application/geo%2Bjson&amp;startRecord=1"/>
           <iana:profile rdf:resource="http://www.opengis.net/spec/owc-geojson/1.0/req/core"/>
           <iana:search rdf:resource="http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC"/>
           <iana:next rdf:resource="http://fedeo.esa.int/opensearch/request?maximumRecords=1&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;startDate=2000-01-01T00:00:00Z&amp;endDate=2000-01-31T00:00:00Z&amp;cloudCover=10]&amp;httpAccept=application/geo%2Bjson&amp;startRecord=2"/>
         </owc:Links>
      </owc:links>
      <os:totalResults rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1329</os:totalResults>
      <os:itemsPerPage rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</os:itemsPerPage>
      <os:startIndex rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</os:startIndex>
      <dct:rights>Copyright 2016-2017, European Space Agency</dct:rights>
      <dct:language rdf:resource="http://id.loc.gov/vocabulary/iso639-1/en"/>
      <os:queries>
         <os:Queries rdf:nodeID="Nc7ec882f3a2e43c8a08002d99678b83a">
           <os:request>
              <os:Query rdf:nodeID="Nae3f7a79336e45f3bb0f2d85c0244fbb">
                 <eo:cloudCover>10]</eo:cloudCover>
                 <time:start>2000-01-01T00:00:00Z</time:start>
                 <eo:parentIdentifier>LANDSAT.ETM.GTC</eo:parentIdentifier>
                 <os:count>1</os:count>
                 <time:end>2000-01-31T00:00:00Z</time:end>
              </os:Query>
           </os:request>
         </os:Queries>
      </os:queries>
   </gj:FeatureCollection>
   <atom:Link rdf:about="http://fedeo.esa.int/opensearch/request?maximumRecords=1&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;startDate=2000-01-01T00:00:00Z&amp;endDate=2000-01-31T00:00:00Z&amp;cloudCover=10]&amp;httpAccept=application/geo%2Bjson&amp;startRecord=2">
      <dct:title>next results</dct:title>
      <atom:type>application/geo+json</atom:type>
   </atom:Link>
   <atom:Link rdf:about="http://fedeo.esa.int/opensearch/request/?httpAccept=application/ld%2Bjson&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&amp;recordSchema=server-choice">
      <dct:title>JSON-LD format</dct:title>
      <atom:type>application/ld+json</atom:type>
   </atom:Link>
   <atom:Link rdf:about="http://landsat-ds.eo.esa.int/products/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.ZIP">
      <atom:type>application/x-binary</atom:type>
      <dct:title>Download</dct:title>
   </atom:Link>
   <atom:Link rdf:about="http://fedeo.esa.int/opensearch/request/?httpAccept=text/turtle&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&amp;recordSchema=server-choice">
      <dct:title>Turtle format</dct:title>
      <atom:type>text/turtle</atom:type>
   </atom:Link>
   <atom:Link rdf:about="http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC">
      <atom:type>application/opensearchdescription+xml</atom:type>
      <dct:title>search</dct:title>
   </atom:Link>
   <atom:Link rdf:about="http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&amp;uid=LANDSAT.ETM.GTC&amp;recordSchema=iso">
      <atom:type>application/atom+xml</atom:type>
      <dct:title>Up</dct:title>
   </atom:Link>
   <atom:Link rdf:about="http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&amp;recordSchema=om10">
      <dct:title>O&amp;M metadata</dct:title>
      <atom:type>application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.0</atom:type>
   </atom:Link>
   <atom:Link rdf:about="http://fedeo.esa.int/opensearch/request/?httpAccept=application/rdf%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&amp;recordSchema=server-choice">
      <dct:title>RDF/XML format</dct:title>
      <atom:type>application/rdf+xml</atom:type>
   </atom:Link>
   <atom:Link rdf:about="http://landsat-ds.eo.esa.int/metadata/LANDSAT_ETM/2000/01/20/LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4.BP.PNG">
      <atom:type>image/png</atom:type>
      <dct:title>Quicklook</dct:title>
   </atom:Link>
   <atom:Link rdf:about="http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&amp;recordSchema=server-choice">
      <dct:title>Atom format</dct:title>
      <atom:type>application/atom+xml</atom:type>
   </atom:Link>
   <atom:Link rdf:about="http://fedeo.esa.int/opensearch/request?maximumRecords=1&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;startDate=2000-01-01T00:00:00Z&amp;endDate=2000-01-31T00:00:00Z&amp;cloudCover=10]&amp;httpAccept=application/geo%2Bjson&amp;startRecord=1329">
      <atom:type>application/geo+json</atom:type>
      <dct:title>last results</dct:title>
   </atom:Link>
   <atom:Link rdf:about="http://fedeo.esa.int/opensearch/request/?httpAccept=application/gml%2Bxml&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;uid=LS07_RNSG_ETM_GTC_1P_20000120T121602_20000120T121631_004076_0216_0020_E2A4&amp;recordSchema=om">
      <dct:title>O&amp;M 1.1 metadata</dct:title>
      <atom:type>application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.1</atom:type>
   </atom:Link>
   <atom:Link rdf:about="http://fedeo.esa.int/opensearch/request?maximumRecords=1&amp;parentIdentifier=LANDSAT.ETM.GTC&amp;startDate=2000-01-01T00:00:00Z&amp;endDate=2000-01-31T00:00:00Z&amp;cloudCover=10]&amp;httpAccept=application/geo%2Bjson&amp;startRecord=1">
      <dct:title>first results</dct:title>
      <atom:type>application/geo+json</atom:type>
   </atom:Link>
   <atom:Link rdf:about="http://www.opengis.net/spec/owc-geojson/1.0/req/core"/>
</rdf:RDF>


 

D.1.3 Example 3: EO Collections (OGC 14-055r2 and OGC 17-003r2)

The examples in the current section return "features" which have properties defined in OGC 14-055r2 and OGC 17-003r2 simultaneously.  Properties from these two specifications combined allow representing the mandatory properties of Earth Observation collections as required by the NASA UMM-C (Unified Metadata Model for Collections).

D.1.3.1 GeoJSON


{
   "type": "FeatureCollection",
   "id": "http://fedeo.esa.int/opensearch/request?startRecord=1&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat",
   "totalResults": 1,
   "startIndex": 1,
   "itemsPerPage": 10,
   "queries": {
      "request": [
         {
           "dc:type": "collection",
           "eo:platform": "landsat",
           "count": 10,
           "searchTerms": "ESA LDS",
           "startIndex": 1,
           "sru:recordSchema": "server-choice"
         }
      ]
   },
   "properties": {
      "title": "FEDEO Clearinghouse - Search Response",
      "creator": "FEDEO Clearinghouse",
      "authors": [
         {
           "type": "Agent",
           "name": "FEDEO Clearinghouse",
           "email": "eohelp@eo.esa.int"
         }
      ],
      "updated": "2017-09-26T11:27:19Z",
      "lang": "en",
      "rights": "Copyright 2016-2017, European Space Agency",
      "links": {
         "profiles": [
           {
              "href": "http://www.opengis.net/spec/owc-geojson/1.0/req/core"
           },
           {
              "href": "http://www.opengis.net/spec/eo-geojson/1.0/req/core"
           },
           {
              "href": "http://www.opengis.net/spec/os-geojson/1.0/req/core"
           }
         ],
         "first": [
           {
              "href": "http://fedeo.esa.int/opensearch/request?&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat&startRecord=1&status=2,0",
               "type": "application/geo+json",
              "title": "first results"
           }
         ],
         "last": [
           {
              "href": "http://fedeo.esa.int/opensearch/request?&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat&startRecord=1&status=2,0",
              "type": "application/geo+json",
              "title": "last results"
           }
         ],
         "search": [
           {
              "href": "http://fedeo.esa.int/opensearch/description.xml",
              "type": "application/opensearchdescription+xml",
              "title": "search"
           }
         ]
      }
   },
   "features": [
      {
         "type": "Feature",
         "id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC",
         "geometry": {
           "type": "Polygon",
           "coordinates": [
              [
                 [
                    -180,
                    -90
                 ],
                 [
                    180,
                    -90
                 ],
                 [
                    180,
                    90
                 ],
                 [
                    -180,
                    90
                 ],
                 [
                    -180,
                    -90
                 ]
              ]
           ]
         },
         "properties": {
           "title": "LANDSAT 7 ETM+ (Enhanced Thematic Mapper Plus) Geolocated Terrain Corrected Systematic processing (LANDSAT.ETM.GTC)",
           "identifier": "LANDSAT.ETM.GTC",
           "abstract": "This dataset contains all the Landsat 7 Enhanced Thematic Mapper high-quality ortho-rectified L1T dataset over Kiruna, Maspalomas and Matera visibility masks. The Landsat 7 ETM+ scenes typically covers 185 x 170 km. A standard full scene is nominally centred on the intersection between a Path and Row (the actual image centre can vary by up to 100m). Each band requires 50MB (uncompressed), and Band 8 requires 200MB (panchromatic band with resolution of 15m opposed to 30m).",
           "date": "1999-07-01T00:00:00Z/2003-12-31T00:00:00Z",
           "updated": "1999-07-01T00:00:00Z",
           "status": "ARCHIVED",
           "categories": [
              {
                 "term": "http://www.eionet.europa.eu/gemet/concept/3650",
                 "label": "Geology"
              },
              {
                 "term": "http://gcmdservices.gsfc.nasa.gov/kms/concept/03f0c0a3-04a7-4ef8-8ec0-3c2266510815",
                 "label": "Science Keywords > Earth Science > Spectral/Engineering > Visible Wavelengths > Visible Imagery"
              },
              {
                 "term": "http://gcmdservices.gsfc.nasa.gov/kms/concept/c7a09e9f-3c99-4b31-a521-313c379ba2b4",
                 "label": "LANDSAT-7"
              }
           ],
           "links": {
              "alternates": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC&recordSchema=server-choice",
                    "type": "application/atom+xml",
                    "title": "Atom format"
                 },
                 {
                    "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19139-2%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC&recordSchema=iso19139-2",
                    "type": "application/vnd.iso.19139-2+xml",
                    "title": "ISO 19139-2 metadata"
                 }
              ],
              "describedby": [
                 {
                    "href": "https://earth.esa.int/web/guest/data-access/browse-data-products/-/asset_publisher/y8Qb/content/landsat-7-etm-enhanced-thematic-mapper-plus-geolocated-terrain-corrected-systematic-processing-over-kiruna-and-masplomas",
                    "type": "text/html",
                    "title": "Described by"
                 }
              ],
              "search": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC&sensorType=OPTICAL&startDate=1999-07-01T00:00:00Z&endDate=2003-12-31T00:00:00Z",
                    "type": "application/opensearchdescription+xml"
                 }
              ],
              "previews": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/images/esa.png",
                    "type": "image/png",
                    "title": "Quicklook"
                 }
              ]
           },
           "acquisitionInformation": [
              {
                 "platform": {
                    "id": "http://gcmdservices.gsfc.nasa.gov/kms/concept/c7a09e9f-3c99-4b31-a521-313c379ba2b4",
                    "platformShortName": "Landsat",
                    "platformSerialIdentifier": "7"
                 },
                 "instrument": {
                    "id": "http://gcmdservices.gsfc.nasa.gov/kms/concept/4dbe7764-a2ea-4a19-b754-696c35ac3205",
                    "instrumentShortName": "ETM",
                    "sensorType": "OPTICAL"
                 }
              }
           ],
           "productInformation": {
              "availabilityTime": "2004-01-07T11:12:58Z",
              "version": "C001",
              "processingCenter": "PDS",
              "processingLevel": "2",
              "referenceSystemIdentifier": "4326"
           }
         }
      }
   ]
}


 

D.1.3.2 JSON-LD (Compacted)

The example below is identical to the example in the previous section, only a @context property is added.


{
   "@context": [
      "http://schemas.opengis.net/os-geojson/1.0/os-geojson.jsonld",
      {
         "features": {
           "@id": "gj:features",
           "@context": "http://schemas.opengis.net/eo-geojson/1.0/eo-geojson.jsonld"
         }
      }
   ],
 
   "type": "FeatureCollection",
  
   … same content as example in previous section …
  
}


 

D.1.3.3 JSON-LD (Expanded)

 


{
   "@context": {
      "xsd": "http://www.w3.org/2001/XMLSchema#",
      "dc": "http://purl.org/dc/elements/1.1/",
      "dct": "http://purl.org/dc/terms/",
      "dcat": "http://www.w3.org/ns/dcat#",
      "atom": "http://www.w3.org/2005/Atom/",
      "skos": "http://www.w3.org/2004/02/skos/core#",
      "iana": "http://www.iana.org/assignments/relation/",
      "foaf": "http://xmlns.com/foaf/0.1/",
      "eop": "http://www.opengis.net/ont/eo-geojson/1.0/",
      "owc": "http://www.opengis.net/ont/owc/1.0/",
      "gj": "https://purl.org/geojson/vocab#",
      "gsp": "http://www.opengis.net/ont/geosparql#",
      "os": "http://a9.com/-/spec/opensearch/1.1/",
      "ical": "http://www.w3.org/2002/12/cal/ical#",
      "media": "http://search.yahoo.com/mrss/",
      "eo": "http://a9.com/-/opensearch/extensions/eo/1.0/",
      "sru": "http://a9.com/-/opensearch/extensions/sru/2.0/",
      "geo": "http://a9.com/-/opensearch/extensions/geo/1.0/",
      "time": "http://a9.com/-/opensearch/extensions/time/1.0/"
   },
   "@id": "http://fedeo.esa.int/opensearch/request?startRecord=1&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat",
   "@type": "gj:FeatureCollection",
   "os:itemsPerPage": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 10
   },
   "os:queries": {
      "os:request": {
         "eo:platform": "landsat",
         "sru:recordSchema": "server-choice",
         "os:count": 10,
         "os:searchTerms": "ESA LDS",
         "os:startIndex": {
           "@type": "xsd:nonNegativeInteger",
           "@value": 1
         },
         "dc:type": "collection"
      }
   },
   "os:startIndex": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 1
   },
   "os:totalResults": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 1
   },
   "dct:creator": [
      {
         "@type": "foaf:Agent",
         "foaf:mbox": "eohelp@eo.esa.int",
         "foaf:name": "FEDEO Clearinghouse"
      },
      "FEDEO Clearinghouse"
   ],
   "dct:language": {
      "@id": "http://id.loc.gov/vocabulary/iso639-1/en"
   },
   "dct:modified": "2017-09-26T11:27:19Z",
   "dct:rights": "Copyright 2016-2017, European Space Agency",
   "dct:title": "FEDEO Clearinghouse - Search Response",
   "owc:links": {
      "iana:first": {
         "@id": "http://fedeo.esa.int/opensearch/request?&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat&startRecord=1&status=2,0",
         "dct:title": "first results",
         "atom:type": "application/geo+json"
      },
      "iana:last": {
         "@id": "http://fedeo.esa.int/opensearch/request?&maximumRecords=10&query=ESA%20LDS&httpAccept=application/geo%2Bjson&platform=landsat&startRecord=1&status=2,0",
         "dct:title": "last results",
         "atom:type": "application/geo+json"
      },
      "iana:profile": [
         {
           "@id": "http://www.opengis.net/spec/owc-geojson/1.0/req/core"
         },
         {
           "@id": "http://www.opengis.net/spec/eo-geojson/1.0/req/core"
         },
         {
           "@id": "http://www.opengis.net/spec/os-geojson/1.0/req/core"
         }
      ],
      "iana:search": {
         "@id": "http://fedeo.esa.int/opensearch/description.xml",
         "dct:title": "search",
         "atom:type": "application/opensearchdescription+xml"
      }
   },
   "gj:features": {
      "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC",
      "@type": "gj:Feature",
      "dct:date": "1999-07-01T00:00:00Z/2003-12-31T00:00:00Z",
      "dct:description": "This dataset contains all the Landsat 7 Enhanced Thematic Mapper high-quality ortho-rectified L1T dataset over Kiruna, Maspalomas and Matera visibility masks. The Landsat 7 ETM+ scenes typically covers 185 x 170 km. A standard full scene is nominally centred on the intersection between a Path and Row (the actual image centre can vary by up to 100m). Each band requires 50MB (uncompressed), and Band 8 requires 200MB (panchromatic band with resolution of 15m opposed to 30m).",
      "dct:identifier": "LANDSAT.ETM.GTC",
      "dct:modified": "1999-07-01T00:00:00Z",
      "dct:title": "LANDSAT 7 ETM+ (Enhanced Thematic Mapper Plus) Geolocated Terrain Corrected Systematic processing (LANDSAT.ETM.GTC)",
      "eop:acquisitionInformation": {
         "eop:instrument": {
           "@id": "http://gcmdservices.gsfc.nasa.gov/kms/concept/4dbe7764-a2ea-4a19-b754-696c35ac3205",
           "eop:instrumentShortName": "ETM",
           "eop:sensorType": {
              "@id": "eop:OPTICAL"
           }
         },
         "eop:platform": {
           "@id": "http://gcmdservices.gsfc.nasa.gov/kms/concept/c7a09e9f-3c99-4b31-a521-313c379ba2b4",
           "eop:platformSerialIdentifier": "7",
           "eop:platformShortName": "Landsat"
         }
      },
      "eop:productInformation": {
         "eop:availabilityTime": "2004-01-07T11:12:58Z",
         "eop:processingCenter": "PDS",
         "eop:processingLevel": "2",
         "eop:referenceSystemIdentifier": "4326",
         "eop:version": "C001"
      },
      "eop:status": {
         "@id": "eop:ARCHIVED"
      },
      "owc:links": {
         "iana:alternate": [
           {
              "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/atom%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC&recordSchema=server-choice",
               "dct:title": "Atom format",
              "atom:type": "application/atom+xml"
           },
           {
              "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19139-2%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=LANDSAT.ETM.GTC&recordSchema=iso19139-2",
              "dct:title": "ISO 19139-2 metadata",
              "atom:type": "application/vnd.iso.19139-2+xml"
           }
         ],
         "iana:describedby": {
           "@id": "https://earth.esa.int/web/guest/data-access/browse-data-products/-/asset_publisher/y8Qb/content/landsat-7-etm-enhanced-thematic-mapper-plus-geolocated-terrain-corrected-systematic-processing-over-kiruna-and-masplomas",
           "dct:title": "Described by",
            "atom:type": "text/html"
         },
         "iana:icon": {
           "@id": "http://fedeo.esa.int/opensearch/images/esa.png",
           "dct:title": "Quicklook",
           "atom:type": "image/png"
         },
         "iana:search": {
           "@id": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=LANDSAT.ETM.GTC&sensorType=OPTICAL&startDate=1999-07-01T00:00:00Z&endDate=2003-12-31T00:00:00Z",
           "atom:type": "application/opensearchdescription+xml"
         }
      },
      "dcat:theme": [
         {
           "@id": "http://www.eionet.europa.eu/gemet/concept/3650",
           "skos:prefLabel": "Geology"
         },
         {
           "@id": "http://gcmdservices.gsfc.nasa.gov/kms/concept/03f0c0a3-04a7-4ef8-8ec0-3c2266510815",
           "skos:prefLabel": "Science Keywords > Earth Science > Spectral/Engineering > Visible Wavelengths > Visible Imagery"
         },
         {
           "@id": "http://gcmdservices.gsfc.nasa.gov/kms/concept/c7a09e9f-3c99-4b31-a521-313c379ba2b4",
           "skos:prefLabel": "LANDSAT-7"
         }
      ],
      "gj:geometry": {
         "@type": "gj:Polygon",
         "gj:coordinates": [
           -180,
           -90,
           180,
           -90,
           180,
           90,
           -180,
           90,
           -180,
           -90
         ]
      }
   }
}


D.2 Exception Response Examples

D.2.1 Example 1: Fatal Exceptions

D.2.1.1 GeoJSON


{
   "type": "ExceptionReport",
   "exceptions": [
      {
         "type": "Exception",
         "exceptionCode": "http://www.opengis.net/ows/2.0#InvalidParameterValue",
         "exceptionText": "Media type application//geo+json is not supported for collection RSAT2_NRT",
         "locator": "httpAccept parameter"
      },
     {
         "type": "Exception",
         "exceptionCode": "http://www.opengis.net/ows/2.0#InvalidParameterValue",
         "exceptionText": "{time:end} must be later than {time:start}.",
         "locator": "{time:end} parameter"
      }
   ]
}


 

D.2.1.2 GeoJSON-LD (Compacted)


{
   "@context": "http://schemas.opengis.net/os-geojson/1.0/os-geojson-11.jsonld",
 
   "type": "ExceptionReport",
   "exceptions": [
      {
         "type": "Exception",
         "exceptionCode": "http://www.opengis.net/ows/2.0#InvalidParameterValue",
         "exceptionText": "Media type application//geo+json is not supported for collection RSAT2_NRT",
         "locator": "httpAccept parameter"
      },
      {
         "type": "Exception",
         "exceptionCode": "http://www.opengis.net/ows/2.0#InvalidParameterValue",
         "exceptionText": "{time:end} must be later than {time:start}.",
         "locator": "{time:end} parameter"
      }
   ]
}


 

D.2.1.3 GeoJSON-LD (Expanded)


{
   "@context": {
      "sru": "http://docs.oasis-open.org/ns/search-ws/sruResponse/"
   },
   "@type": "sru:Diagnostics",
   "sru:diagnostics": [
      {
         "@type": "sru:Diagnostic",
         "sru:details": "httpAccept parameter",
         "sru:message": "Media type application//geo+json is not supported for collection RSAT2_NRT",
         "sru:uri": "http://www.opengis.net/ows/2.0#InvalidParameterValue"
      },
      {
         "@type": "sru:Diagnostic",
         "sru:details": "{time:end} parameter",
         "sru:message": "{time:end} must be later than {time:start}.",
         "sru:uri": "http://www.opengis.net/ows/2.0#InvalidParameterValue"
      }
   ]
}


 

D.2.2 Example 2: Non-Fatal Exceptions

D.2.2.1 GeoJSON

 


{
   "type": "FeatureCollection",
   "id": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&httpAccept=application/geo%2Bjson&organisationName=VITO",
   "totalResults": 56,
   "startIndex": 1,
   "itemsPerPage": 1,
   "queries": {
      "request": [
         {
           "eo:organisationName": "VITO",
           "count": 1,
           "sru:recordSchema": "server-choice"
         }
      ]
   },
   "properties": {
      "title": "FEDEO Clearinghouse - Search Response",
      "authors": [
         {
           "type": "Agent",
           "name": "FEDEO Clearinghouse",
           "email": "eohelp@eo.esa.int"
         }
      ],
      "updated": "2017-12-21T09:20:42Z",
      "lang": "en",
      "rights": "Copyright 2016-2017, European Space Agency",
      "links": {
         "profiles": [
           {
              "href": "http://www.opengis.net/spec/owc-geojson/1.0/req/core"
           }
         ],
         "first": [
           {
              "href": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&httpAccept=application/geo%2Bjson&organisationName=VITO&startRecord=1&status=56,0",
              "type": "application/geo+json",
              "title": "first results"
           }
         ],
         "next": [
           {
              "href": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&httpAccept=application/geo%2Bjson&organisationName=VITO&startRecord=2&status=56,0",
              "type": "application/geo+json",
              "title": "next results"
           }
         ],
         "last": [
           {
              "href": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&httpAccept=application/geo%2Bjson&organisationName=VITO&startRecord=56&status=56,0",
              "type": "application/geo+json",
              "title": "last results"
           }
         ],
         "search": [
           {
              "href": "http://fedeo.esa.int/opensearch/description.xml",
              "type": "application/opensearchdescription+xml",
              "title": "search"
           }
         ]
      }
   },
   "features": [
      {
         "type": "Feature",
         "id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=EOP%3AVITO%3APROBAV_S10-TOC_333M_V001",
         "geometry": {
           "type": "Polygon",
           "coordinates": [
              [
                 [
                    -180,
                    -56
                 ],
                 [
                    180,
                    -56
                 ],
                 [
                    180,
                    75
                 ],
                 [
                    -180,
                    75
                 ],
                 [
                    -180,
                    -56
                 ]
              ]
           ]
         },
         "properties": {
           "title": "PROBA-V S10 TOC 300 m: Decadal synthesis of S1’s as Maximum Value Compositing (MVC)",
           "identifier": "EOP:VITO:PROBAV_S10-TOC_333M_V001",
           "abstract": "Level 3 data products are variables mapped on uniform space-time grid scales and are the result of combining multiple scenes (e.g.,  S1/S10) to cover the user’s region of interest.",
           "date": "2013-10-16T00:00:00Z/2018-12-31T00:00:00Z",
           "updated": "2013-10-16T00:00:00Z",
           "links": {
              "alternates": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19139-2%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=EOP%3AVITO%3APROBAV_S10-TOC_333M_V001&recordSchema=iso19139-2",
                    "type": "application/vnd.iso.19139-2+xml",
                    "title": "ISO 19139-2 metadata"
                 }
              ],
              "search": [
                 {
                    "href": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=EOP:VITO:PROBAV_S10-TOC_333M_V001&startDate=2013-10-16T00:00:00&endDate=2018-12-31T00:00:00",
                    "type": "application/opensearchdescription+xml"
                 }
              ]
           }
         },
         "exceptions": [
           {
              "type": "Exception",
              "exceptionCode": "http://www.opengis.net/ows/2.0#OptionNotSupported",
              "exceptionText": "Search by {eo:organisationName} is not supported by CMR endpoint.  Only FedEO results returned.",
              "locator": "{eo:organisationName} parameter"
           }
         ]
      }
   ]
}


D.2.2.2 GeoJSON-LD (Compacted)

The example below is identical to the example in the previous section, only a @context property is added.


{
   "@context": "http://schemas.opengis.net/os-geojson/1.0/os-geojson.jsonld",
     
   "type": "FeatureCollection",
  
   … same content as example in previous section …
  
}


 

D.2.2.3 GeoJSON-LD (Expanded)

 


{
   "@context": {
      "dct": "http://purl.org/dc/terms/",
      "atom": "http://www.w3.org/2005/Atom/",
      "iana": "http://www.iana.org/assignments/relation/",
      "os": "http://a9.com/-/spec/opensearch/1.1/",
      "owc": "http://www.opengis.net/ont/owc/1.0/",
      "gj": "https://purl.org/geojson/vocab#",
      "gsp": "http://www.opengis.net/ont/geosparql#",
      "vcard": "http://www.w3.org/2006/vcard/ns#",
      "foaf": "http://xmlns.com/foaf/0.1/",
      "skos": "http://www.w3.org/2004/02/skos/core#",
      "dcat": "http://www.w3.org/ns/dcat#",
      "xsd": "http://www.w3.org/2001/XMLSchema#",
      "sru": "http://docs.oasis-open.org/ns/search-ws/sruResponse/",
      "dc": "http://purl.org/dc/elements/1.1/",
      "eo": "http://a9.com/-/opensearch/extensions/eo/1.0/",
      "geo": "http://a9.com/-/opensearch/extensions/geo/1.0/",
      "time": "http://a9.com/-/opensearch/extensions/time/1.0/"
   },
   "@id": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&httpAccept=application/geo%2Bjson&organisationName=VITO",
   "@type": "gj:FeatureCollection",
   "os:itemsPerPage": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 1
   },
   "os:queries": {
      "os:request": {
         "eo:organisationName": "VITO",
         "http://a9.com/-/opensearch/extensions/sru/2.0/recordSchema": "server-choice",
         "os:count": 1
      }
   },
   "os:startIndex": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 1
   },
   "os:totalResults": {
      "@type": "xsd:nonNegativeInteger",
      "@value": 56
   },
   "dct:creator": {
      "@type": "foaf:Agent",
      "foaf:mbox": "eohelp@eo.esa.int",
      "foaf:name": "FEDEO Clearinghouse"
   },
   "dct:language": {
      "@id": "http://id.loc.gov/vocabulary/iso639-1/en"
   },
   "dct:modified": "2017-12-21T09:20:42Z",
   "dct:rights": "Copyright 2016-2017, European Space Agency",
   "dct:title": "FEDEO Clearinghouse - Search Response",
   "owc:links": {
      "iana:first": {
         "@id": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&httpAccept=application/geo%2Bjson&organisationName=VITO&startRecord=1&status=56,0",
         "dct:title": "first results",
         "atom:type": "application/geo+json"
      },
      "iana:last": {
         "@id": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&httpAccept=application/geo%2Bjson&organisationName=VITO&startRecord=56&status=56,0",
         "dct:title": "last results",
         "atom:type": "application/geo+json"
      },
      "iana:next": {
         "@id": "http://fedeo.esa.int/opensearch/request?maximumRecords=1&httpAccept=application/geo%2Bjson&organisationName=VITO&startRecord=2&status=56,0",
         "dct:title": "next results",
         "atom:type": "application/geo+json"
      },
      "iana:profile": {
         "@id": "http://www.opengis.net/spec/owc-geojson/1.0/req/core"
      },
      "iana:search": {
         "@id": "http://fedeo.esa.int/opensearch/description.xml",
         "dct:title": "search",
         "atom:type": "application/opensearchdescription+xml"
      }
   },
   "gj:features": {
      "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/geo%2Bjson&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=EOP%3AVITO%3APROBAV_S10-TOC_333M_V001",
      "@type": "gj:Feature",
      "sru:diagnostics": {
         "@type": "sru:Diagnostic",
         "sru:details": "{eo:organisationName} parameter",
         "sru:message": "Search by {eo:organisationName} is not supported by CMR endpoint.  Only FedEO results returned.",
         "sru:uri": "http://www.opengis.net/ows/2.0#OptionNotSupported"
      },
      "dct:date": "2013-10-16T00:00:00Z/2018-12-31T00:00:00Z",
      "dct:description": "Level 3 data products are variables mapped on uniform space-time grid scales and are the result of combining multiple scenes (e.g.,  S1/S10) to cover the user’s region of interest.",
      "dct:identifier": "EOP:VITO:PROBAV_S10-TOC_333M_V001",
      "dct:modified": "2013-10-16T00:00:00Z",
      "dct:title": "PROBA-V S10 TOC 300 m: Decadal synthesis of S1’s as Maximum Value Compositing (MVC)",
      "owc:links": {
         "iana:alternate": {
           "@id": "http://fedeo.esa.int/opensearch/request/?httpAccept=application/vnd.iso.19139-2%2Bxml&parentIdentifier=EOP%3AESA%3AFEDEO%3ACOLLECTIONS&uid=EOP%3AVITO%3APROBAV_S10-TOC_333M_V001&recordSchema=iso19139-2",
           "dct:title": "ISO 19139-2 metadata",
           "atom:type": "application/vnd.iso.19139-2+xml"
         },
         "iana:search": {
           "@id": "http://fedeo.esa.int/opensearch/description.xml?parentIdentifier=EOP:VITO:PROBAV_S10-TOC_333M_V001&startDate=2013-10-16T00:00:00&endDate=2018-12-31T00:00:00",
           "atom:type": "application/opensearchdescription+xml"
         }
      },
      "gj:geometry": {
         "@type": "gj:Polygon",
         "gj:coordinates": [
           -180,
           -56,
           180,
           -56,
           180,
           75,
           -180,
           75,
           -180,
           -56
         ]
      }
   }
}


Annex :    JSON Schemas (Normative)

E.1 Schemas for GeoJSON validation

JSON Schema [OR24] representation (Draft 04) is used to define the schemas.  This specification is supported by several tools (including Altova XML Spy 2016, JSONBuddy 3.5 and also Web-based tools[23]) and is also used to define data types in the OpenAPI specification[24].  It does not allow to easily model composition of schemas or inheritance without relaxing the schemas.  Therefore, the property "additionalProperties" is set to true in some schema definitions to allow using the "allOf" operator to model inheritance. 

The schemas below assume that numbers are not surrounded by double quotes as per the JSON Style Guidelines [OR16].

 


{
   "$schema": "http://json-schema.org/draft-04/schema#",
   "title": "GeoJSON encoding of OpenSearch Response",
   "description": "Definition of document with OpenSearch Response in GeoJSON encoding.  Note that numbers in the instance should not be surrounded by double-quotes to validate against this schema. ",
   "$ref": "#/definitions/FeatureCollection",
   "definitions": {
 


 

E.1.1 Definitions/Links

 


      "Links": {
         "title": "Links",
         "description": "OGC 14-055r2",
         "type": "object",
         "properties": {
           "type": {
              "type": "string",
              "enum": [
                 "Links"
              ]
           }
         },
         "patternProperties": {
           "^(profiles|alternates|via|related)$": {
              "description": "OGC 14-055r2",
              "type": "array",
              "minItems": 1,
              "items": {
                 "$ref": "http://schemas.opengis.net/os-geojson/1.0/owc-geojson-schema.json#/definitions/Link"
              }
           },
           "^(first|last|previous|next)$": {
              "type": "array",
              "minItems": 1,
              "items": {
                 "$ref": "http://schemas.opengis.net/os-geojson/1.0/owc-geojson-schema.json#/definitions/Link"
              }
           },
           "^(search|describedby)$": {
              "type": "array",
              "minItems": 1,
              "items": {
                 "$ref": "http://schemas.opengis.net/os-geojson/1.0/owc-geojson-schema.json#/definitions/Link"
              }
           }
         },
         "additionalProperties": {
           "type": "array",
           "minItems": 1,
           "items": {
              "$ref": "http://schemas.opengis.net/os-geojson/1.0/owc-geojson-schema.json#/definitions/Link"
           }
         }
      },


E.1.2 Definitions/Properties

 


      "Properties": {
         "title": "Properties",
         "type": "object",
         "allOf": [
           {
              "type": "object",
              "properties": {
                 "lang": {
                    "description": "OGC 14-055r2",
                    "type": "string",
                    "minLength": 2
                 },
                 "subtitle": {
                    "description": "OGC 14-055r2",
                    "type": "string"
                 },
                 "creator": {
                    "description": "OGC 14-055r2",
                    "type": "string"
                 },
                 "links": {
                    "$ref": "#/definitions/Links"
                 },
                 "generator": {
                    "$ref": "http://schemas.opengis.net/os-geojson/1.0/owc-geojson-schema.json#/definitions/Agent"
                 }
              },
              "required": [
                 "lang",
                 "links"
              ]
           },
           {
              "$ref": "#/definitions/CommonProperties"
           }
         ]
      },


E.1.3 Definitions/Feature

 


      "Feature": {
         "description": "GeoJSON Feature",
         "type": "object",
         "properties": {
           "type": {
              "title": "type",
              "type": "string",
              "enum": [
                 "Feature"
              ]
           },
           "id": {
              "type": "string",
              "format": "uri"
           },
           "geometry": {
              "oneOf": [
                 {
                    "$ref": "http://schemas.opengis.net/os-geojson/1.0/owc-geojson-schema.json#/definitions/Geometry"
                 },
                 {
                    "type": "null"
                 }
              ]
           },
           "bbox": {
              "type": "array",
              "minItems": 4,
              "maxItems": 4,
              "items": {
                 "type": "number"
              }
           },
           "properties": {
              "$ref": "#/definitions/Properties_"
           }
         },
         "required": [
           "type",
           "id",
           "properties"
         ]
      },


E.1.4 Definitions/FeatureCollection

 


      "FeatureCollection": {
         "description": "GeoJSON FeatureCollection",
         "type": "object",
         "allOf": [
           {
              "type": "object",
              "properties": {
                 "@context": {
                    "type": "string"
                 },
                 "type": {
                    "description": "OGC 14-055r2",
                    "type": "string",
                    "enum": [
                       "FeatureCollection"
                    ]
                 },
                 "id": {
                    "description": "OGC 14-055r2",
                    "type": "string",
                    "format": "uri"
                 },
                 "bbox": {
                    "type": "array"
                 },
                 "properties": {
                    "$ref": "#/definitions/Properties"
                 },
                 "features": {
                    "type": "array",
                    "minItems": 0,
                    "items": {
                       "$ref": "#/definitions/Feature"
                    }
                 },
                 "exceptions": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                       "$ref": "#/definitions/Exception"
                    }
                 }
              },
              "required": [
                 "type",
                 "id",
                 "features"
              ]
           },
           {
              "$ref": "#/definitions/ControlInformation"
           }
         ]
      },


E.1.5 Definitions/Queries

 


      "Queries": {
         "description": "Object with queries grouped by \"role\".  See also http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_Query_element",
         "type": "object",
         "properties": {
           "@context": {
              "type": "object"
           },
           "type": {
              "type": "string",
              "enum": [
                 "Queries"
              ]
           }
         },
         "patternProperties": {
           "^(request|example|correction|related|superset|subset)$": {
              "description": "OpenSearch predefined role values.",
              "type": "array",
              "minItems": 1,
              "items": {
                 "$ref": "#/definitions/Query"
              }
           }
         },
         "additionalProperties": {
           "description": "Additional role values as per http://www.opensearch.org/Specifications/OpenSearch/1.1#Role_values.",
           "type": "array",
           "minItems": 1,
           "items": {
              "$ref": "#/definitions/Query"
           }
         }
      },


E.1.6 Definitions/Query

 


      "Query": {
         "description": "OpenSearch Query element as defined at http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_Query_element.",
         "type": "object",
         "properties": {
           "type": {
              "type": "string",
              "enum": [
                 "Query"
              ]
           },
           "title": {
              "type": "string"
           },
           "totalResults": {
              "type": "integer",
              "minimum": 0
           },
           "searchTerms": {
              "type": "string"
           },
           "count": {
              "type": "integer",
              "minimum": 0
           },
           "startIndex": {
              "type": "integer",
              "minimum": 0
           },
           "startPage": {
              "type": "integer",
              "minimum": 0
           },
           "language": {
              "type": "string"
           },
           "inputEncoding": {
              "type": "string"
           },
           "outputEncoding": {
              "type": "string"
           }
         },
         "additionalProperties": {
           "title": "Search parameter",
           "description": "Remaining OpenSearch query parameters and their values.",
           "type": [
              "string",
              "number"
           ]
         }
      },


E.1.7 Definitions/ControlInformation

 


      "ControlInformation": {
         "type": "object",
         "properties": {
           "totalResults": {
              "type": "integer",
              "minimum": 0
           },
           "startIndex": {
              "type": "integer",
              "minimum": 0
           },
           "itemsPerPage": {
              "type": "integer",
              "minimum": 0
           },
           "queries": {
              "$ref": "#/definitions/Queries"
           }
         },
         "required": [
           "totalResults",
           "startIndex",
           "itemsPerPage"
         ]
      },


E.1.8 Definitions/Properties_

 


      "Properties_": {
         "type": "object",
         "allOf": [
           {
              "type": "object",
              "properties": {
                 "identifier": {
                    "type": "string"
                 },
                  "kind": {
                    "description": "dct:type",
                    "type": "string",
                    "format": "uri"
                 },
                 "abstract": {
                    "description": "OGC 14-055r2",
                    "type": "string"
                 },
                 "links": {
                    "$ref": "#/definitions/Links"
                 }
              },
              "required": [
                 "identifier"
              ]
           },
           {
              "$ref": "#/definitions/CommonProperties"
           }
         ]
      },


E.1.9 Definitions/CommonProperties

 


      "CommonProperties": {
         "type": "object",
         "properties": {
           "type": {
              "type": "string",
              "enum": [
                 "Properties"
              ]
           },
           "title": {
              "description": "OGC 14-055r2",
              "type": "string"
           },
           "updated": {
              "description": "OGC 14-055r2",
              "type": "string",
              "format": "date-time"
           },
           "date": {
              "description": "OGC 14-055r2",
              "type": "string"
           },
           "publisher": {
              "description": "OGC 14-055r2",
              "type": "string"
           },
           "rights": {
              "description": "OGC 14-055r2",
              "type": "string"
           },
           "authors": {
              "description": "OGC 14-055r2",
              "type": "array",
              "minItems": 1,
              "items": {
                 "$ref": "http://schemas.opengis.net/os-geojson/1.0/owc-geojson-schema.json#/definitions/Agent"
              }
           },
           "categories": {
              "description": "OGC 14-055r2",
              "type": "array",
              "minItems": 1,
              "items": {
                 "$ref": "http://schemas.opengis.net/os-geojson/1.0/owc-geojson-schema.json#/definitions/Category"
              }
           }
         },
         "required": [
           "title",
           "updated"
         ]
      },


E.1.10 Definitions/Exception

 


      "Exception": {
         "description": "OGC 06-121r9",
         "type": "object",
         "properties": {
           "exceptionCode": {
              "description": "Represents ows:exceptionCode",
              "type": "string",
              "format": "uri"
           },
           "exceptionText": {
              "description": "Represents ows:exceptionText",
              "type": "string"
           },
           "locator": {
              "description": "Represents ows:locator.",
              "type": "string"
           }
         },
         "required": [
           "exceptionCode"
         ],
         "additionalProperties": false
      },


E.1.11 Definitions/ExceptionReport

 


      "ExceptionReport": {
         "description": "OGC 06-121r9",
         "type": "object",
         "properties": {
           "type": {
              "type": "string",
              "enum": [
                 "ExceptionReport"
              ]
           },
           "exceptions": {
              "type": "array",
              "items": {
                 "$ref": "#/definitions/Exception"
              }
           }
         }
      }
   }
}


E.2 Schemas for OWC GeoJSON validation

The JSON schema definitions in the current section are "imported" by the schemas presented in the previous section.  They represent a JSON Schema encoding of selected OGC 14-055r2 resources which are reused by the OGC 17-047 GeoJSON encoding without modification.

The file is available at http://schemas.opengis.net/os-geojson/1.0/owc-geojson-schema.json (See Annex G:).

 


{
   "$schema": "http://json-schema.org/draft-04/schema#",
   "title": "GeoJSON encoding of OGC 14-055r2 subset required by OGC 17-047 JSON Schema",
   "description": "Definition of OGC 14-055r2 and GeoJSON elements required by GeoJSON encoding of EO Dataset Metadata.  Note that numbers in the instance should not be surrounded by double-quotes to validate against this schema. ",
   "definitions": {


 

E.2.1 Definitions/Geometry

 


      "Point": {
         "title": "Point",
         "type": "object",
         "properties": {
           "coordinates": {
              "title": "gj:coordinates",
              "description": "One position (longitude, lattitude)",
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "items": {
                 "type": "number"
              }
           },
           "type": {
              "type": "string",
              "enum": [
                 "Point"
              ]
           }
         },
         "required": [
           "coordinates",
           "type"
         ],
         "additionalProperties": false
      },
      "MultiPoint": {
         "title": "point",
         "type": "object",
         "properties": {
           "coordinates": {
              "title": "gj:coordinates",
              "description": "Array of positions",
              "type": "array",
              "minItems": 1,
              "items": [
                 {
                    "description": "One position",
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 2,
                    "items": {
                       "type": "number"
                    }
                 }
              ],
              "additionalItems": false
           },
           "type": {
              "type": "string",
              "enum": [
                 "MultiPoint"
              ]
           }
         },
         "required": [
           "coordinates",
           "type"
         ],
         "additionalProperties": false
      },
      "LineString": {
         "title": "LineString",
         "type": "object",
         "properties": {
           "coordinates": {
              "title": "coordinates",
              "description": "Array of positions",
              "type": "array",
              "minItems": 2,
               "items": {
                 "description": "One position",
                 "type": "array",
                 "minItems": 2,
                 "maxItems": 2,
                 "items": {
                    "type": "number"
                 }
              }
           },
           "type": {
              "type": "string",
              "enum": [
                 "LineString"
              ]
           }
         },
         "required": [
           "coordinates",
           "type"
         ],
         "additionalProperties": false
      },
      "MultiLineString": {
         "title": "MultiLineString",
         "type": "object",
         "properties": {
           "coordinates": {
              "title": "coordinates",
              "description": "Array of linestring",
              "type": "array",
              "minItems": 1,
              "items": {
                 "description": "Linestring, i.e., array of positions",
                 "type": "array",
                 "minItems": 2,
                 "items": {
                    "description": "Position (longitude, lattitude)",
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 2,
                    "items": {
                       "type": "number"
                    }
                 }
              }
           },
           "type": {
              "type": "string",
              "enum": [
                 "MultiLineString"
              ]
           }
         },
         "required": [
           "coordinates",
           "type"
         ],
         "additionalProperties": false
      },
      "Polygon": {
         "title": "Polygon",
         "type": "object",
         "properties": {
           "coordinates": {
              "title": "coordinates",
              "description": "Array of linestrings",
              "type": "array",
              "minItems": 1,
              "items": {
                 "description": "Linear ring, i.e., linestring or array of positions",
                 "type": "array",
                 "minItems": 1,
                 "items": {
                    "description": "One position",
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 2,
                    "items": {
                       "type": "number"
                    }
                 }
              }
           },
           "type": {
              "type": "string",
              "enum": [
                 "Polygon"
              ]
            }
         },
         "required": [
           "coordinates",
           "type"
         ],
         "additionalProperties": false
      },
      "MultiPolygon": {
         "title": "MultiPolygon",
         "type": "object",
         "properties": {
           "coordinates": {
              "title": "coordinates",
              "description": "Array of Polygons",
              "type": "array",
              "minItems": 1,
              "items": {
                 "description": "Array of linestrings",
                 "type": "array",
                 "minItems": 1,
                 "items": {
                    "description": "Linear ring, i.e., linestring or array of positions",
                    "type": "array",
                    "items": {
                       "description": "One position",
                       "type": "array",
                       "minItems": 2,
                       "maxItems": 2,
                       "items": {
                          "type": "number"
                       }
                    }
                 }
              }
            },
           "type": {
              "type": "string",
              "enum": [
                 "MultiPolygon"
              ]
           }
         },
         "required": [
           "coordinates",
           "type"
         ],
         "additionalProperties": false
      },
      "Geometry": {
         "title": "Geometry",
         "type": "object",
         "oneOf": [
           {
              "$ref": "#/definitions/Point"
           },
           {
              "$ref": "#/definitions/MultiPoint"
           },
           {
              "$ref": "#/definitions/LineString"
           },
           {
              "$ref": "#/definitions/MultiLineString"
           },
           {
              "$ref": "#/definitions/Polygon"
           },
           {
              "$ref": "#/definitions/MultiPolygon"
           }
         ]
      },


 

E.2.2 Definitions/Agent

 


      "Agent": {
         "description": "RFC4287 §3.2 and OGC 14-055r2 §7.1.1.7, §7.1.8",
         "type": "object",
         "minProperties": 1,
         "properties": {
           "type": {
              "type": "string",
              "enum": [
                 "Agent",
                 "Person",
                 "Organization"
              ]
           },
           "name": {
              "type": "string"
           },
           "email": {
              "type": "string",
              "format": "email"
           },
           "uri": {
              "type": "string",
              "format": "uri"
           },
           "title": {
              "description": "OGC 14-055r2 §7.1.8",
              "type": "string"
           },
           "version": {
              "description": "OGC 14-055r2 §7.1.8",
              "type": "string"
           }
         }
      },


 

E.2.3 Definitions/Category

 


      "Category": {
         "description": "OGC 14-055r2 §7.1.1.15",
         "type": "object",
         "properties": {
           "type": {
              "type": "string",
              "enum": [
                 "Category"
              ]
           },
           "scheme": {
              "type": "string",
              "format": "uri"
           },
           "term": {
              "type": "string"
           },
           "label": {
              "type": "string"
           }
         },
         "required": [
           "term"
         ],
         "additionalProperties": false
      },


 

E.2.4 Definitions/Link

 


      "Link": {
         "description": "OGC 14-055r2",
         "type": "object",
         "properties": {
           "href": {
              "type": "string",
              "format": "uri"
           },
           "type": {
              "description": "MIME type",
              "type": "string"
           },
           "title": {
              "type": "string"
           },
           "length": {
              "type": "integer",
              "minimum": 0,
              "exclusiveMinimum": true
           },
           "lang": {
              "description": "RFC-3066",
              "type": "string"
           }
         },
         "required": [
           "href"
         ]
      }
   }
}


Annex :    OGC 13-026r9 to JSON Mapping

The table below maps the search parameters defined in OGC 13-026r9 [OR20] to the JSON properties defined in OGC 17-003r2 and OGC 17-084.

OpenSearch Parameter

OGC 17-084

OGC 17-003r2

eo:abstract

$.properties.abstract

 

eo:accessConstraint

$.properties.distribution.accessRights[*].label

$.properties.accessRights[*].label

 

eo:accessedFrom

 

 

eo:acquisitionStation

 

$..acquisitionParameters.acquisitionStation

eo:acquisitionSubType

 

$..acquisitionParameters.acquisitionSubType

eo:acquisitionType

 

$..acquisitionParameters.acquisitionType

eo:antennaLookDirection

 

$..acquisitionParameters.antennaLookDirection

eo:archivingCenter

 

$.properties.productInformation.archivingCenter

eo:availabilityDate

 

$.properties.available

eo:classification

 

 

eo:cloudCover

 

$.properties.productInformation.cloudCover

eo:completionTimeFromAscendingNode

 

$..acquisitionParameters.completionTimeFromAscendingNode

eo:compositeType

 

$.properties.productInformation.compositeType

eo:creationDate

 

$.properties.creationDate

eo:degree

$.properties.wasUsedBy[*].generated

 

eo:denominator (Resolution)

 

 

eo:dissemination

 

 

eo:distanceUOM (Resolution)

 

 

eo:distanceValue (Resolution)

 

 

eo:doi

$.properties.doi

$.properties.doi

eo:dopplerFrequency

 

$..acquisitionInformation[*].acquisitionParameters.dopplerFrequency

eo:hasSecurityConstraints

 

 

eo:highestLocation

 

$.properties.acquisitionInformation[*].acquisitionParameters.highestLocation

eo:illuminationAzimuthAngle

 

$..acquisitionAngles.illuminationAzimuthAngle

eo:illuminationElevationAngle

 

$..acquisitionAngles.illuminationElevationAngle

eo:illuminationZenithAngle

 

$..acquisitionAngles.illuminationZenithAngle

eo:incidenceAngleVariation

 

$..acquisitionAngles.incidenceAngleVariation

eo:instrument

$..acquisitionInformation[*].instrument.instrumentShortName

$..acquisitionInformation[*].instrument.instrumentShortName

eo:keyword

$.properties.categories

$.properties.keyword

 

eo:lastOrbitDirection

 

$.properties.acquisitionInformation[*].acquisitionParameters.lastOrbitDirection

eo:lineage

$.properties.provenance

 

eo:locationUnit

 

$.properties.acquisitionInformation[*].acquisitionParameters.locationUnit

eo:lowestLocation

 

$.properties.acquisitionInformation[*].acquisitionParameters.lowestLocation

eo:maximumIncidenceAngle

 

$..acquisitionAngles.maximumIncidenceAngle

eo:minimumIncidenceAngle

 

$..acquisitionAngles.minimumIncidenceAngle

eo:modificationDate

$.properties.updated

$.properties.updated

eo:orbitDirection

 

$.properties.acquisitionInformation[*].acquisitionParameters.orbitDirection

eo:orbitNumber

 

$..acquisitionInformation[*].acquisitionParameters.orbitNumber

eo:orbitType

$..acquisitionInformation[*].platform.orbitType

$..acquisitionInformation[*].platform.orbitType

eo:organisationName

$.properties.contactPoint[*].name

$.properties.qualifiedAttribution[*].agent[*].name

 

eo:organisationRole

$.properties.qualifiedAttribution[*].agent[*].role

 

eo:otherConstraint

 

 

eo:parentIdentifier

 

$.properties.parentIdentifier

eo:platform

$..acquisitionInformation[*].platform.platformShortName

$..acquisitionInformation[*].platform.platformShortName

eo:platformSerialIdentifier

$..acquisitionInformation[*].platform.platformSerialIdentifier

$..acquisitionInformation[*].platform.platformSerialIdentifier

eo:polarisationChannels

 

$..acquisitionInformation[*].acquisitionParameters.polarisationChannels

eo:polarisationMode

 

$..acquisitionInformation[*].acquisitionParameters.polarisationMode

eo:processingCenter

 

$.properties.productInformation.processingCenter

eo:processingDate

 

$.properties.productInformation.processingDate

eo:processingLevel

$.properties.productInformation.processingLevel

$.properties.productInformation.processingLevel

eo:processingMode

 

$.properties.productInformation.processingMode

eo:processorName

 

$.properties.productInformation.processorName

eo:productionStatus

 

$.properties.status

eo:productQualityDegradationTag

 

$..qualityInformation.qualityDegradationTag

eo:productQualityStatus

 

$..qualityInformation.qualityStatus

eo:productType

 

$.properties.productInformation.productType

eo:productVersion

 

$.properties.productInformation.productVersion

eo:publicationDate

$.properties.published

$.properties.published

eo:relativeOrbitNumber

 

$..acquisitionParameters.relativeOrbitNumber

eo:resolution

 

$..acquisitionInformation[*].acquisitionParameters.resolution

eo:sensorMode

 

$..acquisitionInformation[*].acquisitionParameters.operationalMode

eo:sensorType

$..acquisitionInformation[*].instrument.sensorType

$..acquisitionInformation[*].instrument.sensorType

eo:snowCover

 

$.properties.productInformation.snowCover

eo:specificationDate

$.properties.wasUsedBy[*].qualifiedAssociation.hadPlan.wasDerivedFrom.issued

 

eo:specificationDateType

$.properties.wasUsedBy[*].qualifiedAssociation.hadPlan.wasDerivedFrom

 

eo:specificationTitle

$.properties.wasUsedBy[*].qualifiedAssociation.hadPlan.wasDerivedFrom.title

 

eo:spectralRange

 

$..wavelengths[*].spectralRange

eo:startTimeFromAscendingNode

 

$..acquisitionParameters.startTimeFromAscendingNode

eo:swathIdentifier

 

$..acquisitionInformation[*].acquisitionParameters.swathIdentifier

eo:tileId

 

$..acquisitionParameters.tileId

eo:timeliness

$.properties.productInformation.timeliness

$.properties.productInformation.timeliness

eo:title

$.properties.title

$.properties.title

eo:topicCategory

$.properties.subject

 

eo:useLimitation

$.properties.distribution.license[*].label

$.properties.license[*].label

 

eo:wavelength

 

$..wavelengths[*].discreteWavelengths

eo:wrsLatitudeGrid

 

$..acquisitionParameters.wrsLatitudeGrid

eo:wrsLongitudeGrid

 

$..acquisitionParameters.wrsLongitudeGrid

geo:box

$.geometry

$.geometry

geo:name

 

 

geo:uid

$.properties.identifier

$.properties.identifier

os:language

$.properties.lang

$.properties.lang

os:searchTerms

$.properties.abstract

$.properties.title

$.properties.categories

$.properties.keyword

$.properties.contactPoint[*].name

 

time:end

$.properties.date

$..acquisitionInformation[*].acquisitionParameters.endingDateTime

$.properties.temporal.endingDateTime

$.properties.date

$..acquisitionInformation[*].acquisitionParameters.endingDateTime

time:start

$.properties.date

$..acquisitionInformation[*].acquisitionParameters.beginningDateTime

$.properties.temporal.beginningDateTime

$.properties.date

$..acquisitionInformation[*].acquisitionParameters.beginningDateTime

 

 

Annex :    Schemas and Examples

 

The following schemas and context files are provided in the OGC schema repository:

 

They are available at http://schemas.opengis.net/os-geojson/1.0.

 

 

Annex :    Revision History

 

Date

Version

Editor

Sections modified

Description

12/06/2017

0.0.0-0.1.0

U. Voges

All

Initial version uploaded on OGC SWG Portal pages (JSON information extracted from original OGC 13-026r9 draft which covered both Atom and GeoJSON(-LD) responses).

20/10/2017

0.2.0 Draft D6

Y. Coene

All

Major revision.

Information presented as in OGC 17-003.

JSON Schema diagrams and appendices added, tables revised.

Examples added.

27/10/2017

0.4.0 Draft D7

Y. Coene

All

Examples in Annex D: shortened.

http://schemas.opengis.net/os-geojson/1.0 used as location of .jsonld files in all examples.

Requirements /req/feature/eo-series and /req/feature/eo-dataset added with reference to OGC 17-084 and OGC 17-003.

"iana:describedby" link corrected in some examples.

21/12/2017

0.5.0 Draft D8

Y. Coene

All

Comments AD1, AD2, AD4, AD5 and AD6 from Allan Doyle received on 30/11/2017 addressed after discussion at WGISS SLT telco on 7/12/2017.  Issue AD7 with not-allowed "properties" member at GeoJSON FeatureCollection level kept unchanged until OGC 14-055r2 defines the new encoding.

 

 

 

Section 7.2.4

Annex B.2.2

Author class renamed into Agent.  foaf vocabulary used instead of vcard to encode its properties to be consistent with GeoDCAT-AP v1.0.1 (Page 68) and OGC 17-084 encoding of same information.

 

 

 

Section 7.2.1

"generator" property added in table and example.

 

 

 

Section 7.2.4

Properies from Table 8 of OGC 14-055r2 (CreatorApplication) added to Agent class.

Example of "generator" added.

 

 

 

Annex A

Missing conformance classes added.  Figure 15 updated.

 

 

 

Section 2.2

exception-report conformance class added.

 

 

 

7.4.1, Annex D.1.1

Example corrected:   Links object moved inside Properties object.  Same issue fixed in Annex D.1.1 example.

 

 

 

Annex D.2.2

Examples with non-fatal exceptions added.

24/10/2018

1.0.0 Draft D9

Y. Coene

 

 

All

§7.2

§7.2.5

All

Integrated comments from OAB and Public Comments:

-       Carl Reed (OAB Review)

-       AA-5

-       VITO-3

-       OGC-2: http://www.opengis.net/owc/1.0/ and http://www.opengis.net/eo-geojson/1.0/ ontology namespaces renamed into http://www.opengis.net/ont/owc/1.0/ and http://www.opengis.net/ont/eo-geojson/1.0/ as per OGC 12-081.

 

Remain to be done:

-       AA-6 (no action)

-       VITO-1 (no action)

-       VITO-4 (no action)

12/11/2018

1.0.0 Draft D10

Y. Coene

 

All

 

-       Annex E updated with latest version of JSON schemas.

-       Examples aligned with current OGC 17-003 (instrument/instrumentParameters).

-       DLR-11: JSON-LD 1.0 @context removed.

-       List of files added to Annex F.

07/02/2019

1.0.0 Draft D11

Y. Coene

 

All

-       OGC 17-003 and OGC 17-084 added as reference documents.

-       OR20 and OR21 references updated for OGC 13-026r9 and JSON-LD 1.1.

-       Annex F with mapping to OpenSearch parameters added.

-       instrumentParameters moved to acquisitionParameters.

-       track/frame replaced by wrsLongitudeGrid and wrsLatitudeGrid.

19/03/2019

1.0.0 Draft D12

Y. Coene

 

§ 7.4.1,

B.2.2,

E.1.8, C.1

-       "kind" property added as equivalent of dc:type from OGC 13-026r9 for which mapping was missing. 

31/07/2019

1.0.0 r1

Y. Coene

Section 3.2

Annex B.2.1

 

Annex F

All

Reference [OR21] updated to latest version.

 

JSON-LD encoding for "kind" (URI) corrected.  Section number B.2.1 corrected (was B.2.2).

OGC 17-084 column updated according to latest version of OGC 17-084.

References to OGC 17-003 replaced by OGC 17-003r2.

 

 



[1] See section 4.1 and [OR4].

[2] http://opengeospatial.org/cite

[3] More details can be found in the online documentation of Altova XMLSpy 2016 available at http://manual.altova.com/xmlspy/spyenterprise/index.html?viewconfig.htm.

[4] https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject

[5] http://ogc.standardstracker.org/show_request.cgi?id=501

[6] This property is defined in Table 8 of OGC 14-055r2.

[7] http://ogc.standardstracker.org/show_request.cgi?id=503

[8] http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_Query_element

[9] http://www.opensearch.org/Specifications/OpenSearch/1.1#Role_values

[10] http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_Query_element

[11] http://www.opensearch.org/Specifications/OpenSearch/1.1#The_.22Query.22_element_2

[12] Clients can use the sru:recordSchema OpenSearch parameter [OR20] to achieve this.

[13] The constraint that the feature has to comply with OGC 14-055r2 [NR5] to be "embeddable" is a design decision. The proposed mechanism works equally well for features that comply with [NR2] only, bt validation with the JSON Schema included in the current document will fail as it assumes mandatory properties imposed by OGC 14-055r2 are to be present.

[14] https://www.w3.org/TR/json-ld-syntax/#flattened-document-form

[15] This is a constraint in GeoJSON which requires features to be inline.  Other OGC specifications such as OGC 15-100r1 "OGC Observations and Measurements – JSON implementation" allows for arrays of sampling features mixing features identified by their "href" property only with inline or embedded features.  See also https://www.w3.org/TR/json-ld/#embedding and https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-fragID. 

[16] https://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1

[17] The proposed encoding is compliant with the Diagnostics element defined in [OR2], can be considered as part of Appendix E.2 of [OR2] and is the concrete encoding of the  XML encoding proposed in OGC 06-121r9 [NR6] (chapter 8).

[18] Uses "profile" to indicate RDF vocabulary as proposed in "Negotiating Profiles in HTTP", draft-svensson-accept-profile-00, available at http://profilenegotiation.github.io/I-D-Accept–Schema/I-D-accept-schema.

[19] Shapes Constraint Language (SHACL), W3C Recommendation 20 July 2017, https://www.w3.org/TR/shacl/.

[20] https://wiki.earthdata.nasa.gov/display/CMR/CMR+Harvesting+Best+Practices

[21] http://docs.oasis-open.org/odata/odata-json-format/v4.0/os/odata-json-format-v4.0-os.html

[22] https://json-ld.org/spec/latest/json-ld/#scoped-contexts

[23] E.g.,  https://jsonschemalint.com/#/version/draft-04/markup/json or http://www.jsonschemavalidator.net/

[24] https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md