From 9abb6e61a24931c5c90869fdb3a6114e5f6b407b Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Thu, 29 Apr 2021 15:36:09 +0200 Subject: [PATCH 01/14] Catalog: Require child / item in JSON Schema #1100 --- catalog-spec/json-schema/catalog.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/catalog-spec/json-schema/catalog.json b/catalog-spec/json-schema/catalog.json index 0f2c110f..c971c80b 100644 --- a/catalog-spec/json-schema/catalog.json +++ b/catalog-spec/json-schema/catalog.json @@ -22,6 +22,22 @@ "type": { "title": "Type of STAC entity", "const": "Catalog" + }, + "links": { + "title": "Links", + "type": "array", + "contains": { + "description": "A link to at least one `item` or `child` is REQUIRED in Catalogs.", + "type": "object", + "properties": { + "rel": { + "enum": [ + "child", + "item" + ] + } + } + } } } } From c39776707eb71ed43358f529ba248f180266df71 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Thu, 29 Apr 2021 16:06:12 +0200 Subject: [PATCH 02/14] best practices: some clarifications #1108 --- best-practices.md | 20 ++++++++++++-------- item-spec/item-spec.md | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/best-practices.md b/best-practices.md index df78ce76..2f48b281 100644 --- a/best-practices.md +++ b/best-practices.md @@ -9,7 +9,8 @@ - [Deploying STAC Browser](#deploying-stac-browser) - [Requester Pays](#requester-pays) - **[Item Best Practices](#item-practices)** - - [Field and ID formatting](#field-and-id-formatting) + - [Field and ID formatting](#item-ids) + - [Searchable Identifiers](#searchable-identifiers) - [Field selection and Metadata Linking](#field-selection-and-metadata-linking) - [Datetime selection](#datetime-selection) - [Unlocated Items](#unlocated-items) @@ -147,19 +148,22 @@ For data providers using STAC with requester pays buckets, there are two main re ## Item Practices -### Field and ID formatting +### Item IDs When defining one's STAC properties and fields there are many choices to make on how to name various aspects of one's data. One of the key properties is the ID. The specification is quite flexible on ID's, primarily so that existing providers can easily use their same ID when they translate their data into STAC - they just need to be sure it is globally -unique, so may need a prefix. But the use of URI reserved characters such as `:` or `/` is discouraged since this will +unique, so may need a prefix. But the use of URI or file path reserved characters such as `:` or `/` is discouraged since this will result in [percented encoded](https://tools.ietf.org/html/rfc3986#section-2) [STAC API](https://github.com/radiantearth/stac-api-spec) -endpoints. This isn't a blocker, it just makes the ID's served through API's a bit less parsable. +endpoints and also the [IDs can't be used as file names](#catalog-layout). -When defining unique fields for search, like constellation or platform, it is recommended that -the value consist of only lowercase characters, numbers, `_`, and `-`. Examples include `sentinel-1a` (Sentinel-1), -`landsat-8` (Landsat-8) and `envisat` (Envisat). This is to provide consistency for search across Collections, so that -people can just search for 'landsat-8', instead of thinking through all the ways providers might have chosen to name it. +### Searchable Identifiers + +When coming up with values for fields that contain searchable identifiers of some sort, like `constellation` or `platform`, +it is recommended that the identifiers consist of only lowercase characters, numbers, `_`, and `-`. +Examples include `sentinel-1a` (Sentinel-1), `landsat-8` (Landsat-8) and `envisat` (Envisat). +This is to provide consistency for search across Collections, so that people can just search for `landsat-8`, +instead of thinking through all the ways providers might have chosen to name it. ### Field selection and Metadata Linking diff --git a/item-spec/item-spec.md b/item-spec/item-spec.md index 0ea52c7a..48358145 100644 --- a/item-spec/item-spec.md +++ b/item-spec/item-spec.md @@ -90,7 +90,7 @@ As most geospatial assets are already uniquely defined by some identification scheme from the data provider it is recommended to simply use that ID. Data providers are advised to include sufficient information to make their IDs globally unique, including things like unique satellite IDs. -See the [id section of best practices](../best-practices.md#field-and-id-formatting) for additional recommendations. +See the [id section of best practices](../best-practices.md#item-ids) for additional recommendations. #### assets From 431e0af540793e22587b4d4f819e0b7138a9340b Mon Sep 17 00:00:00 2001 From: Emmanuel Mathot Date: Thu, 29 Apr 2021 16:56:30 +0200 Subject: [PATCH 03/14] Update best-practices.md great :-) Co-authored-by: Chris Holmes --- best-practices.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/best-practices.md b/best-practices.md index 2f48b281..0b129280 100644 --- a/best-practices.md +++ b/best-practices.md @@ -155,7 +155,7 @@ data. One of the key properties is the ID. The specification is quite flexible o providers can easily use their same ID when they translate their data into STAC - they just need to be sure it is globally unique, so may need a prefix. But the use of URI or file path reserved characters such as `:` or `/` is discouraged since this will result in [percented encoded](https://tools.ietf.org/html/rfc3986#section-2) [STAC API](https://github.com/radiantearth/stac-api-spec) -endpoints and also the [IDs can't be used as file names](#catalog-layout). +endpoints and it prevents the use of IDs as file names as recommended in the [catalog layout](#catalog-layout) best practices. ### Searchable Identifiers From 20f7e716e8606248c3b6779e1b46bdd8ee9024f1 Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Thu, 29 Apr 2021 11:16:52 -0700 Subject: [PATCH 04/14] new overview section --- CHANGELOG.md | 2 ++ overview.md | 25 ++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ccef6db1..96b1e62f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Summaries are allowed to specify JSON Schema in addition to ranges and sets of values. ([#1045](https://github.com/radiantearth/stac-spec/issues/1045)) - 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. +- Overview section linking to various foundational standards. ### Changed @@ -22,6 +23,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - `changed`, `created` (common metadata) and temporal extents (collections): Timestamps must be always in UTC ([#1095](https://github.com/radiantearth/stac-spec/issues/1095)) - 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)) +- Clarified that leaving a field out is not equivalent to setting it as null. ## [v1.0.0-rc.2] - 2021-03-30 diff --git a/overview.md b/overview.md index 306daf5f..bc65df31 100644 --- a/overview.md +++ b/overview.md @@ -3,7 +3,7 @@ There are three component specifications that together make up the core SpatioTemporal Asset Catalog specification. Each can be used alone, but they work best in concert with one another. The [STAC API specification](https://github.com/radiantearth/stac-api-spec) builds on top of that core, but is out of scope for this overview. An [Item](item-spec/item-spec.md) represents a -single [spatiotemporal asset](#what-is-a-spatiotemporal-asset) as GeoJSON so it can be searched. +single [spatiotemporal asset](#what-is-a-spatiotemporal-asset) as [GeoJSON](https://geojson.org/) so it can be searched. The [Catalog](catalog-spec/catalog-spec.md) specification provides structural elements, to group Items and [Collections](collection-spec/collection-spec.md). Collections *are* catalogs, that add more required metadata and describe a group of related Items. For more on the differences see the [section below](#catalogs-vs-collections). @@ -11,6 +11,29 @@ describe a group of related Items. For more on the differences see the [section A [UML diagram](https://en.wikipedia.org/wiki/Unified_Modeling_Language) of the [STAC model](STAC-UML.pdf) is also provided to help with navigating the specification. +## Foundations + +STAC is built on top of many great standards and practices. Every part of STAC is +[JSON](https://www.json.org/json-en.html), and [GeoJSON](https://geojson.org/) provides the core geometry fields +and [features](https://en.wikipedia.org/wiki/Simple_Features) definition. All fields are described in the +specifications, and the acceptable values are defined with [JSON Schema](https://json-schema.org/). The released +JSON Schemas provide the core testing definitions, and are used in an array of validation tools. We also rely +on [RFC 8288 (Web Linking)](https://tools.ietf.org/rfc/rfc8288.txt) to express relationships between resources, +and IANA [Media Types](https://en.wikipedia.org/wiki/Media_type) to describe file formats and format contents. +The [OGC API - Features](https://ogcapi.ogc.org/features/) standard is a final core building block. The STAC +Collection extends their [Feature Collection](http://docs.opengeospatial.org/is/17-069r3/17-069r3.html#_collection_) +(and the full API is the foundation for the STAC API specification). + +The STAC specifications are written to be understandable without needing a full background in these. But if you +want to get deep into STAC tool implementation and are not familiar with any of the standards mentioned above it is +recommended to read up on them. STAC development is guided by set of core philosophical tenets, like +building small reusable parts that are loosely coupled, focusing on developers, and more - see our the +[principles](principles.md) document to learn more. + +*Note: Setting a field in JSON to `null` is not equivalent to a field not appearing. STAC defines `null` explicitly +for some fields, where it has a particular meaning. It should not be used otherwise - instead the field should be left +out entirely.* + ## Item Overview Fundamental to any SpatioTemporal Asset Catalog, an [Item](item-spec/item-spec.md) object represents a unit of From 3a3cc0992dfdfc396a9f4876c616c47456f8f52a Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Thu, 29 Apr 2021 11:20:47 -0700 Subject: [PATCH 05/14] updated changelog with pr link --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96b1e62f..4bdfcd2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Summaries are allowed to specify JSON Schema in addition to ranges and sets of values. ([#1045](https://github.com/radiantearth/stac-spec/issues/1045)) - 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. -- Overview section linking to various foundational standards. +- Overview section linking to various foundational standards. ([#1111](https://github.com/radiantearth/stac-spec/pull/1111)) ### Changed @@ -23,7 +23,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - `changed`, `created` (common metadata) and temporal extents (collections): Timestamps must be always in UTC ([#1095](https://github.com/radiantearth/stac-spec/issues/1095)) - 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)) -- Clarified that leaving a field out is not equivalent to setting it as null. +- Clarified that leaving a field out is not equivalent to setting it as null. ([#1111](https://github.com/radiantearth/stac-spec/pull/1111)) ## [v1.0.0-rc.2] - 2021-03-30 From 17c149324bae9572b826b8353802a52e712b0c56 Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Thu, 29 Apr 2021 13:05:12 -0700 Subject: [PATCH 06/14] updates from PR review --- overview.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/overview.md b/overview.md index bc65df31..0e9952c3 100644 --- a/overview.md +++ b/overview.md @@ -21,8 +21,8 @@ JSON Schemas provide the core testing definitions, and are used in an array of v on [RFC 8288 (Web Linking)](https://tools.ietf.org/rfc/rfc8288.txt) to express relationships between resources, and IANA [Media Types](https://en.wikipedia.org/wiki/Media_type) to describe file formats and format contents. The [OGC API - Features](https://ogcapi.ogc.org/features/) standard is a final core building block. The STAC -Collection extends their [Feature Collection](http://docs.opengeospatial.org/is/17-069r3/17-069r3.html#_collection_) -(and the full API is the foundation for the STAC API specification). +Collection extends their [Collection](http://docs.opengeospatial.org/is/17-069r3/17-069r3.html#_collection_) +JSON (and the full API is the foundation for the STAC API specification). The STAC specifications are written to be understandable without needing a full background in these. But if you want to get deep into STAC tool implementation and are not familiar with any of the standards mentioned above it is @@ -30,9 +30,8 @@ recommended to read up on them. STAC development is guided by set of core philos building small reusable parts that are loosely coupled, focusing on developers, and more - see our the [principles](principles.md) document to learn more. -*Note: Setting a field in JSON to `null` is not equivalent to a field not appearing. STAC defines `null` explicitly -for some fields, where it has a particular meaning. It should not be used otherwise - instead the field should be left -out entirely.* +*Note: Setting a field in JSON to `null` is not equivalent to a field not appearing in STAC, as JSON Schema tools treat +them differently. STAC defines `null` explicitly for some fields, where it has a particular meaning. So `null` should not be used unless the STAC spec defines its use - instead the field should be left out entirely.* ## Item Overview From dfeaf64c639e707484fb8a85cf847729a49019fb Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Thu, 29 Apr 2021 13:07:45 -0700 Subject: [PATCH 07/14] more fixes from PR feedback --- overview.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/overview.md b/overview.md index 0e9952c3..34ec0291 100644 --- a/overview.md +++ b/overview.md @@ -21,8 +21,8 @@ JSON Schemas provide the core testing definitions, and are used in an array of v on [RFC 8288 (Web Linking)](https://tools.ietf.org/rfc/rfc8288.txt) to express relationships between resources, and IANA [Media Types](https://en.wikipedia.org/wiki/Media_type) to describe file formats and format contents. The [OGC API - Features](https://ogcapi.ogc.org/features/) standard is a final core building block. The STAC -Collection extends their [Collection](http://docs.opengeospatial.org/is/17-069r3/17-069r3.html#_collection_) -JSON (and the full API is the foundation for the STAC API specification). +Collection extends the [Collection](http://docs.opengeospatial.org/is/17-069r3/17-069r3.html#_collection_) +JSON defined in OGC API - Features (and the full API definition is the foundation for the STAC API specification). The STAC specifications are written to be understandable without needing a full background in these. But if you want to get deep into STAC tool implementation and are not familiar with any of the standards mentioned above it is From 06aea1c5658a5e0533d05298e1fe7340903c567c Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Thu, 29 Apr 2021 13:08:57 -0700 Subject: [PATCH 08/14] less characters in a line --- overview.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/overview.md b/overview.md index 34ec0291..e87d43ec 100644 --- a/overview.md +++ b/overview.md @@ -31,7 +31,8 @@ building small reusable parts that are loosely coupled, focusing on developers, [principles](principles.md) document to learn more. *Note: Setting a field in JSON to `null` is not equivalent to a field not appearing in STAC, as JSON Schema tools treat -them differently. STAC defines `null` explicitly for some fields, where it has a particular meaning. So `null` should not be used unless the STAC spec defines its use - instead the field should be left out entirely.* +them differently. STAC defines `null` explicitly for some fields, where it has a particular meaning. So `null` should +not be used unless the STAC spec defines its use - instead the field should be left out entirely.* ## Item Overview From d6103b8262a4b0b77536a00a3f3d835254427fce Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Thu, 29 Apr 2021 13:42:06 -0700 Subject: [PATCH 09/14] update versions, changelog edits --- CHANGELOG.md | 7 +++++-- 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 +- .../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, 29 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bdfcd2f..46d40690 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,13 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +## [v1.0.0-rc.3] - 2021-04-29 + ### Added - Summaries are allowed to specify JSON Schema in addition to ranges and sets of values. ([#1045](https://github.com/radiantearth/stac-spec/issues/1045)) - 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. +- 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)) ### Changed @@ -19,7 +21,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - The first extent in a Collection is always the overall extent, followed by more specific extents. ([#1064](https://github.com/radiantearth/stac-spec/issues/1064), [opengeospatial/ogcapi-features#520](https://github.com/opengeospatial/ogcapi-features/pull/520)) - Updated examples for automatic collection creation from code and validation ([#1080](https://github.com/radiantearth/stac-spec/pull/1080)) - Clarified that stac_extensions should also list extensions that are used in Collection summaries. ([#1077](https://github.com/radiantearth/stac-spec/issues/1077)) -- The Stats Object for Summaries has been renamed to Range Object (no functional change). +- The Stats Object for Summaries has been renamed to Range Object (no functional change). ([#1093](https://github.com/radiantearth/stac-spec/pull/1093)) - `changed`, `created` (common metadata) and temporal extents (collections): Timestamps must be always in UTC ([#1095](https://github.com/radiantearth/stac-spec/issues/1095)) - 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)) @@ -421,6 +423,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.2]: [v1.0.0-rc.2]: [v1.0.0-rc.1]: [v1.0.0-beta.2]: diff --git a/catalog-spec/json-schema/catalog-core.json b/catalog-spec/json-schema/catalog-core.json index 214df4bb..987fe547 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.2/catalog-spec/json-schema/catalog-core.json#", + "$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": [ @@ -22,7 +22,7 @@ "stac_version": { "title": "STAC version", "type": "string", - "const": "1.0.0-rc.2" + "const": "1.0.0-rc.3" }, "stac_extensions": { "title": "STAC extensions", diff --git a/catalog-spec/json-schema/catalog.json b/catalog-spec/json-schema/catalog.json index c971c80b..052052e1 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.2/catalog-spec/json-schema/catalog.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/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 19bb9611..942144c1 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.2/collection-spec/json-schema/collection.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/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 5272652d..1003b20b 100644 --- a/examples/catalog.json +++ b/examples/catalog.json @@ -1,7 +1,7 @@ { "id": "examples", "type": "Catalog", - "stac_version": "1.0.0-rc.2", + "stac_version": "1.0.0-rc.3", "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.2/examples/catalog.json", + "href": "https://raw.githubusercontent.com/radiantearth/stac-spec/v1.0.0-rc.3/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 58562783..1cddc65c 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.2", + "stac_version": "1.0.0-rc.3", "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 01f580bf..c5cb7a2c 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.2", + "stac_version": "1.0.0-rc.3", "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 28604ecf..790bcf8d 100644 --- a/examples/collection.json +++ b/examples/collection.json @@ -5,7 +5,7 @@ "https://stac-extensions.github.io/eo/v1.0.0/schema.json", "https://stac-extensions.github.io/view/v1.0.0/schema.json" ], - "stac_version": "1.0.0-rc.2", + "stac_version": "1.0.0-rc.3", "description": "A simple collection demonstrating core catalog fields with links to a couple of items", "title": "Simple Example Collection", "providers": [ @@ -103,7 +103,7 @@ }, { "rel": "self", - "href": "https://raw.githubusercontent.com/radiantearth/stac-spec/v1.0.0-rc.2/examples/collection.json", + "href": "https://raw.githubusercontent.com/radiantearth/stac-spec/v1.0.0-rc.3/examples/collection.json", "type": "application/json" } ] diff --git a/examples/collectionless-item.json b/examples/collectionless-item.json index a1b890c1..c4b224d5 100644 --- a/examples/collectionless-item.json +++ b/examples/collectionless-item.json @@ -1,5 +1,5 @@ { - "stac_version": "1.0.0-rc.2", + "stac_version": "1.0.0-rc.3", "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 06fa8b0a..dc95ff80 100644 --- a/examples/core-item.json +++ b/examples/core-item.json @@ -1,5 +1,5 @@ { - "stac_version": "1.0.0-rc.2", + "stac_version": "1.0.0-rc.3", "stac_extensions": [], "type": "Feature", "id": "20201211_223832_CS2", diff --git a/examples/extended-item.json b/examples/extended-item.json index b27f4752..85b3f598 100644 --- a/examples/extended-item.json +++ b/examples/extended-item.json @@ -1,5 +1,5 @@ { - "stac_version": "1.0.0-rc.2", + "stac_version": "1.0.0-rc.3", "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 a79fabe3..fa0fe85d 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.2", + "stac_version": "1.0.0-rc.3", "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 71d3b2d3..64a42dc1 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.2", + "stac_version": "1.0.0-rc.3", "id": "proj-example", "properties": { "datetime": "2018-10-01T01:08:32.033000Z", diff --git a/examples/simple-item.json b/examples/simple-item.json index f505fda8..f74871fb 100644 --- a/examples/simple-item.json +++ b/examples/simple-item.json @@ -1,5 +1,5 @@ { - "stac_version": "1.0.0-rc.2", + "stac_version": "1.0.0-rc.3", "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 a5b26a3d..6b66ccf5 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.2/item-spec/json-schema/basics.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/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 fa540a32..87fb300b 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.2/item-spec/json-schema/datetime.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/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 78d836ba..722af252 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.2/item-spec/json-schema/instrument.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/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 e228e2d2..10bfa2b2 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.2/item-spec/json-schema/item.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/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.2" + "const": "1.0.0-rc.3" }, "stac_extensions": { "title": "STAC extensions", diff --git a/item-spec/json-schema/licensing.json b/item-spec/json-schema/licensing.json index a20dde60..525b7c25 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.2/item-spec/json-schema/licensing.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/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 b80c734e..36f43cb0 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.2/item-spec/json-schema/provider.json#", + "$id": "https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json#", "title": "Provider Fields", "type": "object", "properties": { diff --git a/package.json b/package.json index ed5c9edb..1789d03a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stac-spec", - "version": "1.0.0-rc.2", + "version": "1.0.0-rc.3", "description": "STAC spec helpers to check the spec.", "repository": "https://github.com/radiantearth/stac-spec", "license": "Apache-2.0", From 094b90d649cb37b1fd6b7d8df34451aafee02aab Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Thu, 29 Apr 2021 13:48:10 -0700 Subject: [PATCH 10/14] fixed linking issue --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46d40690..f8c64c9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -423,7 +423,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.2]: +[v1.0.0-rc.3]: [v1.0.0-rc.2]: [v1.0.0-rc.1]: [v1.0.0-beta.2]: From 5c48425e3b9f58792511880c565b9baeb03f2d0f Mon Sep 17 00:00:00 2001 From: Emmanuel Mathot Date: Fri, 30 Apr 2021 16:14:51 +0200 Subject: [PATCH 11/14] 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 12/14] 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 13/14] 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 14/14] 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