$schema: https://json-schema.org/draft/2020-12/schema
title: Geospatial Processing Step Provenance
description: A single geospatial processing step, expressed as a constrained profile
  of PROV-O. Inputs and outputs are entity references; the role each played is expressed
  through prov:qualifiedUsage rather than inline, so the profile stays compatible
  with the PROV-O object model.
allOf:
- $ref: https://ogcincubator.github.io/bblock-prov-schema/build/annotated/ogc-utils/prov/schema.yaml
- type: object
  required:
  - id
  - processType
  - used
  - generated
  properties:
    id:
      description: Stable identifier for this processing step activity.
      type: string
    processType:
      description: Identifier of the registered process type this step is an instance
        of. This is the link that PROV-O and OGC API - Processes Part 5 do not themselves
        provide. Bound to dct:type rather than a newly minted term, so the value resolves
        as a governed concept in the process-type register.
      type: string
      x-jsonld-id: http://purl.org/dc/terms/type
      x-jsonld-type: '@id'
    label:
      type: string
      x-jsonld-id: http://www.w3.org/2000/01/rdf-schema#label
    startedAtTime:
      type: string
      format: date-time
    endedAtTime:
      type: string
      format: date-time
    used:
      description: Entities consumed by this step.
      type: array
      minItems: 1
      items:
        type: string
    generated:
      description: Entities produced by this step.
      type: array
      minItems: 1
      items:
        type: string
    qualifiedUsage:
      description: Which declared input slot of the process type each consumed entity
        occupied. Makes two runs of the same process type comparable.
      type: array
      items:
        type: object
        required:
        - entity
        - hadRole
        properties:
          entity:
            type: string
          hadRole:
            type: string
    wasAssociatedWith:
      type: array
      items:
        type: string
    parameters:
      description: 'Parameter values that determined the behaviour of this step. Keys
        SHOULD be drawn from the parameter terms declared by the registered process
        type. Deliberately left unbound in the JSON-LD context: how parameters should
        be typed depends on whether process types are registered coarsely or as parameterised
        subtypes, which is still an open question for the register design.'
      type: object
      additionalProperties: true
