{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "SeaDOTs Indicator Quality Requirement",
  "description": "Requirement profile attached to an indicator. Captures spatial support, temporal support, method metadata, uncertainty, controlled-vocabulary needs, access requirements, and pass/fail thresholds.\n",
  "type": "object",
  "required": [
    "id",
    "type",
    "indicator",
    "thresholds"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uri-reference",
      "x-jsonld-id": "@id"
    },
    "type": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ],
      "x-jsonld-id": "@type"
    },
    "name": {
      "type": "string",
      "x-jsonld-id": "https://schema.org/name"
    },
    "indicator": {
      "type": "string",
      "format": "uri-reference",
      "x-jsonld-id": "http://www.w3.org/ns/sosa/observedProperty",
      "x-jsonld-type": "@id"
    },
    "description": {
      "type": "string",
      "x-jsonld-id": "https://schema.org/description"
    },
    "geospatialRequirements": {
      "type": "object",
      "properties": {
        "requiredGeometry": {
          "type": "string",
          "x-jsonld-id": "https://schema.org/additionalType"
        },
        "crs": {
          "type": "string",
          "format": "uri-reference",
          "x-jsonld-id": "http://purl.org/dc/terms/conformsTo",
          "x-jsonld-type": "@id"
        },
        "bbox": {
          "type": "array",
          "minItems": 4,
          "items": {
            "type": "number"
          },
          "x-jsonld-id": "https://purl.org/geojson/vocab#bbox",
          "x-jsonld-container": "@list"
        },
        "minimumSpatialResolution": {
          "type": "string",
          "x-jsonld-id": "https://schema.org/spatialResolution"
        },
        "requiredSpatialRelations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "x-jsonld-id": "https://schema.org/measurementTechnique",
          "x-jsonld-container": "@set"
        }
      },
      "additionalProperties": true,
      "x-jsonld-id": "http://www.opengis.net/ont/geosparql#hasGeometry"
    },
    "temporalRequirements": {
      "type": "object",
      "properties": {
        "minimumTemporalCoverage": {
          "type": "string",
          "x-jsonld-id": "https://schema.org/temporalCoverage"
        },
        "minimumTemporalResolution": {
          "type": "string",
          "x-jsonld-id": "https://schema.org/temporalCoverage"
        },
        "requiredBaseline": {
          "type": "string",
          "x-jsonld-id": "https://schema.org/measurementTechnique"
        }
      },
      "additionalProperties": true,
      "x-jsonld-id": "http://purl.org/dc/terms/temporal"
    },
    "methodRequirements": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-jsonld-id": "https://schema.org/measurementTechnique",
      "x-jsonld-container": "@set"
    },
    "uncertaintyRequirements": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-jsonld-id": "http://www.w3.org/ns/dqv#hasQualityAnnotation",
      "x-jsonld-container": "@set"
    },
    "vocabularyRequirements": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri-reference"
      },
      "x-jsonld-id": "http://purl.org/dc/terms/conformsTo",
      "x-jsonld-container": "@set",
      "x-jsonld-type": "@id"
    },
    "accessRequirements": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-jsonld-id": "https://schema.org/conditionsOfAccess",
      "x-jsonld-container": "@set"
    },
    "thresholds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-jsonld-id": "https://schema.org/threshold",
      "x-jsonld-container": "@set"
    },
    "readiness": {
      "type": "string",
      "enum": [
        "pass",
        "conditional",
        "planned",
        "blocked"
      ],
      "x-jsonld-id": "https://schema.org/reviewRating"
    },
    "evidence": {
      "oneOf": [
        {
          "type": "string",
          "format": "uri-reference"
        },
        {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri-reference"
          }
        }
      ],
      "x-jsonld-id": "http://www.w3.org/ns/prov#wasDerivedFrom",
      "x-jsonld-type": "@id",
      "x-jsonld-container": "@set"
    }
  },
  "additionalProperties": true,
  "x-jsonld-prefixes": {
    "schema": "https://schema.org/",
    "sosa": "http://www.w3.org/ns/sosa/",
    "geosparql": "http://www.opengis.net/ont/geosparql#",
    "dct": "http://purl.org/dc/terms/",
    "geojson": "https://purl.org/geojson/vocab#",
    "dqv": "http://www.w3.org/ns/dqv#",
    "prov": "http://www.w3.org/ns/prov#",
    "xsd": "http://www.w3.org/2001/XMLSchema#"
  }
}