Open-EO / openeo-api

The openEO API specification
http://api.openeo.org
Apache License 2.0
91 stars 11 forks source link

Explicitly specify metadata filters for collections #396

Closed m-mohr closed 1 year ago

m-mohr commented 3 years ago

Originates from https://github.com/Open-EO/openeo-python-client/issues/141#issuecomment-847340175

Initially the thought was that all (scalar) metadata properties could be queried. This seems not to be true and thus it's not really clear to users what they can query on (despite the limited implementations right now). It would probably good to add something that mentions what users can query on.

In STAC API this would be /queryables, but it may be enough to just add a list with properties to the collections, e.g. "openeo:properties": ["eo:cloud_cover", "proj:epsg"] for example.

m-mohr commented 3 years ago

It's actually possible to expose this via the process description, although it is pretty verbose:

{
  "type": "object",
  "subtype": "metadata-filter",
  "title": "Filters",
  "description": "A list of filters to check against. Specify key-value-pairs with the key being the name of the metadata property name and the value being a process evaluated against the metadata values.",
  "properties": {
    "eo:cloud_cover": {
      "type": "object",
      "subtype": "process-graph",
      "parameters": [
        {
          "name": "value",
          "description": "The cloud cover value to be checked against.",
          "schema": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 100
          }
        }
      ]
    },
    "platform": {
      "type": "object",
      "subtype": "process-graph",
      "parameters": [
        {
          "name": "value",
          "description": "The property value to be checked against.",
          "schema": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      ]
    }
  }
}
m-mohr commented 3 years ago

Although it would likely also be interesting to expose this per collection...

sophieherrmann commented 2 years ago

I think it would make a lot more sense to expose this per collections. Thinking about radar and optical data the two will provide very different queryable properties. Depending on the specific datasets it could even be that on radar collection provides a specific queryable and another radar collection does not.

I do like the idea of just adding an additional key which lists non standard queryable properties.

m-mohr commented 2 years ago

We may want to consider collection-specific queryables instead of openeo:property_filters. Came up in https://github.com/Open-EO/openeo-api/pull/447#issuecomment-1206476270

When I spec'ed the PR above, I wasn't aware collection-specific queryables is a thing, but it exists and could be the approach that is better aligned with STAC API.

m-mohr commented 1 year ago

Removed openeo:property_filters again. Instead add queryables once working on #469 and the underlying specs are stable (OGC API and STAC API).

m-mohr commented 1 year ago

I'll prepare a PR based on the STAC API - Filter extension.

m-mohr commented 1 year ago

Please review PR #487