{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "ILIAD APKG Registry Record",
  "description": "GeoJSON Feature representing one Application Package entry in the ILIAD APKG registry (https://iliad-registry.inesctec.pt/collections/apkg). Conforms to OGC API Records record envelope (type, id, geometry, properties) with the properties payload following the APKG Metadata Profile.\n",
  "type": "object",
  "required": [
    "type",
    "id",
    "geometry",
    "properties"
  ],
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "Feature"
      ],
      "x-jsonld-id": "@type"
    },
    "id": {
      "type": "string",
      "description": "APKG URN, identical to properties.identifier.",
      "examples": [
        "urn:apkg:tool:inesctec:pt:wo-data-filter:0.1.0"
      ],
      "x-jsonld-id": "@id"
    },
    "geometry": {
      "description": "Spatial coverage of the application package as a GeoJSON geometry.",
      "oneOf": [
        {
          "$ref": "https://geojson.org/schema/Geometry.json"
        },
        {
          "type": "null"
        }
      ],
      "x-jsonld-id": "http://purl.org/apkg/terms/hasGeometry"
    },
    "properties": {
      "type": "object",
      "required": [
        "identifier",
        "id",
        "class",
        "name",
        "family",
        "latest",
        "sdDatePublished",
        "sdPublisher"
      ],
      "properties": {
        "identifier": {
          "type": "string",
          "description": "URN-form identifier of this application package (versioned).",
          "examples": [
            "urn:apkg:tool:inesctec:pt:wo-data-filter:0.1.0"
          ],
          "x-jsonld-id": "http://purl.org/dc/terms/identifier",
          "x-jsonld-type": "http://www.w3.org/2001/XMLSchema#anyURI"
        },
        "id": {
          "type": "string",
          "description": "Short, unversioned identifier within the URN.",
          "examples": [
            "wo-data-filter"
          ],
          "x-jsonld-id": "https://schema.org/identifier"
        },
        "family": {
          "type": "string",
          "description": "Family identifier (URN without version) grouping all versions.",
          "examples": [
            "urn:apkg:tool:inesctec:pt:wo-data-filter"
          ],
          "x-jsonld-id": "http://purl.org/apkg/terms/family",
          "x-jsonld-type": "http://www.w3.org/2001/XMLSchema#anyURI"
        },
        "latest": {
          "type": "boolean",
          "description": "True when this is the latest published version of the family.",
          "x-jsonld-id": "http://purl.org/apkg/terms/latest"
        },
        "class": {
          "type": "string",
          "description": "CWL process class.",
          "enum": [
            "CommandLineTool",
            "Workflow"
          ],
          "x-jsonld-id": "http://purl.org/dc/terms/type"
        },
        "name": {
          "type": "string",
          "x-jsonld-id": "https://schema.org/name"
        },
        "description": {
          "type": "string",
          "x-jsonld-id": "https://schema.org/description"
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "x-jsonld-id": "https://schema.org/keywords"
        },
        "software_version": {
          "type": "string",
          "x-jsonld-id": "https://schema.org/softwareVersion"
        },
        "programming_language": {
          "type": [
            "string",
            "null"
          ],
          "x-jsonld-id": "https://schema.org/programmingLanguage"
        },
        "cwl": {
          "type": "string",
          "description": "Full CWL document (YAML) as a string.",
          "x-jsonld-id": "http://purl.org/apkg/terms/cwl"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Self-link to the registry entry.",
          "x-jsonld-id": "https://schema.org/url",
          "x-jsonld-type": "http://www.w3.org/2001/XMLSchema#anyURI"
        },
        "registration_url": {
          "type": [
            "string",
            "null"
          ],
          "format": "uri",
          "description": "Original URL where the application package was registered.",
          "x-jsonld-id": "http://purl.org/apkg/terms/originalURL",
          "x-jsonld-type": "http://www.w3.org/2001/XMLSchema#anyURI"
        },
        "code_repository": {
          "type": [
            "string",
            "null"
          ],
          "format": "uri",
          "x-jsonld-id": "https://schema.org/codeRepository",
          "x-jsonld-type": "http://www.w3.org/2001/XMLSchema#anyURI"
        },
        "license": {
          "type": [
            "string",
            "null"
          ],
          "description": "SPDX expression, license URI, or null when undeclared.",
          "x-jsonld-id": "https://schema.org/license",
          "x-jsonld-type": "http://www.w3.org/2001/XMLSchema#anyURI"
        },
        "citation": {
          "type": [
            "string",
            "null"
          ],
          "x-jsonld-id": "https://schema.org/citation"
        },
        "date_created": {
          "type": [
            "string",
            "null"
          ],
          "description": "Creation date (ISO 8601 date or date-time).",
          "x-jsonld-id": "https://schema.org/dateCreated",
          "x-jsonld-type": "http://www.w3.org/2001/XMLSchema#date"
        },
        "sdDatePublished": {
          "type": "string",
          "format": "date-time",
          "x-jsonld-id": "https://schema.org/sdDatePublished",
          "x-jsonld-type": "http://www.w3.org/2001/XMLSchema#dateTime"
        },
        "author": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Agent"
          },
          "x-jsonld-id": "https://schema.org/author"
        },
        "contributor": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/Agent"
              }
            },
            {
              "type": "null"
            }
          ],
          "x-jsonld-id": "https://schema.org/contributor"
        },
        "maintainer": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/Agent"
              }
            },
            {
              "type": "null"
            }
          ],
          "x-jsonld-id": "https://schema.org/maintainer"
        },
        "producer": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Organization"
          },
          "x-jsonld-id": "https://schema.org/producer"
        },
        "source_organization": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Organization"
          },
          "x-jsonld-id": "https://schema.org/sourceOrganization"
        },
        "sdPublisher": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Organization"
          },
          "x-jsonld-id": "https://schema.org/sdPublisher"
        },
        "spatial_coverage": {
          "$ref": "#/$defs/GeoShape",
          "x-jsonld-id": "https://schema.org/spatialCoverage"
        },
        "temporal_coverage": {
          "type": [
            "string",
            "null"
          ],
          "description": "ISO 8601 time interval (e.g. \"2014-01-01T00:00:00Z/\").",
          "x-jsonld-id": "http://purl.org/apkg/terms/hasTemporalCoverage"
        },
        "inputs": {
          "type": "array",
          "description": "CWL input parameters.",
          "items": {
            "$ref": "#/$defs/Parameter"
          },
          "x-jsonld-id": "http://purl.org/apkg/terms/hasInput"
        },
        "outputs": {
          "type": "array",
          "description": "CWL output parameters.",
          "items": {
            "$ref": "#/$defs/Parameter"
          },
          "x-jsonld-id": "http://purl.org/apkg/terms/hasOutput"
        },
        "Secrets": {
          "oneOf": [
            {
              "$ref": "#/$defs/Secrets"
            },
            {
              "type": "null"
            }
          ],
          "description": "CWL cwltool:Secrets block when present.",
          "x-jsonld-id": "http://commonwl.org/cwltool#Secrets"
        }
      },
      "additionalProperties": true,
      "x-jsonld-id": "@nest",
      "x-jsonld-extra-terms": {
        "file_format": "https://schema.org/fileFormat",
        "publisher": "https://schema.org/publisher",
        "inXSDDateTime": "http://www.w3.org/2006/time#inXSDDateTime",
        "hasBeginning": "http://www.w3.org/2006/time#hasBeginning",
        "hasEnd": "http://www.w3.org/2006/time#hasEnd",
        "links": {
          "x-jsonld-id": "http://purl.org/apkg/terms/hasLink",
          "x-jsonld-context": {
            "rel": "http://purl.org/dc/terms/type",
            "type": "http://www.w3.org/ns/dcat#mediaType",
            "href": {
              "@id": "https://schema.org/url",
              "@type": "http://www.w3.org/2001/XMLSchema#anyURI"
            },
            "title": "http://purl.org/dc/terms/title"
          }
        }
      }
    }
  },
  "$defs": {
    "Agent": {
      "type": "object",
      "description": "Person or organisation associated with the application package.",
      "properties": {
        "name": {
          "type": "string",
          "x-jsonld-id": "https://schema.org/name"
        },
        "email": {
          "type": "string",
          "format": "email",
          "x-jsonld-id": "https://schema.org/email"
        },
        "class": {
          "type": "string",
          "description": "schema.org class hint (Person / Organization).",
          "x-jsonld-id": "http://purl.org/dc/terms/type"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "x-jsonld-id": "https://schema.org/url",
          "x-jsonld-type": "http://www.w3.org/2001/XMLSchema#anyURI"
        }
      },
      "additionalProperties": true
    },
    "Organization": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "x-jsonld-id": "https://schema.org/name"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "x-jsonld-id": "https://schema.org/url",
          "x-jsonld-type": "http://www.w3.org/2001/XMLSchema#anyURI"
        },
        "class": {
          "type": "string",
          "x-jsonld-id": "http://purl.org/dc/terms/type"
        },
        "address": {
          "type": "object",
          "properties": {
            "address_country": {
              "type": "string"
            }
          },
          "additionalProperties": true
        }
      },
      "additionalProperties": true
    },
    "GeoShape": {
      "type": "object",
      "description": "schema:GeoShape bounding-box description.",
      "properties": {
        "class": {
          "type": "string",
          "examples": [
            "schema:GeoShape"
          ],
          "x-jsonld-id": "http://purl.org/dc/terms/type"
        },
        "box": {
          "type": "string",
          "description": "Bounding box as 'south west north east' (schema:box)."
        },
        "geo": {
          "type": "object",
          "properties": {
            "box": {
              "type": "string"
            }
          },
          "additionalProperties": true
        }
      },
      "additionalProperties": true
    },
    "Parameter": {
      "type": "object",
      "description": "CWL input or output parameter.",
      "properties": {
        "id": {
          "type": "string",
          "x-jsonld-id": "@id"
        },
        "doc": {
          "type": [
            "string",
            "null"
          ]
        },
        "type": {
          "type": "string",
          "description": "CWL type expression (e.g. \"string\", \"string?\", \"float\", \"File\", \"Directory\").",
          "x-jsonld-id": "@type"
        },
        "label": {
          "type": [
            "string",
            "null"
          ],
          "x-jsonld-id": "http://purl.org/apkg/terms/label"
        },
        "format": {
          "type": [
            "string",
            "null"
          ],
          "description": "EDAM format URI or CWL format reference."
        },
        "fileFormat": {
          "type": [
            "string",
            "null"
          ],
          "description": "schema:fileFormat (MIME type when a File)."
        },
        "default": {
          "description": "Default value (any JSON type) for the parameter."
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "x-jsonld-id": "https://schema.org/keywords"
        },
        "loadContents": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "loadListing": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": true
    },
    "Secrets": {
      "type": "object",
      "properties": {
        "secrets": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": true
    }
  },
  "additionalProperties": true,
  "x-jsonld-extra-terms": {
    "sh": "http://www.w3.org/ns/shacl"
  },
  "x-jsonld-prefixes": {
    "dct": "http://purl.org/dc/terms/",
    "cwltool": "http://commonwl.org/cwltool#",
    "apkg": "http://purl.org/apkg/terms/",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "schema": "https://schema.org/",
    "time": "http://www.w3.org/2006/time#",
    "dcat": "http://www.w3.org/ns/dcat#",
    "geojson": "https://purl.org/geojson/vocab#"
  }
}