Quality Flags
Quality flags in CovJSON are represented with a categorical parameter. In this example we use the Argo quality flags:
| URI | Description | 
|---|---|
| http://mmisw.org/ont/argo/qualityFlag/_0 | No quality control was performed | 
| http://mmisw.org/ont/argo/qualityFlag/_1 | QC was performed good data | 
| http://mmisw.org/ont/argo/qualityFlag/_2 | Probably good data but value may be inconsistent with statistics (differ from climatology) | 
| http://mmisw.org/ont/argo/qualityFlag/_3 | Probably bad data (spike-gradient- if other tests passed) | 
| http://mmisw.org/ont/argo/qualityFlag/_4 | Bad data | 
| http://mmisw.org/ont/argo/qualityFlag/_5 | Value modified during quality control | 
| http://mmisw.org/ont/argo/qualityFlag/_8 | Interpolated value | 
| http://mmisw.org/ont/argo/qualityFlag/_9 | Missing value | 
The corresponding categorical parameter then looks like that:
{
  "type" : "Parameter",
  "observedProperty" : {
    "id": "http://mmisw.org/ont/argo/qualityFlag",
    "label" : {
      "en": "Argo Quality Control Flag"
    },
    "categories": [{
      "id": "http://mmisw.org/ont/argo/qualityFlag/_0",
      "label": {
        "en": "No QC was performed"
      },
      "description": {
        "en": "No quality control was performed"
      }
    }, {
      "id": "http://mmisw.org/ont/argo/qualityFlag/_1",
      "label": {
        "en": "Good data"
      },
      "description": {
        "en": "QC was performed good data"
      }
    }, {
      "id": "http://mmisw.org/ont/argo/qualityFlag/_2",
      "label": {
        "en": "Probably good data"
      },
      "description": {
        "en": "Probably good data but value may be inconsistent with statistics (differ from climatology)"
      }
    }, {
      "id": "http://mmisw.org/ont/argo/qualityFlag/_3",
      "label": {
        "en": "Probably bad data"
      },
      "description": {
        "en": "Probably bad data (spike-gradient- if other tests passed)"
      }
    }, {
      "id": "http://mmisw.org/ont/argo/qualityFlag/_4",
      "label": {
        "en": "Bad data"
      }
    }, {
      "id": "http://mmisw.org/ont/argo/qualityFlag/_5",
      "label": {
        "en": "Value modified"
      },
      "description": {
        "en": "Value modified during quality control"
      }
    }, {
      "id": "http://mmisw.org/ont/argo/qualityFlag/_8",
      "label": {
        "en": "Interpolated value"
      }
    }, {
      "id": "http://mmisw.org/ont/argo/qualityFlag/_9",
      "label": {
        "en": "Missing value"
      }
    }]
  },
  "categoryEncoding": {
    "http://mmisw.org/ont/argo/qualityFlag/_0": 0,
    "http://mmisw.org/ont/argo/qualityFlag/_1": 1,
    "http://mmisw.org/ont/argo/qualityFlag/_2": 2,
    "http://mmisw.org/ont/argo/qualityFlag/_3": 3,
    "http://mmisw.org/ont/argo/qualityFlag/_4": 4,
    "http://mmisw.org/ont/argo/qualityFlag/_5": 5,
    "http://mmisw.org/ont/argo/qualityFlag/_8": 8,
    "http://mmisw.org/ont/argo/qualityFlag/_9": 9
  }
}
Open in Playground (Point coverage)
Notes:
- We added our own short labels for each category to make visualization in clients more convenient.
- The "Missing value" category is not strictly necessary in CovJSON as this is also represented by nullin range values. If however there would be specific distinguished reasons for a missing value (e.g. instrument failure, data corruption) then such categories are indeed useful.
- Since there are official URIs for all the Argo quality flags the above translation was straightforward.
If this was not the case then such URIs should be created first. Otherwise, a simple arbitrary string may be used for "id"as well, e.g."bad"and"good". The advantage of using URIs is that clients have a better chance of understanding and working with the flags. The data becomes more interoperable.