Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OGC API - Features queryables/returnables: Implement support for describing object attributes #1090

Closed
jerstlouis opened this issue Jan 10, 2023 · 4 comments
Assignees
Labels
enhancement New feature or request stale Issue marked stale by stale-bot

Comments

@jerstlouis
Copy link

Problem description
It is not currently possible to describe feature properties which are objects in queryables.
There is also no support currently for returnables schemas (specification work for this still in progress).

Solution
One possibility would be to support the current proposal of /collections/{collectionId}/schemas/feature (rel: http://www.opengis.net/def/rel/ogc/0.0/schema-item) for feature item returnable schemas, where "type" : "object" can be used to describe object properties.

Queryables could also possibly support object types, though it is not clear what that would mean for CQL2 filter requests.

Additional context
This issue was raised in the context of Testbed 18 - Advanced SWIM filtering, interacting with the Skymantics Aviation service.
In https://aviationapi.skymantics.com/faa/collections/faa_flight_plans , several attributes present in the features are not described anywhere in the available schemas (because object properties are not supported) requiring client support to discover new properties on the fly.

These collections from ldproxy and GNOSIS Map Server demonstrate an implementation of the returnable schema capabilities:

https://t18.ldproxy.net/d100_fns/collections/notam
https://t18.ldproxy.net/d100_fns/collections/notam/schemas/feature?f=json

https://maps.gnosis.earth/ogcapi/collections/swim:d100_notam
https://maps.gnosis.earth/ogcapi/collections/swim:d100_notam/schemas/feature?f=json

@jerstlouis jerstlouis added the enhancement New feature or request label Jan 10, 2023
@tomkralidis tomkralidis self-assigned this Jan 13, 2023
@tomkralidis
Copy link
Member

pygeoapi feature/record backend providers support a get_schema function, which does exactly this. However, there is no pygeoapi endpoint implemented to expose this (note that it is used by downstream applications).

What is the state of .../schemas/collection and .../schemas/feature from a specification maturity perspective? Happy to implement if the endpoints and link relations are relatively stable.

@jerstlouis
Copy link
Author

jerstlouis commented Jan 18, 2023

Regarding the maturity of ../schemas/feature and ../schemas/collection, it would be defined by an extension for schemas, which seems to still be at a proposal stage:

https://github.com/opengeospatial/ogcapi-features/tree/master/proposals/schemas

and the text there dates from March 2021 and does not seem to mention the latest link relations and (recommended?) paths that were used in Testbed 17 and 18 tasks.

However, there are at least 2 consistent implementations (ldproxy and GNOSIS Map Server), CubeWERX/MariaDB might be another. pygeoapi would make it 3 or 4, which in itself could help moving this forward :)

There is an open question about whether the schema is specifically for GeoJSON vaidation (in which case it will have additional fields like the properties present in GeoJSON), vs. a generic schema that could be adapted to multiple encodings. From our client's perspective, we really only care about the latter. An implementation wishing to run a validator could always generate the validation schema automatically with the additional fields for validation targeting a particular encoding.

Regarding schemas, there is also the propertiesSchema in 2D Tile Matrix Set & Tileset Metadata which provides this mechanism (tileset metadata at e.g., ../tiles/{tileMatrixSetId}), and can be used to display properties of both coverage (the range type fields) and vector tiles.
In coverage we have a separate ../coverage/rangetype resource.
EDR includes these as parameter names directly in the collection response (that could easily be too much data, especially if it is required at the /collections level for multiple collections).
Ideally, it would be nice if we had a single consistent Common approach to describe the properties / range type fields / schemas across all OGC API Standards.

cc @cportele @pvretano in case they could please provide additional details on the maturity of the Schemas status.
cc @skyNacho

Copy link

As per RFC4, this Issue has been inactive for 90 days. In order to manage maintenance burden, it will be automatically closed in 7 days.

@github-actions github-actions bot added the stale Issue marked stale by stale-bot label Mar 10, 2024
Copy link

As per RFC4, this Issue has been closed due to there being no activity for more than 90 days.

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Mar 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request stale Issue marked stale by stale-bot
Projects
None yet
Development

No branches or pull requests

2 participants