FraunhoferIOSB / FROST-Server

A Complete Server implementation of the OGC SensorThings API
https://fraunhoferiosb.github.io/FROST-Server/
GNU Lesser General Public License v3.0
198 stars 74 forks source link

Implementing an option to group STA entities in "data sets"? #1573

Open StefanSchuhart opened 1 year ago

StefanSchuhart commented 1 year ago

(Geo)Data sets do share some common properties like the topic or groups of users which are authorized to read it. Often a user is interested in exactly one data set and all its Things/Locations/Datastreams, e.g. to display on a map. Currently the SensorThings API does not have a concept of "data sets" as a group or collection of all Things, Locations, Datastreams, FOIs, ... which are associated. Is it possible to implement this as an optional part of FROST-Servers functionality?

The "data set" could be part of the URL-path: {data set}/v1.1/Datastreams(x). Maybe the {data set} path part could be based on a specific properties field in entity sets. Another way could be to use PostgreSQLs schemas as namespaces for datasets.

Such functionality could be helpful in some ways:

  1. It would make writing queries easier for users if they are only interested in a specific dataset. Currently our users need to use $filter=properties/serviceName on Datastreams to filter for entity collections of a specific dataset.
  2. When implemented in such a way it would be easier to subscribe to topics which are part of a dataset, like {data set}/Datastreams(x)/Observations.
  3. When using the data set name as part of the URL path it could be possible to implement access rights per dataset with one FROST-Server instance. Currently for each data set with differing access rights we would deploy a new FROST-Server instance with its own domain.
pbaumard commented 1 year ago

Would STAplus cover at least some of your needs?

Otherwise you can implement access rights by yourself following FROST fine-grained authorisation details.