OGC OpenSearch-EO GeoJSON(-LD) Response Encoding Standard
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.
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.
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:
. . .
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.
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):
Subject (start node, instance, entity, feature)
Predicate (verb, property, attribute, relationship, link)
Object (value, end node, non-literal values can be used as a Subject)
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
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
$.totalResults
(none)
(none)
Defined by the response
schema, for example an
$.features[*]
(GeoJSON
Feature).
In page mode:
find the 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:
+
(none)
(none)
the value of the
‘href’ attribute for the
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:
XMLSpy (
(JSON-LD 1.0).
(JSON-LD 1.1)
D.1 Nominal Response Examples
D.1.1 Example 1: EO Collections (OGC 14-055r2)
D.1.1.1 Atom
]]>
]]>
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
]]>
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.
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/">
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:
os-geojson-schema-standalone.json
os-geojson-schema.json
owc-geojson-schema.json
os-geojson.jsonld
example-1-eo-collections.json
example-1-eo-collections.jsonld
example-2-eo-products.json
example-2-eo-products.jsonld
example-3-eo-collections.json
example-3-eo-collections.jsonld
example-1-fatal-exceptions.json
example-1-fatal-exceptions.jsonld
example-2-non-fatal-exceptions.json
example-2-non-fatal-exceptions.jsonld
They are available at
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.
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
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:
and
ontology namespaces renamed into
and
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]
[3]
More details can be found in the online documentation of Altova XMLSpy 2016 available at
[4]
[5]
[6]
This property is defined in Table 8 of OGC 14-055r2.
[7]
[8]
[9]
[10]
[11]
[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]
[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
and https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-fragID.
[16]
[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]
[21]
[22]
[23]
E.g.,
or http://www.jsonschemavalidator.net/
[24]