Semantic Definition Format (SDF) for Data and Interactions of Things

Added on Nov. 2, 2025Managed by lisa

Semantic Definition Format (SDF) for Data and Interactions of Things

{
  "title": "sdf-framework.cddl -- Generated: 2025-10-13T08:43:29Z",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$ref": "#/definitions/sdf-syntax",
  "definitions": {
    "sdf-syntax": {
      "type": "object",
      "properties": {
        "info": {
          "$ref": "#/definitions/sdfinfo"
        },
        "namespace": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "defaultNamespace": {
          "type": "string"
        },
        "sdfThing": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/thingqualities"
          }
        },
        "sdfObject": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/objectqualities"
          }
        },
        "sdfProperty": {
          "$ref": "#/definitions/sdfProperty-"
        },
        "sdfAction": {
          "$ref": "#/definitions/sdfAction-"
        },
        "sdfEvent": {
          "$ref": "#/definitions/sdfEvent-"
        },
        "sdfData": {
          "$ref": "#/definitions/sdfData-sdfChoice-properties-"
        }
      },
      "patternProperties": {
        "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
      },
      "additionalProperties": false
    },
    "sdfinfo": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "copyright": {
          "type": "string"
        },
        "license": {
          "type": "string"
        },
        "modified": {
          "$ref": "#/definitions/modified-date-time"
        },
        "features": {
          "type": "array"
        },
        "$comment": {
          "type": "string"
        }
      },
      "patternProperties": {
        "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
      },
      "additionalProperties": false
    },
    "modified-date-time": {
      "type": "string"
    },
    "thingqualities": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "$comment": {
          "type": "string"
        },
        "sdfRef": {
          "$ref": "#/definitions/sdf-pointer"
        },
        "sdfRequired": {
          "$ref": "#/definitions/pointer-list"
        },
        "sdfObject": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/objectqualities"
          }
        },
        "sdfThing": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/thingqualities"
          }
        },
        "sdfProperty": {
          "$ref": "#/definitions/sdfProperty-"
        },
        "sdfAction": {
          "$ref": "#/definitions/sdfAction-"
        },
        "sdfEvent": {
          "$ref": "#/definitions/sdfEvent-"
        },
        "sdfData": {
          "$ref": "#/definitions/sdfData-sdfChoice-properties-"
        },
        "minItems": {
          "$ref": "#/definitions/uint"
        },
        "maxItems": {
          "$ref": "#/definitions/uint"
        }
      },
      "patternProperties": {
        "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
      },
      "additionalProperties": false
    },
    "sdf-pointer": {
      "anyOf": [
        {
          "$ref": "#/definitions/global"
        },
        {
          "$ref": "#/definitions/same-object"
        },
        {
          "$ref": "#/definitions/true"
        }
      ]
    },
    "global": {
      "type": "string",
      "pattern": "^[^\\n\\r]*[:#][^\\n\\r]*$"
    },
    "same-object": {
      "$ref": "#/definitions/referenceable-name"
    },
    "referenceable-name": {
      "type": "string",
      "pattern": "^[^:#]*$"
    },
    "true": {
      "type": "boolean",
      "const": true
    },
    "pointer-list": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/sdf-pointer"
      }
    },
    "objectqualities": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "$comment": {
          "type": "string"
        },
        "sdfRef": {
          "$ref": "#/definitions/sdf-pointer"
        },
        "sdfRequired": {
          "$ref": "#/definitions/pointer-list"
        },
        "sdfProperty": {
          "$ref": "#/definitions/sdfProperty-"
        },
        "sdfAction": {
          "$ref": "#/definitions/sdfAction-"
        },
        "sdfEvent": {
          "$ref": "#/definitions/sdfEvent-"
        },
        "sdfData": {
          "$ref": "#/definitions/sdfData-sdfChoice-properties-"
        },
        "minItems": {
          "$ref": "#/definitions/uint"
        },
        "maxItems": {
          "$ref": "#/definitions/uint"
        }
      },
      "patternProperties": {
        "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
      },
      "additionalProperties": false
    },
    "propertyqualities": {
      "anyOf": [
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "$ref": "#/definitions/type-"
            },
            "sdfChoice": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "observable": {
              "type": "boolean"
            },
            "readable": {
              "type": "boolean"
            },
            "writable": {
              "type": "boolean"
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string",
              "const": "object"
            },
            "required": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "properties": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "sdfChoice": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "observable": {
              "type": "boolean"
            },
            "readable": {
              "type": "boolean"
            },
            "writable": {
              "type": "boolean"
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string"
            },
            "sdfChoice": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "observable": {
              "type": "boolean"
            },
            "readable": {
              "type": "boolean"
            },
            "writable": {
              "type": "boolean"
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "$ref": "#/definitions/type-"
            },
            "enum": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "observable": {
              "type": "boolean"
            },
            "readable": {
              "type": "boolean"
            },
            "writable": {
              "type": "boolean"
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string",
              "const": "object"
            },
            "required": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "properties": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "enum": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "observable": {
              "type": "boolean"
            },
            "readable": {
              "type": "boolean"
            },
            "writable": {
              "type": "boolean"
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string"
            },
            "enum": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "observable": {
              "type": "boolean"
            },
            "readable": {
              "type": "boolean"
            },
            "writable": {
              "type": "boolean"
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "dataqualities": {
      "anyOf": [
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "$ref": "#/definitions/type-"
            },
            "sdfChoice": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string",
              "const": "object"
            },
            "required": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "properties": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "sdfChoice": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string"
            },
            "sdfChoice": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "$ref": "#/definitions/type-"
            },
            "enum": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string",
              "const": "object"
            },
            "required": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "properties": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "enum": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string"
            },
            "enum": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "description": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "sdfRequired": {
              "$ref": "#/definitions/pointer-list"
            },
            "const": {
              "$ref": "#/definitions/allowed-types"
            },
            "default": {
              "$ref": "#/definitions/allowed-types"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "exclusiveMinimum": {
              "type": "number"
            },
            "exclusiveMaximum": {
              "type": "number"
            },
            "multipleOf": {
              "type": "number"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            },
            "pattern": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/format-"
            },
            "minItems": {
              "$ref": "#/definitions/uint"
            },
            "maxItems": {
              "$ref": "#/definitions/uint"
            },
            "uniqueItems": {
              "type": "boolean"
            },
            "items": {
              "$ref": "#/definitions/jso-items"
            },
            "unit": {
              "type": "string"
            },
            "nullable": {
              "type": "boolean"
            },
            "sdfType": {
              "$ref": "#/definitions/sdfType-"
            },
            "contentFormat": {
              "type": "string"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "allowed-types": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string"
        },
        {
          "type": "boolean"
        },
        {
          "type": "null"
        },
        {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "array",
          "items": {
            "type": "boolean"
          }
        },
        {
          "type": "object",
          "additionalProperties": {}
        },
        {}
      ]
    },
    "uint": {
      "type": "integer",
      "minimum": 0
    },
    "jso-items": {
      "anyOf": [
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "number",
                "string",
                "boolean",
                "integer"
              ]
            },
            "sdfChoice": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "description": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "format": {
              "type": "string"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string",
              "const": "object"
            },
            "required": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "properties": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "sdfChoice": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "description": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "format": {
              "type": "string"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string"
            },
            "sdfChoice": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "description": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "format": {
              "type": "string"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "number",
                "string",
                "boolean",
                "integer"
              ]
            },
            "enum": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "description": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "format": {
              "type": "string"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string",
              "const": "object"
            },
            "required": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "properties": {
              "$ref": "#/definitions/sdfData-sdfChoice-properties-"
            },
            "enum": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "description": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "format": {
              "type": "string"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "patternProperties": {
            "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
          },
          "properties": {
            "type": {
              "type": "string"
            },
            "enum": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            },
            "sdfRef": {
              "$ref": "#/definitions/sdf-pointer"
            },
            "description": {
              "type": "string"
            },
            "$comment": {
              "type": "string"
            },
            "minimum": {
              "type": "number"
            },
            "maximum": {
              "type": "number"
            },
            "format": {
              "type": "string"
            },
            "minLength": {
              "$ref": "#/definitions/uint"
            },
            "maxLength": {
              "$ref": "#/definitions/uint"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "sdftype-name": {
      "type": "string",
      "pattern": "^[a-z][\\-a-z0-9]*$"
    },
    "actionqualities": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "$comment": {
          "type": "string"
        },
        "sdfRef": {
          "$ref": "#/definitions/sdf-pointer"
        },
        "sdfRequired": {
          "$ref": "#/definitions/pointer-list"
        },
        "sdfInputData": {
          "$ref": "#/definitions/parameter-list"
        },
        "sdfOutputData": {
          "$ref": "#/definitions/parameter-list"
        },
        "sdfData": {
          "$ref": "#/definitions/sdfData-sdfChoice-properties-"
        }
      },
      "patternProperties": {
        "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
      },
      "additionalProperties": false
    },
    "parameter-list": {
      "$ref": "#/definitions/dataqualities"
    },
    "eventqualities": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "$comment": {
          "type": "string"
        },
        "sdfRef": {
          "$ref": "#/definitions/sdf-pointer"
        },
        "sdfRequired": {
          "$ref": "#/definitions/pointer-list"
        },
        "sdfOutputData": {
          "$ref": "#/definitions/parameter-list"
        },
        "sdfData": {
          "$ref": "#/definitions/sdfData-sdfChoice-properties-"
        }
      },
      "patternProperties": {
        "^(?:[a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*$": {}
      },
      "additionalProperties": false
    },
    "format-": {
      "anyOf": [
        {
          "type": "string",
          "const": "date-time"
        },
        {
          "type": "string",
          "const": "date"
        },
        {
          "type": "string",
          "const": "time"
        },
        {
          "type": "string",
          "const": "uri"
        },
        {
          "type": "string",
          "const": "uri-reference"
        },
        {
          "type": "string",
          "const": "uuid"
        },
        {
          "type": "string"
        }
      ]
    },
    "sdfType-": {
      "anyOf": [
        {
          "type": "string",
          "const": "byte-string"
        },
        {
          "type": "string",
          "const": "unix-time"
        },
        {
          "$ref": "#/definitions/sdftype-name"
        }
      ]
    },
    "sdfData-sdfChoice-properties-": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/dataqualities"
      }
    },
    "type-": {
      "type": "string",
      "enum": [
        "number",
        "string",
        "boolean",
        "integer",
        "array"
      ]
    },
    "sdfProperty-": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/propertyqualities"
      }
    },
    "sdfAction-": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/actionqualities"
      }
    },
    "sdfEvent-": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/eventqualities"
      }
    }
  }
}

View source