diff --git a/.gitmodules b/.gitmodules index 1c2b72dd..e76d68f7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "tools/thingweb-playground"] - path = tools/thingweb-playground - url = https://github.com/thingweb/thingweb-playground [submodule "events/2021.09.Online/TD/TMs/U Bremen"] path = events/2021.09.Online/TD/TMs/U Bremen url = https://github.com/JKRhb/onedm-playground-wot-tm.git diff --git a/data/input_2022/TD/Results/echonet-bridge.csv b/data/input_2022/TD/Results/echonet-bridge.csv index ecde8d76..5666cc40 100644 --- a/data/input_2022/TD/Results/echonet-bridge.csv +++ b/data/input_2022/TD/Results/echonet-bridge.csv @@ -60,7 +60,7 @@ "td-data-schema_minimum-IntegerSchema","not-impl","", "td-data-schema_minimum-NumberSchema","pass","", "td-data-schema_multipleOf-IntegerSchema","not-impl","", -"td-data-schema_multipleOf-NumberSchema","not-impl","", +"td-data-schema_multipleOf-NumberSchema","pass","", "td-data-schema_oneOf","pass","", "td-data-schema_pattern","not-impl","", "td-data-schema_properties","pass","", @@ -147,7 +147,7 @@ "td-property-names_minItems","not-impl","", "td-property-names_minLength","not-impl","", "td-property-names_minimum","pass","", -"td-property-names_multipleOf","not-impl","result of a merge", +"td-property-names_multipleOf","pass","result of a merge", "td-property-names_observable","pass","", "td-property-names_oneOf","pass","", "td-property-names_properties","pass","", @@ -249,7 +249,7 @@ "td-vocab-model--VersionInfo","not-impl","data must have required property 'version'", "td-vocab-modified--Thing","not-impl","data must have required property 'modified'", "td-vocab-multipleOf--IntegerSchema","not-impl","", -"td-vocab-multipleOf--NumberSchema","not-impl","", +"td-vocab-multipleOf--NumberSchema","pass","", "td-vocab-name--APIKeySecurityScheme","not-impl","", "td-vocab-name--BasicSecurityScheme","not-impl","", "td-vocab-name--BearerSecurityScheme","not-impl","", diff --git a/data/input_2022/TD/Results/flask-tum.csv b/data/input_2022/TD/Results/flask-tum.csv index 4e8e4ccb..f617119a 100644 --- a/data/input_2022/TD/Results/flask-tum.csv +++ b/data/input_2022/TD/Results/flask-tum.csv @@ -52,11 +52,11 @@ "td-data-schema_format","not-impl","", "td-data-schema_items","pass","", "td-data-schema_maxItems","not-impl","", -"td-data-schema_maxLength","not-impl","", +"td-data-schema_maxLength","pass","", "td-data-schema_maximum-IntegerSchema","pass","", "td-data-schema_maximum-NumberSchema","pass","", "td-data-schema_minItems","not-impl","", -"td-data-schema_minLength","not-impl","", +"td-data-schema_minLength","pass","", "td-data-schema_minimum-IntegerSchema","pass","", "td-data-schema_minimum-NumberSchema","pass","", "td-data-schema_multipleOf-IntegerSchema","not-impl","", @@ -142,10 +142,10 @@ "td-property-names_forms","pass","", "td-property-names_items","pass","", "td-property-names_maxItems","not-impl","", -"td-property-names_maxLength","not-impl","", +"td-property-names_maxLength","pass","", "td-property-names_maximum","not-impl","", "td-property-names_minItems","not-impl","", -"td-property-names_minLength","not-impl","", +"td-property-names_minLength","pass","", "td-property-names_minimum","not-impl","", "td-property-names_multipleOf","not-impl","result of a merge", "td-property-names_observable","not-impl","", @@ -239,11 +239,11 @@ "td-vocab-items--ArraySchema","pass","", "td-vocab-links--Thing","not-impl","data must have required property 'links'", "td-vocab-maxItems--ArraySchema","not-impl","", -"td-vocab-maxLength--StringSchema","not-impl","", +"td-vocab-maxLength--StringSchema","pass","", "td-vocab-maximum--IntegerSchema","pass","", "td-vocab-maximum--NumberSchema","pass","", "td-vocab-minItems--ArraySchema","not-impl","", -"td-vocab-minLength--StringSchema","not-impl","", +"td-vocab-minLength--StringSchema","pass","", "td-vocab-minimum--IntegerSchema","pass","", "td-vocab-minimum--NumberSchema","pass","", "td-vocab-model--VersionInfo","not-impl","data must have required property 'version'", diff --git a/data/input_2022/TD/Results/node-wot.csv b/data/input_2022/TD/Results/node-wot.csv index 6219d1ad..8e8f9860 100644 --- a/data/input_2022/TD/Results/node-wot.csv +++ b/data/input_2022/TD/Results/node-wot.csv @@ -60,7 +60,7 @@ "td-data-schema_minimum-IntegerSchema","pass","", "td-data-schema_minimum-NumberSchema","pass","", "td-data-schema_multipleOf-IntegerSchema","not-impl","", -"td-data-schema_multipleOf-NumberSchema","not-impl","", +"td-data-schema_multipleOf-NumberSchema","pass","", "td-data-schema_oneOf","pass","", "td-data-schema_pattern","not-impl","", "td-data-schema_properties","pass","", @@ -147,7 +147,7 @@ "td-property-names_minItems","pass","", "td-property-names_minLength","not-impl","", "td-property-names_minimum","pass","", -"td-property-names_multipleOf","not-impl","result of a merge", +"td-property-names_multipleOf","pass","result of a merge", "td-property-names_observable","pass","", "td-property-names_oneOf","pass","", "td-property-names_properties","pass","", @@ -249,7 +249,7 @@ "td-vocab-model--VersionInfo","not-impl","data must have required property 'version'", "td-vocab-modified--Thing","not-impl","data must have required property 'modified'", "td-vocab-multipleOf--IntegerSchema","not-impl","", -"td-vocab-multipleOf--NumberSchema","not-impl","", +"td-vocab-multipleOf--NumberSchema","pass","", "td-vocab-name--APIKeySecurityScheme","not-impl","", "td-vocab-name--BasicSecurityScheme","not-impl","", "td-vocab-name--BearerSecurityScheme","not-impl","", diff --git a/data/input_2022/TD/Results/oracle-wt.csv b/data/input_2022/TD/Results/oracle-wt.csv new file mode 100644 index 00000000..1de3d767 --- /dev/null +++ b/data/input_2022/TD/Results/oracle-wt.csv @@ -0,0 +1,382 @@ +"ID","Status","Comment","Assertion" +"td-action-arrays","pass",, +"td-action-names","not-impl","Error message can be seen in the children assertions", +"td-action-names_at-type","not-impl",,"Each optional vocabulary term as defined in the class Action and its superclass InteractionPattern MUST be serialized as a JSON name within an Action object." +"td-action-names_description","pass",,"Each optional vocabulary term as defined in the class Action and its superclass InteractionPattern MUST be serialized as a JSON name within an Action object." +"td-action-names_descriptions","not-impl",,"Each optional vocabulary term as defined in the class Action and its superclass InteractionPattern MUST be serialized as a JSON name within an Action object." +"td-action-names_forms","pass",,"The type of the members forms MUST be serialized as a JSON array." +"td-action-names_idempotent","not-impl",, +"td-action-names_input","pass",, +"td-action-names_output","not-impl",, +"td-action-names_safe","not-impl",, +"td-action-names_title","pass",,"Each optional vocabulary term as defined in the class Action and its superclass InteractionPattern MUST be serialized as a JSON name within an Action object." +"td-action-names_titles","not-impl",,"Each optional vocabulary term as defined in the class Action and its superclass InteractionPattern MUST be serialized as a JSON name within an Action object." +"td-action-names_uriVariables","not-impl",,"Each optional vocabulary term as defined in the class Action and its superclass InteractionPattern MUST be serialized as a JSON name within an Action object." +"td-action-objects","not-impl","Error message can be seen in the children assertions", +"td-action-objects_input","pass",, +"td-action-objects_output","not-impl",, +"td-actions","pass",, +"td-actions_existence","pass",, +"td-actions_uniqueness","pass","", +"td-additionalExpectedResponse-contentType","not-impl",, +"td-additionalExpectedResponse-schema","not-impl",, +"td-array-type","pass",, +"td-arrays","not-impl","Error message can be seen in the children assertions", +"td-arrays_forms","pass","result of a merge", +"td-arrays_links","not-impl","data must have required property 'links'"," Each mandatory and optional vocabulary term as defined in the class Link, MUST be serialized as a JSON name. " +"td-boolean-type","pass","result of a merge", +"td-class-type","pass",, +"td-context","not-impl",,"The root element of a TD Serialization MUST be a JSON object that includes a member with the name @context and a value of type string or array that equals or respectively contains https://www.w3.org/2022/wot/td/v1.1. " +"td-context-default-language","not-impl",,"One Map contained in an @context Array SHOULD contain a name-value pair that defines the default language for the Thing Description, where the name is the Term @language and the value is a well-formed language tag as defined by [[!BCP47]] (e.g., en, de-AT, gsw-CH, zh-Hans, zh-Hant-HK, sl-nedis). " +"td-context-ns-thing-mandatory","pass",, +"td-context-ns-thing-map-of-namespaces","not-impl",,"Maps contained in an @context Array MAY contain name-value pairs, where the value is a namespace identifier of type anyURI and the name a Term or prefix denoting that namespace. " +"td-context-ns-thing-optional","pass",,"When @context is an Array, the anyURI https://www.w3.org/2019/wot/td/v1 MAY be followed by elements of type anyURI or type Map in any order, while it is RECOMMENDED to include only one Map with all the name-value pairs in the @context Array. " +"td-context-toplevel","pass",, +"td-data-schema","not-impl","Error message can be seen in the children assertions", +"td-data-schema-arrays","not-impl","Error message can be seen in the children assertions", +"td-data-schema-arrays_enum","not-impl",, +"td-data-schema-arrays_oneOf","not-impl",, +"td-data-schema-arrays_required","not-impl",, +"td-data-schema-objects","pass",, +"td-data-schema_at-type","not-impl",, +"td-data-schema_const","not-impl",, +"td-data-schema_contentEncoding","not-impl",, +"td-data-schema_contentMediaType","not-impl",, +"td-data-schema_description","pass",, +"td-data-schema_descriptions","not-impl",, +"td-data-schema_enum","not-impl",, +"td-data-schema_exclusiveMaximum-IntegerSchema","not-impl",, +"td-data-schema_exclusiveMaximum-NumberSchema","not-impl",, +"td-data-schema_exclusiveMinimum-IntegerSchema","not-impl",, +"td-data-schema_exclusiveMinimum-NumberSchema","not-impl",, +"td-data-schema_format","pass",, +"td-data-schema_items","not-impl",, +"td-data-schema_maxItems","not-impl",, +"td-data-schema_maxLength","not-impl",, +"td-data-schema_maximum-IntegerSchema","not-impl",, +"td-data-schema_maximum-NumberSchema","not-impl",, +"td-data-schema_minItems","not-impl",, +"td-data-schema_minLength","not-impl",, +"td-data-schema_minimum-IntegerSchema","not-impl",, +"td-data-schema_minimum-NumberSchema","not-impl",, +"td-data-schema_multipleOf-IntegerSchema","not-impl",, +"td-data-schema_multipleOf-NumberSchema","not-impl",, +"td-data-schema_oneOf","not-impl",, +"td-data-schema_pattern","not-impl",, +"td-data-schema_properties","pass",, +"td-data-schema_readOnly","pass",, +"td-data-schema_required","not-impl",, +"td-data-schema_title","pass",, +"td-data-schema_titles","not-impl",, +"td-data-schema_type","pass","result of a merge", +"td-data-schema_unit","not-impl",, +"td-data-schema_writeOnly","pass",, +"td-datetime-recommended-type","pass","result of a merge", +"td-datetime-type","pass","result of a merge", +"td-event-arrays","fail","data/events/filterClogged/forms/0/subprotocol must be equal to one of the allowed values, data/events/filterClogged/forms/1/subprotocol must be equal to one of the allowed values","The type of the members forms MUST be serialized as a JSON array." +"td-event-names","not-impl","Error message can be seen in the children assertions", +"td-event-names_at-type","not-impl",,"Each optional vocabulary term as defined in the class Event, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within an Event object. " +"td-event-names_cancellation","pass",, +"td-event-names_data","pass",, +"td-event-names_dataResponse","pass",, +"td-event-names_description","pass",,"Each optional vocabulary term as defined in the class Event, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within an Event object. " +"td-event-names_descriptions","not-impl",,"Each optional vocabulary term as defined in the class Event, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within an Event object. " +"td-event-names_forms","fail","data/events/filterClogged/forms/0/subprotocol must be equal to one of the allowed values, data/events/filterClogged/forms/1/subprotocol must be equal to one of the allowed values","The type of the members forms MUST be serialized as a JSON array." +"td-event-names_subscription","pass",, +"td-event-names_title","pass",,"Each optional vocabulary term as defined in the class Event, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within an Event object. " +"td-event-names_titles","not-impl",,"Each optional vocabulary term as defined in the class Event, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within an Event object. " +"td-event-names_uriVariables","not-impl",,"Each optional vocabulary term as defined in the class Event, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within an Event object. " +"td-event-objects","pass",, +"td-event-objects_cancellation","pass",, +"td-event-objects_data","pass",, +"td-event-objects_dataResponse","pass",, +"td-event-objects_subscription","pass",, +"td-events","pass",, +"td-events_existence","pass",, +"td-events_uniqueness","pass","", +"td-form-response-object","not-impl",, +"td-format-validation-known-values","pass",, +"td-forms","pass","result of a merge", +"td-forms-response","not-impl",, +"td-integer-type","not-impl","result of a merge", +"td-json-open","pass",, +"td-json-open_utf-8","pass",, +"td-links","not-impl","data must have required property 'links'"," Each mandatory and optional vocabulary term as defined in the class Link, MUST be serialized as a JSON name. " +"td-map-type","pass",, +"td-multi-languages","not-impl","Error message can be seen in the children assertions", +"td-multi-languages-consistent","pass",, +"td-multi-languages_descriptions","not-impl","result of a merge", +"td-multi-languages_titles","not-impl","result of a merge", +"td-multilanguage-language-tag","pass",, +"td-multilanguage-value","not-impl","result of a merge", +"td-number-type","pass","result of a merge", +"td-objects","not-impl","Error message can be seen in the children assertions", +"td-objects_actions","pass",,"Actions offered by a Thing MUST be collected in the JSON-object based actions member with (unique) Action names as JSON names.(Checking their existence)" +"td-objects_descriptions","not-impl","result of a merge", +"td-objects_events","pass",,"Events offered by a Thing MUST be collected in the JSON-object based events member with (unique) Event names as JSON names. (Checking if they exist)" +"td-objects_properties","pass",," Properties (and sub-properties) offered by a Thing MUST be collected in the JSON-object based properties member with (unique) Property names as JSON names. (Checking their existence)" +"td-objects_schemaDefinitions","not-impl","data must have required property 'schemaDefinitions'","schemaDefinitions: Set of named data schemas. To be used in a schema name-value pair inside an AdditionalExpectedResponse object. MAY be included. Type: Map of DataSchema." +"td-objects_securityDefinitions","pass",, +"td-objects_uriVariables","not-impl",, +"td-objects_version","pass",,"The version container MAY be used to provide additional application and/or device specific version information based on terms from non-TD namespaces." +"td-op-for-action","pass",,"When a forms term member is present in an Action instance, the value(s) of op in the forms MUST be invokeaction. " +"td-op-for-event","pass",,"When a forms term member is present in an Event instance, the value(s) of op in the forms MUST be one of subscribeevent or unsubscribeevent. " +"td-op-for-property","pass",,"When a forms term member is present in a Property instance, the value(s) of op in the forms MUST be one of readproperty, writeproperty or observeproperty. " +"td-op-for-thing","not-impl",,"When a forms term member is present in a Thing instance, the value(s) of op in the forms MUST be one of readallproperties, writeallproperties, readmultipleproperties or writemultipleproperties. " +"td-processor","pass",, +"td-properties","pass",, +"td-properties_existence","pass",, +"td-properties_uniqueness","pass","", +"td-property-arrays","pass",,"The type of the member forms MUST be serialized as a JSON array." +"td-property-names","not-impl","Error message can be seen in the children assertions", +"td-property-names_at-type","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_const","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_contentEncoding","not-impl",, +"td-property-names_contentMediaType","not-impl",, +"td-property-names_description","pass",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_descriptions","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_enum","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_exclusiveMaximum","not-impl","result of a merge", +"td-property-names_exclusiveMinimum","not-impl","result of a merge", +"td-property-names_format","pass",, +"td-property-names_forms","pass",, +"td-property-names_items","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_maxItems","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_maxLength","not-impl",, +"td-property-names_maximum","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_minItems","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_minLength","not-impl",, +"td-property-names_minimum","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_multipleOf","not-impl","result of a merge", +"td-property-names_observable","not-impl",, +"td-property-names_oneOf","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_properties","pass",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_readOnly","pass",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_required","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_title","pass",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_titles","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_type","pass",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_unit","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_uriVariables","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-property-names_writeOnly","not-impl",,"Each mandatory and optional vocabulary term as defined in the class Property, as well as its two superclasses InteractionPattern and DataSchema, MUST be serialized as a JSON name within a Property object. This means that at the level of an interaction property instance, the vocabulary terms of InteractionPattern and DataSchema can be presented at the same time." +"td-security","pass",, +"td-security-activation","pass",, +"td-security-bearer-format-extensions","not-impl","Error message can be seen in the children assertions", +"td-security-bearer-format-extensions_alg","not-impl",,"alg: Encoding, encryption, or digest algorithm (one of MD5, ES256, or ES512-256). MUST be included. Type: string." +"td-security-bearer-format-extensions_format","not-impl",,"alg: Encoding, encryption, or digest algorithm (one of MD5, ES256, or ES512-256). MUST be included. Type: string." +"td-security-combo-exclusive-oneof-or-allof","not-impl",,"Exactly one of either oneOf or allOf MUST be included." +"td-security-mandatory","pass",, +"td-security-oauth2-client-flow","not-impl",,"For the client flow token MUST be included." +"td-security-oauth2-client-flow-no-auth","not-impl",, +"td-security-oauth2-code-flow","not-impl",,"For the code flow both authorization and token MUST be included." +"td-security-oauth2-device-flow","not-impl",,"For the device flow both authorization and token MUST be included." +"td-security-overrides","not-impl",, +"td-security-scheme-name","pass",, +"td-security-schemes","pass",, +"td-string-type","pass","result of a merge", +"td-title-description","not-impl","Error message can be seen in the children assertions", +"td-title-description_descriptions","not-impl",,"If title and titles description and descriptions are defined at the same time at the JSON level, title and description MAY be seen as default text. " +"td-title-description_titles","not-impl",,"If title and titles description and descriptions are defined at the same time at the JSON level, title and description MAY be seen as default text. " +"td-titles-descriptions","not-impl","no multilang objects in the td", +"td-uriVariables-dataschema","not-impl",, +"td-uriVariables-names","not-impl",, +"td-version","pass",, +"td-vocab-actions--Thing","pass",,"Actions offered by a Thing MUST be collected in the JSON-object based actions member with (unique) Action names as JSON names.(Checking their existence)" +"td-vocab-additionalResponses--Form","not-impl",,"additionalResponses: This optional term can be used if additional expected responses are possible, e.g. for error reporting. Each additional response needs to be distinguished from others in some way (for example, by specifying a protocol-specific error code), and may also have its own data schema. MAY be included. Type: AdditionalExpectedResponse or Array of AdditionalExpectedResponse." +"td-vocab-alg--BearerSecurityScheme","not-impl",,"alg: Encoding, encryption, or digest algorithm (one of MD5, ES256, or ES512-256). MUST be included. Type: string." +"td-vocab-allOf--ComboSecurityScheme","not-impl",,"allOf: Array of two or more strings identifying other named security scheme definitions, all of which must be satisfied for access. MUST be included. Type: string or Array of string." +"td-vocab-anchor--Link","not-impl",,"anchor: By default, the context of a link is the URL of the representation it is associated with, and is serialised as a URI. When present, the anchor parameter overrides this with another URI, such as a fragment of this resource, or a third resource (i.e., when the anchor value is an absolute URI)." +"td-vocab-at-context--Thing","not-impl",, +"td-vocab-at-type--DataSchema","not-impl",,"@type: Known from JSON-LD [[!json-ld]], @type is used to state that values described by the DataSchema are instances of a class. Each string in the value array represents a class. MAY be included. Type: array of string." +"td-vocab-at-type--InteractionAffordance","not-impl",,"@type: Known from JSON-LD [[!json-ld]], @type is used to state that an interaction resource is an instance of a class. Each string in the value array represents a class. MAY be included. Type: array of string." +"td-vocab-at-type--SecurityScheme","not-impl",,"@type: Known from JSON-LD [[!json-ld]], @type is used to state that a security mechanism configured by the SecurityScheme is an instance of a class. Each string in the value array represents a class. MAY be included. Type: array of string." +"td-vocab-at-type--Thing","pass",,"@type: Known from JSON-LD [[!json-ld]], @type is used to state that a thing resource is an instance of a class. Each string in the value array represents a class. MAY be included. Type: array of string." +"td-vocab-authorization--BearerSecurityScheme","not-impl",,"authorization: URI of the authorization server. MAY be included. Type: anyURI." +"td-vocab-authorization--OAuth2SecurityScheme","not-impl",,"authorization: URI of the authorization server. MAY be included. Type: anyURI." +"td-vocab-base--Thing","pass",, +"td-vocab-cancellation--EventAffordance","pass",,"cancellation: Defines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook." +"td-vocab-const--DataSchema","not-impl",,"const: Provides a constant value. MAY be included. Type: any type." +"td-vocab-contentCoding--Form","not-impl",,"contentCoding: Content coding values indicate an encoding transformation that has been or can be applied to a representation. Content codings are primarily used to allow a representation to be compressed or otherwise usefully transformed without losing the identity of its underlying media type and without loss of information. " +"td-vocab-contentEncoding--StringSchema","not-impl",,"contentEncoding: Specifies the encoding used to store the contents, as specified in RFC 2054. The values that are accepted: ""7bit"", ""8bit"", ""binary"", ""quoted-printable"" and ""base64"". MAY be included. Type: string." +"td-vocab-contentMediaType--StringSchema","not-impl",,"contentMediaType: Specifies the MIME type (e.g., image/png, audio/mpeg) of the contents of a string value, as described in RFC 2046. MAY be included. Type: string." +"td-vocab-contentType--AdditionalExpectedResponse","not-impl",,"contentType: Assign a content type based on a media type (e.g., text/plain) and potential parameters (e.g., charset=utf-8) for the media type [RFC2046]. MAY be included. Type: string." +"td-vocab-contentType--ExpectedResponse","not-impl",, +"td-vocab-contentType--Form","pass",,"contentType: Assign a content type based on a media type [[!MEDIATYPES]] (e.g., 'application/json) and (optional) parameters (e.g., 'charset=utf-8'). " +"td-vocab-created--Thing","pass",, +"td-vocab-data--EventAffordance","pass",,"data: Defines the data schema of the Event instance messages pushed by the Thing." +"td-vocab-dataResponse--EventAffordance","pass",,"dataResponse: Defines the data schema of the Event response messages sent be the consumer in a response to a data message." +"td-vocab-default--DataSchema","not-impl",,"default: Supply a default value. The value should validate against the data schema in which it resides. MAY be included. Type: any type." +"td-vocab-description--DataSchema","pass",,"description: Provides additional (human-readable) information based on a default language. MAY be included. Type: string." +"td-vocab-description--InteractionAffordance","pass",,"description: Provides additional (human-readable) information based on a default language. MAY be included. Type: string." +"td-vocab-description--SecurityScheme","not-impl",,"name: Name for query, header, or cookie parameters. MAY be included. Type: string." +"td-vocab-description--Thing","pass",, +"td-vocab-descriptions--DataSchema","not-impl",,"descriptions: Can be used to support (human-readable) information in different languages. MAY be included. Type: MultiLanguage." +"td-vocab-descriptions--InteractionAffordance","not-impl",,"descriptions: Can be used to support (human-readable) information in different languages. MAY be included. Type: MultiLanguage." +"td-vocab-descriptions--SecurityScheme","not-impl",,"name: Name for query, header, or cookie parameters. MAY be included. Type: string." +"td-vocab-descriptions--Thing","not-impl","data must have required property 'descriptions'","descriptions: Can be used to support (human-readable) information in different languages. MAY be included. Type: MultiLanguage." +"td-vocab-enum--DataSchema","not-impl",,"enum: Restricted set of values provided as an array." +"td-vocab-events--Thing","pass",,"Events offered by a Thing MUST be collected in the JSON-object based events member with (unique) Event names as JSON names. (Checking if they exist)" +"td-vocab-exclusiveMaximum--IntegerSchema","not-impl",,"exclusiveMaximum: Specifies a maximum numeric value, representing an exclusive upper limit. Only applicable for associated number or integer types. MAY be included. Type: integer." +"td-vocab-exclusiveMaximum--NumberSchema","not-impl",,"exclusiveMaximum: Specifies a maximum numeric value, representing an exclusive upper limit. Only applicable for associated number or integer types. MAY be included. Type: double." +"td-vocab-exclusiveMinimum--IntegerSchema","not-impl",,"exclusiveMinimum: Specifies a minimum numeric value, representing an exclusive lower limit. Only applicable for associated number or integer types. MAY be included. Type: integer." +"td-vocab-exclusiveMinimum--NumberSchema","not-impl",,"exclusiveMinimum: Specifies a minimum numeric value, representing an exclusive lower limit. Only applicable for associated number or integer types. MAY be included. Type: double." +"td-vocab-flow--OAuth2SecurityScheme","not-impl",,"For the code flow both authorization and token MUST be included." +"td-vocab-format--BearerSecurityScheme","not-impl",,"format: Specifies format of security authentication information (one of jwt, jwe, or jws). MUST be included. Type: string." +"td-vocab-format--DataSchema","pass",,"format: Defines format pattern validation on certain kinds of string values. It is open to use pattern values that may originate from JSON schema presets (e.g., date/time, email, URL) or other (customer-based) $defs. . MAY be included. Type: string." +"td-vocab-forms--InteractionAffordance","pass",,"forms: Indicates one or more endpoints at which operation(s) on this resource are accessible. MUST be included. Type: array of Form." +"td-vocab-forms--Thing","not-impl","data must have required property 'forms'","forms: Indicates one or more endpoints at which operation(s) on this resource are accessible. In this version of TD, all operations that can be described at the Thing level are concerning how to interact with the Thing's Property interaction resources collectively at once. MAY be included. Type: array of Form." +"td-vocab-href--Form","pass","result of a merge", +"td-vocab-href--Link","not-impl","data must have required property 'links'"," Each mandatory and optional vocabulary term as defined in the class Link, MUST be serialized as a JSON name. " +"td-vocab-id--Thing","pass",, +"td-vocab-idempotent--ActionAffordance","not-impl",,"idempotent: Indicates whether the action is idempotent (=true) or not. Informs whether the action can be called repeatedly with the same result, if present, based on the same input." +"td-vocab-identity--PSKSecurityScheme","not-impl",,"identity: Pre-shared key identity. MAY be included. Type: string." +"td-vocab-in--APIKeySecurityScheme","not-impl",,"in: Specifies the location of security authentication information (one of header, query, body, or cookie). MUST be included. Type: string." +"td-vocab-in--BasicSecurityScheme","pass",,"in: Specifies the location of security authentication information (one of header, query, body, or cookie). MUST be included. Type: string." +"td-vocab-in--BearerSecurityScheme","not-impl",,"in: Specifies the location of security authentication information (one of header, query, body, or cookie). MUST be included. Type: string." +"td-vocab-in--DigestSecurityScheme","not-impl",,"in: Specifies the location of security authentication information (one of header, query, body, or cookie). MUST be included. Type: string." +"td-vocab-input--ActionAffordance","pass",,"input: Used to define the input data schema of the action." +"td-vocab-instance--VersionInfo","pass",,"The version container MAY be used to provide additional application and/or device specific version information based on terms from non-TD namespaces." +"td-vocab-items--ArraySchema","not-impl",,"items: Used to define the characteristics of an array. MAY be included. Type: DataSchema." +"td-vocab-links--Thing","not-impl","data must have required property 'links'"," Each mandatory and optional vocabulary term as defined in the class Link, MUST be serialized as a JSON name. " +"td-vocab-maxItems--ArraySchema","not-impl",,"maxItems: Defines the maximum number of items that have to be in the array. MAY be included. Type: unsignedInt." +"td-vocab-maxLength--StringSchema","not-impl",,"maxLength: Specifies the maximum length of a string. Only applicable for associated string types. MAY be included. Type: unsignedInt." +"td-vocab-maximum--IntegerSchema","not-impl",,"maximum: Specifies a maximum numeric value. Only applicable for associated number or integer types. MAY be included. Type: integer." +"td-vocab-maximum--NumberSchema","not-impl",,"maximum: Specifies a maximum numeric value. Only applicable for associated number or integer types. MAY be included. Type: double." +"td-vocab-minItems--ArraySchema","not-impl",,"minItems: Defines the minimum number of items that have to be in the array. MAY be included. Type: unsignedInt." +"td-vocab-minLength--StringSchema","not-impl",,"minLength: Specifies the minimum length of a string. Only applicable for associated string types. MAY be included. Type: unsignedInt." +"td-vocab-minimum--IntegerSchema","not-impl",,"minimum: Specifies a minimum numeric value. Only applicable for associated number or integer types. MAY be included. Type: integer." +"td-vocab-minimum--NumberSchema","not-impl",,"minimum: Specifies a minimum numeric value. Only applicable for associated number or integer types. MAY be included. Type: double." +"td-vocab-model--VersionInfo","not-impl","data/version must have required property 'model'","model: Provides a version indicator of the underlying TM. instance. MAY be included. Type: string." +"td-vocab-modified--Thing","pass",, +"td-vocab-multipleOf--IntegerSchema","not-impl",,"multipleOf: Specifies the multipleOf value number. The value must strictly greater than 0. Only applicable for associated number or integer types. MAY be included. Type: integer." +"td-vocab-multipleOf--NumberSchema","not-impl",,"exclusiveMinimum: Specifies a minimum numeric value, representing an exclusive lower limit. Only applicable for associated number or integer types. MAY be included. Type: double." +"td-vocab-name--APIKeySecurityScheme","not-impl",,"name: Name for query, header, or cookie parameters. MAY be included. Type: string." +"td-vocab-name--BasicSecurityScheme","not-impl",,"name: Name for query, header, or cookie parameters. MAY be included. Type: string." +"td-vocab-name--BearerSecurityScheme","not-impl",,"name: Name for query, header, or cookie parameters. MAY be included. Type: string." +"td-vocab-name--DigestSecurityScheme","not-impl",,"name: Name for query, header, or cookie parameters. MAY be included. Type: string." +"td-vocab-observable--PropertyAffordance","not-impl",,"observable: Indicates whether a remote servient can subscribe to (""observe"") the Property, to receive change notifications or periodic updates (true/false)." +"td-vocab-oneOf--ComboSecurityScheme","not-impl",,"oneOf: Array of two or more strings identifying other named security scheme definitions, any one of which, when satisfied, will allow access. Only one may be chosen for use. MUST be included. Type: string or Array of string." +"td-vocab-oneOf--DataSchema","not-impl",,"oneOf: Used to ensure that the data is valid against one of the specified schemas in the array. MAY be included. Type: array of DataSchema." +"td-vocab-op--Form","not-impl","Error message can be seen in the children assertions", +"td-vocab-op--Form_cancelaction","not-impl",,"op: Indicates the expected result of performing the operation described by the form. For example, the Property interaction allows get and set operations. The protocol binding may contain a form for the get operation and a different form for the set operation. The op attribute indicates which form is which and allows the client to select the correct form for the operation required. " +"td-vocab-op--Form_invokeaction","pass",,"op: Indicates the expected result of performing the operation described by the form. For example, the Property interaction allows get and set operations. The protocol binding may contain a form for the get operation and a different form for the set operation. The op attribute indicates which form is which and allows the client to select the correct form for the operation required. " +"td-vocab-op--Form_observeallproperties","not-impl",,"When a forms term member is present in a Thing instance, the value(s) of op in the forms MUST be one of readallproperties, writeallproperties, readmultipleproperties or writemultipleproperties. " +"td-vocab-op--Form_observeproperty","not-impl",,"op: Indicates the expected result of performing the operation described by the form. For example, the Property interaction allows get and set operations. The protocol binding may contain a form for the get operation and a different form for the set operation. The op attribute indicates which form is which and allows the client to select the correct form for the operation required. " +"td-vocab-op--Form_queryaction","not-impl",,"op: Indicates the expected result of performing the operation described by the form. For example, the Property interaction allows get and set operations. The protocol binding may contain a form for the get operation and a different form for the set operation. The op attribute indicates which form is which and allows the client to select the correct form for the operation required. " +"td-vocab-op--Form_queryallactions","not-impl",,"When a forms term member is present in a Thing instance, the value(s) of op in the forms MUST be one of readallproperties, writeallproperties, readmultipleproperties or writemultipleproperties. " +"td-vocab-op--Form_readallproperties","not-impl",,"When a forms term member is present in a Thing instance, the value(s) of op in the forms MUST be one of readallproperties, writeallproperties, readmultipleproperties or writemultipleproperties. " +"td-vocab-op--Form_readmultipleproperties","not-impl",,"When a forms term member is present in a Thing instance, the value(s) of op in the forms MUST be one of readmultipleproperties." +"td-vocab-op--Form_readproperty","pass",,"op: Indicates the expected result of performing the operation described by the form. For example, the Property interaction allows get and set operations. The protocol binding may contain a form for the get operation and a different form for the set operation. The op attribute indicates which form is which and allows the client to select the correct form for the operation required. " +"td-vocab-op--Form_subscribeallevents","not-impl",,"When a forms term member is present in a Thing instance, the value(s) of op in the forms MUST be one of readallproperties, writeallproperties, readmultipleproperties or writemultipleproperties. " +"td-vocab-op--Form_subscribeevent","pass",,"op: Indicates the expected result of performing the operation described by the form. For example, the Property interaction allows get and set operations. The protocol binding may contain a form for the get operation and a different form for the set operation. The op attribute indicates which form is which and allows the client to select the correct form for the operation required. " +"td-vocab-op--Form_unobserveallproperties","not-impl",,"When a forms term member is present in a Thing instance, the value(s) of op in the forms MUST be one of readallproperties, writeallproperties, readmultipleproperties or writemultipleproperties. " +"td-vocab-op--Form_unobserveproperty","not-impl",,"op: Indicates the expected result of performing the operation described by the form. For example, the Property interaction allows get and set operations. The protocol binding may contain a form for the get operation and a different form for the set operation. The op attribute indicates which form is which and allows the client to select the correct form for the operation required. " +"td-vocab-op--Form_unsubscribeallevents","not-impl",,"When a forms term member is present in a Thing instance, the value(s) of op in the forms MUST be one of readallproperties, writeallproperties, readmultipleproperties or writemultipleproperties. " +"td-vocab-op--Form_unsubscribeevent","pass",,"op: Indicates the expected result of performing the operation described by the form. For example, the Property interaction allows get and set operations. The protocol binding may contain a form for the get operation and a different form for the set operation. The op attribute indicates which form is which and allows the client to select the correct form for the operation required. " +"td-vocab-op--Form_writeallproperties","not-impl",,"When a forms term member is present in a Thing instance, the value(s) of op in the forms MUST be one of readallproperties, writeallproperties, readmultipleproperties or writemultipleproperties. " +"td-vocab-op--Form_writemultipleproperties","not-impl",,"When a forms term member is present in a Thing instance, the value(s) of op in the forms MUST be one of writemultipleproperties. " +"td-vocab-op--Form_writeproperty","not-impl",,"op: Indicates the expected result of performing the operation described by the form. For example, the Property interaction allows get and set operations. The protocol binding may contain a form for the get operation and a different form for the set operation. The op attribute indicates which form is which and allows the client to select the correct form for the operation required. " +"td-vocab-output--ActionAffordance","not-impl",,"output: Used to define the output data schema of the action." +"td-vocab-pattern--StringSchema","not-impl",,"pattern: Provides a regular expressions to express constraints of the string value. The regular expression must follow the [[ECMA-262]] dialect. MAY be included. Type: string." +"td-vocab-profile--Thing","pass",, +"td-vocab-properties--ObjectSchema","pass",,"properties: Data schema nested $defs. MAY be included. Type: DataSchema." +"td-vocab-properties--Thing","pass",," Properties (and sub-properties) offered by a Thing MUST be collected in the JSON-object based properties member with (unique) Property names as JSON names. (Checking their existence)" +"td-vocab-proxy--SecurityScheme","not-impl",,"proxy: URI of the proxy server this security configuration provides access to. If not given, the corresponding security configuration is for the endpoint. MAY be included. Type: anyURI." +"td-vocab-qop--DigestSecurityScheme","not-impl",,"qop: Quality of protection (one of auth or auth-int). MUST be included. Type: string." +"td-vocab-readOnly--DataSchema","pass",,"readOnly: Boolean value that indicates whether a property interaction / value is read only (=true) or not (=false). MUST be included. Type: boolean." +"td-vocab-refresh--OAuth2SecurityScheme","not-impl",,"refresh: URI of the refresh server. MAY be included. Type: anyURI." +"td-vocab-rel--Link","not-impl",,"rel: Indicates the relation to an other Thing." +"td-vocab-required--ObjectSchema","not-impl",,"required: Defines which members of the object type are mandatory. MAY be included. Type: array of string." +"td-vocab-response--Form","not-impl",,"response: This optional term can be used if, e.g., the output communication metadata differ from input metdata (e.g., output contentType differ from the input contentType). The response name contains metadata that is only valid for the reponse messages." +"td-vocab-safe--ActionAffordance","not-impl",,"safe: Signals if the action is safe (=true) or not. Used to signal if there is no internal state (cf. resource state) is changed when invoking an Action. In that case responses can be cached as example." +"td-vocab-schema--AdditionalExpectedResponse","not-impl",,"success: Signals if an additional response should not be considered an error." +"td-vocab-schemaDefinitions--Thing","not-impl","data must have required property 'schemaDefinitions'","schemaDefinitions: Set of named data schemas. To be used in a schema name-value pair inside an AdditionalExpectedResponse object. MAY be included. Type: Map of DataSchema." +"td-vocab-scheme--SecurityScheme","not-impl","Error message can be seen in the children assertions", +"td-vocab-scheme--SecurityScheme_apikey","not-impl",,"scheme: Identification of security mechanism being configured. MUST be included. Type: string apikey." +"td-vocab-scheme--SecurityScheme_auto","not-impl",,"scheme: Identification of security mechanism being configured. MUST be included. Type: string auto." +"td-vocab-scheme--SecurityScheme_basic","pass",,"scheme: Identification of security mechanism being configured. MUST be included. Type: string basic." +"td-vocab-scheme--SecurityScheme_bearer","not-impl",,"scheme: Identification of security mechanism being configured. MUST be included. Type: string bearer." +"td-vocab-scheme--SecurityScheme_digest","not-impl",,"scheme: Identification of security mechanism being configured. MUST be included. Type: string digest." +"td-vocab-scheme--SecurityScheme_nosec","not-impl",,"scheme: Identification of security mechanism being configured. MUST be included. Type: string nosec." +"td-vocab-scheme--SecurityScheme_oauth2","not-impl",,"scheme: Identification of security mechanism being configured. MUST be included. Type: string oauth2." +"td-vocab-scheme--SecurityScheme_psk","not-impl",,"scheme: Identification of security mechanism being configured. MUST be included. Type: string psk." +"td-vocab-scopes--Form","not-impl",,"scopes: Set of authorization scope identifiers, provided as an array. These are provided in tokens returned by an authorization server and associated with forms in order to identify what resources a client may access and how." +"td-vocab-scopes--OAuth2SecurityScheme","not-impl",,"scopes: Set of authorization scope identifiers, provided as an array. These are provided in tokens returned by an authorization server and associated with forms in order to identify what resources a client may access and how." +"td-vocab-security--Form","not-impl",,"security: Set of security definition names, chosen from those defined in securityDefinitions. These must all be satisfied for access to resources at or below the current level, if not overridden at a lower level. MAY be included. Type: array of string." +"td-vocab-security--Thing","pass","result of a merge", +"td-vocab-securityDefinitions--Thing","pass",, +"td-vocab-sizes--Link","not-impl",,"sizes: Target attribute that specifies one or more sizes for the referenced icon. Only applicable for relation type ""icon"". The value pattern follows {Height}x{Width} (e.g., ""16x16"", ""16x16 32x32""). MAY be included. Type: string." +"td-vocab-subprotocol--Form","pass",,"subprotocol: Indicates the exact mechanism by which an interaction will be accomplished for a given protocol when there are multiple options. For example, for HTTP and Events, it indicates which of several available mechanisms should be used for asynchronous notifications such as long polling (longpoll), WebSub [websub] (websub), Server-Sent Events (sse) [html] (also known as EventSource). Please note that there is no restriction on the subprotocol selection and other mechanisms can also be announced by this subprotocol term." +"td-vocab-subscription--EventAffordance","pass",,"subscription: Defines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks." +"td-vocab-success--AdditionalExpectedResponse","not-impl",,"success: Signals if an additional response should not be considered an error." +"td-vocab-support--Thing","pass",, +"td-vocab-synchronous--ActionAffordance","not-impl",,"synchronous: Indicates whether the action is synchronous (=true) or not. A synchronous action means that the response of action contains all the information about the result of the action and no further querying about the status of the action is needed. Lack of this keyword means that no claim on the synchronicity of the action can be made. Type: boolean" +"td-vocab-title--DataSchema","pass",,"title: Provides a human-readable title (e.g., display a text for UI representation) of the interaction pattern based on a default language. MAY be included. Type: string." +"td-vocab-title--InteractionAffordance","pass",,"title: Provides a human-readable title (e.g., display a text for UI representation) of the interaction pattern based on a default language. MAY be included. Type: string." +"td-vocab-title--Thing","pass",, +"td-vocab-titles--DataSchema","not-impl",,"titles: Provides multi-language human-readable titles (e.g., display a text for UI representation in different languages) of the interaction pattern. MAY be included. Type: MultiLanguage." +"td-vocab-titles--InteractionAffordance","not-impl",,"titles: Provides multi-language human-readable titles (e.g., display a text for UI representation in different languages) of the interaction pattern. MAY be included. Type: MultiLanguage." +"td-vocab-titles--Thing","not-impl","data must have required property 'titles'","titles: Provides multi-language human-readable titles (e.g., display a text for UI representation in different languages). MAY be included. Type: MultiLanguage." +"td-vocab-token--OAuth2SecurityScheme","not-impl",,"token: URI of the token server. MAY be included. Type: anyURI." +"td-vocab-type--DataSchema","not-impl","Error message can be seen in the children assertions", +"td-vocab-type--DataSchema_array","not-impl",,"type: Assignment of JSON-based data types compatible with JSON Schema (one of boolean, integer, number, string, object, array, or null). MAY be included. Type: string array)." +"td-vocab-type--DataSchema_boolean","pass",,"type: Assignment of JSON-based data types compatible with JSON Schema (one of boolean, integer, number, string, object, array, or null). MAY be included. Type: string boolean)." +"td-vocab-type--DataSchema_integer","not-impl",,"type: Assignment of JSON-based data types compatible with JSON Schema (one of boolean, integer, number, string, object, array, or null). MAY be included. Type: string integer)." +"td-vocab-type--DataSchema_null","not-impl",,"type: Assignment of JSON-based data types compatible with JSON Schema (one of boolean, integer, number, string, object, array, or null). MAY be included. Type: string null)." +"td-vocab-type--DataSchema_number","pass",,"type: Assignment of JSON-based data types compatible with JSON Schema (one of boolean, integer, number, string, object, array, or null). MAY be included. Type: string number)." +"td-vocab-type--DataSchema_object","pass",,"type: Assignment of JSON-based data types compatible with JSON Schema (one of boolean, integer, number, string, object, array, or null). MAY be included. Type: string object)." +"td-vocab-type--DataSchema_string","pass",,"type: Assignment of JSON-based data types compatible with JSON Schema (one of boolean, integer, number, string, object, array, or null). MAY be included. Type: string string)." +"td-vocab-type--Link","not-impl",,"Provides a hint indicating what the media type [MEDIATYPES] of the result of dereferencing the link should be." +"td-vocab-unit--DataSchema","not-impl",,"unit: Provides unit information that is used, e.g., in international science, engineering, and business. MAY be included. Type: string." +"td-vocab-uriVariables--InteractionAffordance","not-impl",,"uriVariables: Define URI template variables as collection based on DataSchema declarations." +"td-vocab-version--Thing","pass",,"The version container MAY be used to provide additional application and/or device specific version information based on terms from non-TD namespaces." +"td-vocab-writeOnly--DataSchema","pass",,"writeOnly: Boolean value that indicates whether a property interaction / value is write only (=true) or not (=false). MUST be included. Type: boolean." +"tm-rel-type-maximum","not-impl","no links array in the td", +"bindings-requirements-scheme","null","not testable with Assertion Tester","Every form in a WoT Thing Description MUST follow the requirements of the Protocol Binding indicated by the URI scheme of its href member." +"bindings-server-accept","null","not testable with Assertion Tester","Every form in a WoT Thing Description MUST accurately describe requests (including request headers, if present) accepted by the Thing in an interaction." +"client-data-schema","null","not testable with Assertion Tester","A Thing acting as a Consumer when interacting with another target Thing described in a WoT Thing Description MUST generate data organized according to the data schemas given in the corresponding interactions." +"client-data-schema-accept-extras","null","not testable with Assertion Tester","A Thing acting as a Consumer when interacting with another Thing MUST accept without error any additional data not described in the data schemas given in the Thing Description of the target Thing." +"client-data-schema-no-extras","null","not testable with Assertion Tester","A Thing acting as a Consumer when interacting with another Thing MUST NOT generate data not described in the data schemas given in the Thing Description of that Thing." +"client-uri-template","null","not testable with Assertion Tester","A Thing acting as a Consumer when interacting with another Thing MUST generate URIs according to the URI Templates, base URIs, and form href parameters given in the Thing Description of the target Thing." +"sec-body-name-json-pointer-creatable","null","not testable with Assertion Tester","When an element of a data schema indicated by a JSON pointer indicated in a body locator does not already exist in the indicated schema, it MUST be possible to insert the indicated element at the location indicated by the pointer." +"server-data-schema","null","not testable with Assertion Tester","A WoT Thing Description MUST accurately describe the data returned and accepted by each interaction." +"server-data-schema-extras","null","not testable with Assertion Tester","A Thing MAY return additional data from an interaction even when such data is not described in the data schemas given in its WoT Thing Description." +"server-uri-template","null","not testable with Assertion Tester","URI Templates, base URIs, and href members in a WoT Thing Description MUST accurately describe the WoT Interface of the Thing." +"td-context-default-language-direction-independence","null","not testable with Assertion Tester","However, when interpreting human-readable text, each human-readable string value MUST be processed independently." +"td-default-alg","null","not testable with Assertion Tester","The value associated with member alg if not given MUST be assumed to have the default value ES256." +"td-default-contentType","null","not testable with Assertion Tester","The value associated with member contentType if not given MUST be assumed to have the default value application/json." +"td-default-format","null","not testable with Assertion Tester","The value associated with member format if not given MUST be assumed to have the default value jwt." +"td-default-http-method","null","not testable with Assertion Tester","When no method is indicated in a form representing an Protocol Binding based on HTTP, a Default Value MUST be assumed as shown in the following table." +"td-default-http-method_get","null","not testable with Assertion Tester","The value associated with member GET if not given MUST be assumed to have the default value Form with operation type readproperty" +"td-default-http-method_post","null","not testable with Assertion Tester","The value associated with member POST if not given MUST be assumed to have the default value Form with operation type invokeaction." +"td-default-http-method_put","null","not testable with Assertion Tester","The value associated with member PUT if not given MUST be assumed to have the default value Form with operation type writeproperty." +"td-default-idempotent","null","not testable with Assertion Tester","The value associated with member idempotent if not given MUST be assumed to have the default value false." +"td-default-in-apikey","null","not testable with Assertion Tester","The value associated with member in if not given MUST be assumed to have the default value query." +"td-default-in-basic","null","not testable with Assertion Tester","The value associated with member in if not given MUST be assumed to have the default value header." +"td-default-in-bearer","null","not testable with Assertion Tester","The value associated with member in if not given MUST be assumed to have the default value header." +"td-default-in-digest","null","not testable with Assertion Tester","The value associated with member in if not given MUST be assumed to have the default value header." +"td-default-op-actions","null","not testable with Assertion Tester","The value associated with member op if not given MUST be assumed to have the default value invokeaction." +"td-default-op-events","null","not testable with Assertion Tester","The value associated with member op if not given MUST be assumed to have the default value subscribeevent." +"td-default-op-properties","null","not testable with Assertion Tester","The value associated with member op if not given MUST be assumed to have the default value Array of string with the elements readproperty and writeproperty." +"td-default-qop","null","not testable with Assertion Tester","The value associated with member qop if not given MUST be assumed to have the default value auth." +"td-default-readOnly","null","not testable with Assertion Tester","The value associated with member readOnly if not given MUST be assumed to have the default value false." +"td-default-safe","null","not testable with Assertion Tester","The value associated with member safe if not given MUST be assumed to have the default value false." +"td-default-success","null","not testable with Assertion Tester","." +"td-default-writeOnly","null","not testable with Assertion Tester","The value associated with member writeOnly if not given MUST be assumed to have the default value false." +"td-expectedResponse-contentType","null","not testable with Assertion Tester","If the content type of the expected response differs from the content type of the form, the Form instance MUST include a name-value pair with the name response." +"td-expectedResponse-default-contentType","null","not testable with Assertion Tester","If no response name-value pair is provided, it MUST be assumed that the content type of the response is equal to the content type assigned to the Form instance." +"td-form-protocolbindings","null","not testable with Assertion Tester","If required, form objects MAY be supplemented with protocol-specific Vocabulary Terms identified with a prefix." +"td-format-validation-other-values","null","not testable with Assertion Tester","When a value that is not found in the known set of values is assigned to format, such a validation SHOULD succeed." +"td-json-open","null","not testable with Assertion Tester","TDs MUST be serialized according to the requirements defined in Section 8.1 of RFC8259 for open ecosystems." +"td-json-open_accept-byte-order","null","not testable with Assertion Tester","TD Processors MAY ignore the presence of a byte order mark rather than treating it as an error." +"td-json-open_no-byte-order","null","not testable with Assertion Tester","Implementations MUST NOT add a byte order mark (U+FEFF) to the beginning of a TD document." +"td-ns-multilanguage-content-negotiation","null","not testable with Assertion Tester","In cases where the default language has been negotiated, an @language member MUST be present to indicate the result of the negotiation and the corresponding default language of the returned content." +"td-ns-multilanguage-content-negotiation-no-multi","null","not testable with Assertion Tester","When the default language has been negotiated successfully, TD documents SHOULD include the appropriate matching values for the members title and description in preference to MultiLanguage objects in titles and descriptions members." +"td-ns-multilanguage-content-negotiation-optional","null","not testable with Assertion Tester","Note however that Things MAY choose to not support such dynamically-generated TDs nor to support language negotiation (e.g., because of resource constraints)." +"td-processor-serialization","null","not testable with Assertion Tester","A TD Processor MUST be able to serialize Thing Descriptions into the JSON format and/or deserialize Thing Descriptions from that format, according to the rules noted in and." +"td-security-binding","null","not testable with Assertion Tester","If a Thing requires a specific access mechanism for an interaction, that mechanism MUST be specified in the security configuration of the Thing Description." +"td-security-in-query-over-uri","null","not testable with Assertion Tester","The value uri SHOULD be specified for the name in in a security scheme only if query is not applicable." +"td-security-no-extras","null","not testable with Assertion Tester","If a Thing does not require a specific access mechanism for an interaction, that mechanism MUST NOT be specified in the security configuration of the Thing Description." +"td-security-no-secrets","null","not testable with Assertion Tester","For all security schemes, any private keys, passwords, or other sensitive information directly providing access should be shared and stored out-of-band and MUST NOT be stored in the TD." +"td-vocabulary-defaults","null","not testable with Assertion Tester","When assignments in a TD are missing, a TD Processor MUST follow the Default Value assignments expressed in the table of." +"well-known-operation-types-only","null","not testable with Assertion Tester","operations types SHOULD NOT be arbitrarily set by servients." \ No newline at end of file diff --git a/data/input_2022/TD/batchValidation.sh b/data/input_2022/TD/batchValidation.sh index c57494c7..535c7abc 100755 --- a/data/input_2022/TD/batchValidation.sh +++ b/data/input_2022/TD/batchValidation.sh @@ -116,6 +116,11 @@ IMPLEMENTATION=WebThings echo "$IMPLEMENTATION" node $PLAYGROUNDLOCATION/packages/cli/index.js -t TD -i $IMPLEMENTATION/TDs/ -o Results/$IMPLEMENTATION -a +# oracle-wt +IMPLEMENTATION=oracle-wt +echo "$IMPLEMENTATION" +node $PLAYGROUNDLOCATION/packages/cli/index.js -t TD -i $IMPLEMENTATION/TDs/ -o Results/$IMPLEMENTATION -a + # Logilabs (TDD) IMPLEMENTATION=logilab echo "$IMPLEMENTATION" diff --git a/events/2022.06.Online/TD/Oracle/TDs/WoTWebThing.md b/data/input_2022/TD/oracle-wt/TDs/WoTWebThing.md similarity index 100% rename from events/2022.06.Online/TD/Oracle/TDs/WoTWebThing.md rename to data/input_2022/TD/oracle-wt/TDs/WoTWebThing.md diff --git a/events/2022.06.Online/TD/Oracle/TDs/WoTWebThing.td.jsonld b/data/input_2022/TD/oracle-wt/TDs/WoTWebThing.td.jsonld similarity index 100% rename from events/2022.06.Online/TD/Oracle/TDs/WoTWebThing.td.jsonld rename to data/input_2022/TD/oracle-wt/TDs/WoTWebThing.td.jsonld diff --git a/events/2022.06.Online/TD/batchValidation.sh b/events/2022.06.Online/TD/batchValidation.sh index 3be326e2..1ab9668a 100755 --- a/events/2022.06.Online/TD/batchValidation.sh +++ b/events/2022.06.Online/TD/batchValidation.sh @@ -78,6 +78,10 @@ node $PLAYGROUNDLOCATION/packages/cli/index.js -t TD -i $IMPLEMENTATION/TDs/ -o IMPLEMENTATION=WebThings node $PLAYGROUNDLOCATION/packages/cli/index.js -t TD -i $IMPLEMENTATION/TDs/ -o Results/$IMPLEMENTATION -a +# oracle-wt +IMPLEMENTATION=oracle-wt +node $PLAYGROUNDLOCATION/packages/cli/index.js -t TD -i $IMPLEMENTATION/TDs/ -o Results/$IMPLEMENTATION -a + # Logilabs (TDD) IMPLEMENTATION=logilab node $PLAYGROUNDLOCATION/packages/cli/index.js -t TD -i $IMPLEMENTATION/TDs/ -o Results/$IMPLEMENTATION -a diff --git a/events/2022.06.Online/TD/oracle-wt/TDs/WoTWebThing.md b/events/2022.06.Online/TD/oracle-wt/TDs/WoTWebThing.md new file mode 100644 index 00000000..9449f99b --- /dev/null +++ b/events/2022.06.Online/TD/oracle-wt/TDs/WoTWebThing.md @@ -0,0 +1,135 @@ + +# WotWebThing + +The *WoTWebThing* is a profile compliant implementation of a pump. + +It is a simplified model of a pump for liquids that provides several properties, actions and a Webhook event. + +It contains several operation status indicators that are exposed via properties. +These properties can be read individually, or all properties can be read at once. + +The *WoTWebThing* provides 3 operations: +- power +- diagnose +- resetFilter + +The *WoTWebThing* provides a *filterClogged* event affordance, to which a consumer can subscribe/unsubscribe. + +An event subscriber registers the endpoint of a HTTP server that receives event notifications upon subscription. + +## Authentication + +The *WoTWebThing* requires basic authentication in the HTTP authentication header, as illustrated in the curl examples below. + +## Properties + +The following properties are defined: + +``` +Cycle_Peak_Operation_Percent_Of_Minute +Cycle_Cases_Pressure_Max +Cycle_Cases_Pressure_Min +Cycle_Return_Pressure_Max +Cycle_Maximum_Inlet_Pressure +``` +### Setting a property + +``` +% curl -X PUT 130.35.140.146:24042/properties/meaning -u "w3cwotprofile:eliforp" -d "{ value : \"41\" }" +``` + +### reading a single property +``` +% curl 130.35.140.146:24042/properties/meaning -u "w3cwotprofile:eliforp" +{"meaning": 42} +``` + +### reading all properties + +``` +% curl 130.35.140.146:24042/properties -u "w3cwotprofile:eliforp" +{ + "Cycle_Return_Pressure_Min": 1.3913971190868986, + "Cycle_Maximum_Inlet_Pressure": 301.42182499556196, + "meaning": 42, + "Cycle_Peak_Operation_Percent_Of_Minute": 1.5436025961821986, + "Cycle_Cases_Pressure_Max": 3, + "Cycle_Cases_Pressure_Min": 0, + "Cycle_Return_Pressure_Max": 18.77156927455416 +} +``` + +## Actions + +The operation *power* is a synchronous operation which returns an immediate status response. + +The *diagnose* operation models an asynchronous operation. When invoked it returns an *ActionStatus* response, which can be used for querying the status of the action. The duration of the action is between 30-60s. + +### Synchronous actions +``` +curl -v 130.35.140.146:24042/actions/power -u "w3cwotprofile:eliforp" -d "{value: true}" +``` + +The following action *always* returns *forbidden* for testing purposes: +``` +curl -v 130.35.140.146:24042/actions/resetFilter -u "w3cwotprofile:eliforp" -d "{value: true}" +-> forbidden +``` + +### Asynchronous actions + +To invoke an asynchronous action: +``` +curl -v -X POST 130.35.140.146:24042/actions/diagnose -u "w3cwotprofile:eliforp" +``` + +Response is an ActionStatus object: +``` +{ + "timeRequested": "2022-05-31T13:31:26.895516", + "href": "actions/diagnose/b7968ef8-9e7c-4230-bbca-85be13f35efd", + "status": "running" +} +``` + +Querying the state of an asynchronous action: +``` +% curl -X GET 130.35.140.146:24042/actions/diagnose/40578eed-7b88-4fdb-9f72-90314f924d4a -u "w3cwotprofile:eliforp" + +{ + "timeRequested": "2022-05-30T18:16:45.169514", + "href": "actions/diagnose/40578eed-7b88-4fdb-9f72-90314f924d4a", + "status": "running" +} +``` + +After the action has ended: + +``` +% curl -X GET 130.35.140.146:24042/actions/diagnose/40578eed-7b88-4fdb-9f72-90314f924d4a -u "w3cwotprofile:eliforp" + +{ + "timeEnded": "2022-05-30T18:17:37.297650", + "timeRequested": "2022-05-30T18:16:45.169514", + "href": "actions/diagnose/40578eed-7b88-4fdb-9f72-90314f924d4a", + "status": "completed" +} +``` + +## Events + +### Event subscription: +``` +curl -v -X POST 130.35.140.146:24042/events/filterClogged -u "w3cwotprofile:eliforp" -d "{callbackURL : \"http://130.35.140.146:223\" }" + +-> {"subscriptionID": 903305380} +``` +#### Unsubscribe using callbackURL +``` +curl -v -X DELETE 130.35.140.146:24042/events/filterClogged -u "w3cwotprofile:eliforp" -d "{callbackURL : \"http://130.35.140.146:223\" }" +``` +#### Unsubscribe using subscriptionId +``` +curl -v -X DELETE 130.35.140.146:24042/events/filterClogged -u "w3cwotprofile:eliforp" -d "{"subscriptionID": \"904712663\"}" + +``` diff --git a/events/2022.06.Online/TD/oracle-wt/TDs/WoTWebThing.td.jsonld b/events/2022.06.Online/TD/oracle-wt/TDs/WoTWebThing.td.jsonld new file mode 100644 index 00000000..ee16fb4e --- /dev/null +++ b/events/2022.06.Online/TD/oracle-wt/TDs/WoTWebThing.td.jsonld @@ -0,0 +1,261 @@ +{ + "@context": [ + "https://www.w3.org/2019/wot/td/v1", + "https://www.w3.org/2022/wot/td/v1.1" + ], + "@type": "Thing", + "title": "Blue Pump WoTWebThing", + "description": "Blue Pump WoTWebThing - Profile compliant WebThing (properties + actions + WebHook events)", + "id": "urn:com:blue:pump:data", + "profile": [ + "https://www.w3.org/2022/wot/profile/baseline/v1", + "https://www.w3.org/2022/wot/profile/http-webhook/v1" + ], + "version": { + "instance": "1.0.0" + }, + "base": "http://130.35.140.146:24042", + "securityDefinitions": { + "basic_sc": { + "scheme": "basic", + "in": "header" + } + }, + "security": [ + "basic_sc" + ], + "created": "2022-03-15T12:57:09.459Z", + "modified": "2022-04-05T12:01:09.459Z", + "userLastModified": "Michael Lagally", + "support": "mailto:Michael.Lagally@oracle.com", + "properties": { + "Cycle_Maximum_Inlet_Pressure": { + "description": "Cycle Maximum Inlet Pressure on single cycle in BAR", + "type": "object", + "readOnly": true, + "title": "Cycle_Maximum_Inlet_Pressure", + "properties": { + "Cycle_Maximum_Inlet_Pressure": { + "type": "number" + } + }, + "forms": [ + { + "href": "http://130.35.140.146:24042/properties/Cycle_Maximum_Inlet_Pressure", + "contentType": "application/json", + "op": "readproperty" + } + ] + }, + "Cycle_Return_Pressure_Min": { + "description": "Cycle Return Pressure Min on single cycle in BAR", + "type": "object", + "readOnly": true, + "title": "Cycle_Return_Pressure_Min", + "properties": { + "Cycle_Return_Pressure_Min": { + "type": "number" + } + }, + "forms": [ + { + "href": "http://130.35.140.146:24042/properties/Cycle_Return_Pressure_Min", + "contentType": "application/json", + "op": "readproperty" + } + ] + }, + "Cycle_Return_Pressure_Max": { + "description": "Cycle Return Pressure Max on single cycle in BAR", + "type": "object", + "readOnly": true, + "title": "Cycle_Return_Pressure_Max", + "properties": { + "Cycle_Return_Pressure_Max": { + "type": "number" + } + }, + "forms": [ + { + "href": "http://130.35.140.146:24042/properties/Cycle_Return_Pressure_Max", + "contentType": "application/json", + "op": "readproperty" + } + ] + }, + "Cycle_Cases_Pressure_Min": { + "description": "Cycle Case Pressure Min on single cycle in BAR", + "type": "object", + "readOnly": true, + "title": "Cycle_Cases_Pressure_Min", + "properties": { + "Cycle_Cases_Pressure_Min": { + "type": "number" + } + }, + "forms": [ + { + "href": "http://130.35.140.146:24042/properties/Cycle_Cases_Pressure_Min", + "contentType": "application/json", + "op": "readproperty" + } + ] + }, + "Cycle_Cases_Pressure_Max": { + "description": "Cycle Case Pressure Max on single cycle in BAR", + "type": "object", + "readOnly": true, + "title": "Cycle_Cases_Pressure_Max", + "properties": { + "Cycle_Cases_Pressure_Max": { + "type": "number" + } + }, + "forms": [ + { + "href": "http://130.35.140.146:24042/properties/Cycle_Cases_Pressure_Max", + "contentType": "application/json", + "op": "readproperty" + } + ] + }, + "Cycle_Peak_Operation_Percent_Of_Minute": { + "description": "Cycle Peak Operation Percent of Minute", + "type": "object", + "readOnly": true, + "title": "Cycle_Peak_Operation_Percent_Of_Minute", + "properties": { + "Cycle_Peak_Operation_Percent_Of_Minute": { + "type": "number" + } + }, + "forms": [ + { + "href": "http://130.35.140.146:24042/properties/Cycle_Peak_Operation_Percent_Of_Minute", + "contentType": "application/json", + "op": "readproperty" + } + ] + } + }, + "actions": { + "power": { + "description": "Turns system ON or OFF", + "title": "power", + "input": { + "type": "object", + "properties": { + "value": { + "type": "boolean" + } + } + }, + "forms": [ + { + "href": "http://130.35.140.146:24042/actions/power", + "contentType": "application/json", + "op": "invokeaction" + } + ] + }, + "diagnose": { + "description": "Runs diagnostics (async action)", + "title": "diagnose", + "forms": [ + { + "href": "http://130.35.140.146:24042/actions/diagnose", + "contentType": "application/json", + "op": "invokeaction" + } + ] + }, + "resetFilter": { + "description": "Used to notify the pump that the filter has been replaced. Responds with a 403 Forbidden", + "title": "resetFilter", + "forms": [ + { + "href": "http://130.35.140.146:24042/actions/resetFilter", + "contentType": "application/json", + "op": "invokeaction" + } + ] + } + }, + "events": { + "filterClogged": { + "title": "filterClogged", + "description": "Filter clogged alert", + "subscription": { + "type": "object", + "properties": { + "callbackURL": { + "type": "string", + "format": "uri", + "description": "Callback URL provided by subscriber for Webhook notifications.", + "writeOnly": true + }, + "subscriptionID": { + "type": "string", + "description": "Unique subscription ID provided by WebThing.", + "readOnly": true + } + } + }, + "cancellation": { + "type": "object", + "properties": { + "subscriptionID": { + "type": "string", + "description": "subscription ID to cancel subscription.", + "writeOnly": true + } + } + }, + "data": { + "title": "filterClogged", + "type": "object", + "properties": { + "filterClogged": { + "type": "boolean" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "seqNr": { + "type": "number" + } + } + }, + "dataResponse": { + "title": "emergencyStop", + "type": "object", + "properties": { + "filterClogged": { + "type": "boolean" + }, + "timestamp": { + "type": "string", + "format": "date-time" + } + } + }, + "forms": [ + { + "op": "subscribeevent", + "href": "http://130.35.140.146:24042/events/filterClogged", + "htv:methodName": "POST", + "subprotocol": "webhook", + "contentType": "application/json" + }, + { + "op": "unsubscribeevent", + "href": "http://130.35.140.146:24042/events/filterClogged", + "htv:methodName": "DELETE", + "subprotocol": "webhook", + "contentType": "application/json" + } + ] + } + } +} \ No newline at end of file diff --git a/tools/thingweb-playground b/tools/thingweb-playground deleted file mode 160000 index c8068c3f..00000000 --- a/tools/thingweb-playground +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c8068c3f8c08a1126e209ab0138a08881e44d8f8