From 5c48425e3b9f58792511880c565b9baeb03f2d0f Mon Sep 17 00:00:00 2001 From: Emmanuel Mathot Date: Fri, 30 Apr 2021 16:14:51 +0200 Subject: [PATCH 01/22] add missing projection declaration add missing projection declaration in `stac_extensions` in collection example --- examples/collection.json | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/collection.json b/examples/collection.json index 790bcf8d..1b31cdf2 100644 --- a/examples/collection.json +++ b/examples/collection.json @@ -3,6 +3,7 @@ "type": "Collection", "stac_extensions": [ "https://stac-extensions.github.io/eo/v1.0.0/schema.json", + "https://stac-extensions.github.io/projection/v1.0.0/schema.json", "https://stac-extensions.github.io/view/v1.0.0/schema.json" ], "stac_version": "1.0.0-rc.3", From 2f81fcc38e45d94e08c286e7aa2e633ae5f2b8b9 Mon Sep 17 00:00:00 2001 From: jjrom Date: Fri, 30 Apr 2021 17:48:38 +0200 Subject: [PATCH 02/22] Allow empty catalogs --- catalog-spec/catalog-spec.md | 2 +- catalog-spec/json-schema/catalog.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/catalog-spec/catalog-spec.md b/catalog-spec/catalog-spec.md index c30eb781..038a067e 100644 --- a/catalog-spec/catalog-spec.md +++ b/catalog-spec/catalog-spec.md @@ -94,7 +94,7 @@ The following types are commonly used as `rel` types in the Link Object of a STA | child | URL to a child STAC entity (Catalog or Collection). | | item | URL to a STAC Item. | -**Note:** A link to at least one `item` or `child` (Catalog or Collection) is **REQUIRED**. +**Note:** Empty catalogs are allowed (i.e. without no `item` or `child` link). There are additional `rel` types in the [Using Relation Types](../best-practices.md#using-relation-types) best practice, but as they are more typically used in Collections, as Catalogs tend to just be used to structure STAC organization, so tend to just use diff --git a/catalog-spec/json-schema/catalog.json b/catalog-spec/json-schema/catalog.json index 052052e1..2353839c 100644 --- a/catalog-spec/json-schema/catalog.json +++ b/catalog-spec/json-schema/catalog.json @@ -27,7 +27,7 @@ "title": "Links", "type": "array", "contains": { - "description": "A link to at least one `item` or `child` is REQUIRED in Catalogs.", + "description": "A link `item` or `child`.", "type": "object", "properties": { "rel": { From 34a7c0e408dfa75252e3fc34c785a626d6405647 Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Mon, 3 May 2021 10:06:17 -0700 Subject: [PATCH 03/22] fixed schema to reflect intent, update language --- catalog-spec/catalog-spec.md | 3 ++- catalog-spec/json-schema/catalog.json | 16 ---------------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/catalog-spec/catalog-spec.md b/catalog-spec/catalog-spec.md index 038a067e..b8064f00 100644 --- a/catalog-spec/catalog-spec.md +++ b/catalog-spec/catalog-spec.md @@ -94,7 +94,8 @@ The following types are commonly used as `rel` types in the Link Object of a STA | child | URL to a child STAC entity (Catalog or Collection). | | item | URL to a STAC Item. | -**Note:** Empty catalogs are allowed (i.e. without no `item` or `child` link). +**Note:** A link to at least one `item` or `child` (Catalog or Collection) is **RECOMMENDED**, but empty catalogs are +allowed if there is an intent to populate it or its children were removed. There are additional `rel` types in the [Using Relation Types](../best-practices.md#using-relation-types) best practice, but as they are more typically used in Collections, as Catalogs tend to just be used to structure STAC organization, so tend to just use diff --git a/catalog-spec/json-schema/catalog.json b/catalog-spec/json-schema/catalog.json index 2353839c..7b190a4c 100644 --- a/catalog-spec/json-schema/catalog.json +++ b/catalog-spec/json-schema/catalog.json @@ -22,22 +22,6 @@ "type": { "title": "Type of STAC entity", "const": "Catalog" - }, - "links": { - "title": "Links", - "type": "array", - "contains": { - "description": "A link `item` or `child`.", - "type": "object", - "properties": { - "rel": { - "enum": [ - "child", - "item" - ] - } - } - } } } } From 4b77ef8b7ecfd0d02031a1bac6a10fb0821644f3 Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Mon, 3 May 2021 10:15:04 -0700 Subject: [PATCH 04/22] updated changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8c64c9d..668d43f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +### Changed + +- An empty Catalog is now allowed, removed the requirement that it must have a child or item link. ([#1115](https://github.com/radiantearth/stac-spec/issues/1115)) + ## [v1.0.0-rc.3] - 2021-04-29 ### Added From 56205ea4644bfe8698e7175ba6e7a64baac9d978 Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Mon, 3 May 2021 11:19:42 -0700 Subject: [PATCH 05/22] updated version numbers / changelog --- CHANGELOG.md | 3 +++ catalog-spec/json-schema/catalog-core.json | 4 ++-- catalog-spec/json-schema/catalog.json | 2 +- collection-spec/json-schema/collection.json | 2 +- examples/catalog.json | 4 ++-- examples/collection-only/collection-with-schemas.json | 2 +- examples/collection-only/collection.json | 2 +- examples/collection.json | 4 ++-- examples/collectionless-item.json | 2 +- examples/core-item.json | 2 +- examples/extended-item.json | 2 +- examples/extensions-collection/collection.json | 2 +- examples/extensions-collection/proj-example/proj-example.json | 2 +- examples/simple-item.json | 2 +- item-spec/json-schema/basics.json | 2 +- item-spec/json-schema/datetime.json | 2 +- item-spec/json-schema/instrument.json | 2 +- item-spec/json-schema/item.json | 4 ++-- item-spec/json-schema/licensing.json | 2 +- item-spec/json-schema/provider.json | 2 +- package.json | 2 +- 21 files changed, 27 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 668d43f5..c1e70bc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +## [v1.0.0-rc.4] - 2021-05-03 + ### Changed - An empty Catalog is now allowed, removed the requirement that it must have a child or item link. ([#1115](https://github.com/radiantearth/stac-spec/issues/1115)) @@ -427,6 +429,7 @@ See the [milestone 0.4.0 in the issue tracker](https://github.com/radiantearth/s Thanks @hgs-msmith, @matthewhanson, @hgs-trutherford, @rouault, @joshfix, @alkamin, @hemphillda, @jeffnaus and @fredliporace for contributing to the spec directly, and to [everyone](https://github.com/opengeospatial/wfs3hackathon/blob/master/notes/introductions.md#participants) who participated in the [Ft Collins sprint](https://github.com/radiantearth/community-sprints/tree/master/03072018-ft-collins-co) and brought great ideas. [Unreleased]: +[v1.0.0-rc.4]: [v1.0.0-rc.3]: [v1.0.0-rc.2]: [v1.0.0-rc.1]: diff --git a/catalog-spec/json-schema/catalog-core.json b/catalog-spec/json-schema/catalog-core.json index 987fe547..23a0aa6f 100644 --- a/catalog-spec/json-schema/catalog-core.json +++ b/catalog-spec/json-schema/catalog-core.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/catalog-spec/json-schema/catalog-core.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.4/catalog-spec/json-schema/catalog-core.json#", "title": "Common STAC Catalog + Collection Fields", "description": "This object represents the common fields shared by Catalogs and Collections", "allOf": [ @@ -22,7 +22,7 @@ "stac_version": { "title": "STAC version", "type": "string", - "const": "1.0.0-rc.3" + "const": "1.0.0-rc.4" }, "stac_extensions": { "title": "STAC extensions", diff --git a/catalog-spec/json-schema/catalog.json b/catalog-spec/json-schema/catalog.json index 7b190a4c..2366694d 100644 --- a/catalog-spec/json-schema/catalog.json +++ b/catalog-spec/json-schema/catalog.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/catalog-spec/json-schema/catalog.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.4/catalog-spec/json-schema/catalog.json#", "title": "STAC Catalog Specification", "description": "This object represents Catalogs in a SpatioTemporal Asset Catalog.", "allOf": [ diff --git a/collection-spec/json-schema/collection.json b/collection-spec/json-schema/collection.json index 942144c1..9784a377 100644 --- a/collection-spec/json-schema/collection.json +++ b/collection-spec/json-schema/collection.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/collection-spec/json-schema/collection.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.4/collection-spec/json-schema/collection.json#", "title": "STAC Collection Specification", "description": "This object represents Collections in a SpatioTemporal Asset Catalog.", "allOf": [ diff --git a/examples/catalog.json b/examples/catalog.json index 1003b20b..77cfec7c 100644 --- a/examples/catalog.json +++ b/examples/catalog.json @@ -1,7 +1,7 @@ { "id": "examples", "type": "Catalog", - "stac_version": "1.0.0-rc.3", + "stac_version": "1.0.0-rc.4", "description": "This catalog is a simple demonstration of an example catalog that is used to organize a hierarchy of collections and their items.", "links": [ { @@ -35,7 +35,7 @@ }, { "rel": "self", - "href": "https://raw.githubusercontent.com/radiantearth/stac-spec/v1.0.0-rc.3/examples/catalog.json", + "href": "https://raw.githubusercontent.com/radiantearth/stac-spec/v1.0.0-rc.4/examples/catalog.json", "type": "application/json" } ] diff --git a/examples/collection-only/collection-with-schemas.json b/examples/collection-only/collection-with-schemas.json index 1cddc65c..fd3dc1b4 100644 --- a/examples/collection-only/collection-with-schemas.json +++ b/examples/collection-only/collection-with-schemas.json @@ -1,5 +1,5 @@ { - "stac_version": "1.0.0-rc.3", + "stac_version": "1.0.0-rc.4", "stac_extensions": [ "https://stac-extensions.github.io/eo/v1.0.0/schema.json", "https://stac-extensions.github.io/sat/v1.0.0/schema.json", diff --git a/examples/collection-only/collection.json b/examples/collection-only/collection.json index c5cb7a2c..e0d843c0 100644 --- a/examples/collection-only/collection.json +++ b/examples/collection-only/collection.json @@ -1,6 +1,6 @@ { "type": "Collection", - "stac_version": "1.0.0-rc.3", + "stac_version": "1.0.0-rc.4", "stac_extensions": [ "https://stac-extensions.github.io/eo/v1.0.0/schema.json", "https://stac-extensions.github.io/projection/v1.0.0/schema.json", diff --git a/examples/collection.json b/examples/collection.json index 1b31cdf2..12f1cf3b 100644 --- a/examples/collection.json +++ b/examples/collection.json @@ -6,7 +6,7 @@ "https://stac-extensions.github.io/projection/v1.0.0/schema.json", "https://stac-extensions.github.io/view/v1.0.0/schema.json" ], - "stac_version": "1.0.0-rc.3", + "stac_version": "1.0.0-rc.4", "description": "A simple collection demonstrating core catalog fields with links to a couple of items", "title": "Simple Example Collection", "providers": [ @@ -104,7 +104,7 @@ }, { "rel": "self", - "href": "https://raw.githubusercontent.com/radiantearth/stac-spec/v1.0.0-rc.3/examples/collection.json", + "href": "https://raw.githubusercontent.com/radiantearth/stac-spec/v1.0.0-rc.4/examples/collection.json", "type": "application/json" } ] diff --git a/examples/collectionless-item.json b/examples/collectionless-item.json index c4b224d5..12ace284 100644 --- a/examples/collectionless-item.json +++ b/examples/collectionless-item.json @@ -1,5 +1,5 @@ { - "stac_version": "1.0.0-rc.3", + "stac_version": "1.0.0-rc.4", "stac_extensions": [ "https://stac-extensions.github.io/eo/v1.0.0/schema.json", "https://stac-extensions.github.io/view/v1.0.0/schema.json" diff --git a/examples/core-item.json b/examples/core-item.json index dc95ff80..e033517e 100644 --- a/examples/core-item.json +++ b/examples/core-item.json @@ -1,5 +1,5 @@ { - "stac_version": "1.0.0-rc.3", + "stac_version": "1.0.0-rc.4", "stac_extensions": [], "type": "Feature", "id": "20201211_223832_CS2", diff --git a/examples/extended-item.json b/examples/extended-item.json index 85b3f598..2c7d36c5 100644 --- a/examples/extended-item.json +++ b/examples/extended-item.json @@ -1,5 +1,5 @@ { - "stac_version": "1.0.0-rc.3", + "stac_version": "1.0.0-rc.4", "stac_extensions": [ "https://stac-extensions.github.io/eo/v1.0.0/schema.json", "https://stac-extensions.github.io/projection/v1.0.0/schema.json", diff --git a/examples/extensions-collection/collection.json b/examples/extensions-collection/collection.json index fa0fe85d..f77c04ba 100644 --- a/examples/extensions-collection/collection.json +++ b/examples/extensions-collection/collection.json @@ -1,7 +1,7 @@ { "id": "extensions-collection", "type": "Collection", - "stac_version": "1.0.0-rc.3", + "stac_version": "1.0.0-rc.4", "description": "A heterogenous collection containing deeper examples of various extensions", "links": [ { diff --git a/examples/extensions-collection/proj-example/proj-example.json b/examples/extensions-collection/proj-example/proj-example.json index 64a42dc1..b17a7f49 100644 --- a/examples/extensions-collection/proj-example/proj-example.json +++ b/examples/extensions-collection/proj-example/proj-example.json @@ -1,6 +1,6 @@ { "type": "Feature", - "stac_version": "1.0.0-rc.3", + "stac_version": "1.0.0-rc.4", "id": "proj-example", "properties": { "datetime": "2018-10-01T01:08:32.033000Z", diff --git a/examples/simple-item.json b/examples/simple-item.json index f74871fb..69d2f063 100644 --- a/examples/simple-item.json +++ b/examples/simple-item.json @@ -1,5 +1,5 @@ { - "stac_version": "1.0.0-rc.3", + "stac_version": "1.0.0-rc.4", "stac_extensions": [], "type": "Feature", "id": "20201211_223832_CS2", diff --git a/item-spec/json-schema/basics.json b/item-spec/json-schema/basics.json index 6b66ccf5..3387f13a 100644 --- a/item-spec/json-schema/basics.json +++ b/item-spec/json-schema/basics.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.4/item-spec/json-schema/basics.json#", "title": "Basic Descriptive Fields", "type": "object", "properties": { diff --git a/item-spec/json-schema/datetime.json b/item-spec/json-schema/datetime.json index 87fb300b..53a71a49 100644 --- a/item-spec/json-schema/datetime.json +++ b/item-spec/json-schema/datetime.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.4/item-spec/json-schema/datetime.json#", "title": "Date and Time Fields", "type": "object", "dependencies": { diff --git a/item-spec/json-schema/instrument.json b/item-spec/json-schema/instrument.json index 722af252..fc088227 100644 --- a/item-spec/json-schema/instrument.json +++ b/item-spec/json-schema/instrument.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.4/item-spec/json-schema/instrument.json#", "title": "Instrument Fields", "type": "object", "properties": { diff --git a/item-spec/json-schema/item.json b/item-spec/json-schema/item.json index 10bfa2b2..c383fe80 100644 --- a/item-spec/json-schema/item.json +++ b/item-spec/json-schema/item.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.4/item-spec/json-schema/item.json#", "title": "STAC Item", "type": "object", "description": "This object represents the metadata for an item in a SpatioTemporal Asset Catalog.", @@ -93,7 +93,7 @@ "stac_version": { "title": "STAC version", "type": "string", - "const": "1.0.0-rc.3" + "const": "1.0.0-rc.4" }, "stac_extensions": { "title": "STAC extensions", diff --git a/item-spec/json-schema/licensing.json b/item-spec/json-schema/licensing.json index 525b7c25..70547d89 100644 --- a/item-spec/json-schema/licensing.json +++ b/item-spec/json-schema/licensing.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.4/item-spec/json-schema/licensing.json#", "title": "Licensing Fields", "type": "object", "properties": { diff --git a/item-spec/json-schema/provider.json b/item-spec/json-schema/provider.json index 36f43cb0..a31fa2da 100644 --- a/item-spec/json-schema/provider.json +++ b/item-spec/json-schema/provider.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.4/item-spec/json-schema/provider.json#", "title": "Provider Fields", "type": "object", "properties": { diff --git a/package.json b/package.json index 1789d03a..74e935a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stac-spec", - "version": "1.0.0-rc.3", + "version": "1.0.0-rc.4", "description": "STAC spec helpers to check the spec.", "repository": "https://github.com/radiantearth/stac-spec", "license": "Apache-2.0", From 50d12f6cf10b2bce82a9f530b93880a2ca424322 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 4 May 2021 20:12:06 +0200 Subject: [PATCH 06/22] JSON Schemas don't allow "shortcuts" for core extensions any longer --- CHANGELOG.md | 4 ++++ catalog-spec/json-schema/catalog-core.json | 14 +++----------- collection-spec/json-schema/collection.json | 14 +++----------- item-spec/json-schema/item.json | 14 +++----------- 4 files changed, 13 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ccef6db1..b36de0c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Clarified that collection summaries do not require that all property fields are summarized. ([#1106](https://github.com/radiantearth/stac-spec/issues/1106)) - Clarified that gsd should only be used on an asset to represent the sensor, not just different processing. ([#1105](https://github.com/radiantearth/stac-spec/pull/1105)) +### Fixed + +- JSON Schemas don't allow "shortcuts" for core extensions any longer + ## [v1.0.0-rc.2] - 2021-03-30 ### Changed diff --git a/catalog-spec/json-schema/catalog-core.json b/catalog-spec/json-schema/catalog-core.json index 214df4bb..ffa9a97b 100644 --- a/catalog-spec/json-schema/catalog-core.json +++ b/catalog-spec/json-schema/catalog-core.json @@ -29,17 +29,9 @@ "type": "array", "uniqueItems": true, "items": { - "anyOf": [ - { - "title": "Reference to a JSON Schema", - "type": "string", - "format": "iri" - }, - { - "title": "Reference to a core extension", - "type": "string" - } - ] + "title": "Reference to a JSON Schema", + "type": "string", + "format": "iri" } }, "id": { diff --git a/collection-spec/json-schema/collection.json b/collection-spec/json-schema/collection.json index 19bb9611..54326cda 100644 --- a/collection-spec/json-schema/collection.json +++ b/collection-spec/json-schema/collection.json @@ -31,17 +31,9 @@ "type": "array", "uniqueItems": true, "items": { - "anyOf": [ - { - "title": "Reference to a JSON Schema", - "type": "string", - "format": "iri" - }, - { - "title": "Reference to a core extension", - "type": "string" - } - ] + "title": "Reference to a JSON Schema", + "type": "string", + "format": "iri" } }, "keywords": { diff --git a/item-spec/json-schema/item.json b/item-spec/json-schema/item.json index e228e2d2..8c2e41f1 100644 --- a/item-spec/json-schema/item.json +++ b/item-spec/json-schema/item.json @@ -100,17 +100,9 @@ "type": "array", "uniqueItems": true, "items": { - "anyOf": [ - { - "title": "Reference to a JSON Schema", - "type": "string", - "format": "iri" - }, - { - "title": "Reference to a core extension", - "type": "string" - } - ] + "title": "Reference to a JSON Schema", + "type": "string", + "format": "iri" } }, "id": { From 42753fc564ed9cf7004520b95999240239cbf2f1 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 4 May 2021 20:24:29 +0200 Subject: [PATCH 07/22] Catalogs don't support summaries any more --- CHANGELOG.md | 5 + catalog-spec/catalog-spec.md | 1 - catalog-spec/json-schema/catalog-core.json | 141 -------------------- catalog-spec/json-schema/catalog.json | 77 ++++++++++- collection-spec/json-schema/collection.json | 121 ++++++++++++++++- 5 files changed, 190 insertions(+), 155 deletions(-) delete mode 100644 catalog-spec/json-schema/catalog-core.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 48cf6b3a..d96c740e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changed - An empty Catalog is now allowed, removed the requirement that it must have a child or item link. ([#1115](https://github.com/radiantearth/stac-spec/issues/1115)) +- Catalog and Collection JSON Schemas don't have a common JSON Schema any more + +### Removed + +- Catalogs don't support summaries any more ## [v1.0.0-rc.3] - 2021-04-29 diff --git a/catalog-spec/catalog-spec.md b/catalog-spec/catalog-spec.md index b8064f00..8b26dce0 100644 --- a/catalog-spec/catalog-spec.md +++ b/catalog-spec/catalog-spec.md @@ -50,7 +50,6 @@ values for `type` and `stac_extensions`. | id | string | **REQUIRED.** Identifier for the Catalog. | | title | string | A short descriptive one-line title for the Catalog. | | description | string | **REQUIRED.** Detailed multi-line description to fully explain the Catalog. [CommonMark 0.29](http://commonmark.org/) syntax MAY be used for rich text representation. | -| summaries | Map | A map of property summaries, either a set of values, a range of values or a [JSON Schema](https://json-schema.org). More info in the [Collection spec](../collection-spec/collection-spec.md#summaries). | | links | [[Link Object](#link-object)] | **REQUIRED.** A list of references to other documents. | ### Additional Field Information diff --git a/catalog-spec/json-schema/catalog-core.json b/catalog-spec/json-schema/catalog-core.json deleted file mode 100644 index fece50e3..00000000 --- a/catalog-spec/json-schema/catalog-core.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/catalog-spec/json-schema/catalog-core.json#", - "title": "Common STAC Catalog + Collection Fields", - "description": "This object represents the common fields shared by Catalogs and Collections", - "allOf": [ - { - "$ref": "#/definitions/catalogCore" - } - ], - "definitions": { - "catalogCore": { - "title": "Catalog Core Fields", - "type": "object", - "required": [ - "stac_version", - "id", - "description", - "links" - ], - "properties": { - "stac_version": { - "title": "STAC version", - "type": "string", - "const": "1.0.0-rc.3" - }, - "stac_extensions": { - "title": "STAC extensions", - "type": "array", - "uniqueItems": true, - "items": { - "title": "Reference to a JSON Schema", - "type": "string", - "format": "iri" - } - }, - "id": { - "title": "Identifier", - "type": "string", - "minLength": 1 - }, - "title": { - "title": "Title", - "type": "string" - }, - "description": { - "title": "Description", - "type": "string", - "minLength": 1 - }, - "links": { - "title": "Links", - "type": "array", - "items": { - "$ref": "#/definitions/link" - } - }, - "summaries": { - "$ref": "#/definitions/summaries" - } - } - }, - "link": { - "type": "object", - "required": [ - "rel", - "href" - ], - "properties": { - "href": { - "title": "Link reference", - "type": "string", - "format": "iri-reference", - "minLength": 1 - }, - "rel": { - "title": "Link relation type", - "type": "string", - "minLength": 1 - }, - "type": { - "title": "Link type", - "type": "string" - }, - "title": { - "title": "Link title", - "type": "string" - } - } - }, - "summaries": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { - "title": "JSON Schema", - "type": "object", - "minProperties": 1, - "allOf": [ - { - "$ref": "http://json-schema.org/draft-07/schema" - } - ] - }, - { - "title": "Range", - "type": "object", - "required": [ - "minimum", - "maximum" - ], - "properties": { - "minimum": { - "title": "Minimum value", - "type": [ - "number", - "string" - ] - }, - "maximum": { - "title": "Maximum value", - "type": [ - "number", - "string" - ] - } - } - }, - { - "title": "Set of values", - "type": "array", - "minItems": 1, - "items": { - "description": "For each field only the original data type of the property can occur (except for arrays), but we can't validate that in JSON Schema yet. See the sumamry description in the STAC specification for details." - } - } - ] - } - } - } -} \ No newline at end of file diff --git a/catalog-spec/json-schema/catalog.json b/catalog-spec/json-schema/catalog.json index 7b190a4c..097b17a9 100644 --- a/catalog-spec/json-schema/catalog.json +++ b/catalog-spec/json-schema/catalog.json @@ -4,26 +4,91 @@ "title": "STAC Catalog Specification", "description": "This object represents Catalogs in a SpatioTemporal Asset Catalog.", "allOf": [ - { - "$ref": "catalog-core.json" - }, { "$ref": "#/definitions/catalog" } ], "definitions": { "catalog": { - "title": "Catalog", + "title": "Catalog Core Fields", "type": "object", "required": [ - "type" + "stac_version", + "type", + "id", + "description", + "links" ], "properties": { + "stac_version": { + "title": "STAC version", + "type": "string", + "const": "1.0.0-rc.3" + }, + "stac_extensions": { + "title": "STAC extensions", + "type": "array", + "uniqueItems": true, + "items": { + "title": "Reference to a JSON Schema", + "type": "string", + "format": "iri" + } + }, "type": { "title": "Type of STAC entity", "const": "Catalog" + }, + "id": { + "title": "Identifier", + "type": "string", + "minLength": 1 + }, + "title": { + "title": "Title", + "type": "string" + }, + "description": { + "title": "Description", + "type": "string", + "minLength": 1 + }, + "links": { + "title": "Links", + "type": "array", + "items": { + "$ref": "#/definitions/link" + } + } + } + }, + "link": { + "type": "object", + "required": [ + "rel", + "href" + ], + "properties": { + "href": { + "title": "Link reference", + "type": "string", + "format": "iri-reference", + "minLength": 1 + }, + "rel": { + "title": "Link relation type", + "type": "string", + "minLength": 1 + }, + "type": { + "title": "Link type", + "type": "string" + }, + "title": { + "title": "Link title", + "type": "string" } } } } -} +} \ No newline at end of file diff --git a/collection-spec/json-schema/collection.json b/collection-spec/json-schema/collection.json index 1d2fc11d..6924291f 100644 --- a/collection-spec/json-schema/collection.json +++ b/collection-spec/json-schema/collection.json @@ -4,9 +4,6 @@ "title": "STAC Collection Specification", "description": "This object represents Collections in a SpatioTemporal Asset Catalog.", "allOf": [ - { - "$ref": "../../catalog-spec/json-schema/catalog-core.json" - }, { "$ref": "#/definitions/collection" } @@ -17,14 +14,19 @@ "description": "These are the fields specific to a STAC Collection. All other fields are inherited from STAC Catalog.", "type": "object", "required": [ + "stac_version", "type", + "id", + "description", "license", - "extent" + "extent", + "links" ], "properties": { - "type": { - "title": "Type of STAC entity", - "const": "Collection" + "stac_version": { + "title": "STAC version", + "type": "string", + "const": "1.0.0-rc.3" }, "stac_extensions": { "title": "STAC extensions", @@ -36,6 +38,24 @@ "format": "iri" } }, + "type": { + "title": "Type of STAC entity", + "const": "Collection" + }, + "id": { + "title": "Identifier", + "type": "string", + "minLength": 1 + }, + "title": { + "title": "Title", + "type": "string" + }, + "description": { + "title": "Description", + "type": "string", + "minLength": 1 + }, "keywords": { "title": "Keywords", "type": "array", @@ -156,8 +176,95 @@ }, "assets": { "$ref": "../../item-spec/json-schema/item.json#/definitions/assets" + }, + "links": { + "title": "Links", + "type": "array", + "items": { + "$ref": "#/definitions/link" + } + }, + "summaries": { + "$ref": "#/definitions/summaries" } } + }, + "link": { + "type": "object", + "required": [ + "rel", + "href" + ], + "properties": { + "href": { + "title": "Link reference", + "type": "string", + "format": "iri-reference", + "minLength": 1 + }, + "rel": { + "title": "Link relation type", + "type": "string", + "minLength": 1 + }, + "type": { + "title": "Link type", + "type": "string" + }, + "title": { + "title": "Link title", + "type": "string" + } + } + }, + "summaries": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "title": "JSON Schema", + "type": "object", + "minProperties": 1, + "allOf": [ + { + "$ref": "http://json-schema.org/draft-07/schema" + } + ] + }, + { + "title": "Range", + "type": "object", + "required": [ + "minimum", + "maximum" + ], + "properties": { + "minimum": { + "title": "Minimum value", + "type": [ + "number", + "string" + ] + }, + "maximum": { + "title": "Maximum value", + "type": [ + "number", + "string" + ] + } + } + }, + { + "title": "Set of values", + "type": "array", + "minItems": 1, + "items": { + "description": "For each field only the original data type of the property can occur (except for arrays), but we can't validate that in JSON Schema yet. See the sumamry description in the STAC specification for details." + } + } + ] + } } } } \ No newline at end of file From 9fa29ce54aff19c83adce3b34d3b79d5332982fd Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Wed, 5 May 2021 00:17:18 +0200 Subject: [PATCH 08/22] Update catalog-spec/json-schema/catalog.json --- catalog-spec/json-schema/catalog.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/catalog-spec/json-schema/catalog.json b/catalog-spec/json-schema/catalog.json index 097b17a9..42435bb9 100644 --- a/catalog-spec/json-schema/catalog.json +++ b/catalog-spec/json-schema/catalog.json @@ -10,7 +10,7 @@ ], "definitions": { "catalog": { - "title": "Catalog Core Fields", + "title": "STAC Catalog", "type": "object", "required": [ "stac_version", @@ -91,4 +91,4 @@ } } } -} \ No newline at end of file +} From 507a813cbb17bc8e9aee7433cfb5a8d1587271cf Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Wed, 5 May 2021 08:16:50 -0700 Subject: [PATCH 09/22] update version numbers --- catalog-spec/json-schema/catalog.json | 2 +- collection-spec/json-schema/collection.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/catalog-spec/json-schema/catalog.json b/catalog-spec/json-schema/catalog.json index 3cb85ff9..1e137ed5 100644 --- a/catalog-spec/json-schema/catalog.json +++ b/catalog-spec/json-schema/catalog.json @@ -23,7 +23,7 @@ "stac_version": { "title": "STAC version", "type": "string", - "const": "1.0.0-rc.3" + "const": "1.0.0-rc.4" }, "stac_extensions": { "title": "STAC extensions", diff --git a/collection-spec/json-schema/collection.json b/collection-spec/json-schema/collection.json index d242dd62..2358a3fd 100644 --- a/collection-spec/json-schema/collection.json +++ b/collection-spec/json-schema/collection.json @@ -26,7 +26,7 @@ "stac_version": { "title": "STAC version", "type": "string", - "const": "1.0.0-rc.3" + "const": "1.0.0-rc.4" }, "stac_extensions": { "title": "STAC extensions", From d87813dd399e32bcd249e9da2da03f88e1043bd5 Mon Sep 17 00:00:00 2001 From: Rob Emanuele Date: Wed, 5 May 2021 12:44:39 -0400 Subject: [PATCH 10/22] Clarify when to include extensions in stac_extensions --- extensions/README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/extensions/README.md b/extensions/README.md index 3b04a1f2..c46043d2 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -2,6 +2,7 @@ - [Overview](#overview) - [General Conventions](#general-conventions) +- [The `stac_extensions` property](#the-stac_extensions-property) - [Stable STAC Extensions](#stable-stac-extensions) - [Community Extensions](#community-extensions) - [Extension Maturity](#extension-maturity) @@ -43,6 +44,25 @@ Each extension has at least one *owner*. You can find extension owners in each e 3. Additional attributes relating to a [Catalog](../catalog-spec/catalog-spec.md) or [Collection](../collection-spec/collection-spec.md) should be added to the root of the object. +## The `stac_extensions` property + +[Catalog](../catalog-spec/catalog-spec.md#stac_extensions), [Collection](../collection-spec/collection-spec.md#stac_extensions) and +[Item](../item-spec/item-spec.md#stac_extensions) objects have a `stac_extensions` property which contain URLs to JSON Schemas used to +validate the implementation of an extension. These JSON Schema URLs act as identifiers for specific version of the extension that the +object implements. The logic for when an object should list an extension JSON Schema URL (referred to as the extension ID) in it's +`stac_extension` property is as follows: + +- If the object directly implements the extension, the `stac_extensions` property of that object should contain the extension ID. +- If an Asset implements properties of the extension, then `stac_extensions` property of the Item or Collection which holds that + Asset should contain the extension ID. +- If a Collection [summary](../collection-spec/collection-spec.md#summaries) contains Item properties that implement an extension, then + the `stac_extensions` property of that Collection should list the extension ID. For example, if a Collection `summaries` property + contains a summary of `eo:bands`, then that Collection should have the EO extension JSON Schema URL in the `stac_extensions` property. +- If an object implements an extension that results in properties from a separate extension to be referenced, then the latter extension + ID should be included in the `stac_extension` property for that object. For example, if a Collection implements the + [item_assets](https://github.com/stac-extensions/item-assets) extension, and in the `item_assets` property there is an Asset Definition + which includes `eo:bands`, then the EO extension ID should be listed in that Collection's `stac_extensions` property. + ## Stable STAC Extensions These extensions are considered stable and are widely used in many production implementations. As additional extensions advance From cd08d4a5513cae5a23dfe63396cb254d71fc39c5 Mon Sep 17 00:00:00 2001 From: Rob Emanuele Date: Wed, 5 May 2021 12:45:08 -0400 Subject: [PATCH 11/22] Fix TOC ordering in extensions --- extensions/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/README.md b/extensions/README.md index c46043d2..05ffdc7a 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -5,10 +5,10 @@ - [The `stac_extensions` property](#the-stac_extensions-property) - [Stable STAC Extensions](#stable-stac-extensions) - [Community Extensions](#community-extensions) - - [Extension Maturity](#extension-maturity) - [Proposed extensions](#proposed-extensions) - [Extending STAC](#extending-stac) - [Proposing new extensions](#proposing-new-extensions) + - [Extension Maturity](#extension-maturity) - [Prefixes](#prefixes) - [Use of arrays and objects](#use-of-arrays-and-objects) From 59a8cf4a2e5276ce728d593fd263467ab94f428c Mon Sep 17 00:00:00 2001 From: Rob Emanuele Date: Wed, 5 May 2021 12:47:09 -0400 Subject: [PATCH 12/22] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d96c740e..7a0ad5f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Added `preview` relation type for interoperable thumbnails to best practices. ([#1090](https://github.com/radiantearth/stac-spec/issues/1090)) - Recommendation to include both `root` and `parent` relation types when they point at the same file. ([#1098](https://github.com/radiantearth/stac-spec/issues/1098)) - Overview section linking to various foundational standards. ([#1111](https://github.com/radiantearth/stac-spec/pull/1111)) +- Added clarification around when an extension should be included in `stac_extensions` ([#1123](https://github.com/radiantearth/stac-spec/pull/1123)) ### Changed From ea3ee26b5448ae08f8960b39d2118401b715c112 Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Wed, 5 May 2021 16:28:19 -0700 Subject: [PATCH 13/22] reorg and edits --- extensions/README.md | 68 ++++++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 25 deletions(-) diff --git a/extensions/README.md b/extensions/README.md index 05ffdc7a..9dc43813 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -1,12 +1,13 @@ # Extensions - [Overview](#overview) -- [General Conventions](#general-conventions) -- [The `stac_extensions` property](#the-stac_extensions-property) +- [Using Extensions](#using-extensions) + - [Extension IDs in `stac_extensions`](#extension-ids-in-stac_extensions) - [Stable STAC Extensions](#stable-stac-extensions) - [Community Extensions](#community-extensions) - [Proposed extensions](#proposed-extensions) - [Extending STAC](#extending-stac) + - [General Conventions](#general-conventions) - [Proposing new extensions](#proposing-new-extensions) - [Extension Maturity](#extension-maturity) - [Prefixes](#prefixes) @@ -34,34 +35,37 @@ can be aware of it. Each extension has at least one *owner*. You can find extension owners in each extension's README. -## General Conventions +## Using Extensions -1. Additional attributes relating to an [Item](../item-spec/item-spec.md) should be added into the Item Properties object, - rather than directly in the Item object. -2. In general, additional attributes that apply to an Item Asset should also be allowed in Item Properties and vice-versa. - For example, the `eo:bands` attribute may be used in Item Properties to describe the aggregation of all bands available in - the Item Asset objects contained in the Item, but may also be used in an individual Item Asset to describe only the bands available in that asset. -3. Additional attributes relating to a [Catalog](../catalog-spec/catalog-spec.md) or - [Collection](../collection-spec/collection-spec.md) should be added to the root of the object. +When deciding how to model data in STAC it is highly recommended to first look at the [list of +extensions](https://stac-extensions.github.io/) and re-use fields there instead of creating your own version. This +increases interoperability, as users know that the meaning of your fields is the same as in other STAC +implementations. Many clients will also understand more mature extensions for better display and querying. -## The `stac_extensions` property +To incorporate an extension in STAC the 'extension ID' of the extension must be added to the `stac_extensions` +array of the STAC [Catalog](../catalog-spec/catalog-spec.md#stac_extensions), +[Collection](../collection-spec/collection-spec.md#stac_extensions) or [Item](../item-spec/item-spec.md#stac_extensions) +object. This identifier is a link to the JSON Schema URL that validates the fields in the extension, so STAC validators +can fetch the Schema to validate that the STAC object properly follows the extension. These JSON Schema URLs also act as +identifiers for specific version of the extension that the STAC object implements. The extension ID can be +found listed as the 'identifier' in the second line of the README of any extension made with the [extension +template](https://github.com/stac-extensions/template), and new ones get published automatically with any release made +with the template. -[Catalog](../catalog-spec/catalog-spec.md#stac_extensions), [Collection](../collection-spec/collection-spec.md#stac_extensions) and -[Item](../item-spec/item-spec.md#stac_extensions) objects have a `stac_extensions` property which contain URLs to JSON Schemas used to -validate the implementation of an extension. These JSON Schema URLs act as identifiers for specific version of the extension that the -object implements. The logic for when an object should list an extension JSON Schema URL (referred to as the extension ID) in it's -`stac_extension` property is as follows: +### Extension IDs in `stac_extensions` -- If the object directly implements the extension, the `stac_extensions` property of that object should contain the extension ID. -- If an Asset implements properties of the extension, then `stac_extensions` property of the Item or Collection which holds that +The logic for when an object should list an extension ID in its `stac_extension` array is as follows: + +- If the object directly implements the extension, the `stac_extensions` of that object should contain the extension ID. +- If an Asset implements fields of the extension, then `stac_extensions` of the Item or Collection which holds that Asset should contain the extension ID. -- If a Collection [summary](../collection-spec/collection-spec.md#summaries) contains Item properties that implement an extension, then - the `stac_extensions` property of that Collection should list the extension ID. For example, if a Collection `summaries` property - contains a summary of `eo:bands`, then that Collection should have the EO extension JSON Schema URL in the `stac_extensions` property. -- If an object implements an extension that results in properties from a separate extension to be referenced, then the latter extension - ID should be included in the `stac_extension` property for that object. For example, if a Collection implements the - [item_assets](https://github.com/stac-extensions/item-assets) extension, and in the `item_assets` property there is an Asset Definition - which includes `eo:bands`, then the EO extension ID should be listed in that Collection's `stac_extensions` property. +- If a Collection [summary](../collection-spec/collection-spec.md#summaries) contains Item fields that implement an extension, then + the `stac_extensions` array of that Collection should list the extension ID. For example, if a Collection `summaries` field + contains a summary of `eo:bands`, then that Collection should have the EO extension JSON Schema URL in the `stac_extensions` array. +- If an object implements an extension that results in fields from a separate extension to be referenced, then the latter extension + ID should be included in the `stac_extensions` array for that object. For example, if a Collection implements the + [item_assets](https://github.com/stac-extensions/item-assets) extension, and in the `item_assets` field there is an Asset Definition + which includes `eo:bands`, then the EO extension ID should be listed in that Collection's `stac_extensions`. ## Stable STAC Extensions @@ -99,6 +103,20 @@ with existing extensions as well as possible and may even re-use fields and thei into a new extension that combines commonly used fields across multiple extensions. Best practices for extension proposals are still emerging in this section. +### General Conventions + +Creating a new extension involves defining a set of logically grouped fields, and specifying what the allowed values +for those fields are. This should be done in the extension text and in JSON Schema, to provide validation. While one +can theoretically add fields anywhere in JSON there are some conventions as to where to add them in STAC objects. + +1. Additional attributes relating to an [Item](../item-spec/item-spec.md) should be added into the Item Properties object, + rather than directly in the Item object. +2. In general, additional attributes that apply to an Item Asset should also be allowed in Item Properties and vice-versa. + For example, the `eo:bands` attribute may be used in Item Properties to describe the aggregation of all bands available in + the Item Asset objects contained in the Item, but may also be used in an individual Item Asset to describe only the bands available in that asset. +3. Additional attributes relating to a [Catalog](../catalog-spec/catalog-spec.md) or + [Collection](../collection-spec/collection-spec.md) should be added to the root of the object. + ### Proposing new extensions Extensions can be hosted anywhere, but should use the From b24066e13ba725c46699d9f46858d7b060da8798 Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Mon, 10 May 2021 09:02:41 -0700 Subject: [PATCH 14/22] update from PR review --- extensions/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/README.md b/extensions/README.md index 9dc43813..0d6e48cd 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -56,7 +56,7 @@ with the template. The logic for when an object should list an extension ID in its `stac_extension` array is as follows: -- If the object directly implements the extension, the `stac_extensions` of that object should contain the extension ID. +- If the object directly implements the extension (by including at least one of the fields of the extension, plus any additional specified requirements), the `stac_extensions` of that object should contain the extension ID. - If an Asset implements fields of the extension, then `stac_extensions` of the Item or Collection which holds that Asset should contain the extension ID. - If a Collection [summary](../collection-spec/collection-spec.md#summaries) contains Item fields that implement an extension, then From c9323e4102f5510aec82df963e0bef933b2f30c7 Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Mon, 10 May 2021 09:03:52 -0700 Subject: [PATCH 15/22] line break for linting --- extensions/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extensions/README.md b/extensions/README.md index 0d6e48cd..5658edbb 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -56,7 +56,8 @@ with the template. The logic for when an object should list an extension ID in its `stac_extension` array is as follows: -- If the object directly implements the extension (by including at least one of the fields of the extension, plus any additional specified requirements), the `stac_extensions` of that object should contain the extension ID. +- If the object directly implements the extension (by including at least one of the fields of the extension, plus any + additional specified requirements), the `stac_extensions` of that object should contain the extension ID. - If an Asset implements fields of the extension, then `stac_extensions` of the Item or Collection which holds that Asset should contain the extension ID. - If a Collection [summary](../collection-spec/collection-spec.md#summaries) contains Item fields that implement an extension, then From 0a6da1ace5b5b8edbbfe29f10c9630a232a24ee7 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Mon, 10 May 2021 22:43:41 +0200 Subject: [PATCH 16/22] Collection: Open intervals for temporal extents #1125 --- CHANGELOG.md | 1 + collection-spec/collection-spec.md | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d96c740e..9734d70e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changed - An empty Catalog is now allowed, removed the requirement that it must have a child or item link. ([#1115](https://github.com/radiantearth/stac-spec/issues/1115)) +- An open date range to both sides is now allowed in the Collection's temporal extents. ([#1125](https://github.com/radiantearth/stac-spec/issues/1125)) - Catalog and Collection JSON Schemas don't have a common JSON Schema any more ### Removed diff --git a/collection-spec/collection-spec.md b/collection-spec/collection-spec.md index 46846e8c..11399816 100644 --- a/collection-spec/collection-spec.md +++ b/collection-spec/collection-spec.md @@ -202,12 +202,17 @@ Clients only interested in the overall extent will only need to access the first It is recommended to only use multiple temporal extents if a union of them would then include a large uncovered time span (e.g. only having data for the years 2000, 2010 and 2020). -Each inner array consists of exactly two dates and times, each in UTC. -Each date and time MUST be formatted according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). +Each inner array consists of exactly two elements, either a timestamp or `null`. + +Timestamps consist of a date and time in UTC and MUST be formatted according to +[RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). The temporal reference system is the Gregorian calendar. -Open date ranges are supported by setting either the start or the end time to `null`. -Example for data from the beginning of 2019 until now: `[["2009-01-01T00:00:00Z", null]]`. +Open date ranges are supported by setting the start and/or the end time to `null`. +Example for data from the beginning of 2019 until now: `[["2009-01-01T00:00:00Z", null]]`. +It is recommended to provide at least a rough guideline on the temporal extent and thus +it's not recommended to set both start and end time to `null`. Nevertheless, this is possible +if there's a strong use case for an open date range to both sides. ### Provider Object From bf02447ca01ccf69c4fb9275d8634424ad88328f Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Tue, 11 May 2021 08:15:29 -0700 Subject: [PATCH 17/22] updates from PR review --- extensions/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/README.md b/extensions/README.md index 5658edbb..b25a2491 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -56,8 +56,7 @@ with the template. The logic for when an object should list an extension ID in its `stac_extension` array is as follows: -- If the object directly implements the extension (by including at least one of the fields of the extension, plus any - additional specified requirements), the `stac_extensions` of that object should contain the extension ID. +- If the object directly implements the extension (by following the specified requirements - usually by including fields, but occasionally implementing alternate behaviors), the `stac_extensions` of that object should contain the extension ID. - If an Asset implements fields of the extension, then `stac_extensions` of the Item or Collection which holds that Asset should contain the extension ID. - If a Collection [summary](../collection-spec/collection-spec.md#summaries) contains Item fields that implement an extension, then @@ -106,7 +105,7 @@ Best practices for extension proposals are still emerging in this section. ### General Conventions -Creating a new extension involves defining a set of logically grouped fields, and specifying what the allowed values +Creating a new extension usually involves defining a set of logically grouped fields, and specifying what the allowed values for those fields are. This should be done in the extension text and in JSON Schema, to provide validation. While one can theoretically add fields anywhere in JSON there are some conventions as to where to add them in STAC objects. @@ -117,6 +116,7 @@ can theoretically add fields anywhere in JSON there are some conventions as to w the Item Asset objects contained in the Item, but may also be used in an individual Item Asset to describe only the bands available in that asset. 3. Additional attributes relating to a [Catalog](../catalog-spec/catalog-spec.md) or [Collection](../collection-spec/collection-spec.md) should be added to the root of the object. +4. Extensions may also extend other extensions, declaring that dependency in the text and JSON Schema. ### Proposing new extensions From 90a2cbd66023a9f1ff8829634e632dc30c2116ba Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Tue, 11 May 2021 08:17:49 -0700 Subject: [PATCH 18/22] line break for linting --- extensions/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extensions/README.md b/extensions/README.md index b25a2491..151983d0 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -56,7 +56,8 @@ with the template. The logic for when an object should list an extension ID in its `stac_extension` array is as follows: -- If the object directly implements the extension (by following the specified requirements - usually by including fields, but occasionally implementing alternate behaviors), the `stac_extensions` of that object should contain the extension ID. +- If the object directly implements the extension (by following the specified requirements - usually by including +fields, but occasionally implementing alternate behaviors), the `stac_extensions` of that object should contain the extension ID. - If an Asset implements fields of the extension, then `stac_extensions` of the Item or Collection which holds that Asset should contain the extension ID. - If a Collection [summary](../collection-spec/collection-spec.md#summaries) contains Item fields that implement an extension, then From ba9df2eb482cee6ebdb1fddb036f4003c3384b3e Mon Sep 17 00:00:00 2001 From: James Banting Date: Tue, 11 May 2021 08:24:09 -0700 Subject: [PATCH 19/22] Update collection-spec.md Update years in example. --- collection-spec/collection-spec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collection-spec/collection-spec.md b/collection-spec/collection-spec.md index 11399816..8b6f4f15 100644 --- a/collection-spec/collection-spec.md +++ b/collection-spec/collection-spec.md @@ -209,7 +209,7 @@ Timestamps consist of a date and time in UTC and MUST be formatted according to The temporal reference system is the Gregorian calendar. Open date ranges are supported by setting the start and/or the end time to `null`. -Example for data from the beginning of 2019 until now: `[["2009-01-01T00:00:00Z", null]]`. +Example for data from the beginning of 2019 until now: `[["2019-01-01T00:00:00Z", null]]`. It is recommended to provide at least a rough guideline on the temporal extent and thus it's not recommended to set both start and end time to `null`. Nevertheless, this is possible if there's a strong use case for an open date range to both sides. From 00243b3e7e0b619a299ec1c328bc56ce47838453 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 11 May 2021 17:29:52 +0200 Subject: [PATCH 20/22] Update date in changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1be2b906..aea1d0c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] -## [v1.0.0-rc.4] - 2021-05-03 +## [v1.0.0-rc.4] - 2021-05-11 ### Changed From 21e12d53c40e8e2f1586bb47bc40415c1b0bf84f Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 11 May 2021 17:32:50 +0200 Subject: [PATCH 21/22] Updated CHANGELOG --- CHANGELOG.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3e1aac2..78a1c281 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,11 +13,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - An empty Catalog is now allowed, removed the requirement that it must have a child or item link. ([#1115](https://github.com/radiantearth/stac-spec/issues/1115)) - An open date range to both sides is now allowed in the Collection's temporal extents. ([#1125](https://github.com/radiantearth/stac-spec/issues/1125)) -- Catalog and Collection JSON Schemas don't have a common JSON Schema any more +- Catalog and Collection JSON Schemas don't have a common JSON Schema any more ([#1122](https://github.com/radiantearth/stac-spec/pull/1122)) ### Removed -- Catalogs don't support summaries any more +- Catalogs don't support summaries any more ([#1122](https://github.com/radiantearth/stac-spec/pull/1122)) + +### Fixed + +- Added clarification around when an extension should be included in `stac_extensions` ([#1123](https://github.com/radiantearth/stac-spec/pull/1123)) +- JSON Schemas don't allow "shortcuts" for core extensions any longer ([#1121](https://github.com/radiantearth/stac-spec/pull/1121)) +- Fixed examples ## [v1.0.0-rc.3] - 2021-04-29 @@ -27,7 +33,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Added `preview` relation type for interoperable thumbnails to best practices. ([#1090](https://github.com/radiantearth/stac-spec/issues/1090)) - Recommendation to include both `root` and `parent` relation types when they point at the same file. ([#1098](https://github.com/radiantearth/stac-spec/issues/1098)) - Overview section linking to various foundational standards. ([#1111](https://github.com/radiantearth/stac-spec/pull/1111)) -- Added clarification around when an extension should be included in `stac_extensions` ([#1123](https://github.com/radiantearth/stac-spec/pull/1123)) ### Changed From 8f35589ca348ed8aaef78568a8868bde1395ed82 Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Tue, 11 May 2021 08:38:14 -0700 Subject: [PATCH 22/22] minor changelog fixes --- CHANGELOG.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78a1c281..d30e7078 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,17 +13,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - An empty Catalog is now allowed, removed the requirement that it must have a child or item link. ([#1115](https://github.com/radiantearth/stac-spec/issues/1115)) - An open date range to both sides is now allowed in the Collection's temporal extents. ([#1125](https://github.com/radiantearth/stac-spec/issues/1125)) -- Catalog and Collection JSON Schemas don't have a common JSON Schema any more ([#1122](https://github.com/radiantearth/stac-spec/pull/1122)) +- Catalog and Collection JSON Schemas don't have a common JSON Schema any more. ([#1122](https://github.com/radiantearth/stac-spec/pull/1122)) ### Removed -- Catalogs don't support summaries any more ([#1122](https://github.com/radiantearth/stac-spec/pull/1122)) +- Catalogs don't support summaries any more. ([#1122](https://github.com/radiantearth/stac-spec/pull/1122)) ### Fixed -- Added clarification around when an extension should be included in `stac_extensions` ([#1123](https://github.com/radiantearth/stac-spec/pull/1123)) -- JSON Schemas don't allow "shortcuts" for core extensions any longer ([#1121](https://github.com/radiantearth/stac-spec/pull/1121)) -- Fixed examples +- Added clarification around when an extension should be included in `stac_extensions`. ([#1123](https://github.com/radiantearth/stac-spec/pull/1123)) +- JSON Schemas don't allow "shortcuts" for core extensions any longer. ([#1121](https://github.com/radiantearth/stac-spec/pull/1121)) +- Various examples fixes. ## [v1.0.0-rc.3] - 2021-04-29 @@ -45,10 +45,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Clarified that gsd should only be used on an asset to represent the sensor, not just different processing. ([#1105](https://github.com/radiantearth/stac-spec/pull/1105)) - Clarified that leaving a field out is not equivalent to setting it as null. ([#1111](https://github.com/radiantearth/stac-spec/pull/1111)) -### Fixed - -- JSON Schemas don't allow "shortcuts" for core extensions any longer - ## [v1.0.0-rc.2] - 2021-03-30 ### Changed