From 9eeb3137222671eb21f0426c04499307c03fc212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Ker=C3=A4nen?= Date: Tue, 6 May 2025 09:16:22 +0300 Subject: [PATCH] Update to latest validation schema --- sdflint/sdf-validation.jso.json | 1646 +++++++++++++++++-------------- 1 file changed, 907 insertions(+), 739 deletions(-) diff --git a/sdflint/sdf-validation.jso.json b/sdflint/sdf-validation.jso.json index 87c7d99..acd5f84 100644 --- a/sdflint/sdf-validation.jso.json +++ b/sdflint/sdf-validation.jso.json @@ -1,13 +1,10 @@ { - "title": "sdf-validation.cddl", + "title": "sdf-validation.cddl -- Generated: 2024-02-29T07:42:35Z", "$schema": "http://json-schema.org/draft-07/schema#", "$ref": "#/definitions/sdf-syntax", "definitions": { "sdf-syntax": { "type": "object", - "required": [ - "info" - ], "properties": { "info": { "$ref": "#/definitions/sdfinfo" @@ -27,12 +24,6 @@ "$ref": "#/definitions/thingqualities" } }, - "sdfProduct": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/productqualities" - } - }, "sdfObject": { "type": "object", "additionalProperties": { @@ -40,44 +31,29 @@ } }, "sdfProperty": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/propertyqualities" - } + "$ref": "#/definitions/sdfProperty-" }, "sdfAction": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/actionqualities" - } + "$ref": "#/definitions/sdfAction-" }, "sdfEvent": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/eventqualities" - } + "$ref": "#/definitions/sdfEvent-" }, "sdfData": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } + "$ref": "#/definitions/sdfData-sdfChoice-properties-" } }, "additionalProperties": false }, "sdfinfo": { "type": "object", - "required": [ - "title", - "version", - "copyright", - "license" - ], "properties": { "title": { "type": "string" }, + "description": { + "type": "string" + }, "version": { "type": "string" }, @@ -86,10 +62,23 @@ }, "license": { "type": "string" + }, + "modified": { + "$ref": "#/definitions/modified-date-time" + }, + "features": { + "type": "array", + "maxItems": 0 + }, + "$comment": { + "type": "string" } }, "additionalProperties": false }, + "modified-date-time": { + "type": "string" + }, "thingqualities": { "type": "object", "properties": { @@ -119,12 +108,55 @@ "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" } }, "additionalProperties": false }, "sdf-pointer": { - "type": "string" + "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", @@ -151,56 +183,60 @@ "$ref": "#/definitions/pointer-list" }, "sdfProperty": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/propertyqualities" - } + "$ref": "#/definitions/sdfProperty-" }, "sdfAction": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/actionqualities" - } + "$ref": "#/definitions/sdfAction-" }, "sdfEvent": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/eventqualities" - } + "$ref": "#/definitions/sdfEvent-" }, "sdfData": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } + "$ref": "#/definitions/sdfData-sdfChoice-properties-" + }, + "minItems": { + "$ref": "#/definitions/uint" + }, + "maxItems": { + "$ref": "#/definitions/uint" } }, "additionalProperties": false }, "propertyqualities": { - "$ref": "#/definitions/dataqualities" - }, - "dataqualities": { "anyOf": [ { "type": "object", "properties": { "type": { - "type": "string", - "enum": [ - "number", - "string", - "boolean", - "integer", - "array" - ] + "$ref": "#/definitions/type-" }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 + "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" @@ -215,253 +251,46 @@ "type": "number" }, "exclusiveMinimum": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "number" - } - ] + "type": "number" }, "exclusiveMaximum": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "number" - } - ] + "type": "number" }, "multipleOf": { "type": "number" }, "minLength": { - "type": "number" + "$ref": "#/definitions/uint" }, "maxLength": { - "type": "number" + "$ref": "#/definitions/uint" }, "pattern": { "type": "string" }, "format": { - "type": "string", - "enum": [ - "date-time", - "date", - "time", - "uri", - "uri-reference", - "uuid" - ] + "$ref": "#/definitions/format-" }, "minItems": { - "type": "number" + "$ref": "#/definitions/uint" }, "maxItems": { - "type": "number" + "$ref": "#/definitions/uint" }, "uniqueItems": { "type": "boolean" }, "items": { - "anyOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "number", - "string", - "boolean", - "integer" - ] - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "description": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "minimum": { - "type": "number" - }, - "maximum": { - "type": "number" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "format": { - "type": "string" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "object" - }, - "required": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "properties": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "description": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "minimum": { - "type": "number" - }, - "maximum": { - "type": "number" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "format": { - "type": "string" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "sdfChoice": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "description": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "minimum": { - "type": "number" - }, - "maximum": { - "type": "number" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "format": { - "type": "string" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - } - }, - "additionalProperties": false - } - ] - }, - "description": { - "type": "string" - }, - "label": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "sdfRequired": { - "$ref": "#/definitions/pointer-list" + "$ref": "#/definitions/jso-items" }, "unit": { "type": "string" }, - "scaleMinimum": { - "type": "number" - }, - "scaleMaximum": { - "type": "number" - }, - "observable": { - "type": "boolean" - }, - "readable": { - "type": "boolean" - }, - "writable": { - "type": "boolean" - }, "nullable": { "type": "boolean" }, - "subtype": { - "type": "string", - "enum": [ - "byte-string", - "unix-time" - ] - }, "sdfType": { - "type": "string", - "enum": [ - "byte-string", - "unix-time" - ] + "$ref": "#/definitions/sdfType-" }, "contentFormat": { "type": "string" @@ -484,17 +313,34 @@ "minItems": 1 }, "properties": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } + "$ref": "#/definitions/sdfData-sdfChoice-properties-" }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 + "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" @@ -509,253 +355,46 @@ "type": "number" }, "exclusiveMinimum": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "number" - } - ] + "type": "number" }, "exclusiveMaximum": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "number" - } - ] + "type": "number" }, "multipleOf": { "type": "number" }, "minLength": { - "type": "number" + "$ref": "#/definitions/uint" }, "maxLength": { - "type": "number" + "$ref": "#/definitions/uint" }, "pattern": { "type": "string" }, "format": { - "type": "string", - "enum": [ - "date-time", - "date", - "time", - "uri", - "uri-reference", - "uuid" - ] + "$ref": "#/definitions/format-" }, "minItems": { - "type": "number" + "$ref": "#/definitions/uint" }, "maxItems": { - "type": "number" + "$ref": "#/definitions/uint" }, "uniqueItems": { "type": "boolean" }, "items": { - "anyOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "number", - "string", - "boolean", - "integer" - ] - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "description": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "minimum": { - "type": "number" - }, - "maximum": { - "type": "number" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "format": { - "type": "string" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "object" - }, - "required": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "properties": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "description": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "minimum": { - "type": "number" - }, - "maximum": { - "type": "number" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "format": { - "type": "string" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "sdfChoice": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "description": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "minimum": { - "type": "number" - }, - "maximum": { - "type": "number" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "format": { - "type": "string" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - } - }, - "additionalProperties": false - } - ] - }, - "description": { - "type": "string" - }, - "label": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "sdfRequired": { - "$ref": "#/definitions/pointer-list" + "$ref": "#/definitions/jso-items" }, "unit": { "type": "string" }, - "scaleMinimum": { - "type": "number" - }, - "scaleMaximum": { - "type": "number" - }, - "observable": { - "type": "boolean" - }, - "readable": { - "type": "boolean" - }, - "writable": { - "type": "boolean" - }, "nullable": { "type": "boolean" }, - "subtype": { - "type": "string", - "enum": [ - "byte-string", - "unix-time" - ] - }, "sdfType": { - "type": "string", - "enum": [ - "byte-string", - "unix-time" - ] + "$ref": "#/definitions/sdfType-" }, "contentFormat": { "type": "string" @@ -766,11 +405,8 @@ { "type": "object", "properties": { - "sdfChoice": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } + "type": { + "$ref": "#/definitions/type-" }, "enum": { "type": "array", @@ -779,6 +415,30 @@ }, "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" }, @@ -792,253 +452,524 @@ "type": "number" }, "exclusiveMinimum": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "number" - } - ] + "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", + "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 + } + ] + }, + "dataqualities": { + "anyOf": [ + { + "type": "object", + "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", + "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", + "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", + "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": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "number" - } - ] + "type": "number" }, "multipleOf": { "type": "number" }, "minLength": { - "type": "number" + "$ref": "#/definitions/uint" }, "maxLength": { - "type": "number" + "$ref": "#/definitions/uint" }, "pattern": { "type": "string" }, "format": { - "type": "string", - "enum": [ - "date-time", - "date", - "time", - "uri", - "uri-reference", - "uuid" - ] + "$ref": "#/definitions/format-" }, "minItems": { - "type": "number" + "$ref": "#/definitions/uint" }, "maxItems": { - "type": "number" + "$ref": "#/definitions/uint" }, "uniqueItems": { "type": "boolean" }, "items": { - "anyOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "number", - "string", - "boolean", - "integer" - ] - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "description": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "minimum": { - "type": "number" - }, - "maximum": { - "type": "number" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "format": { - "type": "string" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "object" - }, - "required": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "properties": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "description": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "minimum": { - "type": "number" - }, - "maximum": { - "type": "number" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "format": { - "type": "string" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "sdfChoice": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "description": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "minimum": { - "type": "number" - }, - "maximum": { - "type": "number" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "format": { - "type": "string" - }, - "minLength": { - "type": "number" - }, - "maxLength": { - "type": "number" - } - }, - "additionalProperties": false - } - ] - }, - "description": { - "type": "string" - }, - "label": { - "type": "string" - }, - "$comment": { - "type": "string" - }, - "sdfRef": { - "$ref": "#/definitions/sdf-pointer" - }, - "sdfRequired": { - "$ref": "#/definitions/pointer-list" + "$ref": "#/definitions/jso-items" }, "unit": { "type": "string" }, - "scaleMinimum": { - "type": "number" - }, - "scaleMaximum": { - "type": "number" - }, - "observable": { - "type": "boolean" - }, - "readable": { - "type": "boolean" - }, - "writable": { - "type": "boolean" - }, "nullable": { "type": "boolean" }, - "subtype": { - "type": "string", - "enum": [ - "byte-string", - "unix-time" - ] - }, "sdfType": { - "type": "string", - "enum": [ - "byte-string", - "unix-time" - ] + "$ref": "#/definitions/sdfType-" }, "contentFormat": { "type": "string" @@ -1087,6 +1018,200 @@ } ] }, + "uint": { + "type": "integer", + "minimum": 0 + }, + "jso-items": { + "anyOf": [ + { + "type": "object", + "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", + "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", + "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", + "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 + } + ] + }, "actionqualities": { "type": "object", "properties": { @@ -1112,10 +1237,7 @@ "$ref": "#/definitions/parameter-list" }, "sdfData": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } + "$ref": "#/definitions/sdfData-sdfChoice-properties-" } }, "additionalProperties": false @@ -1145,16 +1267,62 @@ "$ref": "#/definitions/parameter-list" }, "sdfData": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/dataqualities" - } + "$ref": "#/definitions/sdfData-sdfChoice-properties-" } }, "additionalProperties": false }, - "productqualities": { - "$ref": "#/definitions/thingqualities" + "format-": { + "type": "string", + "enum": [ + "date-time", + "date", + "time", + "uri", + "uri-reference", + "uuid" + ] + }, + "sdfData-sdfChoice-properties-": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/dataqualities" + } + }, + "type-": { + "type": "string", + "enum": [ + "number", + "string", + "boolean", + "integer", + "array" + ] + }, + "sdfAction-": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/actionqualities" + } + }, + "sdfProperty-": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/propertyqualities" + } + }, + "sdfEvent-": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/eventqualities" + } + }, + "sdfType-": { + "type": "string", + "enum": [ + "byte-string", + "unix-time" + ] } } }