covjson / specification

CoverageJSON specification
https://covjson.org/spec/
45 stars 6 forks source link

Describing ParameterGroup objects #81

Open jonblower opened 8 years ago

jonblower commented 8 years ago

In the current spec, the ParameterGroup object itself has an observedProperty but does not give any information about what kind of grouping it is. It seems that the client must infer this from the information that's attached to the "children" of the group. However I think it would be useful to have extra information at the ParameterGroup level to indicate what kind of grouping it is. (It may not be easy or possible to find this from inspection of the children alone.)

I think the two main use cases are:

So having "tags" of some kind for each of these cases could be useful. I can see two options: firstly, giving information about the observedProperty:

{
  "type": "ParameterGroup",
  "observedProperty": {
    "label": {
      "en": "Wind velocity"
    }
    "narrowerThan" : "http://some.uri.for/velocity"
  },
  "members": ["WIND_SPEED", "WIND_DIR"]
}

But I don't think this works for uncertain variables. (The concept of sea surface temperature is not narrower than the concept of a probability density function.) I think that something like a "groupType" property would work better, attached directly to the ParameterGroup object. This could have have values as in the table below:

groupType Meaning Notes
vector Children are components of a vector field Metadata attached to the children describes what kind of components we have (magnitude and direction, x and y components, etc)
statistics Children are different statistics of the same quantity E.g. mean and standard deviation, using URIs from UncertML
pdf Children hold the values of the components of the probability density function May need another property (from UncertML) to describe which PDF we are using
samples Children hold the values from individual realisations of a sampling E.g. an ensemble

(See http://www.uncertml.org for more details about encoding uncertain data.)

Or, instead of these general groupTypes we could use a much more specific URI to denote what the grouping represents (e.g. http://www.uncertml.org/distributions/normal for a normally-distributed variable). The children of the group would need to be similarly described by URIs to work out which child holds which information.