diff --git a/catalog-spec/catalog-spec.md b/catalog-spec/catalog-spec.md index 9ad2666d3..1bf9a5fd0 100644 --- a/catalog-spec/catalog-spec.md +++ b/catalog-spec/catalog-spec.md @@ -149,6 +149,5 @@ The following types are commonly used as `rel` types in the Link Object of a Dat | parent | URL to the parent [STAC Catalog](../catalog-spec/). Non-root catalogs should include a link to their parent. | | child | URL to a child [STAC Catalog](../catalog-spec/). | | item | URL to a [STAC Item](../item-spec/). | -| license | The license URL for the catalog SHOULD be specified if the `license` field is set to `proprietary`. If there is no public license URL available, it is RECOMMENDED to supplement the STAC catalog with the license text in a separate file and link to this file. | **Note:** A link to at least one `item` or `child` catalog is _required_. diff --git a/dataset-spec/dataset-spec.md b/dataset-spec/dataset-spec.md index 9805573c1..5586159ae 100644 --- a/dataset-spec/dataset-spec.md +++ b/dataset-spec/dataset-spec.md @@ -21,10 +21,9 @@ Implementations are encouraged, however, as good effort will be made to not chan | title | string | A short descriptive one-line title for the dataset. | | description | string | **REQUIRED.** Detailed multi-line description to fully explain the entity. [CommonMark 0.28](http://commonmark.org/) syntax MAY be used for rich text representation. | | keywords | [string] | List of keywords describing the dataset. | -| version | string | Version of the dataset. [Semantic Versioning (SemVer)](https://semver.org/) SHOULD be followed. | +| version | string | Version of the dataset. | | license | string | **REQUIRED.** Dataset's license(s) as a SPDX [License identifier](https://spdx.org/licenses/) or [expression](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60) or `proprietary` if the license is not on the SPDX license list. Proprietary licensed data SHOULD add a link to the license text, see the `license` relation type. | -| provider | [Provider Object] | A list of data providers, the organizations which influenced the content of the dataset. Providers should be listed in chronological order with the most recent provider being the last element of the list. | -| host | Host Object | Storage provider, the organization that hosts the dataset. | +| provider | [Provider Object] | A list of providers, which may include all organizations capturing or processing the data or the hosting provider. Providers should be listed in chronological order with the most recent provider being the last element of the list. | | extent | [Extent Object] | **REQUIRED.** Spatial and temporal extents. | | links | [Link Object] | **REQUIRED.** A list of references to other documents. | @@ -52,28 +51,14 @@ The coordinate reference system of the values is WGS84 longitude/latitude. ### Provider Object -The object provides information about a provider. A provider is any of the organizations that created or processed the content of the dataset and therefore influenced the data offered by this dataset. +The object provides information about a provider. A provider is any of the organizations that captured or processed the content of the dataset and therefore influenced the data offered by this dataset. May also include information about the final storage provider hosting the data. | Field Name | Type | Description | | ---------- | ------ | ------------------------------------------------------------ | | name | string | **REQUIRED.** The name of the organization or the individual. | +| type | string | The type of provider. Any of `producer`, `processor` or `host`. | | url | string | Homepage of the provider. | -### Host Object - -The objects provides information about the storage provider hosting the data. - -**Note:** The idea of storage profiles is currently [discussed](https://github.com/radiantearth/stac-spec/issues/148). Therefore, scheme, id and region may be removed from the final spec once this concept is introduced to STAC. - -| Field Name | Type | Description | -| -------------- | ------- | ------------------------------------------------------------ | -| name | string | **REQUIRED.** The name of the organization or the individual hosting the data. | -| description | string | Detailed description to explain the hosting details. [CommonMark 0.28](http://commonmark.org/) syntax MAY be used for rich text representation. | -| scheme | string | **REQUIRED.** The protocol/scheme used to access the data. Any of: `S3`, `GCS`, `URL`, `OTHER` | -| id | string | **REQUIRED.** Host-specific identifier such as an URL or asset id. | -| region | string | Provider specific region where the data is stored. | -| requester_pays | boolean | `true` if requester pays, `false` if host pays. Defaults to `false`. | - ### Link Object This object describes a relationship with another entity. Data providers are advised to be liberal with links. @@ -97,7 +82,7 @@ The following types are commonly used as `rel` types in the Link Object of a Dat | item | URL to a [STAC Item](../item-spec/). | | license | The license URL for the dataset SHOULD be specified if the `license` field is set to `proprietary`. If there is no public license URL available, it is RECOMMENDED to supplement the STAC catalog with the license text in a separate file and link to this file. | -**Note:** The [catalog specification](../catalog-spec/catalog-spec.md) requires a link to at least one `item` or `child` catalog. This is _not_ a requirement for datasets, but _recommended_. +**Note:** The [catalog specification](../catalog-spec/catalog-spec.md) requires a link to at least one `item` or `child` catalog. This is _not_ a requirement for datasets, but _strongly recommended_. ## Extensions diff --git a/dataset-spec/examples/sentinel2.json b/dataset-spec/examples/sentinel2.json index e1c5600cc..7dc6a6676 100644 --- a/dataset-spec/examples/sentinel2.json +++ b/dataset-spec/examples/sentinel2.json @@ -14,6 +14,7 @@ "provider": [ { "name": "European Union/ESA/Copernicus", + "type": "producer", "url": "https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi" } ], diff --git a/dataset-spec/json-schema/dataset.json b/dataset-spec/json-schema/dataset.json index d0a0c0a2c..becdbdf6b 100644 --- a/dataset-spec/json-schema/dataset.json +++ b/dataset-spec/json-schema/dataset.json @@ -45,9 +45,18 @@ "items": { "properties": { "name": { - "title": "Organization Name", + "title": "Organization name", "type": "string" }, + "type": { + "title": "Organization type", + "type": "string", + "enum": [ + "producer", + "processor", + "host" + ] + }, "url": { "title": "Organization homepage", "type": "string", @@ -56,47 +65,6 @@ } } }, - "host": { - "required": [ - "name", - "scheme", - "id" - ], - "properties": { - "name": { - "title": "Organization name", - "type": "string" - }, - "description": { - "title": "Description", - "type": "string" - }, - "scheme": { - "title": "Scheme", - "type": "string", - "enum": [ - "S3", - "GCS", - "URL", - "OTHER" - ] - }, - "id": { - "title": "Identifirer", - "type": "string" - }, - "region": { - "title": "Region", - "type": "string" - }, - "requester_pays": { - "title": "Requester Pays", - "type": "boolean", - "default": false - } - }, - "additionalProperties": true - }, "extent": { "title": "Extents", "type": "object", diff --git a/item-spec/examples/CBERS_4_MUX_20170528_090_084_L2.json b/item-spec/examples/CBERS_4_MUX_20170528_090_084_L2.json index 97155fe56..e112aca5a 100644 --- a/item-spec/examples/CBERS_4_MUX_20170528_090_084_L2.json +++ b/item-spec/examples/CBERS_4_MUX_20170528_090_084_L2.json @@ -38,8 +38,6 @@ }, "properties": { "datetime": "2017-05-28T09:01:17Z", - "provider": "INPE", - "eo:collection": "default", "eo:sun_azimuth": 66.2923, "eo:sun_elevation": 70.3079, "eo:off_nadir": -0.00744884, @@ -54,11 +52,11 @@ "href": "https://cbers-stac.s3.amazonaws.com/CBERS4/MUX/090/084/CBERS_4_MUX_20170528_090_084_L2.json" }, { - "rel": "catalog", + "rel": "parent", "href": "https://cbers-stac.s3.amazonaws.com/CBERS4/MUX/090/catalog.json" }, { - "rel": "collection", + "rel": "dataset", "href": "https://cbers-stac.s3.amazonaws.com/collections/CBERS_4_MUX_L2_collection.json" } ], diff --git a/item-spec/examples/digitalglobe-sample.json b/item-spec/examples/digitalglobe-sample.json index 60c5d0cdd..2cf7754ed 100644 --- a/item-spec/examples/digitalglobe-sample.json +++ b/item-spec/examples/digitalglobe-sample.json @@ -80,9 +80,7 @@ "dg:platform": "WORLDVIEW02", "dg:product_level": "LV1B", "dg:product": "WORLDVIEW02_LV1B", - "datetime": "2015-11-09T18:04:46.000Z", - "provider": "DigitalGlobe", - "license": "(C) COPYRIGHT 2016 DigitalGlobe, Inc., Longmont CO USA 80503" + "datetime": "2015-11-09T18:04:46.000Z" }, "links": [ { @@ -90,7 +88,7 @@ "href": "https://s3.amazonaws.com/digitalglobe-catalog-spec/collections/dg_worldview02_LV1B/103001004B316600_P002_MUL" }, { - "rel": "collection", + "rel": "dataset", "href": "https://s3.amazonaws.com/digitalglobe-catalog-spec/collections/dg_worldview02_LV1B.json" } ] diff --git a/item-spec/examples/landsat8-sample.json b/item-spec/examples/landsat8-sample.json index 427e352df..138ed525d 100644 --- a/item-spec/examples/landsat8-sample.json +++ b/item-spec/examples/landsat8-sample.json @@ -34,8 +34,6 @@ "properties": { "datetime": "2014-06-02T09:22:02Z", - "provider": "USGS", - "license": "PDDL-1.0", "c:id": "L1T", "c:name": "Landsat L1T", "c:description": "Landat 8 imagery that is radiometrically calibrated and orthorectified using ground points and Digital Elevation Model (DEM) data to correct relief displacement.", @@ -61,8 +59,7 @@ "links": [ { "rel":"self", "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00.json"}, { "rel":"alternate", "href": "https://landsatonaws.com/L8/153/025/LC81530252014153LGN00", "type": "html"}, - { "rel":"catalog", "href": "http://landsat-pds.s3.amazonaws.com/L8/catalog.json"}, - { "rel":"collection", "href": "http://landsat-pds.s3.amazonaws.com/L8/L1T-collection.json"} + { "rel":"dataset", "href": "http://landsat-pds.s3.amazonaws.com/L8/L1T-collection.json"} ], "assets" :{ diff --git a/item-spec/examples/planet-sample.json b/item-spec/examples/planet-sample.json index 90858f810..0e62c699b 100644 --- a/item-spec/examples/planet-sample.json +++ b/item-spec/examples/planet-sample.json @@ -55,7 +55,6 @@ "id": "20171110_121030_1013", "properties": { "datetime": "2017-11-10T12:10:30.535417Z", - "provider": "Planet", "eo:cloud_cover": 23, "eo:gsd": 4, "eo:sun_azimuth": 101.8, diff --git a/item-spec/examples/sample-full.json b/item-spec/examples/sample-full.json index f03824a9e..f421c9fa5 100644 --- a/item-spec/examples/sample-full.json +++ b/item-spec/examples/sample-full.json @@ -18,8 +18,6 @@ }, "properties": { "datetime": "2016-05-03T13:22:30.040Z", - "provider": "http://www.cool-sat.com", - "license": "CC-BY-4.0", "eo:sun_azimuth": 168.7, "eo:cloud_cover": 0.12, "eo:off_nadir": 1.4, @@ -35,7 +33,7 @@ "links": [ {"rel": "self", "href": "http://cool-sat.com/catalog/CS3-20160503_132130_04/CS3-20160503_132130_04.json"}, {"rel": "thumbnail", "href":"thumbnail.png"}, - {"rel": "catalog", "href": "http://cool-sat.com/catalog/"}, + {"rel": "dataset", "href": "http://cool-sat.com/catalog/"}, {"rel": "acquisition", "href": "http://cool-sat.com/catalog/acquisitions/20160503_56"} ], "assets": { diff --git a/item-spec/examples/sample.json b/item-spec/examples/sample.json index 59210a54e..391f69f7e 100644 --- a/item-spec/examples/sample.json +++ b/item-spec/examples/sample.json @@ -17,12 +17,11 @@ ] }, "properties": { - "datetime": "2016-05-03T13:21:30.040Z", - "provider": "http://www.cool-sat.com", - "license": "CC-BY-4.0" + "datetime": "2016-05-03T13:21:30.040Z" }, "links": [ - { "rel": "self", "href": "http://cool-sat.com/catalog/CS3-20160503_132130_04/CS3-20160503_132130_04.json"} + { "rel": "self", "href": "http://cool-sat.com/catalog/CS3-20160503_132130_04/CS3-20160503_132130_04.json"}, + { "rel": "dataset", "href": "http://cool-sat.com/catalog.json"} ], "assets": { "analytic": { diff --git a/item-spec/examples/sentinel2-sample.json b/item-spec/examples/sentinel2-sample.json index c6dd98fb3..7de73481b 100644 --- a/item-spec/examples/sentinel2-sample.json +++ b/item-spec/examples/sentinel2-sample.json @@ -4,7 +4,11 @@ "links": [ { "rel": "self", - "href": "s3://sentinel-s2-l2a-catalog/tiles/35/V/MK/2018/6/5/0/catalog.json" + "href": "s3://sentinel-s2-l2a-catalog/tiles/35/V/MK/2018/6/5/0/sentinel2-sample.json" + }, + { + "rel": "dataset", + "href": "s3://sentinel-s2-l2a-catalog/catalog.json" } ], "bbox": [ diff --git a/item-spec/item-spec.md b/item-spec/item-spec.md index b859c6586..36c06f17a 100644 --- a/item-spec/item-spec.md +++ b/item-spec/item-spec.md @@ -64,8 +64,6 @@ custom fields. | Field Name | Type | Name | Description | | ---------- | ------ | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | datetime | string | Date and Time | **REQUIRED.** The searchable date and time of the assets, in UTC. It is formatted according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). | -| provider | string | Provider | Provider name | -| license | string | Data License | Items' license(s) as a SPDX [License identifier](https://spdx.org/licenses/) or [expression](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60) or `proprietary` if the license is not on the SPDX license list. Proprietary licensed data SHOULD add a link to the license text, see the `license` relation type. | **datetime** is likely the acquisition (in the case of single camera type captures) or the 'nominal' or representative time in the case of assets that are combined together. Though time can be a @@ -98,7 +96,7 @@ The following types are commonly used as `rel` types in the Link Object of an It | self | **REQUIRED.** _Absolute_ URL to the item file itself. This is required, to represent the location that the file can be found online. This is particularly useful when in a download package that includes metadata, so that the downstream user can know where the data has come from. | | root | URL to the root [STAC Catalog](../catalog-spec/) or [Dataset](../dataset-spec/). | | parent | URL to the parent [STAC Catalog](../catalog-spec/) or [Dataset](../dataset-spec/). | -| license | The license URL for the item SHOULD be specified if the `license` field is set to `proprietary`. If there is no public license URL available, it is RECOMMENDED to supplement the STAC catalog with the license text in a separate file and link to this file. | +| dataset | **REQUIRED.** URL to a [STAC Dataset](../dataset-spec/). | #### Relative vs Absolute links @@ -110,7 +108,7 @@ link is required to be absolute. #### Datasets -Items are *strongly recommended* to provide a link to a dataset definition. +Items are *required* to provide a link to a dataset definition. ### Asset Object diff --git a/item-spec/json-schema/stac-item.json b/item-spec/json-schema/stac-item.json index d4a1eb3b8..f4e82d274 100644 --- a/item-spec/json-schema/stac-item.json +++ b/item-spec/json-schema/stac-item.json @@ -64,22 +64,6 @@ "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time" - }, - "provider": { - "title": "Provider", - "description": "Provider name and contact", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/entity" - } - ] - }, - "license": { - "title": "Data license", - "description": "Data license name based on SPDX License List" } } } @@ -118,25 +102,6 @@ "type": "string" } } - }, - "entity": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "email": { - "type": "string", - "format": "email" - }, - "phone": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - } } } } \ No newline at end of file diff --git a/validation/README.md b/validation/README.md index f492836f2..825fd6430 100644 --- a/validation/README.md +++ b/validation/README.md @@ -53,5 +53,5 @@ This example runs the validation for the scientific extension, please change the To run the validation for an item file: ```bash -npm run validate_item -- -d ../item-spec/sample.json +npm run validate_item -- -d ../item-spec/examples/sample.json ```