rfc9880.original.xml | rfc9880.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
<!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
]> | ]> | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4. | -ietf-asdf-sdf-24" number="9880" updates="" obsoletes="" category="std" consensu | |||
1) --> | s="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" | |||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | version="3" xml:lang="en"> | |||
-ietf-asdf-sdf-24" category="std" consensus="true" submissionType="IETF" tocIncl | ||||
ude="true" sortRefs="true" symRefs="true" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 3.29.0 --> | ||||
<?v3xml2rfc table_borders="light"?> | ||||
<front> | <front> | |||
<title abbrev="SDF (Semantic Definition Format)">Semantic Definition Format | <title abbrev="SDF: Semantic Definition Format">Semantic Definition | |||
(SDF) for Data and Interactions of Things</title> | Format (SDF) for Data and Interactions of Things</title> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-24"/> | <seriesInfo name="RFC" value="9880"/> | |||
<author initials="M." surname="Koster" fullname="Michael Koster" role="edito r"> | <author initials="M." surname="Koster" fullname="Michael Koster" role="edito r"> | |||
<organization>KTC Control AB</organization> | <organization>KTC Control AB</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>29415 Alderpoint Road</street> | <street>29415 Alderpoint Road</street> | |||
<city>Blocksburg, CA</city> | <city>Blocksburg</city><region>CA</region> | |||
<code>95514</code> | <code>95514</code> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<phone>+1-707-502-5136</phone> | <phone>+1-707-502-5136</phone> | |||
<email>michaeljohnkoster@gmail.com</email> | <email>michaeljohnkoster@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="C." surname="Bormann" fullname="Carsten Bormann" role="edi tor"> | <author initials="C." surname="Bormann" fullname="Carsten Bormann" role="edi tor"> | |||
<organization ascii="Universitaet Bremen TZI">Universität Bremen TZI</orga nization> | <organization ascii="Universitaet Bremen TZI">Universität Bremen TZI</orga nization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Postfach 330440</street> | <street>Postfach 330440</street> | |||
skipping to change at line 53 ¶ | skipping to change at line 52 ¶ | |||
<organization>Ericsson</organization> | <organization>Ericsson</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<city>Jorvas</city> | <city>Jorvas</city> | |||
<code>02420</code> | <code>02420</code> | |||
<country>Finland</country> | <country>Finland</country> | |||
</postal> | </postal> | |||
<email>ari.keranen@ericsson.com</email> | <email>ari.keranen@ericsson.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2025" month="July" day="27"/> | <date year="2025" month="October"/> | |||
<area>Applications</area> | ||||
<workgroup>ASDF</workgroup> | <area>ART</area> | |||
<keyword>Internet-Draft</keyword> | <workgroup>asdf</workgroup> | |||
<abstract> | ||||
<?line 168?> | <!-- [rfced] Please insert any keywords (beyond those that appear in | |||
the title) for use on https://www.rfc-editor.org/search. --> | ||||
<keyword>example</keyword> | ||||
<abstract> | ||||
<t>The Semantic Definition Format (SDF) is concerned with Things, | <t>The Semantic Definition Format (SDF) is concerned with Things, | |||
namely physical objects that are available for interaction over a | namely physical objects that are available for interaction over a | |||
network. | network. | |||
SDF is a format for domain experts to | SDF is a format for domain experts to | |||
use in the creation and maintenance of data and interaction models | use in the creation and maintenance of data and interaction models | |||
that describe Things. | that describe Things. | |||
An SDF specification describes definitions of | An SDF specification describes definitions of | |||
SDF Objects/SDF Things and their associated interactions (Events, Actions, | SDF Objects/SDF Things and their associated interactions (Events, Actions, and P | |||
Properties), as well as the Data types for the information exchanged | roperties), as well as the Data types for the information exchanged | |||
in those interactions. Tools convert this format to database formats | in those interactions. Tools convert this format to database formats | |||
and other serializations as needed.</t> | and other serializations as needed.</t> | |||
</abstract> | </abstract> | |||
<note removeInRFC="true"> | ||||
<name>About This Document</name> | ||||
<t> | ||||
Status information for this document may be found at <eref target="https | ||||
://datatracker.ietf.org/doc/draft-ietf-asdf-sdf/"/>. | ||||
</t> | ||||
<t> | ||||
Discussion of this document takes place on the | ||||
A Semantic Definition Format for Data and Interactions of Things (ASDF) | ||||
Working Group mailing list (<eref target="mailto:asdf@ietf.org"/>), | ||||
which is archived at <eref target="https://mailarchive.ietf.org/arch/bro | ||||
wse/asdf/"/>. | ||||
Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/asdf/"/ | ||||
>. | ||||
</t> | ||||
<t>Source for this draft and an issue tracker can be found at | ||||
<eref target="https://github.com/ietf-wg-asdf/SDF"/>.</t> | ||||
</note> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<?line 186?> | ||||
<section anchor="introduction"> | <section anchor="introduction"> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t>The Semantic Definition Format (SDF) is concerned with Things, | <t>The Semantic Definition Format (SDF) is concerned with Things, | |||
namely physical objects that are available for interaction over a | namely physical objects that are available for interaction over a | |||
network. | network. | |||
SDF is a format for domain experts to | SDF is a format for domain experts to | |||
use in the creation and maintenance of data and interaction models | use in the creation and maintenance of data and interaction models | |||
that describe Things. | that describe Things. | |||
An SDF specification describes definitions of | An SDF specification describes definitions of | |||
SDF Objects/SDF Things and their associated interactions (Events, Actions, | SDF Objects/SDF Things and their associated interactions (Events, Actions, | |||
Properties), as well as the Data types for the information exchanged | and Properties), as well as the Data types for the information exchanged | |||
in those interactions. Tools convert this format to database formats | in those interactions. Tools convert this format to database formats | |||
and other serializations as needed.</t> | and other serializations as needed.</t> | |||
<t>SDF is designed to be an extensible format. | <t>SDF is designed to be an extensible format. | |||
The present document constitutes the base specification for SDF: | The present document constitutes the base specification for SDF, | |||
"base SDF" for short. | "base SDF" for short. | |||
In addition, SDF extensions can be defined, some of which may make use | In addition, SDF extensions can be defined, some of which may make use | |||
of extension points specifically defined for this in base SDF. | of extension points specifically defined for this in base SDF. | |||
One area for such extensions would be refinements of SDF's abstract | One area for such extensions would be refinements of SDF's abstract | |||
interaction models into protocol bindings for specific ecosystems | interaction models into protocol bindings for specific ecosystems | |||
(e.g., <xref target="I-D.bormann-asdf-sdf-mapping"/>). | (e.g., <xref target="I-D.bormann-asdf-sdf-mapping"/>). | |||
For the use of certain other extensions, it may be necessary to | For the use of certain other extensions, it may be necessary to | |||
indicate in the SDF | indicate in the SDF | |||
document using them that a specific extension is in effect; see | document using them that a specific extension is in effect; see | |||
<xref target="information-block"/> for details of the <tt>features</tt> quality that can be | <xref target="information-block"/> for details of the <tt>features</tt> quality that can be | |||
used for such indications. | used for such indications. | |||
With extension points and feature indications available, | With extension points and feature indications available, | |||
base SDF does not define a "version" concept for the SDF format itself | base SDF does not define a "version" concept for the SDF format itself | |||
(as opposed to version indications within SDF documents indicating | (as opposed to version indications within SDF documents indicating | |||
their own evolution, see <xref target="information-block"/>).</t> | their own evolution; see <xref target="information-block"/>).</t> | |||
<section anchor="structure-of-this-document"> | <section anchor="structure-of-this-document"> | |||
<name>Structure of This Document</name> | <name>Structure of This Document</name> | |||
<t>After introductory material and an overview (<xref target="overview"/ >) over the | <t>After introductory material and an overview (<xref target="overview"/ >) over the | |||
elements of the model and over the different kinds of names used, | elements of the model and the different kinds of names used, | |||
<xref target="sdf-structure"/> introduces the main components of an SDF model. | <xref target="sdf-structure"/> introduces the main components of an SDF model. | |||
<xref target="names-and-namespaces"/> revisits names and structures them into | <xref target="names-and-namespaces"/> revisits names and structures them into | |||
namespaces. | namespaces. | |||
<xref target="kw-defgroups"/> discusses the inner structure of the Objects defin ed by | <xref target="kw-defgroups"/> discusses the inner structure of the Objects defin ed by | |||
SDF, the sdfObjects, in further detail. | SDF, the sdfObjects, in further detail. | |||
<xref target="high-level-composition"/> discusses how SDF supports composition. | <xref target="high-level-composition"/> discusses how SDF supports composition. | |||
Conventional Sections (<xref format="title" target="iana"/>, <xref format="title " target="seccons"/>, | Conventional Sections (<xref format="title" target="iana"/>, <xref format="title " target="seccons"/>, | |||
<xref format="title" target="sec-normative-references"/>, and <xref format="titl e" target="sec-informative-references"/>) | <xref format="title" target="sec-normative-references"/>, and <xref format="titl e" target="sec-informative-references"/>) | |||
follow. | follow. | |||
The normative <xref target="syntax"/> defines the syntax of SDF in | The normative <xref target="syntax"/> defines the syntax of SDF in | |||
skipping to change at line 150 ¶ | skipping to change at line 138 ¶ | |||
used at the SDF data model level that were inspired by JSO. | used at the SDF data model level that were inspired by JSO. | |||
The informative <xref target="composition-examples"/> provides a few | The informative <xref target="composition-examples"/> provides a few | |||
examples for the use of composition in SDF. | examples for the use of composition in SDF. | |||
Finally, <xref target="earlier"/> provides some historical information that can be | Finally, <xref target="earlier"/> provides some historical information that can be | |||
useful in upgrading earlier, pre-standard SDF models and | useful in upgrading earlier, pre-standard SDF models and | |||
implementations to SDF base.</t> | implementations to SDF base.</t> | |||
</section> | </section> | |||
<section anchor="terminology-and-conventions"> | <section anchor="terminology-and-conventions"> | |||
<name>Terminology and Conventions</name> | <name>Terminology and Conventions</name> | |||
<t>Terms introduced in this section are capitalized when used in this | <t>Terms introduced in this section are capitalized when used in this | |||
section; to maintain readability, capitalization is only done when | section. To maintain readability, capitalization is only used when | |||
needed where they are used in the body of this document.</t> | needed where they are used in the body of this document.</t> | |||
<section numbered="false" anchor="programming-platform-terms"> | <section numbered="false" anchor="programming-platform-terms"> | |||
<name>Programming Platform Terms</name> | <name>Programming Platform Terms</name> | |||
<t>The following definitions mention terms that are used with specific | <t>The following definitions mention terms that are used with specific | |||
meanings in various programming platforms, but often have an | meanings in various programming platforms, but often have an | |||
independent definition for this document, which can be found further | independent definition for this document, which can be found further | |||
below in this section.</t> | below in this section.</t> | |||
<dl> | <dl> | |||
<dt>Element:</dt> | <dt>Element:</dt> | |||
<dd> | <dd> | |||
<t>A generic term used here in its English sense. | <t>A generic term used here in its English sense. | |||
Exceptionally, in <xref target="jso-inspired"/>, used explicitly in accordance w ith | Exceptionally, in <xref target="jso-inspired"/>, the term is used explicitly in accordance with | |||
its meaning in the JSON ecosystem, i.e., the elements of JSON | its meaning in the JSON ecosystem, i.e., the elements of JSON | |||
arrays.</t> | arrays.</t> | |||
</dd> | </dd> | |||
<dt>Entry:</dt> | <dt>Entry:</dt> | |||
<dd> | <dd> | |||
<t>A key-value pair in a map. (In JSON maps, sometimes also called "member".)</t> | <t>A key-value pair in a map. (In JSON maps, sometimes also called "member".)</t> | |||
</dd> | </dd> | |||
<dt>Map:</dt> | <dt>Map:</dt> | |||
<dd> | <dd> | |||
<t>A collection of entries (key-value pairs), where there are no t wo | <t>A collection of entries (key-value pairs) where there are no tw o | |||
entries with equivalent keys. | entries with equivalent keys. | |||
(Also known as associative array, dictionary, or symbol table.)</t> | (Also known as associative array, dictionary, or symbol table.)</t> | |||
</dd> | </dd> | |||
<dt>Object:</dt> | <dt>Object:</dt> | |||
<dd> | <dd> | |||
<t>An otherwise very generic term that JavaScript (and thus JSON) uses | <t>An otherwise very generic term that JavaScript (and thus JSON) uses | |||
for the kind of maps that were part of the original languages from | for the kind of maps that were part of the original languages from | |||
the outset. | the outset. | |||
In this document, Object is used exclusively in its general English | In this document, Object is used exclusively in its general English | |||
meaning or as the colloquial shorthand for sdfObject, even if the | meaning or as the colloquial shorthand for sdfObject, even if the | |||
type name <tt>"object"</tt> is imported with JSON-related semantics from a | type name "<tt>object</tt>" is imported with JSON-related semantics from a | |||
data definition language.</t> | data definition language.</t> | |||
</dd> | </dd> | |||
<dt>Property:</dt> | <dt>Property:</dt> | |||
<dd> | <dd> | |||
<t>Certain environments use the term "property" for a JSON concept that | <t>Certain environments use the term "property" for a JSON concept that | |||
JSON calls "member" and is called "entry" here, or sometimes just for the | JSON calls "member" and is called "entry" here, or sometimes just for the | |||
map key of these. | map key of these. | |||
In this document, the term Property is specifically reserved for a | In this document, the term Property is specifically reserved for a | |||
certain kind of Affordance, even if the map key <tt>"properties"</tt> is | certain kind of Affordance, even if the map key "<tt>properties</tt>" is | |||
imported with JSON-related semantics from a data definition | imported with JSON-related semantics from a data definition | |||
language.</t> | language.</t> | |||
</dd> | </dd> | |||
<dt>Byte:</dt> | <dt>Byte:</dt> | |||
<dd> | <dd> | |||
<t>This document uses the term "byte" in its now-customary sense a s a | <t>This document uses the term "byte" in its now-customary sense a s a | |||
synonym for "octet".</t> | synonym for "octet".</t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
skipping to change at line 249 ¶ | skipping to change at line 237 ¶ | |||
<t>An Affordance that can potentially be used to obtain informatio n | <t>An Affordance that can potentially be used to obtain informatio n | |||
about what happened to a Grouping.</t> | about what happened to a Grouping.</t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section numbered="false" anchor="specification-language-terms"> | <section numbered="false" anchor="specification-language-terms"> | |||
<name>Specification Language Terms</name> | <name>Specification Language Terms</name> | |||
<dl> | <dl> | |||
<dt>SDF Document:</dt> | <dt>SDF Document:</dt> | |||
<dd> | <dd> | |||
<t>Container for SDF Definitions, together with data | ||||
<t>Container for SDF Definitions, together with data | ||||
about the SDF Document itself (information block). | about the SDF Document itself (information block). | |||
Represented as a JSON text representing a single JSON map, which is | Represented as a JSON text representing a single JSON map, which is | |||
built from nested maps.</t> | built from nested maps.</t> | |||
</dd> | </dd> | |||
<dt>SDF Model:</dt> | <dt>SDF Model:</dt> | |||
<dd> | <dd> | |||
<t>Definitions and declarations that model the digital interaction | <t>Definitions and declarations that model the digital interaction | |||
opportunities offered by one or more kinds of Things, represented | opportunities offered by one or more kinds of Things, represented | |||
by Groupings (sdfObjects and sdfThings). | by Groupings (sdfObjects and sdfThings). | |||
An SDF Model can be fully contained in a single SDF Document, or it | An SDF Model can be fully contained in a single SDF Document, or it | |||
can be built from an SDF Document that references definitions and | can be built from an SDF Document that references definitions and | |||
declarations from additional SDF documents.</t> | declarations from additional SDF documents.</t> | |||
</dd> | </dd> | |||
<dt>Block:</dt> | <dt>Block:</dt> | |||
<dd> | <dd> | |||
<t>One or more entries in a JSON map that is part of an SDF | <t>One or more entries in a JSON map that is part of an SDF | |||
specification; these entries can be described as a Block to | specification. These entries can be described as a Block to | |||
emphasize that they together serve a specific function.</t> | emphasize that they serve a specific function together.</t> | |||
</dd> | </dd> | |||
<dt>Group:</dt> | <dt>Group:</dt> | |||
<dd> | <dd> | |||
<!-- [rfced] We are having trouble understanding how the text after the comma re | ||||
lates to the earlier part of the sentence. Does this mean Group in nested defin | ||||
itions also represents the SDF document? Please clarify. | ||||
Original (full definition included for context): | ||||
Group: An entry in the main JSON map that represents the SDF | ||||
document, and in certain nested definitions. A group has a Class | ||||
Name Keyword as its key and a map of named definition entries | ||||
(Definition Group) as a value. | ||||
Perhaps: | ||||
Group: An entry in the main JSON map and certain nested definitions | ||||
that represent the SDF document. | ||||
--> | ||||
<t>An entry in the main JSON map that represents the SDF document, and in | <t>An entry in the main JSON map that represents the SDF document, and in | |||
certain nested definitions. | certain nested definitions. | |||
A group | A group | |||
has a Class Name Keyword as its key and a map of named definition | has a Class Name Keyword as its key and a map of named definition | |||
entries (Definition Group) as a value.</t> | entries (Definition Group) as a value.</t> | |||
</dd> | </dd> | |||
<dt>Class Name Keyword:</dt> | <dt>Class Name Keyword:</dt> | |||
<dd> | <dd> | |||
<t>One of <tt>sdfThing</tt>, <tt>sdfObject</tt>, <tt>sdfProperty</ tt>, <tt>sdfAction</tt>, | <t>One of <tt>sdfThing</tt>, <tt>sdfObject</tt>, <tt>sdfProperty</ tt>, <tt>sdfAction</tt>, | |||
<tt>sdfEvent</tt>, or <tt>sdfData</tt>; the Classes for these type keywords are | <tt>sdfEvent</tt>, or <tt>sdfData</tt>. The Classes for these type keywords are | |||
capitalized and prefixed with <tt>sdf</tt>.</t> | capitalized and prefixed with <tt>sdf</tt>.</t> | |||
</dd> | </dd> | |||
<dt>Class:</dt> | <dt>Class:</dt> | |||
<dd> | <dd> | |||
<t>Abstract term for the information that is contained in groups | <t>Abstract term for the information that is contained in groups | |||
identified by a Class Name Keyword.</t> | identified by a Class Name Keyword.</t> | |||
</dd> | </dd> | |||
<dt>Quality:</dt> | <dt>Quality:</dt> | |||
<dd> | <dd> | |||
<t>A metadata item in a definition or declaration which says somet hing | <t>A metadata item in a definition or declaration that says someth ing | |||
about that definition or declaration. A quality is represented in | about that definition or declaration. A quality is represented in | |||
SDF as an entry in a JSON map (JSON object) that serves as a definition | SDF as an entry in a JSON map (JSON object) that serves as a definition | |||
or declaration. | or declaration. | |||
(The term "Quality" is used because another popular term, | (The term "Quality" is used because another popular term, | |||
"Property", already has a different meaning.)</t> | "Property", already has a different meaning.)</t> | |||
</dd> | </dd> | |||
<dt>Definition:</dt> | <dt>Definition:</dt> | |||
<dd> | <dd> | |||
<t>An entry in a Definition Group. | <t>An entry in a Definition Group. | |||
The entry creates a new semantic term for use in SDF models and | The entry creates a new semantic term for use in SDF models and | |||
associates it with a set of qualities. | associates it with a set of qualities. | |||
Unless the Class Name Keyword of the Group also makes it a | Unless the Class Name Keyword of the Group also makes it a | |||
Declaration (see <xref target="definitions-block"/>), a definition just defines a | Declaration (see <xref target="definitions-block"/>), a definition just defines a | |||
term, it does not create a component item within the enclosing | term and it does not create a component item within the enclosing | |||
definition.</t> | definition.</t> | |||
</dd> | </dd> | |||
<dt>Declaration:</dt> | <dt>Declaration:</dt> | |||
<dd> | <dd> | |||
<t>A definition within an enclosing | <t>A definition within an enclosing | |||
definition that is intended to create a component item within that | definition that is intended to create a component item within that | |||
enclosing definition. Every declaration can also be used as a | enclosing definition. Every declaration can also be used as a | |||
definition for reference elsewhere.</t> | definition for reference elsewhere.</t> | |||
</dd> | </dd> | |||
<dt>Grouping:</dt> | <dt>Grouping:</dt> | |||
<dd> | <dd> | |||
<t>An sdfThing or sdfObject, i.e., (directly or indirectly) a | <t>An sdfThing or sdfObject, i.e., (directly or indirectly) a | |||
description for a combination of Affordances.</t> | description for a combination of Affordances.</t> | |||
</dd> | </dd> | |||
<dt>Object, sdfObject:</dt> | <dt>Object, sdfObject:</dt> | |||
<dd> | <dd> | |||
<t>A Grouping that contains Affordance declarations (Property, Act ion, | <t>A Grouping that contains Affordance declarations (Property, Act ion, | |||
and Event declarations) only. | and Event declarations) only. | |||
It serves as the main "atom" of reusable semantics for model | It serves as the main "atom" of reusable semantics for model | |||
construction, representing the interaction model for a Thing that is | construction, representing the interaction model for a Thing that is | |||
simple enough to not require nested structure. | simple enough to not require a nested structure. | |||
sdfObjects are therefore similar to sdfThings but do not allow | Therefore, sdfObjects are similar to sdfThings, but do not allow | |||
nesting, i.e., they cannot contain other Groupings (sdfObjects or | nesting, i.e., they cannot contain other Groupings (sdfObjects or | |||
sdfThings).</t> | sdfThings).</t> | |||
</dd> | </dd> | |||
<dt>sdfThing:</dt> | <dt>sdfThing:</dt> | |||
<dd> | <dd> | |||
<t>A Grouping that can contain nested Groupings (sdfThings and sdf Objects). | <t>A Grouping that can contain nested Groupings (sdfThings and sdf Objects). | |||
Like sdfObject, it can also contain Affordance | Like sdfObject, it can also contain Affordance | |||
declarations (Property, Action, and Event declarations). | declarations (Property, Action, and Event declarations). | |||
(Note that "Thing" has a different meaning from sdfThing and | (Note that "Thing" has a different meaning from sdfThing and | |||
therefore is not available as a colloquial shorthand of | is therefore not available as a colloquial shorthand of | |||
sdfThing.)</t> | sdfThing.)</t> | |||
</dd> | </dd> | |||
<dt>Augmentation Mechanism:</dt> | <dt>Augmentation Mechanism:</dt> | |||
<dd> | <dd> | |||
<t>A companion document to a base SDF Model that provides addition al | <t>A companion document to a base SDF Model that provides addition al | |||
information ("augments" the base specification). | information ("augments" the base specification). | |||
The information may be for use in | The information may be for use in | |||
a specific ecosystem or with a specific protocol ("Protocol Binding"). | a specific ecosystem or with a specific protocol ("Protocol Binding"). | |||
No specific Augmentation Mechanisms are defined in base SDF. | No specific Augmentation Mechanisms are defined in base SDF. | |||
A simple mechanism for such augmentations has been discussed as a | A simple mechanism for such augmentations has been discussed as a | |||
"mapping file" <xref target="I-D.bormann-asdf-sdf-mapping"/>.</t> | "mapping file" <xref target="I-D.bormann-asdf-sdf-mapping"/>.</t> | |||
</dd> | </dd> | |||
<dt>Protocol Binding:</dt> | <dt>Protocol Binding:</dt> | |||
<dd> | <dd> | |||
<t>A companion document to an SDF Model that defines how to map th e | <t>A companion document to an SDF Model that defines how to map th e | |||
abstract concepts in the model into the protocols in use in a | abstract concepts in the model into the protocols that are in use in a | |||
specific ecosystem. | specific ecosystem. | |||
The Protocol Binding might supply URL components, numeric IDs, and | The Protocol Binding might supply URL components, numeric IDs, and | |||
similar details. | similar details. | |||
Protocol Bindings are one case of an Augmentation Mechanism.</t> | Protocol Bindings are one case of an Augmentation Mechanism.</t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section numbered="false" anchor="conventions"> | <section numbered="false" anchor="conventions"> | |||
<name>Conventions</name> | <name>Conventions</name> | |||
<t>Regular expressions that are used in the text as a "pattern" for so me | <t>Regular expressions that are used in the text as a "pattern" for so me | |||
string are interpreted as per <xref target="RFC9485"/>. | string are interpreted as per <xref target="RFC9485"/>. | |||
(Note that a form of regular expressions is also used as values of the | (Note that a form of regular expressions is also used as values of the | |||
quality <tt>pattern</tt>; see <xref target="type-string"/>.)</t> | quality <tt>pattern</tt>; see <xref target="type-string"/>.)</t> | |||
<t>The term "URI" in this document always refers to "full" URIs ("<tt> URI</tt>" in | <t>The term "URI" in this document always refers to "full" URIs ("<tt> URI</tt>" in | |||
Section <xref target="RFC3986" section="3" sectionFormat="bare"/> of RFC 3986 <x ref target="STD66"/>), never to relative URI references | Section <xref target="RFC3986" section="3" sectionFormat="bare"/> of RFC 3986 <x ref target="STD66"/>), never to relative URI references | |||
("<tt>relative-ref</tt>" in Section <xref target="RFC3986" section="4.1" section Format="bare"/> of RFC 3986 <xref target="STD66"/>), so the term "URI" | ("<tt>relative-ref</tt>" in Section <xref target="RFC3986" section="4.1" section Format="bare"/> of RFC 3986 <xref target="STD66"/>), so the term "URI" | |||
does <em>NOT</em> serve as the colloquial abbreviation of "URI-Reference" it is | does <em>NOT</em> serve as the colloquial abbreviation of "URI-Reference" it is | |||
often used for. | often used for. | |||
Therefore, the "reference resolution" process defined in Section <xref target="R FC3986" section="5" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/> is <em>NOT</em> used in this specification. | Therefore, the "reference resolution" process defined in Section <xref target="R FC3986" section="5" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/> is <em>NOT</em> used in this specification. | |||
Where necessary, full URIs are assembled out of substrings by simple | Where necessary, full URIs are assembled out of substrings by simple | |||
concatenation, e.g. when CURIEs are expanded (<xref target="ref-global"/>), or w hen a | concatenation, e.g., when CURIEs are expanded (<xref target="ref-global"/>) or w hen a | |||
global name is formed out of a namespace <tt>absolute-URI</tt> (Section <xref ta rget="RFC3986" section="5" sectionFormat="bare"/> of RFC 3986 <xref target="STD6 6"/>) and a fragment identifier part (<xref target="names-structure"/>). | global name is formed out of a namespace <tt>absolute-URI</tt> (Section <xref ta rget="RFC3986" section="5" sectionFormat="bare"/> of RFC 3986 <xref target="STD6 6"/>) and a fragment identifier part (<xref target="names-structure"/>). | |||
Note also that URIs are not only used to construct the SDF models, | Also note that URIs are not only used to construct the SDF models, | |||
they are also the <em>subject</em> of SDF models where they are used as data | they are also the <em>subject</em> of SDF models where they are used as data | |||
in actual interactions (and could even be represented as relative | in actual interactions (and could even be represented as relative | |||
references there); these two usages are entirely separate.</t> | references there); these two usages are entirely separate.</t> | |||
<t>The singular form is chosen as the preferred one for the keywords | <t>The singular form is chosen as the preferred one for the keywords | |||
defined in this specification.</t> | defined in this specification.</t> | |||
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<b | <t> | |||
cp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECO | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
MMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be i | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
nterpreted as | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
described in <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RF | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
C8174"/>) when, and only when, they | be | |||
appear in all capitals, as shown here.</t> | interpreted as described in BCP 14 <xref target="RFC2119"/> <xref | |||
<?line -18?> | target="RFC8174"/> when, and only when, they appear in all capitals, as | |||
shown here. | ||||
</section> | </t> | |||
</section> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="overview"> | <section anchor="overview"> | |||
<name>Overview</name> | <name>Overview</name> | |||
<section anchor="example-definition"> | <section anchor="example-definition"> | |||
<name>Example Definition</name> | <name>Example Definition</name> | |||
<t>The overview starts with an example for the SDF definition of a simpl e sdfObject called "Switch" (<xref target="example1"/>).</t> | <t>The overview starts with an example for the SDF definition of a simpl e sdfObject called "Switch" (<xref target="example1"/>).</t> | |||
<figure anchor="example1"> | <figure anchor="example1"> | |||
<name>A simple example of an SDF document</name> | <name>A Simple Example of an SDF Document</name> | |||
<sourcecode type="json" name="example1.sdf.json"><![CDATA[ | <sourcecode type="json" name="example1.sdf.json"><![CDATA[ | |||
{ | { | |||
"info": { | "info": { | |||
"title": "Example document for SDF (Semantic Definition Format)", | "title": "Example document for SDF (Semantic Definition Format)", | |||
"version": "2019-04-24", | "version": "2019-04-24", | |||
"copyright": "Copyright 2019 Example Corp. All rights reserved.", | "copyright": "Copyright 2019 Example Corp. All rights reserved.", | |||
"license": "https://example.com/license" | "license": "https://example.com/license" | |||
}, | }, | |||
"namespace": { | "namespace": { | |||
"cap": "https://example.com/capability/cap" | "cap": "https://example.com/capability/cap" | |||
skipping to change at line 440 ¶ | skipping to change at line 444 ¶ | |||
"Toggle the switch; equivalent to setting value to its complement." | "Toggle the switch; equivalent to setting value to its complement." | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>This is a model of a switch. | <t>This is a model of a switch. | |||
The state <tt>value</tt> declared in the <tt>sdfProperty</tt> group, represented by a Boolean, will be true for "on" and will be false for "off". | The state <tt>value</tt> declared in the <tt>sdfProperty</tt> group, represented by a Boolean, will be true for "on" and will be false for "off". | |||
The actions <tt>on</tt> or <tt>off</tt> declared in the <tt>sdfAction</tt> group | The Actions <tt>on</tt> or <tt>off</tt> declared in the <tt>sdfAction</tt> group | |||
are redundant with setting the <tt>value</tt> and are in the example to illustr | are redundant with setting the <tt>value</tt> and are in the example to illustr | |||
ate that there are often different ways of achieving the same effect. | ate that there are often different ways of achieving the same effect. | |||
The action <tt>toggle</tt> will invert the value of the sdfProperty value, so th | The action <tt>toggle</tt> will invert the value of the sdfProperty value so tha | |||
at 2-way switches can be created; having such action will avoid the need for fir | t 2-way switches can be created; having such action will avoid the need for retr | |||
st retrieving the current value and then applying/setting the inverted value.</t | ieving the current value first and then applying/setting the inverted value.</t> | |||
> | ||||
<t>The <tt>sdfObject</tt> group lists the affordances of Things modeled by this sdfObject. | <t>The <tt>sdfObject</tt> group lists the affordances of Things modeled by this sdfObject. | |||
The <tt>sdfProperty</tt> group lists the property affordances described by the m odel; these represent various perspectives on the state of the sdfObject. | The <tt>sdfProperty</tt> group lists the property affordances described by the m odel; these represent various perspectives on the state of the sdfObject. | |||
Properties can have additional qualities to describe the state more precisely. | Properties can have additional qualities to describe the state more precisely. | |||
Properties can be annotated to be read, write or read/write; how this is actuall | ||||
y done by the underlying transfer protocols is not described in the SDF model bu | Properties can be annotated to be read, write, or read/write; how this is actual | |||
t left to companion protocol bindings. | ly done by the underlying transfer protocols is not described in the SDF model b | |||
Properties are often used with RESTful paradigms <xref target="I-D.irtf-t2trg-re | ut left to companion protocol bindings. | |||
st-iot"/>, describing state. | Properties are often used with RESTful paradigms <xref target="I-D.irtf-t2trg-re | |||
st-iot"/> describing state. | ||||
The <tt>sdfAction</tt> group is the mechanism to describe other interactions in terms of their names, input, and output data (no data are used in the example), as in a POST method in REST or in a remote procedure call. | The <tt>sdfAction</tt> group is the mechanism to describe other interactions in terms of their names, input, and output data (no data are used in the example), as in a POST method in REST or in a remote procedure call. | |||
The example <tt>toggle</tt> is an Action that | The example <tt>toggle</tt> is an Action that | |||
changes the state based on the current state of the Property named <tt>value</tt >. | changes the state based on the current state of the Property named <tt>value</tt >. | |||
(The third type of affordance is Events, which are not described in this example .)</t> | (The third type of affordance is Events, which are not described in this example .)</t> | |||
<t>In the JSON representation, the <tt>info</tt> group is an exception i n that | <t>In the JSON representation, the <tt>info</tt> group is an exception i n that | |||
this group's map has keys taken from the SDF vocabulary. | this group's map has keys taken from the SDF vocabulary. | |||
All other groups (such as <tt>namespace</tt>, <tt>sdfObject</tt>) have maps with | All other groups (such as <tt>namespace</tt> and <tt>sdfObject</tt>) have maps w ith | |||
keys that are freely defined by the model writer (<tt>Switch</tt>, <tt>value</tt >, | keys that are freely defined by the model writer (<tt>Switch</tt>, <tt>value</tt >, | |||
<tt>on</tt>, etc.); these map keys are therefore called <em>given names</em>. | <tt>on</tt>, etc.). These map keys are therefore called <em>given names</em>. | |||
The groups made up of entries with given names as keys usually use the | The groups made up of entries with given names as keys usually use the | |||
<tt>named<></tt> production in the <xref target="syntax">formal syntax of SDF</xref>. | <tt>named<></tt> production in the formal syntax of SDF <xref target="synt ax"/>. | |||
Where the values of these entries are maps, these again use SDF | Where the values of these entries are maps, these again use SDF | |||
vocabulary keys, and so on, generally alternating in further nesting. | vocabulary keys, and so on, generally alternating in further nesting. | |||
The SDF-defined vocabulary items used in the hierarchy of such groups | The SDF-defined vocabulary items used in the hierarchy of such groups | |||
are often, but not always, called <em>quality names</em> or <em>qualities</em>. | are often, but not always, called <em>quality names</em> or <em>qualities</em>. | |||
See <xref target="member-names"/> for more information about naming in SDF.</t> | See <xref target="member-names"/> for more information about naming in SDF.</t> | |||
</section> | </section> | |||
<section anchor="elements-of-an-sdf-model"> | <section anchor="elements-of-an-sdf-model"> | |||
<name>Elements of an SDF model</name> | <name>Elements of an SDF Model</name> | |||
<t>The SDF language uses six predefined Class Name Keywords for modeling connected | <t>The SDF language uses six predefined Class Name Keywords for modeling connected | |||
Things which are illustrated in <xref target="fig-class-2"/> (limited rendition in | Things, which are illustrated in <xref target="fig-class-2"/> (limited rendition in | |||
the plaintext form of this document, please use typographic forms for | the plaintext form of this document, please use typographic forms for | |||
full information).</t> | full information).</t> | |||
<!-- [rfced] Some author comments are present in the XML. Please confirm that | ||||
no updates related to these comments are outstanding. Note that the | ||||
comments will be deleted prior to publication. | ||||
--> | ||||
<figure anchor="fig-class-2"> | <figure anchor="fig-class-2"> | |||
<name>Main classes used in SDF models</name> | <name>Main Classes Used in SDF Models</name> | |||
<!-- [rfced] The SVG figure contains duplicate ids, which generates invalid HTML | ||||
. We ran a utility that is supposed to create unique ids within the SVG on a cop | ||||
y of the file, but it didn't seem to work. xml2rfc yeilds the following warning | ||||
- please review and let us know if a correction is possible. | ||||
rfc9880.xml(480): Warning: Duplicate attribute id="link_sdfAction_sdfData" found | ||||
after including svg from inline:b'<svg xmlns:xlink="http://www.w3' .... This c | ||||
an cause problems with some browsers. | ||||
--> | ||||
<!-- [rfced] Figure 2: The SVG includes additional information that is not prese | ||||
nt in the text. Is this as expected? For example, we see 0+, 1, and (c) in the | ||||
SVG but not in the text artwork. In addition, sdfEvent and sdfAction appear in | ||||
a different order. Please review. | ||||
--> | ||||
<artset> | <artset> | |||
<artwork type="svg" align="center"><svg xmlns:xlink="http://www.w3.o rg/1999/xlink" xmlns="http://www.w3.org/2000/svg" height="437px" preserveAspectR atio="none" version="1.1" viewBox="0 0 542 437" width="542px"> | <artwork type="svg" align="center"><svg xmlns:xlink="http://www.w3.o rg/1999/xlink" xmlns="http://www.w3.org/2000/svg" height="437px" preserveAspectR atio="none" version="1.1" viewBox="0 0 542 437" width="542px"> | |||
<defs/> | <defs/> | |||
<g> | <g> | |||
<!--class sdfThing--> | <!--class sdfThing--> | |||
<g id="elem_sdfThing"> | <g id="elem_sdfThing"> | |||
<rect fill="white" height="48" id="sdfThing" rx="2.5" ry="2. 5" width="93" x="136.13" y="7" stroke="black" stroke-width="0.5"/> | <rect fill="white" height="48" id="sdfThing" rx="2.5" ry="2. 5" width="93" x="136.13" y="7" stroke="black" stroke-width="0.5"/> | |||
<ellipse cx="151.13" cy="23" fill="white" rx="11" ry="11" st roke="black" stroke-width="1.0"/> | <ellipse cx="151.13" cy="23" fill="white" rx="11" ry="11" st roke="black" stroke-width="1.0"/> | |||
<path d="M153.6031,29.1431 Q153.0221,29.4419 152.3829,29.591 3 Q151.7438,29.7407 151.0382,29.7407 Q148.5314,29.7407 147.2115,28.0889 Q145.891 7,26.437 145.8917,23.3159 Q145.8917,20.1865 147.2115,18.5347 Q148.5314,16.8828 1 51.0382,16.8828 Q151.7438,16.8828 152.3912,17.0322 Q153.0387,17.1816 153.6031,17 .4805 L153.6031,20.2031 Q152.9723,19.6221 152.3788,19.3523 Q151.7853,19.0825 151 .1544,19.0825 Q149.8097,19.0825 149.1249,20.1492 Q148.4401,21.2158 148.4401,23.3 159 Q148.4401,25.4077 149.1249,26.4744 Q149.8097,27.541 151.1544,27.541 Q151.785 3,27.541 152.3788,27.2712 Q152.9723,27.0015 153.6031,26.4204 Z " fill="black"/> | <path d="M153.6031,29.1431 Q153.0221,29.4419 152.3829,29.591 3 Q151.7438,29.7407 151.0382,29.7407 Q148.5314,29.7407 147.2115,28.0889 Q145.891 7,26.437 145.8917,23.3159 Q145.8917,20.1865 147.2115,18.5347 Q148.5314,16.8828 1 51.0382,16.8828 Q151.7438,16.8828 152.3912,17.0322 Q153.0387,17.1816 153.6031,17 .4805 L153.6031,20.2031 Q152.9723,19.6221 152.3788,19.3523 Q151.7853,19.0825 151 .1544,19.0825 Q149.8097,19.0825 149.1249,20.1492 Q148.4401,21.2158 148.4401,23.3 159 Q148.4401,25.4077 149.1249,26.4744 Q149.8097,27.541 151.1544,27.541 Q151.785 3,27.541 152.3788,27.2712 Q152.9723,27.0015 153.6031,26.4204 Z " fill="black"/> | |||
<text fill="black" font-family="sans-serif" font-size="14" x ="165.13" y="28.291">sdfThing</text> | <text fill="black" font-family="sans-serif" font-size="14" x ="165.13" y="28.291">sdfThing</text> | |||
skipping to change at line 655 ¶ | skipping to change at line 672 ¶ | |||
`-------' | `-------' | |||
]]></artwork> | ]]></artwork> | |||
</artset> | </artset> | |||
</figure> | </figure> | |||
<t>The six main Class Name Keywords are discussed below.</t> | <t>The six main Class Name Keywords are discussed below.</t> | |||
<section anchor="sdfobject"> | <section anchor="sdfobject"> | |||
<name>sdfObject</name> | <name>sdfObject</name> | |||
<t>sdfObjects, the items listed in an <tt>sdfObject</tt> definition gr oup, are | <t>sdfObjects, the items listed in an <tt>sdfObject</tt> definition gr oup, are | |||
the main "atom" of reusable semantics for model construction. | the main "atom" of reusable semantics for model construction. | |||
The concept aligns in scope with common definition items from many IoT modeling | The concept aligns in scope with common definition items from many IoT modeling | |||
systems, for example ZigBee Clusters <xref target="ZCL"/>, OMA SpecWorks LwM2M | systems, e.g., ZigBee Clusters <xref target="ZCL"/>, OMA SpecWorks LwM2M | |||
Objects <xref target="OMA"/>, OCF Resource Types <xref target="OCF"/>, and W3C W eb of Things <xref target="WoT"/>.</t> | Objects <xref target="OMA"/>, OCF Resource Types <xref target="OCF"/>, and W3C W eb of Things <xref target="WoT"/>.</t> | |||
<t>An sdfObject definition contains a set of <tt>sdfProperty</tt>, <tt >sdfAction</tt>, and | <t>An sdfObject definition contains a set of <tt>sdfProperty</tt>, <tt >sdfAction</tt>, and | |||
<tt>sdfEvent</tt> definitions that describe the interaction affordances | <tt>sdfEvent</tt> definitions that describe the interaction affordances | |||
associated with some scope of functionality.</t> | associated with some scope of functionality.</t> | |||
<t>For the granularity of definition, sdfObject definitions are meant | <t>For the granularity of definition, sdfObject definitions are meant | |||
to be kept narrow enough in scope to enable broad reuse and | to be kept narrow enough in scope to enable broad reuse and | |||
interoperability. | interoperability. | |||
For example, defining a light bulb using separate sdfObject | For example, defining a light bulb using separate sdfObject | |||
definitions for on/off control, dimming, and color control affordances | definitions for on/off control, dimming, and color control affordances | |||
will enable interoperable functionality to be configured for diverse | will enable interoperable functionality to be configured for diverse | |||
product types. | product types. | |||
An sdfObject definition for a common on/off control may be used to | An sdfObject definition for a common on/off control may be used to | |||
control many different kinds of Things that require on/off control.</t> | control many different kinds of Things that require on/off control.</t> | |||
<t>The presence of one or both of the optional qualities "<tt>minItems </tt>" and | <t>The presence of one or both of the optional qualities "<tt>minItems </tt>" and | |||
"<tt>maxItems</tt>" defines the sdfObject as an array, i.e., all the | "<tt>maxItems</tt>" defines the sdfObject as an array, i.e., all the | |||
affordances defined for the sdfObject exist a number of times, indexed | affordances defined for the sdfObject exist a number of times, indexed | |||
by a number constrained to be between <tt>minItems</tt> and <tt>maxItems</tt>, | by a number constrained to be between <tt>minItems</tt> and <tt>maxItems</tt>, | |||
inclusive, if given. | inclusive, if given. | |||
<!-- [rfced] Please review whether any of the notes in this document | ||||
should be in the <aside> element. It is defined as "a container for | ||||
content that is semantically less important or tangential to the | ||||
content that surrounds it" (https://authors.ietf.org/en/rfcxml-vocabulary#aside) | ||||
. | ||||
--> | ||||
(Note: Setting "<tt>minItems</tt>" to zero and leaving out "<tt>maxItems</tt>" p uts the | (Note: Setting "<tt>minItems</tt>" to zero and leaving out "<tt>maxItems</tt>" p uts the | |||
minimum constraints on that array.)</t> | minimum constraints on that array.)</t> | |||
</section> | </section> | |||
<section anchor="sdfproperty"> | <section anchor="sdfproperty"> | |||
<name>sdfProperty</name> | <name>sdfProperty</name> | |||
<t><tt>sdfProperty</tt> is used to model elements of state within Thin gs modeled | <t><tt>sdfProperty</tt> is used to model elements of state within Thin gs modeled | |||
by the enclosing grouping.</t> | by the enclosing grouping.</t> | |||
<t>A named definition entry in an sdfProperty may be associated with s ome protocol | <t>A named definition entry in an sdfProperty may be associated with s ome protocol | |||
affordance to enable the application to obtain the state variable and, | affordance to enable the application to obtain the state variable and, | |||
optionally, modify the state variable. | optionally, modify the state variable. | |||
Additionally, some protocols provide for in-time reporting of state | Additionally, some protocols provide for in-time reporting of state | |||
changes. | changes. | |||
(These three aspects are described by the qualities <tt>readable</tt>, | (These three aspects are described by the qualities <tt>readable</tt>, | |||
<tt>writable</tt>, and <tt>observable</tt> defined for an sdfProperty.)</t> | <tt>writable</tt>, and <tt>observable</tt> defined for an sdfProperty.)</t> | |||
<t>Definitions in <tt>sdfProperty</tt> groups look like the definition s in | <t>Definitions in <tt>sdfProperty</tt> groups look like the definition s in | |||
<tt>sdfData</tt> groups. | <tt>sdfData</tt> groups. | |||
However, they actually also declare that a Property | However, they actually declare that a Property | |||
with the given qualities potentially is present in the containing sdfObject.</t> | with the given qualities potentially is present in the containing sdfObject.</t> | |||
<t>For definitions in <tt>sdfProperty</tt> and <tt>sdfData</tt>, SDF p rovides qualities | <t>For definitions in <tt>sdfProperty</tt> and <tt>sdfData</tt>, SDF p rovides qualities | |||
that can constrain the structure and values of data allowed in the | that can constrain the structure and values of data allowed in the | |||
interactions modeled by them. | interactions modeled by them. | |||
It also provides qualities that associate semantics to these | It also provides qualities that associate semantics to this | |||
data, such as engineering units and unit scaling information.</t> | data, such as engineering units and unit scaling information.</t> | |||
<t>For the data definition within <tt>sdfProperty</tt> or <tt>sdfData< /tt>, SDF borrows | <t>For the data definition within <tt>sdfProperty</tt> or <tt>sdfData< /tt>, SDF borrows | |||
some vocabulary proposed for the drafts 4 <xref target="JSO4"/> <xref target="JS | some vocabulary proposed for drafts 4 <xref target="I-D.zyp-json-schema"/> <xref | |||
O4V"/> and 7 | target="I-D.fge-json-schema-validation"/> and 7 | |||
<xref target="JSO7"/> <xref target="JSO7V"/> of the json-schema.org "JSON Schema | <xref target="I-D.handrews-json-schema"/> <xref target="I-D.handrews-json-schema | |||
" format | -validation"/> of the json-schema.org "JSON Schema" format | |||
(collectively called JSO here), enhanced by qualities that are | (collectively called JSO here), enhanced by qualities that are | |||
specific to SDF. | specific to SDF. | |||
Details about the JSO-inspired vocabulary are in <xref target="jso-inspired"/>. | Details about the JSO-inspired vocabulary are in <xref target="jso-inspired"/>. | |||
For base SDF, data are constrained to be of | For base SDF, data are constrained to be of | |||
simple types (number, string, Boolean), | simple types (number, string, Boolean), | |||
JSON maps composed of named data, and arrays of these types. | JSON maps composed of named data, and arrays of these types. | |||
Syntax extension points are provided that can be used to provide | Syntax extension points are provided that can be used to provide | |||
richer types in a future extension of this specification (possibly more | richer types in a future extension of this specification (possibly more | |||
of which can be borrowed from json-schema.org).</t> | of which can be borrowed from json-schema.org).</t> | |||
<t>Note that sdfProperty definitions (and sdfData definitions in | <t>Note that sdfProperty definitions (and sdfData definitions in | |||
skipping to change at line 724 ¶ | skipping to change at line 746 ¶ | |||
</section> | </section> | |||
<section anchor="sdfaction-overview"> | <section anchor="sdfaction-overview"> | |||
<name>sdfAction</name> | <name>sdfAction</name> | |||
<t>The <tt>sdfAction</tt> group contains declarations of Actions, whic h | <t>The <tt>sdfAction</tt> group contains declarations of Actions, whic h | |||
model affordances that, when triggered, | model affordances that, when triggered, | |||
have an effect that can go beyond just reading, updating, or observing Thing | have an effect that can go beyond just reading, updating, or observing Thing | |||
state. | state. | |||
Actions often result in some outward physical effect (which, itself, | Actions often result in some outward physical effect (which, itself, | |||
cannot be modeled in SDF). From a programmer's perspective, they | cannot be modeled in SDF). From a programmer's perspective, they | |||
might be considered to be roughly analogous to method calls.</t> | might be considered to be roughly analogous to method calls.</t> | |||
<t>Actions may have data parameters: these are modeled as a single ite | <t>Actions may have data parameters; these are each modeled as a singl | |||
m of input | e item of input | |||
data and output data, each. Where multiple parameters need to be | data and output data. Where multiple parameters need to be | |||
modeled, an <tt>"object"</tt> type can be used to combine these parameters | modeled, an "<tt>object</tt>" type can be used to combine these parameters | |||
into one; for an example see <xref target="example-obj-type"/> in <xref target=" | into one; for an example, see <xref target="example-obj-type"/> in <xref target= | |||
type-object"/>.</t> | "type-object"/>.</t> | |||
<t>Actions may be long-running, that is to say that the effects may no t | <t>Actions may be long-running, that is to say that the effects may no t | |||
take place immediately as would be expected for an update to an | take place immediately as would be expected for an update to an | |||
sdfProperty; the effects may play out over time and emit action | sdfProperty; the effects may play out over time and emit action | |||
results. | results. | |||
Actions may also not always complete and may result in application | Actions may also not always complete and may result in application | |||
errors, such as an item blocking the closing of an automatic door.</t> | errors, such as an item blocking the closing of an automatic door.</t> | |||
<t>One idiom for giving an action initiator status and control about t he | <t>One idiom for giving an action initiator status and control about t he | |||
ongoing action is to provide a URI for an ephemeral "action resource" | ongoing action is to provide a URI for an ephemeral "action resource" | |||
in the sdfAction output data, allowing the action to deliver | in the sdfAction output data, allowing the action to deliver | |||
immediate feedback (including errors that prevent the action from | immediate feedback (including errors that prevent the action from | |||
skipping to change at line 759 ¶ | skipping to change at line 781 ¶ | |||
detailed protocol settings for invoking the action, are expected to be | detailed protocol settings for invoking the action, are expected to be | |||
part of the protocol binding.</t> | part of the protocol binding.</t> | |||
</section> | </section> | |||
<section anchor="sdfevent-overview"> | <section anchor="sdfevent-overview"> | |||
<name>sdfEvent</name> | <name>sdfEvent</name> | |||
<t>The <tt>sdfEvent</tt> group contains declarations of Events, which model | <t>The <tt>sdfEvent</tt> group contains declarations of Events, which model | |||
affordances that inform about "happenings" associated with a Thing | affordances that inform about "happenings" associated with a Thing | |||
modeled by the enclosing sdfObject; these may result in a signal being | modeled by the enclosing sdfObject; these may result in a signal being | |||
stored or emitted as a result.</t> | stored or emitted as a result.</t> | |||
<t>Note that there is a trivial overlap with sdfProperty state changes , | <t>Note that there is a trivial overlap with sdfProperty state changes , | |||
which may also be defined as events but are not generally required to | which may also be defined as Events but are not generally required to | |||
be defined as such. | be defined as such. | |||
However, Events may exhibit certain ordering, consistency, and | However, Events may exhibit certain ordering, consistency, and | |||
reliability requirements that are expected to be supported in various | reliability requirements that are expected to be supported in various | |||
implementations of sdfEvent that do distinguish sdfEvent from | implementations of sdfEvent that do distinguish sdfEvent from | |||
sdfProperty. | sdfProperty. | |||
For instance, while a state change may simply be superseded by another | For instance, while a state change may simply be superseded by another | |||
state change, some events are "precious" and need to be preserved even | state change, some Events are "precious" and need to be preserved even | |||
if further events follow.</t> | if further Events follow.</t> | |||
<t>Base SDF only provides data constraint modeling and | <t>Base SDF only provides data constraint modeling and | |||
semantics for the output data of Event affordances. | semantics for the output data of Event affordances. | |||
Again, data definitions for payloads of protocol messages, and | Again, data definitions for payloads of protocol messages, and | |||
detailed protocol settings for soliciting the event, are expected to be | detailed protocol settings for soliciting the event, are expected to be | |||
part of the protocol binding.</t> | part of the protocol binding.</t> | |||
</section> | </section> | |||
<section anchor="sdfdata"> | <section anchor="sdfdata"> | |||
<name>sdfData</name> | <name>sdfData</name> | |||
<t>Definitions in <tt>sdfData</tt> groups do not themselves specify af fordances. | <t>Definitions in <tt>sdfData</tt> groups do not themselves specify af fordances. | |||
These definitions | These definitions | |||
skipping to change at line 790 ¶ | skipping to change at line 812 ¶ | |||
modeling patterns, data constraints, and semantic anchor concepts to | modeling patterns, data constraints, and semantic anchor concepts to | |||
be factored out for data items that make up sdfProperty items and | be factored out for data items that make up sdfProperty items and | |||
serve as input and output data for sdfAction and sdfEvent items. | serve as input and output data for sdfAction and sdfEvent items. | |||
The data types defined in sdfData definitions only spring to life by being refer enced in | The data types defined in sdfData definitions only spring to life by being refer enced in | |||
one of these contexts (directly or indirectly via some other sdfData | one of these contexts (directly or indirectly via some other sdfData | |||
definitions).</t> | definitions).</t> | |||
<t>It is a common use case for such a data definition to be shared | <t>It is a common use case for such a data definition to be shared | |||
between an sdfProperty item and input or output parameters of an | between an sdfProperty item and input or output parameters of an | |||
sdfAction or output data provided by an sdfEvent. | sdfAction or output data provided by an sdfEvent. | |||
sdfData definitions also enable factoring out extended application | sdfData definitions also enable factoring out extended application | |||
data types such as mode and machine state enumerations to be reused | data types, such as mode and machine state enumerations to be reused | |||
across multiple definitions that have similar basic characteristics | across multiple definitions that have similar basic characteristics | |||
and requirements.</t> | and requirements.</t> | |||
</section> | </section> | |||
<section anchor="sdfthing"> | <section anchor="sdfthing"> | |||
<name>sdfThing</name> | <name>sdfThing</name> | |||
<t>Back at the top level, the <tt>sdfThing</tt> group enables definiti on of models for | <t>Back at the top level, the <tt>sdfThing</tt> group enables definiti on of models for | |||
complex devices that will use one or more sdfObject definitions. | complex devices that will use one or more sdfObject definitions. | |||
Like sdfObject, sdfThing groups allow for the inclusion of interaction | Like sdfObject, sdfThing groups allow for the inclusion of interaction | |||
affordances, sdfData, as well as "<tt>minItems</tt>" and "<tt>maxItems</tt>" qua lities. | affordances, sdfData, as well as "<tt>minItems</tt>" and "<tt>maxItems</tt>" qua lities. | |||
Therefore, they can be seen as a superset of sdfObject groups, additionally | Therefore, they can be seen as a superset of sdfObject groups, additionally | |||
allowing for composition.</t> | allowing for composition.</t> | |||
<t>As a result, an sdfThing directly or indirectly contains a set of s dfProperty, sdfAction, and | <t>As a result, an sdfThing directly or indirectly contains a set of s dfProperty, sdfAction, and | |||
sdfEvent definitions that describe the interaction affordances | sdfEvent definitions that describe the interaction affordances | |||
associated with some scope of functionality.</t> | associated with some scope of functionality.</t> | |||
<t>A definition in an sdfThing group can refine the metadata of the de finitions it | <t>A definition in an sdfThing group can refine the metadata of the de finitions it | |||
is composed of: other definitions in sdfThing groups or definitions in sdfObject groups.</t> | is composed of: other definitions in sdfThing groups or definitions in sdfObject groups.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="member-names"> | <section anchor="member-names"> | |||
<name>Member names: Given Names and Quality Names</name> | <name>Member Names: Given Names and Quality Names</name> | |||
<t>SDF documents are JSON maps that mostly employ JSON maps as | <t>SDF documents are JSON maps that mostly employ JSON maps as | |||
member values, which in turn mostly employ JSON maps as their | member values, which in turn mostly employ JSON maps as their | |||
member values, and so on. | member values, and so on. | |||
This nested structure of JSON maps creates a tree, where the edges | This nested structure of JSON maps creates a tree, where the edges | |||
are the member names (map keys) used in these JSON maps. | are the member names (map keys) used in these JSON maps. | |||
(In certain cases, where member names are not needed, JSON arrays may | (In certain cases, where member names are not needed, JSON arrays may | |||
be interspersed in this tree.)</t> | be interspersed in this tree.)</t> | |||
<section anchor="given-names-and-quality-names"> | <section anchor="given-names-and-quality-names"> | |||
<name>Given Names and Quality Names</name> | <name>Given Names and Quality Names</name> | |||
<t>For any particular JSON map in an SDF document, the set of member | <t>For any particular JSON map in an SDF document, the set of member | |||
names that are used is either of:</t> | names that are used is either:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<t>A set of "<em>Quality Names</em>", where the entries in the map are | <t>A set of "<em>Quality Names</em>", where the entries in the map are | |||
Qualities. Quality Names are defined by the present specification | Qualities. Quality Names are defined by the present specification | |||
and its extensions, together with specific semantics to be | and its extensions, together with specific semantics to be | |||
associated with the member value given with a certain Quality Name.</t> | associated with the member value given with a certain Quality Name.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>A set of "<em>Given Names</em>", where the entries in the map a re separate | <t>A set of "<em>Given Names</em>", where the entries in the map a re separate | |||
entities (definitions, declarations, etc.) that each have names that | entities (definitions, declarations, etc.) that each have names that | |||
skipping to change at line 852 ¶ | skipping to change at line 874 ¶ | |||
In the CDDL grammar given in <xref target="syntax"/>, JSON maps with member name s that are | In the CDDL grammar given in <xref target="syntax"/>, JSON maps with member name s that are | |||
Given Names are defined using the CDDL generic rule reference <tt>named<membe rvalues></tt>, | Given Names are defined using the CDDL generic rule reference <tt>named<membe rvalues></tt>, | |||
where <tt>membervalues</tt> is in turn the structure of the member values of the | where <tt>membervalues</tt> is in turn the structure of the member values of the | |||
JSON map, i.e., the value of the member named by the Given Name. | JSON map, i.e., the value of the member named by the Given Name. | |||
As quality-named maps and given-named maps roughly alternate in | As quality-named maps and given-named maps roughly alternate in | |||
a path down the tree, <tt>membervalues</tt> is usually a map built from | a path down the tree, <tt>membervalues</tt> is usually a map built from | |||
Quality Names as keys.</t> | Quality Names as keys.</t> | |||
</section> | </section> | |||
<section anchor="hierarchical-names"> | <section anchor="hierarchical-names"> | |||
<name>Hierarchical Names</name> | <name>Hierarchical Names</name> | |||
<!-- [rfced] May we rephrase "itself" to "which is" for improved readability? | ||||
Original: | ||||
From the outside of a specification, Given Names are usually used as | ||||
part of a hierarchical name that looks like a JSON pointer [RFC6901], | ||||
itself generally rooted in (used as the fragment identifier in) an | ||||
outer namespace that looks like an https:// URL (see Section 4). | ||||
Perhaps: | ||||
From the outside of a specification, Given Names are usually used as | ||||
part of a hierarchical name that looks like a JSON pointer [RFC6901], | ||||
which is generally rooted in (used as the fragment identifier in) an | ||||
outer namespace that looks like an https:// URL (see Section 4). | ||||
--> | ||||
<t>From the outside of a specification, Given Names are usually used a s | <t>From the outside of a specification, Given Names are usually used a s | |||
part of a hierarchical name that looks like a JSON pointer <xref target="RFC6901 "/>, | part of a hierarchical name that looks like a JSON pointer <xref target="RFC6901 "/>, | |||
itself generally rooted in (used as the fragment identifier in) an | itself generally rooted in (used as the fragment identifier in) an | |||
outer namespace that looks like an <tt>https://</tt> URL (see <xref target="name s-and-namespaces"/>).</t> | outer namespace that looks like an <tt>https://</tt> URL (see <xref target="name s-and-namespaces"/>).</t> | |||
<t>As Quality Names and Given Names roughly alternate in a path into t he | <t>As Quality Names and Given Names roughly alternate in a path into t he | |||
model, the JSON pointer part of the hierarchical name also alternates | model, the JSON pointer part of the hierarchical name also alternates | |||
between Quality Names and Given Names.</t> | between Quality Names and Given Names.</t> | |||
<t>Note that the actual Given Names may need to be encoded when specif ied | <t>Note that the actual Given Names may need to be encoded when specif ied | |||
via the JSON pointer fragment identifier syntax, and that there are | via the JSON pointer fragment identifier syntax. There are | |||
two layers of such encoding: tilde encoding of <tt>~</tt> and <tt>/</tt> as per | two layers of such encoding: tilde encoding of <tt>~</tt> and <tt>/</tt> as per | |||
<xref section="3" sectionFormat="of" target="RFC6901"/>, and then percent encodi ng of the | <xref section="3" sectionFormat="of" target="RFC6901"/>, as well as percent enco ding of the | |||
tilde-encoded name into a valid URI fragment as per <xref section="6" sectionFor mat="of" target="RFC6901"/>. | tilde-encoded name into a valid URI fragment as per <xref section="6" sectionFor mat="of" target="RFC6901"/>. | |||
For example, when a model is using the Given Name</t> | For example, when a model is using the Given Name</t> | |||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
warning/danger alarm | warning/danger alarm | |||
]]></artwork> | ]]></artwork> | |||
<t>(with an embedded slash and a space) for an | <t>(with an embedded slash and a space) for an | |||
sdfObject, that sdfObject may need to be referenced as</t> | sdfObject, that sdfObject may need to be referenced as</t> | |||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
#/sdfObject/warning~1danger%20alarm | #/sdfObject/warning~1danger%20alarm | |||
]]></artwork> | ]]></artwork> | |||
<t>To sidestep potential interoperability problems, it is probably wis e | <t>To sidestep potential interoperability problems, it is probably wis e | |||
to avoid characters in Given Names that need such encoding (Quality | to avoid characters in Given Names that need such encoding (Quality | |||
Names are already defined in such a way that they never do).</t> | Names are already defined in such a way that they never do).</t> | |||
</section> | </section> | |||
<section anchor="gnqn"> | <section anchor="gnqn"> | |||
<name>Extensibility of Given Names and Quality Names</name> | <name>Extensibility of Given Names and Quality Names</name> | |||
<t>In SDF, both Quality Names and Given Names are <em>extension points </em>. | <t>In SDF, both Quality Names and Given Names are <em>extension points </em>. | |||
This is more obvious for Quality Names: Extending SDF is mostly done | This is more obvious for Quality Names. Extending SDF is mostly done | |||
by defining additional qualities. To enable non-conflicting third | by defining additional qualities. To enable non-conflicting third | |||
party extensions to SDF, qualified names (names with an embedded | party extensions to SDF, qualified names (names with an embedded | |||
colon) can be used as Quality Names.</t> | colon) can be used as Quality Names.</t> | |||
<t>A nonqualified Quality Name is composed of ASCII letters, digits, a nd | <t>A nonqualified Quality Name is composed of ASCII letters, digits, a nd | |||
<tt>$</tt> signs, starting with a lower case letter or a <tt>$</tt> sign (i.e., | <tt>$</tt> signs, starting with a lower case letter or a <tt>$</tt> sign (i.e., | |||
using a pattern of "<tt>[a-z$][A-Za-z$0-9]*</tt>"). | using a pattern of "_<tt>[a-z$][A-Za-z$0-9]*</tt>"). | |||
Names with <tt>$</tt> signs are intended to be used for functions separate | Names with <tt>$</tt> signs are intended to be used for functions separate | |||
from most other names; for instance, in this specification <tt>$comment</tt> | from most other names; for instance, <tt>$comment</tt> | |||
is used for the comment quality (the presence or absence of a | is used for the comment quality in this specification (the presence or absence o | |||
f a | ||||
<tt>$comment</tt> quality does not change the meaning of the SDF model). | <tt>$comment</tt> quality does not change the meaning of the SDF model). | |||
Names that are composed of multiple English words can use the | Names that are composed of multiple English words can use the | |||
"lowerCamelCase" convention <xref target="CamelCase"/> for indicating the word | "lowerCamelCase" convention <xref target="CamelCase"/> for indicating the word | |||
boundaries; no other use is intended for upper case letters in quality | boundaries; no other use is intended for upper case letters in quality | |||
names.</t> | names.</t> | |||
<t>A qualified Quality Name is composed of a Quality Name Prefix, a <t t>:</tt> | <t>A qualified Quality Name is composed of a Quality Name Prefix, a <t t>:</tt> | |||
(colon) character, and a nonqualified Quality Name. | (colon) character, and a nonqualified Quality Name. | |||
Quality Name Prefixes are registered in the "Quality Name Prefixes" | Quality Name Prefixes are registered in the "Quality Name Prefixes" | |||
registry in the "Semantic Definition Format (SDF)" registry group (<xref target= "qnp"/>). | registry in the "Semantic Definition Format (SDF)" registry group (<xref target= "qnp"/>). | |||
They are | They are | |||
composed of lower case ASCII letters and digits, starting with a lower | composed of lower case ASCII letters and digits, starting with a lowercase ASCII | |||
case ASCII letter (i.e., using a pattern of "<tt>[a-z][a-z0-9]*</tt>").</t> | letter (i.e., using a pattern of "_<tt>[a-z][a-z0-9]*</tt>").</t> | |||
<t>Given Names are not restricted by the formal SDF syntax. | <t>Given Names are not restricted by the formal SDF syntax. | |||
To enable non-surprising name translations in tools, combinations of | To enable non-surprising name translations in tools, combinations of | |||
ASCII alphanumeric characters and <tt>-</tt> (ASCII hyphen/minus) are preferred, | ASCII alphanumeric characters and <tt>-</tt> (ASCII hyphen/minus) are preferred, | |||
typically employing kebab-case for names constructed out of multiple | typically employing kebab-case for names constructed out of multiple | |||
words <xref target="KebabCase"/>. ASCII hyphen/minus can then unambiguously be | words <xref target="KebabCase"/>. ASCII hyphen/minus can then unambiguously be | |||
translated to an ASCII <tt>_</tt> underscore character and back depending on | translated to an ASCII <tt>_</tt> underscore character and back depending on | |||
the programming environment. | the programming environment. | |||
Some styles also allow a dot ("<tt>.</tt>") in given names. | Some styles also allow a dot ("<tt>.</tt>") in given names. | |||
Given Names are often sufficiently self-explanatory that they can be | Given Names are often sufficiently self-explanatory that they can be | |||
used in place of the <tt>label</tt> quality if that is not given. | used in place of the <tt>label</tt> quality if that is not given. | |||
skipping to change at line 929 ¶ | skipping to change at line 964 ¶ | |||
<t>Further, to enable Given Names to have a more powerful role in buil ding | <t>Further, to enable Given Names to have a more powerful role in buil ding | |||
global hierarchical names, an extension is planned that makes use of | global hierarchical names, an extension is planned that makes use of | |||
qualified names for Given Names. | qualified names for Given Names. | |||
So, until that extension is defined, Given Names with one or more | So, until that extension is defined, Given Names with one or more | |||
embedded colons are reserved and <bcp14>MUST NOT</bcp14> be used in an SDF docum ent.</t> | embedded colons are reserved and <bcp14>MUST NOT</bcp14> be used in an SDF docum ent.</t> | |||
<t>All names in SDF are case-sensitive.</t> | <t>All names in SDF are case-sensitive.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sdf-structure"> | <section anchor="sdf-structure"> | |||
<name>SDF structure</name> | <name>SDF Structure</name> | |||
<t>SDF definitions are contained in SDF documents, together with data | <t>SDF definitions are contained in SDF documents together with data | |||
about the SDF document itself (information block). | about the SDF document itself (information block). | |||
Definitions and declarations from additional SDF documents can be | Definitions and declarations from additional SDF documents can be | |||
referenced; together with the definitions and declarations in the | referenced; together with the definitions and declarations in the | |||
referencing SDF document they build the SDF model expressed by that | referencing SDF document, they build the SDF model expressed by that | |||
SDF document.</t> | SDF document.</t> | |||
<t>Each SDF document is represented as a single JSON map. | <t>Each SDF document is represented as a single JSON map. | |||
This map can be thought of as having three blocks: the information | This map can be thought of as having three blocks: the information | |||
block, the namespaces block, and the definitions block. | block, the namespaces block, and the definitions block. | |||
These blocks contain zero or more JSON name/value pairs, the names of | These blocks contain zero or more JSON name/value pairs, the names of | |||
which are quality names and the values of which mostly are (nested) | which are quality names and the values of which mostly are (nested) | |||
maps (the exception defined in SDF base is the defaultNamespace | maps (the exception defined in SDF base is the defaultNamespace | |||
quality, the value of which is a text string). | quality, the value of which is a text string). | |||
An empty nested map of this kind is equivalent to not having the | An empty nested map of this kind is equivalent to not having the | |||
quality included at all.</t> | quality included at all.</t> | |||
<section anchor="information-block"> | <section anchor="information-block"> | |||
<name>Information block</name> | <name>Information Block</name> | |||
<t>The information block contains generic metadata for the SDF document | <t>The information block contains generic metadata for the SDF document | |||
itself and all included definitions. | itself and all included definitions. | |||
To enable tool integration, the information block is optional in the grammar | To enable tool integration, the information block is optional in the grammar | |||
of SDF; most processes for working with SDF documents will have policies | of SDF; most processes for working with SDF documents will have policies | |||
that only SDF documents with an info block can be processed. | that only SDF documents with an info block can be processed. | |||
It is therefore <bcp14>RECOMMENDED</bcp14> that SDF validator tools emit a warni ng | It is therefore <bcp14>RECOMMENDED</bcp14> that SDF validator tools emit a warni ng | |||
when no information block is found.</t> | when no information block is found.</t> | |||
<!-- [rfced] May we rephrase the text below as follows to improve readability | ||||
and specify "it" in the second sentence? | ||||
Original: | ||||
The keyword (map key) that defines an information block is "info". | ||||
Its value is a JSON map in turn, with a set of entries that represent | ||||
qualities that apply to the included definition. | ||||
Perhaps: | ||||
The keyword (map key) that defines an information block as "info". | ||||
In turn, the keyword's value is a JSON map with a set of entries that represe | ||||
nt | ||||
qualities that apply to the included definition. | ||||
--> | ||||
<t>The keyword (map key) that defines an information block is "info". It s | <t>The keyword (map key) that defines an information block is "info". It s | |||
value is a JSON map in turn, with a set of entries that represent qualities that apply to the included definition.</t> | value is a JSON map in turn, with a set of entries that represent qualities that apply to the included definition.</t> | |||
<t>Qualities of this map are shown in <xref target="infoblockqual"/>. | <t>Qualities of this map are shown in <xref target="infoblockqual"/>. | |||
None of these qualities are required or have default values that are | None of these qualities are required or have default values that are | |||
assumed if the quality is absent.</t> | assumed if the quality is absent.</t> | |||
<table anchor="infoblockqual"> | <table anchor="infoblockqual"> | |||
<name>Qualities of the Information Block</name> | <name>Qualities of the Information Block</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Quality</th> | <th align="left">Quality</th> | |||
skipping to change at line 1013 ¶ | skipping to change at line 1061 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">$comment</td> | <td align="left">$comment</td> | |||
<td align="left">string</td> | <td align="left">string</td> | |||
<td align="left">Source code comments only, no semantics</td> | <td align="left">Source code comments only, no semantics</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>The version quality is used to indicate version information about the | <t>The version quality is used to indicate version information about the | |||
set of definitions in the SDF document. | set of definitions in the SDF document. | |||
The version is <bcp14>RECOMMENDED</bcp14> to be lexicographically increasing ove | The version is <bcp14>RECOMMENDED</bcp14> to be lexicographically increasing ove | |||
r the life of a model: a newer model always has a version string that string-com | r the life of a model; a newer model always has a version string that string-com | |||
pares higher than all previous versions. | pares higher than all previous versions. | |||
This is easily achieved by following the convention to start the version with an | ||||
<xref target="RFC3339"/> <tt>date-time</tt> or, if new versions are generated l | This is easily achieved by following the convention to start the version with a | |||
ess frequently than once a day, just the <tt>full-date</tt> (i.e., YYYY-MM-DD); | <tt>date-time</tt> as defined in <xref target="RFC3339"/> or, if new versions ar | |||
in many cases, that will be all that is needed (see <xref target="example1"/> fo | e generated less frequently than once a day, just the <tt>full-date</tt> (i.e., | |||
r an example). | YYYY-MM-DD); in many cases, that will be all that is needed (see <xref target="e | |||
xample1"/> for an example). | ||||
<!-- [rfced] We suggest rephrasing the following sentence (i.e., adjusting the | ||||
placement of "using"). Does the following suggestion retain the | ||||
sentence's original meaning? | ||||
Original: | ||||
This specification does not | ||||
give a strict definition for the format of the version string but | ||||
each using system or organization should define internal structure | ||||
and semantics to the level needed for their use. | ||||
Perhaps: | ||||
This specification does not give a strict definition for the format | ||||
of the version string, but each system or organization using the version | ||||
string should define internal structure and semantics to the level needed for | ||||
their use. | ||||
--> | ||||
This specification does not give a strict definition for the format of the versi on string but each using system or organization should define internal structure and semantics to the level needed for their use. | This specification does not give a strict definition for the format of the versi on string but each using system or organization should define internal structure and semantics to the level needed for their use. | |||
If no further details are provided, a <tt>date-time</tt> or <tt>full-date</tt> i n | If no further details are provided, a <tt>date-time</tt> or <tt>full-date</tt> i n | |||
this field can be assumed to indicate the latest update time of the | this field can be assumed to indicate the latest update time of the | |||
definitions in the SDF document.</t> | definitions in the SDF document.</t> | |||
<t>The modified quality can be used with a value using <xref target="RFC | <t>The modified quality can be used with a value using <tt>date-time</tt | |||
3339"/> <tt>date-time</tt> (with <tt>Z</tt> for time-zone) or <tt>full-date</tt> | > as defined in <xref target="RFC3339"/> (with <tt>Z</tt> for time-zone) or <tt> | |||
format to express time of the latest revision of the definitions.</t> | full-date</tt> format to express time of the latest revision of the definitions. | |||
<t>The license string is preferably either a URI that points to a web pa | </t> | |||
ge with an unambiguous definition of the license, or an <xref target="SPDX"/> li | <t>The license string is preferably either a URI that points to a web pa | |||
cense identifier. | ge with an unambiguous definition of the license or an <xref target="SPDX"/> lic | |||
ense identifier. | ||||
(As an example, for models to be handled by the One Data Model liaison | (As an example, for models to be handled by the One Data Model liaison | |||
group, this license identifier will typically be "BSD-3-Clause".)</t> | group, this license identifier will typically be "BSD-3-Clause".)</t> | |||
<t>The <tt>features</tt> quality can be used to list names of critical ( i.e., cannot be safely ignored) SDF extension features that need to be understoo d for the definitions to be properly processed. | <t>The <tt>features</tt> quality can be used to list names of critical ( i.e., cannot be safely ignored) SDF extension features that need to be understoo d for the definitions to be properly processed. | |||
Extension feature names will be specified in extension documents. | Extension feature names will be specified in extension documents. | |||
They can either be registered (see <xref target="fn"/> for specifics, which make sure | They can either be registered (see <xref target="fn"/> for specifics, which make sure | |||
that a registered feature name does not contain a colon) or be a URI | that a registered feature name does not contain a colon) or be a URI | |||
(which always contain a colon). | (which always contain a colon). | |||
Note that SDF processors are not expected to, and normally <bcp14>SHOULD NOT</bc p14>, | Note that SDF processors are not expected to, and normally <bcp14>SHOULD NOT</bc p14>, | |||
dereference URIs used as feature names; any representation retrievable | dereference URIs used as feature names; any representation retrievable | |||
under such a URI could be useful to humans, though. | under such a URI could be useful to humans, though. | |||
(See <xref target="I-D.bormann-t2trg-deref-id"/> for a more extensive discussion of dereferenceable | (See <xref target="I-D.bormann-t2trg-deref-id"/> for a more extensive discussion of dereferenceable | |||
identifiers).</t> | identifiers).</t> | |||
</section> | </section> | |||
<section anchor="namespaces-block"> | <section anchor="namespaces-block"> | |||
<name>Namespaces block</name> | <name>Namespaces Block</name> | |||
<t>The namespaces block contains the <tt>namespace</tt> map and the | <t>The namespaces block contains the <tt>namespace</tt> map and the | |||
<tt>defaultNamespace</tt> setting; none of these qualities are required or | <tt>defaultNamespace</tt> setting; none of these qualities are required or | |||
have default values that are assumed if the quality is absent.</t> | have default values that are assumed if the quality is absent.</t> | |||
<t>The namespace map is a map from short names for URIs to the namespace URIs | <t>The namespace map is a map from short names for URIs to the namespace URIs | |||
themselves.</t> | themselves.</t> | |||
<t>The defaultNamespace setting selects one of the entries in the | <t>The defaultNamespace setting selects one of the entries in the | |||
namespace map by giving its short name. The associated URI (value of | namespace map by giving its short name. The associated URI (value of | |||
this entry) becomes the default namespace for the SDF document.</t> | this entry) becomes the default namespace for the SDF document.</t> | |||
<table anchor="nssec"> | <table anchor="nssec"> | |||
<name>Namespaces Block</name> | <name>Namespaces Block</name> | |||
skipping to change at line 1069 ¶ | skipping to change at line 1135 ¶ | |||
<tr> | <tr> | |||
<td align="left">defaultNamespace</td> | <td align="left">defaultNamespace</td> | |||
<td align="left">string</td> | <td align="left">string</td> | |||
<td align="left">Identifies one of the prefixes in the namespace m ap to be used as a default in resolving identifiers</td> | <td align="left">Identifies one of the prefixes in the namespace m ap to be used as a default in resolving identifiers</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>The following example declares a set of namespaces and defines <tt>ca p</tt> | <t>The following example declares a set of namespaces and defines <tt>ca p</tt> | |||
as the default namespace. | as the default namespace. | |||
By convention, the values in the namespace map contain full URIs | By convention, the values in the namespace map contain full URIs | |||
without a fragment identifier, and the fragment identifier is then | without a fragment identifier and the fragment identifier is then | |||
added, if needed, where the namespace entry is used.</t> | added, if needed, where the namespace entry is used.</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"namespace": { | "namespace": { | |||
"cap": "https://example.com/capability/cap", | "cap": "https://example.com/capability/cap", | |||
"zcl": "https://zcl.example.com/sdf" | "zcl": "https://zcl.example.com/sdf" | |||
}, | }, | |||
"defaultNamespace": "cap" | "defaultNamespace": "cap" | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>Multiple SDF documents can contribute to the same namespace by using | <t>Multiple SDF documents can contribute to the same namespace by using | |||
the same namespace URI for the default namespace across the documents.</t> | the same namespace URI for the default namespace across the documents.</t> | |||
<t>If no defaultNamespace setting is given, the SDF document does not | <t>If no defaultNamespace setting is given, the SDF document does not | |||
contribute to a global namespace (all definitions remain local to the | contribute to a global namespace (all definitions remain local to the | |||
model and are not accessible for re-use by other models). | model and are not accessible for re-use by other models). | |||
As the defaultNamespace is set by supplying a | As the defaultNamespace is set by supplying a | |||
namespace short name, its presence requires a namespace map that contains a | namespace short name, its presence requires a namespace map that contains a | |||
mapping for that namespace short name.</t> | mapping for that namespace short name.</t> | |||
<t>If no namespace map is given, no short names for namespace URIs are | <t>If no namespace map is given, no short names for namespace URIs are | |||
set up, and no defaultNamespace can be given.</t> | set up and no defaultNamespace can be given.</t> | |||
</section> | </section> | |||
<section anchor="definitions-block"> | <section anchor="definitions-block"> | |||
<name>Definitions block</name> | <name>Definitions Block</name> | |||
<t>The Definitions block contains one or more groups, each identified by | <t>The Definitions block contains one or more groups, each identified by | |||
a Class Name Keyword such as <tt>sdfObject</tt> or <tt>sdfProperty</tt>. | a Class Name Keyword such as <tt>sdfObject</tt> or <tt>sdfProperty</tt>. | |||
There can only be one group per keyword at this level; putting all the | There can only be one group per keyword at this level; putting all the | |||
individual definitions in the group under that keyword is just a | individual definitions in the group under that keyword is just a | |||
shortcut for identifying the class name keyword that applies to each | shortcut for identifying the class name keyword that applies to each | |||
of them, without repeating it for each definition.</t> | of them without repeating it for each definition.</t> | |||
<t>The value of each group is a JSON map, the keys of which serve for na ming the individual definitions in this group, and the corresponding values prov ide a set of qualities (name-value pairs) for the individual definition. | <t>The value of each group is a JSON map, the keys of which serve for na ming the individual definitions in this group, and the corresponding values prov ide a set of qualities (name-value pairs) for the individual definition. | |||
(In short, these map entries are also termed "named sets of qualities".)</t> | (In short, these map entries are also termed "named sets of qualities".)</t> | |||
<t>Each group may contain zero or more definitions. | <t>Each group may contain zero or more definitions. | |||
Each identifier defined creates a new type and term in the target namespace. | Each identifier defined creates a new type and term in the target namespace. | |||
Declarations have a scope of the definition block they are | Declarations have a scope of the definition block they are | |||
directly contained in.</t> | directly contained in.</t> | |||
<t>A definition may in turn contain other definitions. Each definition i s a named set of qualities, i.e., it consists of the newly defined identifier an d a set of key-value pairs that represent the defined qualities and contained de finitions.</t> | <t>In turn, a definition may contain other definitions. Each definition is a named set of qualities, i.e., it consists of the newly defined identifier a nd a set of key-value pairs that represent the defined qualities and contained d efinitions.</t> | |||
<t>An example for an sdfObject definition is given in <xref target="exob ject"/>:</t> | <t>An example for an sdfObject definition is given in <xref target="exob ject"/>:</t> | |||
<figure anchor="exobject"> | <figure anchor="exobject"> | |||
<name>Example sdfObject definition</name> | <name>Example sdfObject Definition</name> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"sdfObject": { | "sdfObject": { | |||
"foo": { | "foo": { | |||
"sdfProperty": { | "sdfProperty": { | |||
"bar": { | "bar": { | |||
"type": "boolean" | "type": "boolean" | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>This example defines an sdfObject "foo" that is defined in the defaul t namespace (full address: <tt>#/sdfObject/foo</tt>), containing a property that can be addressed as | <t>This example defines an sdfObject "foo" that is defined in the defaul t namespace (full address: <tt>#/sdfObject/foo</tt>), containing a property that can be addressed as | |||
<tt>#/sdfObject/foo/sdfProperty/bar</tt>, with data of type boolean.</t> | <tt>#/sdfObject/foo/sdfProperty/bar</tt>, with data of type boolean.</t> | |||
<t>Often, definitions are also declarations: the definition of the | <t>Often, definitions are also declarations. The definition of the | |||
entry "bar" in the property "foo" means that data corresponding to the | entry "bar" in the property "foo" means that data corresponding to the | |||
"foo" property in a property interaction offered by Thing can have zero or | "foo" property in a property interaction offered by Thing can have zero or | |||
one components modeled by "bar". | one components modeled by "bar". | |||
Entries within <tt>sdfProperty</tt>, <tt>sdfAction</tt>, and <tt>sdfEvent</tt> t hat are in | Entries within <tt>sdfProperty</tt>, <tt>sdfAction</tt>, and <tt>sdfEvent</tt> t hat are in | |||
turn within <tt>sdfObject</tt> or <tt>sdfThing</tt> entries, are also declaratio ns; | turn within <tt>sdfObject</tt> or <tt>sdfThing</tt> entries, are also declaratio ns; | |||
entries within <tt>sdfData</tt> are not. | entries within <tt>sdfData</tt> are not. | |||
Similarly, <tt>sdfObject</tt> or <tt>sdfThing</tt> entries within an sdfThing | Similarly, <tt>sdfObject</tt> or <tt>sdfThing</tt> entries within an sdfThing | |||
definition specify that the | definition specify that the | |||
interactions offered by a Thing modeled by this sdfThing include the | interactions offered by a Thing modeled by this sdfThing include the | |||
interactions modeled by the nested <tt>sdfObject</tt> or <tt>sdfThing</tt>.</t> | interactions modeled by the nested <tt>sdfObject</tt> or <tt>sdfThing</tt>.</t> | |||
</section> | </section> | |||
<section anchor="top-level-affordances-and-sdfdata"> | <section anchor="top-level-affordances-and-sdfdata"> | |||
<name>Top-level Affordances and sdfData</name> | <name>Top-Level Affordances and sdfData</name> | |||
<t>Besides their placement within an sdfObject or sdfThing, affordances | <t>Besides their placement within an sdfObject or sdfThing, affordances | |||
(i.e., <tt>sdfProperty</tt>, <tt>sdfAction</tt>, and <tt>sdfEvent</tt>) as well as <tt>sdfData</tt> can | (i.e., <tt>sdfProperty</tt>, <tt>sdfAction</tt>, and <tt>sdfEvent</tt>) as well as <tt>sdfData</tt> can | |||
also be placed at the top level of an SDF document. | also be placed at the top level of an SDF document. | |||
Since they are not associated with an sdfObject or sdfThing, these kinds of | Since they are not associated with an sdfObject or sdfThing, these kinds of | |||
definitions are intended to be re-used via the <tt>sdfRef</tt> mechanism | definitions are intended to be reused via the <tt>sdfRef</tt> mechanism | |||
(see <xref target="sdfref"/>).</t> | (see <xref target="sdfref"/>).</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="names-and-namespaces"> | <section anchor="names-and-namespaces"> | |||
<name>Names and namespaces</name> | <name>Names and Namespaces</name> | |||
<t>SDF documents may contribute to a global namespace, and may | <t>SDF documents may contribute to a global namespace and may | |||
reference elements from that global namespace. | reference elements from that global namespace. | |||
(An SDF document that does not set a defaultNamespace does not | (An SDF document that does not set a defaultNamespace does not | |||
contribute to a global namespace.)</t> | contribute to a global namespace.)</t> | |||
<section anchor="names-structure"> | <section anchor="names-structure"> | |||
<name>Structure</name> | <name>Structure</name> | |||
<t>Global names look exactly like <tt>https://</tt> URIs with attached f ragment identifiers.</t> | <t>Global names look exactly like <tt>https://</tt> URIs with attached f ragment identifiers.</t> | |||
<t>There is no intention to require that these URIs can be dereferenced. | <t>There is no intention to require that these URIs can be dereferenced. | |||
(However, as future extensions of SDF might find a use for dereferencing | (However, as future extensions of SDF might find a use for dereferencing | |||
global names, the URI should be chosen in such a way that this may | global names, the URI should be chosen in such a way that this may | |||
become possible in the future. | become possible in the future. | |||
See also <xref target="I-D.bormann-t2trg-deref-id"/> for a discussion of derefer enceable identifiers.)</t> | See also <xref target="I-D.bormann-t2trg-deref-id"/> for a discussion of derefer enceable identifiers.)</t> | |||
<t>The absolute-URI of a global name should be a URI as per Section <xre f target="RFC3986" section="3" sectionFormat="bare"/> of RFC 3986 <xref target=" STD66"/>, with a scheme of "https" and a path (<tt>hier-part</tt> in <xref targe t="STD66"/>). | <t>The absolute-URI of a global name should be a URI as per Section <xre f target="RFC3986" section="3" sectionFormat="bare"/> of RFC 3986 <xref target=" STD66"/> with a scheme of "https" and a path (<tt>hier-part</tt> in <xref target ="STD66"/>). | |||
For base SDF, the query part should | For base SDF, the query part should | |||
not be used (it might be used in extensions).</t> | not be used (it might be used in extensions).</t> | |||
<t>The fragment identifier is constructed as per <xref section="6" secti onFormat="of" target="RFC6901"/>.</t> | <t>The fragment identifier is constructed as per <xref section="6" secti onFormat="of" target="RFC6901"/>.</t> | |||
</section> | </section> | |||
<section anchor="contributing-global-names"> | <section anchor="contributing-global-names"> | |||
<name>Contributing global names</name> | <name>Contributing Global Names</name> | |||
<t>The fragment identifier part of a global name defined in an SDF | <t>The fragment identifier part of a global name defined in an SDF | |||
document is constructed from a JSON pointer that selects the | document is constructed from a JSON pointer that selects the | |||
element defined for this name in the SDF document. | element defined for this name in the SDF document. | |||
The absolute-URI part is a copy of the default namespace.</t> | The absolute-URI part is a copy of the default namespace.</t> | |||
<t>As a result, the | <t>As a result, the | |||
default namespace is always the target namespace for a name for which | default namespace is always the target namespace for a name for which | |||
a definition is contributed. | a definition is contributed. | |||
In order to emphasize that name definitions are contributed to the | In order to emphasize that name definitions are contributed to the | |||
default namespace, this namespace is also termed the "target namespace" of | default namespace, this namespace is also termed the "target namespace" of | |||
the SDF document.</t> | the SDF document.</t> | |||
skipping to change at line 1193 ¶ | skipping to change at line 1259 ¶ | |||
<t>https://example.com/capability/cap#/sdfObject/Switch/sdfAction/on </t> | <t>https://example.com/capability/cap#/sdfObject/Switch/sdfAction/on </t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>https://example.com/capability/cap#/sdfObject/Switch/sdfAction/of f</t> | <t>https://example.com/capability/cap#/sdfObject/Switch/sdfAction/of f</t> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t>Note the <tt>#</tt>, which separates the absolute-URI part (Section < xref target="RFC3986" section="4.3" sectionFormat="bare"/> of RFC 3986 <xref tar get="STD66"/>) from the fragment identifier part (including the <tt>#</tt>, a | <t>Note the <tt>#</tt>, which separates the absolute-URI part (Section < xref target="RFC3986" section="4.3" sectionFormat="bare"/> of RFC 3986 <xref tar get="STD66"/>) from the fragment identifier part (including the <tt>#</tt>, a | |||
JSON Pointer as in <xref section="6" sectionFormat="of" target="RFC6901"/>).</t> | JSON Pointer as in <xref section="6" sectionFormat="of" target="RFC6901"/>).</t> | |||
</section> | </section> | |||
<section anchor="ref-global"> | <section anchor="ref-global"> | |||
<name>Referencing global names</name> | <name>Referencing Global Names</name> | |||
<t>A name reference takes the form of the production <tt>curie</tt> in S ection 3 | <t>A name reference takes the form of the production <tt>curie</tt> in S ection 3 | |||
of <xref target="W3C.NOTE-curie-20101216"/>, but limiting the IRIs involved in t hat grammar to URIs as | of <xref target="W3C.NOTE-curie-20101216"/>, but limiting the IRIs involved in t hat grammar to URIs as | |||
per <xref target="STD66"/> and the prefixes to ASCII characters <xref target="ST D80"/>. | per <xref target="STD66"/> and the prefixes to ASCII characters <xref target="ST D80"/>. | |||
(Note that this definition does not make use of the production | (Note that this definition does not make use of the production | |||
<tt>safe-curie</tt> in <xref target="W3C.NOTE-curie-20101216"/>.)</t> | <tt>safe-curie</tt> in <xref target="W3C.NOTE-curie-20101216"/>.)</t> | |||
<t>A name that is contributed by the current SDF document can be | <t>A name that is contributed by the current SDF document can be | |||
referenced by a Same-Document Reference as per Section <xref target="RFC3986" se ction="4.4" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>. | referenced by a Same-Document Reference as per Section <xref target="RFC3986" se ction="4.4" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>. | |||
As there is little point in referencing the entire SDF document, this will be a <tt>#</tt> followed by a JSON pointer. | As there is little point in referencing the entire SDF document, this will be a <tt>#</tt> followed by a JSON pointer. | |||
This is the only kind of name reference to itself that is possible in an SDF | This is the only kind of name reference to itself that is possible in an SDF | |||
document that does not set a default namespace.</t> | document that does not set a default namespace.</t> | |||
<t>Name references that point outside the current SDF document | <t>Name references that point outside the current SDF document | |||
need to contain curie prefixes. These then reference namespace | need to contain curie prefixes. These then reference namespace | |||
declarations in the namespaces block.</t> | declarations in the namespaces block.</t> | |||
<t>For example, if a namespace prefix is defined:</t> | <t>For example, if a namespace prefix is defined:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"namespace": { | "namespace": { | |||
"foo": "https://example.com/" | "foo": "https://example.com/" | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>Then this reference to that namespace:</t> | <t>then this reference to that namespace:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"sdfRef": "foo:#/sdfData/temperatureData" | "sdfRef": "foo:#/sdfData/temperatureData" | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>references the global name:</t> | <t>references the global name:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"https://example.com/#/sdfData/temperatureData" | "https://example.com/#/sdfData/temperatureData" | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>Note that there is no way to provide a URI scheme name in a curie, so | <t>Note that there is no way to provide a URI scheme name in a curie, so | |||
all references to outside of the document need to go through the | all references to outside of the document need to go through the | |||
namespace map.</t> | namespace map.</t> | |||
skipping to change at line 1240 ¶ | skipping to change at line 1306 ¶ | |||
<t>pointing to elements via sdfRequired value elements</t> | <t>pointing to elements via sdfRequired value elements</t> | |||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="sdfref"> | <section anchor="sdfref"> | |||
<name>sdfRef</name> | <name>sdfRef</name> | |||
<t>In a JSON map establishing a definition, the keyword <tt>sdfRef</tt> is used | <t>In a JSON map establishing a definition, the keyword <tt>sdfRef</tt> is used | |||
to copy the qualities and enclosed definitions of the referenced | to copy the qualities and enclosed definitions of the referenced | |||
definition, indicated by the included name reference, into the newly | definition, indicated by the included name reference, into the newly | |||
formed definition. | formed definition. | |||
(This can be compared to the processing of the <tt>$ref</tt> keyword in <xref ta rget="JSO7"/>.) | (This can be compared to the processing of the <tt>$ref</tt> keyword in <xref ta rget="I-D.handrews-json-schema"/>.) | |||
The referenced definition should be such that, after copying and | The referenced definition should be such that, after copying and | |||
applying the additional qualities in the referencing definition, the | applying the additional qualities in the referencing definition, the | |||
newly built definition is also valid SDF (e.g., the copied qualities | newly built definition is also valid SDF (e.g., the copied qualities | |||
and definitions are valid in the context of the new definition).</t> | and definitions are valid in the context of the new definition).</t> | |||
<t>For example, this reference:</t> | <t>For example, this reference:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"temperatureProperty": { | "temperatureProperty": { | |||
"sdfRef": "#/sdfData/temperatureData" | "sdfRef": "#/sdfData/temperatureData" | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>creates a new definition "temperatureProperty" that contains all of t he qualities defined in the definition at /sdfData/temperatureData.</t> | <t>creates a new definition "temperatureProperty" that contains all of t he qualities defined in the definition at /sdfData/temperatureData.</t> | |||
<t>The sdfRef member need not be the only member of a map. | <t>The sdfRef member need not be the only member of a map. | |||
Additional members may be present with the intention to override parts | Additional members may be present with the intention of overriding parts | |||
of the referenced map or to add new qualities or definitions.</t> | of the referenced map or adding new qualities or definitions.</t> | |||
<t>When processing sdfRef, if the target definition contains also sdfRef (i.e., is based on yet another definition), that <bcp14>MUST</bcp14> be process ed as well.</t> | <t>When processing sdfRef, if the target definition contains also sdfRef (i.e., is based on yet another definition), that <bcp14>MUST</bcp14> be process ed as well.</t> | |||
<t>More formally, for a JSON map that contains an | <t>More formally, for a JSON map that contains an | |||
sdfRef member, the semantics is defined to be as if the following steps were per formed:</t> | sdfRef member, the semantics are defined to be as if the following steps were pe rformed:</t> | |||
<ol spacing="normal" type="1"><li> | <ol spacing="normal" type="1"><li> | |||
<t>The JSON map that contains the sdfRef member is copied into a | <t>The JSON map that contains the sdfRef member is copied into a | |||
variable named "patch".</t> | variable named "patch".</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>The sdfRef member of the copy in "patch" is removed.</t> | <t>The sdfRef member of the copy in "patch" is removed.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>the JSON pointer that is the value of the sdfRef member is | <t>The JSON pointer that is the value of the sdfRef member is | |||
dereferenced and the result is copied into a variable named "original".</t> | dereferenced and the result is copied into a variable named "original".</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>The JSON Merge Patch algorithm <xref target="RFC7396"/> is applie d to patch | <t>The JSON Merge Patch algorithm <xref target="RFC7396"/> is applie d to patch | |||
the contents of "original" with the contents of "patch".</t> | the contents of "original" with the contents of "patch".</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>The result of the Merge Patch is used in place of the value of th e | <t>The result of the Merge Patch is used in place of the value of th e | |||
original JSON map.</t> | original JSON map.</t> | |||
</li> | </li> | |||
</ol> | </ol> | |||
<t>Note that the formal syntaxes given in Appendices <xref format="count er" target="syntax"/> and <xref format="counter" target="jso"/> | <t>Note that the formal syntaxes given in Appendices <xref format="count er" target="syntax"/> and <xref format="counter" target="jso"/> | |||
generally describe the <em>result</em> of applying a merge-patch: the notations | generally describe the <em>result</em> of applying a merge-patch. The notations | |||
are not powerful enough to describe, for instance, how the merge-patch | are not powerful enough to describe, for instance, how the merge-patch | |||
algorithm causes null values within the sdfRef to remove members of JSON | algorithm causes null values within the sdfRef to remove members of JSON | |||
maps from the referenced target. | maps from the referenced target. | |||
Nonetheless, the syntaxes also give the syntax | Nonetheless, the syntaxes also give the syntax | |||
of the sdfRef itself, which vanishes during the resolution; in many | of the sdfRef itself, which vanishes during the resolution; therefore, in many | |||
cases therefore even merge-patch inputs will validate with these | cases, even merge-patch inputs will validate with these | |||
formal syntaxes.</t> | formal syntaxes.</t> | |||
<t>Given the example (<xref target="example1"/>), and the following defi nition:</t> | <t>Given the example (<xref target="example1"/>) and the following defin ition:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
{ | { | |||
"info": { | "info": { | |||
"title": "Example light switch using sdfRef" | "title": "Example light switch using sdfRef" | |||
}, | }, | |||
"namespace": { | "namespace": { | |||
"cap": "https://example.com/capability/cap" | "cap": "https://example.com/capability/cap" | |||
}, | }, | |||
"defaultNamespace": "cap", | "defaultNamespace": "cap", | |||
"sdfObject": { | "sdfObject": { | |||
"BasicSwitch": { | "BasicSwitch": { | |||
"sdfRef": "cap:#/sdfObject/Switch", | "sdfRef": "cap:#/sdfObject/Switch", | |||
"sdfAction": { | "sdfAction": { | |||
"toggle": null | "toggle": null | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>The resulting definition of the "BasicSwitch" sdfObject would be iden tical to the definition of the "Switch" sdfObject except it would not contain th e "toggle" Action.</t> | <t>The resulting definition of the "BasicSwitch" sdfObject would be iden tical to the definition of the "Switch" sdfObject, except it would not contain t he "toggle" Action.</t> | |||
<sourcecode type="json" name="example1-without-toggle.sdf.json"><![CDATA [ | <sourcecode type="json" name="example1-without-toggle.sdf.json"><![CDATA [ | |||
{ | { | |||
"info": { | "info": { | |||
"title": "Example light switch using sdfRef" | "title": "Example light switch using sdfRef" | |||
}, | }, | |||
"namespace": { | "namespace": { | |||
"cap": "https://example.com/capability/cap" | "cap": "https://example.com/capability/cap" | |||
}, | }, | |||
"defaultNamespace": "cap", | "defaultNamespace": "cap", | |||
"sdfObject": { | "sdfObject": { | |||
skipping to change at line 1341 ¶ | skipping to change at line 1407 ¶ | |||
"off": { | "off": { | |||
"description": | "description": | |||
"Turn the switch off; equivalent to setting value to false." | "Turn the switch off; equivalent to setting value to false." | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<section anchor="resolved-models"> | <section anchor="resolved-models"> | |||
<name>Resolved models</name> | <name>Resolved Models</name> | |||
<t>A model where all sdfRef references are processed as described in < xref target="sdfref"/> is called a resolved model.</t> | <t>A model where all sdfRef references are processed as described in < xref target="sdfref"/> is called a resolved model.</t> | |||
<t>For example, given the following sdfData definitions:</t> | <t>For example, given the following sdfData definitions:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"sdfData": { | "sdfData": { | |||
"Coordinate" : { | "Coordinate" : { | |||
"type": "number", "unit": "m" | "type": "number", "unit": "m" | |||
}, | }, | |||
"X-Coordinate" : { | "X-Coordinate" : { | |||
"sdfRef" : "#/sdfData/Coordinate", | "sdfRef" : "#/sdfData/Coordinate", | |||
"description": | "description": | |||
"Distance from the base of the Thing along the X axis." | "Distance from the base of the Thing along the X axis." | |||
}, | }, | |||
"Non-neg-X-Coordinate" : { | "Non-neg-X-Coordinate" : { | |||
"sdfRef": "#/sdfData/X-Coordinate", | "sdfRef": "#/sdfData/X-Coordinate", | |||
"minimum": 0 | "minimum": 0 | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>After resolving the definitions would look as follows:</t> | <t>the definitions would look as follows after being resolved:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"sdfData": { | "sdfData": { | |||
"Coordinate" : { | "Coordinate" : { | |||
"type": "number", "unit": "m" | "type": "number", "unit": "m" | |||
}, | }, | |||
"X-Coordinate" : { | "X-Coordinate" : { | |||
"description": | "description": | |||
"Distance from the base of the Thing along the X axis.", | "Distance from the base of the Thing along the X axis.", | |||
"type": "number", "unit": "m" | "type": "number", "unit": "m" | |||
}, | }, | |||
skipping to change at line 1387 ¶ | skipping to change at line 1453 ¶ | |||
]]></sourcecode> | ]]></sourcecode> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sdfrequired"> | <section anchor="sdfrequired"> | |||
<name>sdfRequired</name> | <name>sdfRequired</name> | |||
<t>The keyword <tt>sdfRequired</tt> is provided to apply a constraint th at | <t>The keyword <tt>sdfRequired</tt> is provided to apply a constraint th at | |||
defines for which declarations the corresponding data are mandatory in a | defines for which declarations the corresponding data are mandatory in a | |||
grouping (sdfThing or sdfObject) modeled by the current definition.</t> | grouping (sdfThing or sdfObject) modeled by the current definition.</t> | |||
<t>The value of <tt>sdfRequired</tt> is an array of references, each ind icating | <t>The value of <tt>sdfRequired</tt> is an array of references, each ind icating | |||
one or more declarations that are mandatory to be represented.</t> | one or more declarations that are mandatory to be represented.</t> | |||
<t>References in this array can be SDF names (JSON Pointers), or one of | <t>References in this array can be SDF names (JSON Pointers) or one of | |||
two abbreviated reference formats:</t> | two abbreviated reference formats:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<t>a text string with a "referenceable-name", namely an affordance n ame | <t>A text string with a "referenceable-name", namely an affordance n ame | |||
or a grouping name: </t> | or a grouping name: </t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<t>All affordance declarations that are directly in the same gro uping | <t>All affordance declarations that are directly in the same gro uping | |||
(i.e., not nested further in another grouping) and that carry this | (i.e., not nested further in another grouping) and that carry this | |||
name are declared to be mandatory to be represented. | name are declared to be mandatory to be represented. | |||
Note that there can be multiple such affordance declarations, one | Note that there can be multiple such affordance declarations, one | |||
per affordance type.</t> | per affordance type.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>The same applies to groupings made mandatory within groupings | <t>The same applies to groupings made mandatory within groupings | |||
containing them.</t> | containing them.</t> | |||
</li> | </li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>the Boolean value <tt>true</tt>. | <t>The Boolean value <tt>true</tt>. | |||
The affordance or grouping itself that carries the <tt>sdfRequired</tt> | The affordance or grouping itself that carries the <tt>sdfRequired</tt> | |||
keyword is declared to be mandatory to be represented.</t> | keyword is declared to be mandatory to be represented.</t> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t>Note that referenceable-names are not | <t>Note that referenceable-names are not | |||
subject to the encoding JSON pointers require as discussed in <xref target="hier archical-names"/>. | subject to the encoding JSON pointers require as discussed in <xref target="hier archical-names"/>. | |||
To ensure that referenceable-names are reliably distinguished from JSON pointers , | To ensure that referenceable-names are reliably distinguished from JSON pointers , | |||
they are defined such that they cannot contain ":" or | they are defined such that they cannot contain ":" or | |||
"#" characters (see rule <tt>referenceable-name</tt> in <xref target="syntax"/>) . | "#" characters (see rule <tt>referenceable-name</tt> in <xref target="syntax"/>) . | |||
(If these characters are indeed contained in a Given Name, a JSON | (If these characters are indeed contained in a Given Name, a JSON | |||
pointer needs to be formed instead in order to reference it in "sdfRequired", | pointer needs to be formed instead in order to reference it in "sdfRequired", | |||
potentially requiring further path elements as well as JSON pointer | potentially requiring further path elements as well as JSON pointer | |||
encoding. The need for this is best avoided by choosing Given Names | encoding. The need for this is best avoided by choosing Given Names | |||
without these characters.)</t> | without these characters.)</t> | |||
<t>The example in <xref target="example-req"/> shows two required elemen | <t>The example in <xref target="example-req"/> shows two required elemen | |||
ts in the sdfObject definition for "temperatureWithAlarm", the sdfProperty "curr | ts in the sdfObject definition for "temperatureWithAlarm", the sdfProperty "curr | |||
entTemperature", and the sdfEvent "overTemperatureEvent". The example also shows | entTemperature", and the sdfEvent "overTemperatureEvent". | |||
the use of JSON pointer with "sdfRef" to use a pre-existing definition for the | <!-- [rfced] Should "JSON pointer" be rephrased as "a JSON pointer" or "JSON | |||
sdfProperty "currentTemperature" and for the sdfOutputData produced by the sdfEv | pointers" to describe Figure 4? | |||
ent "overTemperatureEvent".</t> | ||||
Original: | ||||
The | ||||
example also shows the use of JSON pointer with "sdfRef" to use a | ||||
pre-existing definition for the sdfProperty "currentTemperature" and | ||||
for the sdfOutputData produced by the sdfEvent | ||||
"overTemperatureEvent". | ||||
Perhaps: | ||||
The | ||||
example also shows the use of a JSON pointer with "sdfRef" to use a | ||||
pre-existing definition for the sdfProperty "currentTemperature" and | ||||
for the sdfOutputData produced by the sdfEvent "overTemperatureEvent". | ||||
Or: | ||||
The | ||||
example also shows the use of JSON pointers with "sdfRef" to use a | ||||
pre-existing definition for the sdfProperty "currentTemperature" and | ||||
for the sdfOutputData produced by the sdfEvent "overTemperatureEvent". | ||||
--> | ||||
The example also shows the use of JSON pointer with "sdfRef" to use a pre-existi | ||||
ng definition for the sdfProperty "currentTemperature" and for the sdfOutputData | ||||
produced by the sdfEvent "overTemperatureEvent".</t> | ||||
<figure anchor="example-req"> | <figure anchor="example-req"> | |||
<name>Using sdfRequired</name> | <name>Using sdfRequired</name> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"sdfObject": { | "sdfObject": { | |||
"temperatureWithAlarm": { | "temperatureWithAlarm": { | |||
"sdfRequired": [ | "sdfRequired": [ | |||
"#/sdfObject/temperatureWithAlarm/sdfProperty/currentTemperature", | "#/sdfObject/temperatureWithAlarm/sdfProperty/currentTemperature", | |||
"#/sdfObject/temperatureWithAlarm/sdfEvent/overTemperatureEvent" | "#/sdfObject/temperatureWithAlarm/sdfEvent/overTemperatureEvent" | |||
], | ], | |||
"sdfData":{ | "sdfData":{ | |||
skipping to change at line 1460 ¶ | skipping to change at line 1549 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>In <xref target="example-req"/>, the same sdfRequired can also be rep resented in | <t>In <xref target="example-req"/>, the same sdfRequired can also be rep resented in | |||
short form:</t> | short form:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"sdfRequired": ["currentTemperature", "overTemperatureEvent"] | "sdfRequired": ["currentTemperature", "overTemperatureEvent"] | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>Or, for instance "overTemperatureEvent" could carry</t> | <t>Or, for instance, "overTemperatureEvent" could carry:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"overTemperatureEvent": { | "overTemperatureEvent": { | |||
"sdfRequired": [true], | "sdfRequired": [true], | |||
"...": "..." | "...": "..." | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</section> | </section> | |||
<section anchor="common-qualities"> | <section anchor="common-qualities"> | |||
<name>Common Qualities</name> | <name>Common Qualities</name> | |||
<t>Definitions in SDF share a number of qualities that provide metadata for | <t>Definitions in SDF share a number of qualities that provide metadata for | |||
them. These are listed in <xref target="tbl-common-qualities"/>. None of these | them. These are listed in <xref target="tbl-common-qualities"/>. None of these | |||
qualities are required or have default values that are assumed if the | qualities are required or have default values that are assumed if the | |||
quality is absent. | quality is absent. | |||
If a short textual description is required for an application and no | If a short textual description is required for an application and no | |||
label is given in the SDF model, in its place applications could use | label is given in the SDF model, applications could use | |||
the last part (the last <tt>reference-token</tt>, <xref section="3" sectionForma t="of" target="RFC6901"/>) of | the last part (the last <tt>reference-token</tt>, <xref section="3" sectionForma t="of" target="RFC6901"/>) of | |||
the JSON pointer to the definition.</t> | the JSON pointer to the definition in its place.</t> | |||
<table anchor="tbl-common-qualities"> | <table anchor="tbl-common-qualities"> | |||
<name>Common Qualities</name> | <name>Common Qualities</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Quality</th> | <th align="left">Quality</th> | |||
<th align="left">Type</th> | <th align="left">Type</th> | |||
<th align="left">Description</th> | <th align="left">Description</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
skipping to change at line 1527 ¶ | skipping to change at line 1616 ¶ | |||
<name>Data Qualities</name> | <name>Data Qualities</name> | |||
<t>Data qualities are used in sdfData and sdfProperty definitions, | <t>Data qualities are used in sdfData and sdfProperty definitions, | |||
which are named sets of data qualities (abbreviated as <tt>named-sdq</tt>).</t> | which are named sets of data qualities (abbreviated as <tt>named-sdq</tt>).</t> | |||
<t>These qualities include the common qualities, JSO-inspired qualities | <t>These qualities include the common qualities, JSO-inspired qualities | |||
(see below), and data qualities defined specifically for the present | (see below), and data qualities defined specifically for the present | |||
specification; the latter are shown in <xref target="sdfdataqual2"/>. | specification; the latter are shown in <xref target="sdfdataqual2"/>. | |||
None of these qualities are required or have default values that are | None of these qualities are required or have default values that are | |||
assumed if the quality is absent.</t> | assumed if the quality is absent.</t> | |||
<t><xref target="jso-inspired"/> lists data qualities inspired by the va rious | <t><xref target="jso-inspired"/> lists data qualities inspired by the va rious | |||
proposals at json-schema.org; the | proposals at json-schema.org; the | |||
intention is that these (information model level) qualities are | intention is that these (information model-level) qualities are | |||
compatible with the (data model) semantics from the | compatible with the (data model) semantics from the | |||
versions of the json-schema.org proposal they were imported from.</t> | versions of the json-schema.org proposal they were imported from.</t> | |||
<table anchor="sdfdataqual2"> | <table anchor="sdfdataqual2"> | |||
<name>SDF-defined Qualities of sdfData and sdfProperty</name> | <name>SDF-Defined Qualities of sdfData and sdfProperty</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Quality</th> | <th align="left">Quality</th> | |||
<th align="left">Type</th> | <th align="left">Type</th> | |||
<th align="left">Description</th> | <th align="left">Description</th> | |||
<th align="left">Default</th> | <th align="left">Default</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">(common)</td> | <td align="left">(common)</td> | |||
<td align="left"> </td> | <td align="left"> </td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="common-qualities"/></td> | <xref target="common-qualities"/></td> | |||
<td align="left"> </td> | <td align="left"> </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">unit</td> | <td align="left">unit</td> | |||
<td align="left">string</td> | <td align="left">string</td> | |||
<td align="left">unit name (note 1)</td> | <td align="left">unit name (note 1)</td> | |||
<td align="left">N/A</td> | <td align="left">N/A</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">nullable</td> | <td align="left">nullable</td> | |||
<td align="left">boolean</td> | <td align="left">boolean</td> | |||
skipping to change at line 1587 ¶ | skipping to change at line 1676 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">enum</td> | <td align="left">enum</td> | |||
<td align="left">array of strings</td> | <td align="left">array of strings</td> | |||
<td align="left">abbreviation for string-valued named alternatives </td> | <td align="left">abbreviation for string-valued named alternatives </td> | |||
<td align="left">N/A</td> | <td align="left">N/A</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<ol spacing="normal" type="1"><li> | <ol spacing="normal" type="1"><li> | |||
<!-- [rfced] FYI - In the XML, we have removed the links from "SenML Units" | ||||
and "Secondary Units" since those links do not point to the correct | ||||
section (and the correct section pointers follow shortly | ||||
thereafter). Please let us know any objections. | ||||
Original XML: | ||||
<t>The unit name <bcp14>SHOULD</bcp14> be as | ||||
per the <xref section="SenML Units" relative="#senml-units" sectionFormat="bare" | ||||
target="RFC8428"/> registry | ||||
or the <xref section="Secondary Units" relative="#secondary-units" sectionFormat | ||||
="bare" | ||||
target="RFC8798"/> registry in <xref target="IANA.senml"/> | ||||
as specified by | ||||
Sections <xref target="RFC8428" section="4.5.1" sectionFormat="bare"/> and <xref | ||||
target="RFC8428" section="12.1" sectionFormat="bare"/> of <xref target="RFC8428" | ||||
/> and | ||||
<xref section="3" sectionFormat="of" target="RFC8798"/>, respectively. </t> | ||||
--> | ||||
<t>The unit name <bcp14>SHOULD</bcp14> be as | <t>The unit name <bcp14>SHOULD</bcp14> be as | |||
per the <xref section="SenML Units" relative="#senml-units" sectionFormat="bare" | per the SenML Units registry or the Secondary Units registry in <xref target="IA | |||
target="RFC8428"/> registry | NA.senml"/> | |||
or the <xref section="Secondary Units" relative="#secondary-units" sectionFormat | ||||
="bare" target="RFC8798"/> registry in <xref target="IANA.senml"/> | ||||
as specified by | as specified by | |||
Sections <xref target="RFC8428" section="4.5.1" sectionFormat="bare"/> and <xref target="RFC8428" section="12.1" sectionFormat="bare"/> of <xref target="RFC8428 "/> and <xref section="3" sectionFormat="of" target="RFC8798"/>, respectively. </t> | Sections <xref target="RFC8428" section="4.5.2" sectionFormat="bare"/> and <xref target="RFC8428" section="12.1" sectionFormat="bare"/> of <xref target="RFC8428 "/> and <xref section="3" sectionFormat="of" target="RFC8798"/>, respectively. </t> | |||
<t> | <t> | |||
Exceptionally, if a registration in these registries cannot be | Exceptionally, if a registration in these registries cannot be | |||
obtained or would be inappropriate, the unit name can also be a URI | obtained or would be inappropriate, the unit name can also be a URI | |||
that is pointing to a definition of the unit. Note that SDF | that is pointing to a definition of the unit. Note that SDF | |||
processors are not expected to, and normally <bcp14>SHOULD NOT</bcp14>, | processors are not expected to, and normally <bcp14>SHOULD NOT</bcp14>, | |||
dereference these URIs; the definition pointed to may be useful to | dereference these URIs; the definition pointed to may be useful to | |||
humans, though. | humans, though. | |||
(See <xref target="I-D.bormann-t2trg-deref-id"/> for a more extensive discussion of dereferenceable | (See <xref target="I-D.bormann-t2trg-deref-id"/> for a more extensive discussion of dereferenceable | |||
identifiers). </t> | identifiers). </t> | |||
<t anchor="cannot-colon">A URI unit name is distinguished from a reg istered unit name by the | <t anchor="cannot-colon">A URI unit name is distinguished from a reg istered unit name by the | |||
presence of a colon; any registered unit names that contain a colon (at | presence of a colon; therefore, any registered unit names that contain a colon ( | |||
the time of writing, none) can therefore not be directly used in SDF.</t> | at | |||
the time of writing, none) cannot be directly used in SDF.</t> | ||||
<t> | <t> | |||
For use by translators into ecosystems that require URIs for unit | For use by translators into ecosystems that require URIs for unit | |||
names, the URN sub-namespace "urn:ietf:params:unit" is provided | names, the URN sub-namespace "urn:ietf:params:unit" is provided | |||
(<xref target="unit-urn"/>). | (<xref target="unit-urn"/>). | |||
URNs from this sub-namespace <bcp14>MUST NOT</bcp14> be used in a | URNs from this sub-namespace <bcp14>MUST NOT</bcp14> be used in a | |||
<tt>unit</tt> quality, in favor of simply notating the unit name (such as | <tt>unit</tt> quality in favor of simply notating the unit name (such as | |||
<tt>kg</tt> instead of <tt>urn:ietf:params:unit:kg</tt>), except where the | <tt>kg</tt> instead of <tt>urn:ietf:params:unit:kg</tt>) except where the | |||
unit name contains a colon and can therefore not be directly used | unit name contains a colon and can therefore not be directly used | |||
in SDF.</t> | in SDF.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>The <tt>contentFormat</tt> quality follows the Content-Format-Spe c as defined in | <t>The <tt>contentFormat</tt> quality follows the Content-Format-Spe c as defined in | |||
<xref section="6" sectionFormat="of" target="RFC9193"/>, allowing for expressing both numeric and string | <xref section="6" sectionFormat="of" target="RFC9193"/>, allowing for expressing both numeric and string | |||
based Content-Formats.</t> | based Content-Formats.</t> | |||
</li> | </li> | |||
</ol> | </ol> | |||
<section anchor="sdftype"> | <section anchor="sdftype"> | |||
<name>sdfType</name> | <name>sdfType</name> | |||
<t>SDF defines a number of basic types beyond those provided by JSON o r | <t>SDF defines a number of basic types beyond those provided by JSON o r | |||
JSO. These types are identified by the <tt>sdfType</tt> quality, which | JSO. These types are identified by the <tt>sdfType</tt> quality, which | |||
is a text string from a set of type names defined by the "sdfType | is a text string from a set of type names defined by the "sdfType | |||
values" registry in the "Semantic Definition Format (SDF)" registry group | values" registry in the "Semantic Definition Format (SDF)" registry group | |||
(<xref target="sdftype-values"/>). | (<xref target="sdftype-values"/>). | |||
The sdfType name is composed of lower case ASCII letters, digits, | The sdfType name is composed of lowercase ASCII letters, digits, | |||
and <tt>-</tt> (ASCII hyphen/minus) characters, starting | and <tt>-</tt> (ASCII hyphen/minus) characters, starting | |||
with a lower case ASCII letter (i.e., using a pattern of | with a lowercase ASCII letter (i.e., using a pattern of | |||
"<tt>[a-z][-a-z0-9]*</tt>"), typically employing kebab-case for | "<tt>[a-z][-a-z0-9]*</tt>") and typically employing kebab-case for | |||
names constructed out of multiple words <xref target="KebabCase"/>.</t> | names constructed out of multiple words <xref target="KebabCase"/>.</t> | |||
<t>To aid interworking with JSO implementations, it is <bcp14>RECOMMEN DED</bcp14> | <t>To aid interworking with JSO implementations, it is <bcp14>RECOMMEN DED</bcp14> | |||
that sdfType is always used in conjunction with the <tt>type</tt> quality | that sdfType is always used in conjunction with the <tt>type</tt> quality | |||
inherited from <xref target="JSO7V"/>, in such a way as to yield a common | inherited from <xref target="I-D.handrews-json-schema-validation"/> in such a wa y as to yield a common | |||
representation of the type's values in JSON.</t> | representation of the type's values in JSON.</t> | |||
<t>Values for sdfType that are defined in this specification are shown in | <t>Values for sdfType that are defined in this specification are shown in | |||
<xref target="sdftype1"/>. | <xref target="sdftype1"/>. | |||
This table also gives a description of the semantics of the sdfType, | This table also gives a description of the semantics of the sdfType, | |||
the conventional value for <tt>type</tt> to be used with the sdfType value, | the conventional value for <tt>type</tt> to be used with the sdfType value, | |||
and a conventional JSON representation for values of the type. | and a conventional JSON representation for values of the type. | |||
The <tt>type</tt> and the JSON representation are chosen to be consistent | The <tt>type</tt> and the JSON representation are chosen to be consistent | |||
with each other; this <bcp14>MUST</bcp14> be true for additionally registered sd fType | with each other; this <bcp14>MUST</bcp14> be true for additionally registered sd fType | |||
values as well.</t> | values as well.</t> | |||
<table anchor="sdftype1"> | <table anchor="sdftype1"> | |||
skipping to change at line 1663 ¶ | skipping to change at line 1769 ¶ | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">byte-string</td> | <td align="left">byte-string</td> | |||
<td align="left">A sequence of zero or more bytes</td> | <td align="left">A sequence of zero or more bytes</td> | |||
<td align="left">string</td> | <td align="left">string</td> | |||
<td align="left">base64url without padding</td> | <td align="left">base64url without padding</td> | |||
<td align="left">Section <xref target="RFC8949" section="3.4.5.2 " sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/></td> | <td align="left">Section <xref target="RFC8949" section="3.4.5.2 " sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/></td> | |||
</tr> | </tr> | |||
<!-- [rfced] The IANA registry includes "(note 1)" as part of the description fo | ||||
r unix-time, but there is no note included in the registry. Should the notes be | ||||
included in the registry or perhaps "(note 1)" should be removed from the descr | ||||
iption? | ||||
Original (text): | ||||
| unix-time | A point in | number | POSIX time | Section | | ||||
| | civil time | | | 3.4.2 of | | ||||
| | (note 1) | | | RFC 8949 | | ||||
| | | | | [STD94] | | ||||
See the IANA registry: | ||||
https://www.iana.org/assignments/sdf/sdf.xhtml#sdftype-values | ||||
--> | ||||
<tr> | <tr> | |||
<td align="left">unix-time</td> | <td align="left">unix-time</td> | |||
<td align="left">A point in civil time (note 1)</td> | <td align="left">A point in civil time (note 1)</td> | |||
<td align="left">number</td> | <td align="left">number</td> | |||
<td align="left">POSIX time</td> | <td align="left">POSIX time</td> | |||
<td align="left">Section <xref target="RFC8949" section="3.4.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/></td> | <td align="left">Section <xref target="RFC8949" section="3.4.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/></td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>(1) Note that the definition of <tt>unix-time</tt> does not imply t he | <t>(1) Note that the definition of <tt>unix-time</tt> does not imply t he | |||
capability to represent points in time that fall on leap seconds. | capability to represent points in time that fall on leap seconds. | |||
More date/time-related sdfTypes are likely to be added in the sdfType | More date/time-related sdfTypes are likely to be added in the sdfType | |||
value registry.</t> | value registry.</t> | |||
</section> | </section> | |||
<section anchor="sdfchoice"> | <section anchor="sdfchoice"> | |||
<name>sdfChoice</name> | <name>sdfChoice</name> | |||
<t>Data can be a choice of named alternatives, called <tt>sdfChoice</t t>. | <t>Data can be a choice of named alternatives called <tt>sdfChoice</tt >. | |||
Each alternative is identified by a name (string, key in the outer JSON | Each alternative is identified by a name (string, key in the outer JSON | |||
map used to represent the overall choice) and a set of dataqualities | map used to represent the overall choice) and a set of dataqualities | |||
(each in an inner JSON map, the value used to represent the | (each in an inner JSON map, the value used to represent the | |||
individual alternative in the outer JSON map). | individual alternative in the outer JSON map). | |||
Dataqualities that are specified at the same level as the sdfChoice | Dataqualities that are specified at the same level as the sdfChoice | |||
apply to all choices in the sdfChoice, except those specific choices | apply to all choices in the sdfChoice except those specific choices | |||
where the dataquality is overridden at the choice level.</t> | where the dataquality is overridden at the choice level.</t> | |||
<t>sdfChoice merges the functions of two constructs found in <xref tar get="JSO7V"/>:</t> | <t>sdfChoice merges the functions of two constructs found in <xref tar get="I-D.handrews-json-schema-validation"/>:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<t><tt>enum</tt> </t> | <t><tt>enum</tt></t> | |||
<t> | <t> | |||
What could be expressed as </t> | What could be expressed as:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"enum": ["foo", "bar", "baz"] | "enum": ["foo", "bar", "baz"] | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t> | <t> | |||
in JSO, is often best represented as: </t> | in JSO, is often best represented as: </t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"sdfChoice": { | "sdfChoice": { | |||
"foo": { "description": "This is a foonly"}, | "foo": { "description": "This is a foonly"}, | |||
"bar": { "description": | "bar": { "description": | |||
"As defined in the second world congress"}, | "As defined in the second world congress"}, | |||
"baz": { "description": "From bigzee foobaz"} | "baz": { "description": "From bigzee foobaz"} | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t> | <t> | |||
This allows the placement of other dataqualities such as | This allows the placement of other dataqualities such as | |||
<tt>description</tt> in the example. </t> | <tt>description</tt> in the example. </t> | |||
<t> | <t> | |||
If an enum needs to use a data type different from text string, | If an enum needs to use a data type different from the text string, | |||
what would for instance have been: </t> | what would, for instance, have been: </t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"type": "number", | "type": "number", | |||
"enum": [1, 2, 3] | "enum": [1, 2, 3] | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t> | <t> | |||
in JSO, is represented as: </t> | in JSO, is represented as: </t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"type": "number", | "type": "number", | |||
"sdfChoice": { | "sdfChoice": { | |||
"a-better-name-for-alternative-1": { "const": 1 }, | "a-better-name-for-alternative-1": { "const": 1 }, | |||
skipping to change at line 1736 ¶ | skipping to change at line 1854 ¶ | |||
<t> | <t> | |||
where the string names obviously would be chosen in a way that is | where the string names obviously would be chosen in a way that is | |||
descriptive for what these numbers actually stand for; sdfChoice | descriptive for what these numbers actually stand for; sdfChoice | |||
also makes it easy to add number ranges into the mix. </t> | also makes it easy to add number ranges into the mix. </t> | |||
<t> | <t> | |||
(Note that <tt>const</tt> can also be used for strings as in the previous | (Note that <tt>const</tt> can also be used for strings as in the previous | |||
example, for instance, if the actual string value is indeed a crucial | example, for instance, if the actual string value is indeed a crucial | |||
element for the data model.)</t> | element for the data model.)</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>anyOf </t> | <t>anyOf</t> | |||
<t> | <t> | |||
JSO provides a type union called <tt>anyOf</tt>, which provides a | JSO provides a type union called <tt>anyOf</tt>, which provides a | |||
choice between anonymous alternatives. </t> | choice between anonymous alternatives. </t> | |||
<t> | <t> | |||
What could have been in JSO: </t> | What could have been in JSO: </t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"anyOf": [ | "anyOf": [ | |||
{"type": "array", "minItems": 3, "maxItems": "3", | {"type": "array", "minItems": 3, "maxItems": "3", | |||
"items": {"$ref": "#/sdfData/rgbVal"}}, | "items": {"$ref": "#/sdfData/rgbVal"}}, | |||
{"type": "array", "minItems": 4, "maxItems": "4", | {"type": "array", "minItems": 4, "maxItems": "4", | |||
skipping to change at line 1763 ¶ | skipping to change at line 1881 ¶ | |||
"sdfChoice": { | "sdfChoice": { | |||
"rgb": {"type": "array", "minItems": 3, "maxItems": "3", | "rgb": {"type": "array", "minItems": 3, "maxItems": "3", | |||
"items": {"sdfRef": "#/sdfData/rgbVal"}}, | "items": {"sdfRef": "#/sdfData/rgbVal"}}, | |||
"cmyk": {"type": "array", "minItems": 4, "maxItems": "4", | "cmyk": {"type": "array", "minItems": 4, "maxItems": "4", | |||
"items": {"sdfRef": "#/sdfData/cmykVal"}} | "items": {"sdfRef": "#/sdfData/cmykVal"}} | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t>Note that there is no need in SDF for the type intersection constru ct | <t>Note that there is no need in SDF for the type intersection constru ct | |||
<tt>allOf</tt> or the peculiar type-xor construct <tt>oneOf</tt> found in <xref target="JSO7V"/>.</t> | <tt>allOf</tt> or the peculiar type-xor construct <tt>oneOf</tt> found in <xref target="I-D.handrews-json-schema-validation"/>.</t> | |||
<t>As a simplification for users of SDF models who are accustomed to | <t>As a simplification for users of SDF models who are accustomed to | |||
the JSO enum keyword, this is retained, but limited to a choice | the JSO enum keyword, this is retained, but limited to a choice | |||
of text string values, such that</t> | of text string values, such that:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"enum": ["foo", "bar", "baz"] | "enum": ["foo", "bar", "baz"] | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>is syntactic sugar for</t> | <t>is syntactic sugar for:</t> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"sdfChoice": { | "sdfChoice": { | |||
"foo": { "const": "foo"}, | "foo": { "const": "foo"}, | |||
"bar": { "const": "bar"}, | "bar": { "const": "bar"}, | |||
"baz": { "const": "baz"} | "baz": { "const": "baz"} | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>In a single definition, the keyword <tt>enum</tt> cannot be used at the same | <t>In a single definition, the keyword <tt>enum</tt> cannot be used at the same | |||
time as the keyword <tt>sdfChoice</tt>, as the former is just syntactic | time as the keyword <tt>sdfChoice</tt>, as the former is just syntactic | |||
sugar for the latter.</t> | sugar for the latter.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="kw-defgroups"> | <section anchor="kw-defgroups"> | |||
<name>Keywords for definition groups</name> | <name>Keywords for Definition Groups</name> | |||
<t>The following SDF keywords are used to create definition groups in the target namespace. | <t>The following SDF keywords are used to create definition groups in the target namespace. | |||
All these definitions share some common qualities as discussed in <xref target=" common-qualities"/>.</t> | All these definitions share some common qualities as discussed in <xref target=" common-qualities"/>.</t> | |||
<section anchor="sdfobject-1"> | <section anchor="sdfobject-1"> | |||
<name>sdfObject</name> | <name>sdfObject</name> | |||
<t>The <tt>sdfObject</tt> keyword denotes a group of zero or more sdfObj ect definitions. | <t>The <tt>sdfObject</tt> keyword denotes a group of zero or more sdfObj ect definitions. | |||
sdfObject definitions may contain or include definitions of named Properties, Ac tions, Events declared for the sdfObject, as well as named data types (sdfData g roup) to be used in this or other sdfObjects.</t> | sdfObject definitions may contain or include definitions of named Properties, Ac tions, and Events declared for the sdfObject, as well as named data types (sdfDa ta group) to be used in this or other sdfObjects.</t> | |||
<t>The qualities of an sdfObject include the common qualities; | <t>The qualities of an sdfObject include the common qualities; | |||
additional qualities are shown in <xref target="sdfobjqual"/>. | additional qualities are shown in <xref target="sdfobjqual"/>. | |||
None of these | None of these | |||
qualities are required or have default values that are assumed if the | qualities are required or have default values that are assumed if the | |||
quality is absent.</t> | quality is absent.</t> | |||
<table anchor="sdfobjqual"> | <table anchor="sdfobjqual"> | |||
<name>Qualities of sdfObject</name> | <name>Qualities of sdfObject</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Quality</th> | <th align="left">Quality</th> | |||
<th align="left">Type</th> | <th align="left">Type</th> | |||
<th align="left">Description</th> | <th align="left">Description</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">(common)</td> | <td align="left">(common)</td> | |||
<td align="left"> </td> | <td align="left"> </td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="common-qualities"/></td> | <xref target="common-qualities"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfProperty</td> | <td align="left">sdfProperty</td> | |||
<td align="left">property</td> | <td align="left">property</td> | |||
<td align="left">zero or more named property definitions for this sdfObject</td> | <td align="left">zero or more named property definitions for this sdfObject</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfAction</td> | <td align="left">sdfAction</td> | |||
skipping to change at line 1836 ¶ | skipping to change at line 1954 ¶ | |||
<td align="left">zero or more named event definitions for this sdf Object</td> | <td align="left">zero or more named event definitions for this sdf Object</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfData</td> | <td align="left">sdfData</td> | |||
<td align="left">named-sdq</td> | <td align="left">named-sdq</td> | |||
<td align="left">zero or more named data type definitions that mig ht be used in the above</td> | <td align="left">zero or more named data type definitions that mig ht be used in the above</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">minItems</td> | <td align="left">minItems</td> | |||
<td align="left">number</td> | <td align="left">number</td> | |||
<td align="left">(array) Minimum number of multiplied affordances in array</td> | <td align="left">(array) minimum number of multiplied affordances in array</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">maxItems</td> | <td align="left">maxItems</td> | |||
<td align="left">number</td> | <td align="left">number</td> | |||
<td align="left">(array) Maximum number of multiplied affordances in array</td> | <td align="left">(array) maximum number of multiplied affordances in array</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<section anchor="sdfproperty-1"> | <section anchor="sdfproperty-1"> | |||
<name>sdfProperty</name> | <name>sdfProperty</name> | |||
<t>The <tt>sdfProperty</tt> keyword denotes a group of zero or more Prop erty definitions.</t> | <t>The <tt>sdfProperty</tt> keyword denotes a group of zero or more Prop erty definitions.</t> | |||
<t>Properties are used to model elements of state.</t> | <t>Properties are used to model elements of state.</t> | |||
<t>The qualities of a Property definition include the data qualities (an d | <t>The qualities of a Property definition include the data qualities (an d | |||
thus the common qualities), see <xref target="data-qualities"/>, additional qual ities are shown in <xref target="sdfpropqual"/>.</t> | thus the common qualities); see <xref target="data-qualities"/>. Additional qual ities are shown in <xref target="sdfpropqual"/>.</t> | |||
<table anchor="sdfpropqual"> | <table anchor="sdfpropqual"> | |||
<name>Qualities of sdfProperty</name> | <name>Qualities of sdfProperty</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Quality</th> | <th align="left">Quality</th> | |||
<th align="left">Type</th> | <th align="left">Type</th> | |||
<th align="left">Description</th> | <th align="left">Description</th> | |||
<th align="left">Default</th> | <th align="left">Default</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">(data)</td> | <td align="left">(data)</td> | |||
<td align="left"> </td> | <td align="left"> </td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="data-qualities"/></td> | <xref target="data-qualities"/></td> | |||
<td align="left"> </td> | <td align="left"> </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">readable</td> | <td align="left">readable</td> | |||
<td align="left">boolean</td> | <td align="left">boolean</td> | |||
<td align="left">Reads are allowed</td> | <td align="left">Reads are allowed</td> | |||
<td align="left">true</td> | <td align="left">true</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">writable</td> | <td align="left">writable</td> | |||
<td align="left">boolean</td> | <td align="left">boolean</td> | |||
<td align="left">Writes are allowed</td> | <td align="left">Writes are allowed</td> | |||
<td align="left">true</td> | <td align="left">true</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">observable</td> | <td align="left">observable</td> | |||
<td align="left">boolean</td> | <td align="left">boolean</td> | |||
<td align="left">flag to indicate asynchronous notification is ava ilable</td> | <td align="left">Flag to indicate asynchronous notification is ava ilable</td> | |||
<td align="left">true</td> | <td align="left">true</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<section anchor="sdfaction"> | <section anchor="sdfaction"> | |||
<name>sdfAction</name> | <name>sdfAction</name> | |||
<t>The <tt>sdfAction</tt> keyword denotes a group of zero or more Action definitions.</t> | <t>The <tt>sdfAction</tt> keyword denotes a group of zero or more Action definitions.</t> | |||
<t>Actions are used to model commands and methods which are invoked. | <t>Actions are used to model commands and methods that are invoked. | |||
Actions may have parameter data that are supplied upon invocation and | Actions may have parameter data that is supplied upon invocation and | |||
output data that is provided as a direct result of the invocation of | output data that is provided as a direct result of the invocation of | |||
the action (note that "action objects" may also be created to furnish | the action (note that "action objects" may also be created to furnish | |||
ongoing information during a long-running action; these would be | ongoing information during a long-running action; these would be | |||
pointed to by the output data).</t> | pointed to by the output data).</t> | |||
<t>The qualities of an Action definition include the common qualities, a dditional qualities are shown in <xref target="sdfactqual"/>.</t> | <t>The qualities of an Action definition include the common qualities. A dditional qualities are shown in <xref target="sdfactqual"/>.</t> | |||
<table anchor="sdfactqual"> | <table anchor="sdfactqual"> | |||
<name>Qualities of sdfAction</name> | <name>Qualities of sdfAction</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Quality</th> | <th align="left">Quality</th> | |||
<th align="left">Type</th> | <th align="left">Type</th> | |||
<th align="left">Description</th> | <th align="left">Description</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">(common)</td> | <td align="left">(common)</td> | |||
<td align="left"> </td> | <td align="left"> </td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="common-qualities"/></td> | <xref target="common-qualities"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfInputData</td> | <td align="left">sdfInputData</td> | |||
<td align="left">map</td> | <td align="left">map</td> | |||
<td align="left">data qualities of the input data for an Action</t d> | <td align="left">data qualities of the input data for an Action</t d> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfOutputData</td> | <td align="left">sdfOutputData</td> | |||
skipping to change at line 1937 ¶ | skipping to change at line 2055 ¶ | |||
<tr> | <tr> | |||
<td align="left">sdfData</td> | <td align="left">sdfData</td> | |||
<td align="left">named-sdq</td> | <td align="left">named-sdq</td> | |||
<td align="left">zero or more named data type definitions that mig ht be used in the above</td> | <td align="left">zero or more named data type definitions that mig ht be used in the above</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t><tt>sdfInputData</tt> defines the input data of the action. <tt>sdfO utputData</tt> | <t><tt>sdfInputData</tt> defines the input data of the action. <tt>sdfO utputData</tt> | |||
defines the output data of the action. | defines the output data of the action. | |||
As discussed in <xref target="sdfaction-overview"/>, a set of data qualities wit h | As discussed in <xref target="sdfaction-overview"/>, a set of data qualities wit h | |||
type <tt>"object"</tt> can be used to substructure either data item, with | type "<tt>object</tt>" can be used to substructure either data item, with | |||
optionality indicated by the data quality <tt>required</tt>.</t> | optionality indicated by the data quality <tt>required</tt>.</t> | |||
</section> | </section> | |||
<section anchor="sdfevent"> | <section anchor="sdfevent"> | |||
<name>sdfEvent</name> | <name>sdfEvent</name> | |||
<t>The <tt>sdfEvent</tt> keyword denotes zero or more Event definitions. </t> | <t>The <tt>sdfEvent</tt> keyword denotes zero or more Event definitions. </t> | |||
<t>Events are used to model asynchronous occurrences that may be communi | <t>Events are used to model asynchronous occurrences that may be communi | |||
cated proactively. Events have data elements which are communicated upon the occ | cated proactively. Events have data elements that are communicated upon the occu | |||
urrence of the event.</t> | rrence of the event.</t> | |||
<t>The qualities of sdfEvent include the common qualities, additional qu | <t>The qualities of sdfEvent include the common qualities. Additional qu | |||
alities are shown in <xref target="sdfevqual"/>.</t> | alities are shown in <xref target="sdfevqual"/>.</t> | |||
<table anchor="sdfevqual"> | <table anchor="sdfevqual"> | |||
<name>Qualities of sdfEvent</name> | <name>Qualities of sdfEvent</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Quality</th> | <th align="left">Quality</th> | |||
<th align="left">Type</th> | <th align="left">Type</th> | |||
<th align="left">Description</th> | <th align="left">Description</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">(common)</td> | <td align="left">(common)</td> | |||
<td align="left"> </td> | <td align="left"> </td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="common-qualities"/></td> | <xref target="common-qualities"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfOutputData</td> | <td align="left">sdfOutputData</td> | |||
<td align="left">map</td> | <td align="left">map</td> | |||
<td align="left">data qualities of the output data for an Event</t d> | <td align="left">data qualities of the output data for an Event</t d> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfData</td> | <td align="left">sdfData</td> | |||
<td align="left">named-sdq</td> | <td align="left">named-sdq</td> | |||
<td align="left">zero or more named data type definitions that mig ht be used in the above</td> | <td align="left">zero or more named data type definitions that mig ht be used in the above</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t><tt>sdfOutputData</tt> defines the output data of the action. | <t><tt>sdfOutputData</tt> defines the output data of the action. | |||
As discussed in <xref target="sdfevent-overview"/>, a set of data qualities with | As discussed in <xref target="sdfevent-overview"/>, a set of data qualities with | |||
type <tt>"object"</tt> can be used to substructure the output data item, with | type "<tt>object</tt>" can be used to substructure the output data item, with | |||
optionality indicated by the data quality <tt>required</tt>.</t> | optionality indicated by the data quality <tt>required</tt>.</t> | |||
</section> | </section> | |||
<section anchor="sdfdata-1"> | <section anchor="sdfdata-1"> | |||
<name>sdfData</name> | <name>sdfData</name> | |||
<t>The <tt>sdfData</tt> keyword denotes a group of zero or more named da ta type | <t>The <tt>sdfData</tt> keyword denotes a group of zero or more named da ta type | |||
definitions (named-sdq).</t> | definitions (named-sdq).</t> | |||
<t>An sdfData definition provides a reusable semantic identifier for a | <t>An sdfData definition provides a reusable semantic identifier for a | |||
type of data item and describes the constraints on the defined type. | type of data item and describes the constraints on the defined type. | |||
sdfData is not itself a declaration, so it does not cause any of these | sdfData is not itself a declaration, so it does not cause any of these | |||
data items to be included in an affordance definition.</t> | data items to be included in an affordance definition.</t> | |||
<t>The qualities of sdfData include the data qualities (and thus the com mon qualities), see <xref target="data-qualities"/>.</t> | <t>The qualities of sdfData include the data qualities (and thus the com mon qualities); see <xref target="data-qualities"/>.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="high-level-composition"> | <section anchor="high-level-composition"> | |||
<name>High Level Composition</name> | <name>High-Level Composition</name> | |||
<t>The requirements for high level composition include the following:</t> | <t>The requirements for high-level composition include the following:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<t>The ability to represent products, standardized product types, and modular products while maintaining the atomicity of sdfObjects.</t> | <t>The ability to represent products, standardized product types, and modular products while maintaining the atomicity of sdfObjects.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>The ability to compose a reusable definition block from sdfObjects. | <t>The ability to compose a reusable definition block from sdfObjects. | |||
Example: a single plug unit of an outlet strip with sdfObjects | Example: a single plug unit of an outlet strip with sdfObjects | |||
for on/off control, energy monitor, and optional dimmer, while | for on/off control, energy monitor, and optional dimmer, while | |||
retaining the atomicity of the individual sdfObjects.</t> | retaining the atomicity of the individual sdfObjects.</t> | |||
</li> | </li> | |||
skipping to change at line 2017 ¶ | skipping to change at line 2135 ¶ | |||
product-specific qualities and quality values, such as unit, range, and scale se ttings.</t> | product-specific qualities and quality values, such as unit, range, and scale se ttings.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>The ability to reference items in one part of a complex definition | <t>The ability to reference items in one part of a complex definition | |||
from another part of the same definition. | from another part of the same definition. | |||
Example: summarizing the energy readings from all plugs in an outlet | Example: summarizing the energy readings from all plugs in an outlet | |||
strip.</t> | strip.</t> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<section anchor="paths-in-the-model-namespaces"> | <section anchor="paths-in-the-model-namespaces"> | |||
<name>Paths in the model namespaces</name> | <name>Paths in the Model Namespaces</name> | |||
<t>The model namespace is organized according to terms that are defined | <t>The model namespace is organized according to terms that are defined | |||
in the SDF documents that contribute to the namespace. For example, definitions that originate from an organization or vendor are expected to be in a namespace that is specific to that organization or vendor.</t> | in the SDF documents that contribute to the namespace. For example, definitions that originate from an organization or vendor are expected to be in a namespace that is specific to that organization or vendor.</t> | |||
<t>The structure of a path in a namespace is defined by the JSON Pointer s | <t>The structure of a path in a namespace is defined by the JSON Pointer s | |||
to the definitions in the SDF documents in that namespace. | to the definitions in the SDF documents in that namespace. | |||
For example, if there is an SDF document defining an sdfObject "<tt>Switch</tt>" | For example, if there is an SDF document defining an sdfObject "<tt>Switch</tt>" | |||
with an action "<tt>on</tt>", then the reference to the action would be | with an action "<tt>on</tt>", then the reference to the action would be | |||
"<tt>ns:#/sdfObject/Switch/sdfAction/on</tt>" where <tt>ns</tt> is the namespace prefix | "<tt>ns:#/sdfObject/Switch/sdfAction/on</tt>", where <tt>ns</tt> is the namespac e prefix | |||
(short name for the namespace).</t> | (short name for the namespace).</t> | |||
</section> | </section> | |||
<section anchor="modular-composition"> | <section anchor="modular-composition"> | |||
<name>Modular Composition</name> | <name>Modular Composition</name> | |||
<t>Modular composition of definitions enables an existing definition | <t>Modular composition of definitions enables an existing definition | |||
(could be in the same or another SDF document) to become part of a new definitio n by including a reference to the existing definition within the model namespace .</t> | (which could be in the same or another SDF document) to become part of a new def inition by including a reference to the existing definition within the model nam espace.</t> | |||
<section anchor="use-of-the-sdfref-keyword-to-re-use-a-definition"> | <section anchor="use-of-the-sdfref-keyword-to-re-use-a-definition"> | |||
<name>Use of the "sdfRef" keyword to re-use a definition</name> | <name>Use of the "sdfRef" Keyword to Reuse a Definition</name> | |||
<t>An existing definition may be used as a template for a new definiti on, that is, a new definition is created in the target namespace which uses the defined qualities of some existing definition. | <t>An existing definition may be used as a template for a new definiti on, that is, a new definition is created in the target namespace which uses the defined qualities of some existing definition. | |||
This pattern uses the keyword <tt>sdfRef</tt> as a quality of a new definition w ith a value consisting of a reference to the existing definition that is to be u sed as a template.</t> | This pattern uses the keyword <tt>sdfRef</tt> as a quality of a new definition w ith a value consisting of a reference to the existing definition that is to be u sed as a template.</t> | |||
<t>In the definition that uses <tt>sdfRef</tt>, new qualities may be a dded | <t>In the definition that uses <tt>sdfRef</tt>, new qualities may be a dded | |||
and existing qualities from the referenced definition may be | and existing qualities from the referenced definition may be | |||
overridden. (Note that JSON maps do not have a defined | overridden. (Note that JSON maps do not have a defined | |||
order, so the SDF processor may see these overrides before seeing the | order, so the SDF processor may see these overrides before seeing the | |||
<tt>sdfRef</tt>.)</t> | <tt>sdfRef</tt>.)</t> | |||
<t>Note that the definition referenced by <tt>sdfRef</tt> might contai n | <t>Note that the definition referenced by <tt>sdfRef</tt> might contai n | |||
qualities or definitions that are not valid in the context where the | qualities or definitions that are not valid in the context where the | |||
<tt>sdfRef</tt> is used. | <tt>sdfRef</tt> is used. | |||
In this case, the resulting model, when resolved, may be invalid. | In this case, the resulting model, when resolved, may be invalid. | |||
Example: an sdfRef adds an sdfThing definition in an sdfObject | Example: an sdfRef adds an sdfThing definition in an sdfObject | |||
definition.</t> | definition.</t> | |||
<t>As a convention, overrides are intended to be used only for further | <t>As a convention, overrides are intended to be used only for further | |||
restricting the allowable set of data values. | restricting the allowable set of data values. | |||
Such a usage is shown in <xref target="exa-sdfref"/>: any value allowable for a | Such a usage is shown in <xref target="exa-sdfref"/>: any value allowable for a | |||
<tt>cable-length</tt> also is an allowable value for a <tt>length</tt>, with the | <tt>cable-length</tt> is also an allowable value for a <tt>length</tt>, with the | |||
additional restriction that the length cannot be smaller than 5 cm. | additional restriction that the length cannot be smaller than 5 cm. | |||
(This is labeled as a convention as it cannot be checked in the | (This is labeled as a convention as it cannot be checked in the | |||
general case. | general case. | |||
A quality of implementation consideration for a tool | A quality of implementation consideration for a tool | |||
might be to provide at least some form of checking.) | might be to provide at least some form of checking.) | |||
Note that the example provides a <tt>description</tt> that overrides the | Note that the example provides a <tt>description</tt> that overrides the | |||
<tt>description</tt> of the referenced definition; as this quality is | <tt>description</tt> of the referenced definition; as this quality is | |||
intended for human consumption there is no conflict with the intended | intended for human consumption, there is no conflict with the intended | |||
goal.</t> | goal.</t> | |||
<figure anchor="exa-sdfref"> | <figure anchor="exa-sdfref"> | |||
<name>Using an Override to Further Restrict the Set of Data Values</ name> | <name>Using an Override to Further Restrict the Set of Data Values</ name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
"sdfData": | "sdfData": | |||
"length" : { | "length" : { | |||
"type": "number", | "type": "number", | |||
"minimum": 0, | "minimum": 0, | |||
"unit": "m" | "unit": "m" | |||
"description": "There can be no negative lengths." | "description": "There can be no negative lengths." | |||
} | } | |||
... | ... | |||
"cable-length" : { | "cable-length" : { | |||
"sdfRef": "#/sdfData/length" | "sdfRef": "#/sdfData/length" | |||
"minimum": 5e-2, | "minimum": 5e-2, | |||
"description": "Cables must be at least 5 cm." | "description": "Cables must be at least 5 cm." | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sdfthing-1"> | <section anchor="sdfthing-1"> | |||
<name>sdfThing</name> | <name>sdfThing</name> | |||
<t>An sdfThing is a set of declarations and qualities that may be part o f | <t>An sdfThing is a set of declarations and qualities that may be part o f | |||
a more complex model. | a more complex model. | |||
For example, the sdfObject declarations that make | For example, the sdfObject declarations that make | |||
up the definition of a single socket of an outlet strip could be | up the definition of a single socket of an outlet strip could be | |||
encapsulated in an sdfThing, which itself could be used in a declaration in the sdfThing definition for the outlet strip. | encapsulated in an sdfThing, which itself could be used in a declaration in the sdfThing definition for the outlet strip. | |||
skipping to change at line 2110 ¶ | skipping to change at line 2228 ¶ | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Quality</th> | <th align="left">Quality</th> | |||
<th align="left">Type</th> | <th align="left">Type</th> | |||
<th align="left">Description</th> | <th align="left">Description</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">(common)</td> | <td align="left">(common)</td> | |||
<td align="left"> </td> | <td align="left"> </td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="common-qualities"/></td> | <xref target="common-qualities"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfThing</td> | <td align="left">sdfThing</td> | |||
<td align="left">thing</td> | <td align="left">thing</td> | |||
<td align="left"> </td> | <td align="left"> </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfObject</td> | <td align="left">sdfObject</td> | |||
<td align="left">object</td> | <td align="left">object</td> | |||
<td align="left"> </td> | <td align="left"> </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfProperty</td> | <td align="left">sdfProperty</td> | |||
<td align="left">property</td> | <td align="left">property</td> | |||
<td align="left">zero or more named property definitions for this thing</td> | <td align="left">zero or more named property definitions for this thing</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfAction</td> | <td align="left">sdfAction</td> | |||
<td align="left">action</td> | <td align="left">action</td> | |||
<td align="left">zero or more named action definitions for this th ing</td> | <td align="left">zero or more named action definitions for this th ing</td> | |||
skipping to change at line 2147 ¶ | skipping to change at line 2265 ¶ | |||
<td align="left">zero or more named event definitions for this thi ng</td> | <td align="left">zero or more named event definitions for this thi ng</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">sdfData</td> | <td align="left">sdfData</td> | |||
<td align="left">named-sdq</td> | <td align="left">named-sdq</td> | |||
<td align="left">zero or more named data type definitions that mig ht be used in the above</td> | <td align="left">zero or more named data type definitions that mig ht be used in the above</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">minItems</td> | <td align="left">minItems</td> | |||
<td align="left">number</td> | <td align="left">number</td> | |||
<td align="left">(array) Minimum number of multiplied affordances in array</td> | <td align="left">(array) minimum number of multiplied affordances in array</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">maxItems</td> | <td align="left">maxItems</td> | |||
<td align="left">number</td> | <td align="left">number</td> | |||
<td align="left">(array) Maximum number of multiplied affordances in array</td> | <td align="left">(array) maximum number of multiplied affordances in array</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="iana"> | <section anchor="iana"> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<t><cref anchor="replace-xxxx">RFC Ed.: throughout this section, please re | <!-- [rfced] IANA provided the following notes to the RFC Production Center. We | |||
place RFC XXXX with this RFC number, and remove this note.</cref></t> | believe the document has been updated accordingly. Please review and let us kn | |||
ow if any updates are needed. | ||||
NOTE 1: The authors have notified us that "4.5.1" (Names) needs to be changed to | ||||
"4.5.2" (Units) both in the "Repository" field in Section 7.3 and in Note 1 to | ||||
Table 4 in Section 4.7. | ||||
NOTE 2: With author permission, we've prepended "SDF" to the three new registry | ||||
names that didn't already refer to SDF. | ||||
--> | ||||
<section anchor="media-type"> | <section anchor="media-type"> | |||
<name>Media Type</name> | <name>Media Type</name> | |||
<t>IANA is requested to add the following Media-Type to the "Media Types " | <t>IANA has added the following Media-Type to the "Media Types" | |||
registry <xref target="IANA.media-types"/>.</t> | registry <xref target="IANA.media-types"/>.</t> | |||
<table align="left" anchor="mediatypereg"> | <table align="left" anchor="mediatypereg"> | |||
<name>Media Type Registration for SDF</name> | <name>Media Type Registration for SDF</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Name</th> | <th align="left">Name</th> | |||
<th align="left">Template</th> | <th align="left">Template</th> | |||
<th align="left">Reference</th> | <th align="left">Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">sdf+json</td> | <td align="left">sdf+json</td> | |||
<td align="left">application/sdf+json</td> | <td align="left">application/sdf+json</td> | |||
<td align="left">RFC XXXX, <xref target="media-type"/></td> | <td align="left">RFC 9880, <xref target="media-type"/></td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<dl spacing="compact"> | <dl spacing="normal" newline="false"> | |||
<dt>Type name:</dt> | <dt>Type name:</dt> <dd>application</dd> | |||
<dd> | <dt>Subtype name:</dt> <dd>sdf+json</dd> | |||
<t>application</t> | <dt>Required parameters:</dt> <dd>N/A</dd> | |||
</dd> | <dt>Optional parameters:</dt> <dd>N/A</dd> | |||
<dt>Subtype name:</dt> | <dt>Encoding considerations:</dt> <dd>binary (JSON is UTF-8-encoded | |||
<dd> | text)</dd> | |||
<t>sdf+json</t> | <dt>Security considerations:</dt> <dd><xref target="seccons"/> of | |||
</dd> | RFC 9880</dd> | |||
<dt>Required parameters:</dt> | <dt>Interoperability considerations:</dt> <dd>none</dd> | |||
<dd> | <dt>Published specification:</dt> <dd> <xref target="media-type"/> | |||
<t>N/A</t> | of RFC 9880</dd> | |||
</dd> | ||||
<dt>Optional parameters:</dt> | ||||
<dd> | ||||
<t>N/A</t> | ||||
</dd> | ||||
<dt>Encoding considerations:</dt> | ||||
<dd> | ||||
<t>binary (JSON is UTF-8-encoded text)</t> | ||||
</dd> | ||||
<dt>Security considerations:</dt> | ||||
<dd> | ||||
<t><xref target="seccons"/> of RFC XXXX</t> | ||||
</dd> | ||||
<dt>Interoperability considerations:</dt> | ||||
<dd> | ||||
<t>none</t> | ||||
</dd> | ||||
<dt>Published specification:</dt> | ||||
<dd> | ||||
<t><xref target="media-type"/> of RFC XXXX</t> | ||||
</dd> | ||||
<dt>Applications that use this media type:</dt> | <dt>Applications that use this media type:</dt> | |||
<dd> | <dd>Tools for data and interaction modeling in the Internet of | |||
<t>Tools for data and interaction modeling in the Internet of Things | Things and related environments.</dd> | |||
and related environments</t> | ||||
</dd> | ||||
<dt>Fragment identifier considerations:</dt> | <dt>Fragment identifier considerations:</dt> | |||
<dd> | <dd>A JSON Pointer fragment identifier may be used as defined in | |||
<t>A JSON Pointer fragment identifier may be used, as defined in | <xref section="6" sectionFormat="of" target="RFC6901"/>.</dd> | |||
<xref section="6" sectionFormat="of" target="RFC6901"/>.</t> | ||||
</dd> | ||||
<dt>Additional information:</dt> | <dt>Additional information:</dt> | |||
<dd> | <dd><t><br/></t> | |||
<dl> | <dl spacing="compact" newline="false"> | |||
<dt>Magic number(s):</dt> | <dt>Magic number(s):</dt> | |||
<dd> | <dd>n/a</dd> | |||
<t>n/a</t> | ||||
</dd> | ||||
<dt>File extension(s):</dt> | <dt>File extension(s):</dt> | |||
<dd> | <dd>.sdf.json</dd> | |||
<t>.sdf.json</t> | ||||
</dd> | ||||
<dt>Windows Clipboard Name:</dt> | <dt>Windows Clipboard Name:</dt> | |||
<dd> | <dd>"Semantic Definition Format (SDF) for Data and Interactions of | |||
<t>"Semantic Definition Format (SDF) for Data and Interactions o | Things"</dd> | |||
f Things"</t> | ||||
</dd> | ||||
<dt>Macintosh file type code(s):</dt> | <dt>Macintosh file type code(s):</dt> | |||
<dd> | <dd>n/a</dd> | |||
<t>n/a</t> | ||||
</dd> | ||||
<dt>Macintosh Universal Type Identifier code:</dt> | <dt>Macintosh Universal Type Identifier code:</dt> | |||
<dd> | <dd>org.ietf.sdf-json conforms to public.text</dd> | |||
<t>org.ietf.sdf-json<br/> | ||||
conforms to public.text</t> | ||||
</dd> | ||||
</dl> | </dl> | |||
</dd> | </dd> | |||
<dt>Person & email address to contact for further information:</dt > | <dt>Person & email address to contact for further information:</dt > | |||
<dd> | <dd>ASDF WG mailing list (asdf@ietf.org) or IETF Applications and | |||
<t>ASDF WG mailing list (asdf@ietf.org), | Real-Time Area (art@ietf.org)</dd> | |||
or IETF Applications and Real-Time Area (art@ietf.org)</t> | ||||
</dd> | ||||
<dt>Intended usage:</dt> | <dt>Intended usage:</dt> | |||
<dd> | <dd>COMMON</dd> | |||
<t>COMMON</t> | ||||
</dd> | ||||
<dt>Restrictions on usage:</dt> | <dt>Restrictions on usage:</dt> | |||
<dd> | <dd>none</dd> | |||
<t>none</t> | ||||
</dd> | ||||
<dt>Author/Change controller:</dt> | <dt>Author/Change controller:</dt> | |||
<dd> | <dd>IETF</dd> | |||
<t>IETF</t> | ||||
</dd> | ||||
<dt>Provisional registration:</dt> | <dt>Provisional registration:</dt> | |||
<dd> | <dd>no</dd> | |||
<t>no</t> | ||||
</dd> | ||||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="content-format"> | <section anchor="content-format"> | |||
<name>Content-Format</name> | <name>Content-Format</name> | |||
<t>This document adds the following Content-Format to the "CoAP | <t>IANA has added the following Content-Format to the "CoAP | |||
Content-Formats" registry, | Content-Formats" registry | |||
within the "Constrained RESTful Environments (CoRE) Parameters" | within the "Constrained RESTful Environments (CoRE) Parameters" | |||
registry group <xref target="IANA.core-parameters"/>, where 434 comes from the " IETF Review" 256-999 range.</t> | registry group <xref target="IANA.core-parameters"/>.</t> | |||
<table align="left" anchor="contentformatreg"> | <table align="left" anchor="contentformatreg"> | |||
<name>SDF Content-format Registration</name> | <name>SDF Content-Format Registration</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Content Type</th> | <th align="left">Content Type</th> | |||
<th align="left">Content Coding</th> | <th align="left">Content Coding</th> | |||
<th align="left">ID</th> | <th align="left">ID</th> | |||
<th align="left">Reference</th> | <th align="left">Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">application/sdf+json</td> | <td align="left">application/sdf+json</td> | |||
<td align="left">-</td> | <td align="left">-</td> | |||
<td align="left">434</td> | <td align="left">434</td> | |||
<td align="left">RFC XXXX</td> | <td align="left">RFC 9880</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>// RFC Ed.: 434 was earmarked in <eref target="https://mailarchive.ie | ||||
tf.org/arch/msg/core-parameters/iLDsdxk80YO9IsLMXMAgcx5S8Ak/">https://mailarchiv | ||||
e.ietf.org/arch/msg/core-parameters/iLDsdxk80YO9IsLMXMAgcx5S8Ak/</eref>; | ||||
please replace 434 with the assigned ID, remove the | ||||
requested range, and remove this note.<br/> | ||||
// RFC Ed.: please replace RFC XXXX with this RFC number and remove this note.</ | ||||
t> | ||||
</section> | </section> | |||
<section anchor="unit-urn"> | <section anchor="unit-urn"> | |||
<name>IETF URN Sub-namespace for Unit Names (urn:ietf:params:unit)</name | <name>IETF URN Sub-Namespace for Unit Names (urn:ietf:params:unit)</name | |||
> | > | |||
<t>IANA is requested to register the following value in the "<xref secti | <t>IANA has registered the following value in the "IETF URN Sub-namespac | |||
on="IETF URN Sub-namespace for Registered Protocol Parameter Identifiers" relati | e for Registered Protocol Parameter Identifiers" registry in <xref target="IANA. | |||
ve="#params-1" sectionFormat="bare" target="IANA.params"/>" registry in <xref ta | params"/>, following the template in | |||
rget="IANA.params"/>, following the template in | ||||
<xref target="BCP73"/>:</t> | <xref target="BCP73"/>:</t> | |||
<dl> | <dl> | |||
<dt>Registry name:</dt> | <dt>Registry name:</dt> | |||
<dd> | <dd> | |||
<t>unit</t> | <t>unit</t> | |||
</dd> | </dd> | |||
<dt>Specification:</dt> | <dt>Specification:</dt> | |||
<dd> | <dd> | |||
<t>RFC XXXX</t> | <t>RFC 9880</t> | |||
</dd> | </dd> | |||
<dt>Repository:</dt> | <dt>Repository:</dt> | |||
<!-- [rfced] We have updated this text to remove the use of relative references. | ||||
Please review. | ||||
Original: | ||||
Repository: combining the symbol values from the SenML Units | ||||
registry and the Secondary Units registry in [IANA.senml] as | ||||
specified by Sections 4.5.1 and 12.1 of [RFC8428] and Section 3 of | ||||
[RFC8798], respectively (which by the registration policy are | ||||
guaranteed to be non-overlapping). | ||||
Current: | ||||
Repository: Combining the symbol values from the "SenML Units" | ||||
registry and the "Secondary Units" registry in the "Sensor | ||||
Measurement Lists (SenML)" registry group [IANA.senml] as | ||||
specified by Sections 4.5.2 and 12.1 of [RFC8428] and Section 3 of | ||||
[RFC8798], respectively (which, by the registration policy, are | ||||
guaranteed to be non-overlapping). | ||||
--> | ||||
<dd> | <dd> | |||
<t>combining the symbol values from the <xref section="SenML Units" | <t>Combining the symbol values from the "SenML Units" registry and t | |||
relative="#senml-units" sectionFormat="bare" target="IANA.senml"/> registry and | he "Secondary Units" registry in the "Sensor Measurement Lists (SenML)" registry | |||
the <xref section="Secondary Units" relative="#secondary-units" sectionFormat="b | group <xref target="IANA.senml"/> as specified by Sections <xref target="RFC842 | |||
are" target="IANA.senml"/> registry in <xref target="IANA.senml"/> as specified | 8" section="4.5.2" sectionFormat="bare"/> and <xref target="RFC8428" section="12 | |||
by Sections <xref target="RFC8428" section="4.5.1" sectionFormat="bare"/> and <x | .1" sectionFormat="bare"/> of <xref target="RFC8428"/> and <xref section="3" sec | |||
ref target="RFC8428" section="12.1" sectionFormat="bare"/> of <xref target="RFC8 | tionFormat="of" target="RFC8798"/>, | |||
428"/> and <xref section="3" sectionFormat="of" target="RFC8798"/>, | respectively (which, by the registration policy, are guaranteed to be | |||
respectively (which by the registration policy are guaranteed to be | ||||
non-overlapping).</t> | non-overlapping).</t> | |||
</dd> | </dd> | |||
<dt>Index value:</dt> | <dt>Index value:</dt> | |||
<dd> | <dd> | |||
<!-- [rfced] Please review the text below. We note that "sub-delims" is not | ||||
mentioned in Section 2.3 of RFC 3986 [STD66]. The term is defined in | ||||
Section 2.2 of RFC 3986 [STD66]. Should Section 2.3 be updated to Section | ||||
2.2? | ||||
Original: | ||||
Index value: Percent-encoding (Section 2.1 of RFC 3986 [STD66]) is | ||||
required of any characters in unit names except for the set | ||||
"unreserved" (Section 2.3 of RFC 3986 [STD66]), the set "sub- | ||||
delims" (Section 2.3 of RFC 3986 [STD66]), ":" or "@" (i.e., the | ||||
result must match the ABNF rule "pchar" in Section 3.3 of RFC 3986 | ||||
[STD66]). | ||||
--> | ||||
<t>Percent-encoding (Section <xref target="RFC3986" section="2.1" se ctionFormat="bare"/> of RFC 3986 <xref target="STD66"/>) is required of any | <t>Percent-encoding (Section <xref target="RFC3986" section="2.1" se ctionFormat="bare"/> of RFC 3986 <xref target="STD66"/>) is required of any | |||
characters in unit names except for the set "<tt>unreserved</tt>" (Section <xref target="RFC3986" section="2.3" sectionFormat="bare"/> of RFC 3986 <xref target= "STD66"/>), the set "<tt>sub-delims</tt>" (Section <xref target="RFC3986" sectio n="2.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>), "<tt>:</tt>" or "<tt>@</tt>" (i.e., the result must match the ABNF | characters in unit names except for the set "<tt>unreserved</tt>" (Section <xref target="RFC3986" section="2.3" sectionFormat="bare"/> of RFC 3986 <xref target= "STD66"/>), the set "<tt>sub-delims</tt>" (Section <xref target="RFC3986" sectio n="2.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>), and "<tt>:</ tt>" or "<tt>@</tt>" (i.e., the result must match the ABNF | |||
rule "<tt>pchar</tt>" in Section <xref target="RFC3986" section="3.3" sectionFor mat="bare"/> of RFC 3986 <xref target="STD66"/>).</t> | rule "<tt>pchar</tt>" in Section <xref target="RFC3986" section="3.3" sectionFor mat="bare"/> of RFC 3986 <xref target="STD66"/>).</t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="unit-colonrn"> | <section anchor="unit-colonrn"> | |||
<name>SenML registry group</name> | <name>SenML Registry Group</name> | |||
<t>IANA is requested to add the following note to the SenML registry gro | <t>IANA has added the following note to the "Sensor Measurement Lists (S | |||
up <xref target="IANA.senml"/>:</t> | enML)" registry group <xref target="IANA.senml"/>:</t> | |||
<blockquote> | <blockquote> | |||
<t>In SDF [RFC XXXX], a URI unit name is distinguished from a register ed unit name | <t>In SDF [RFC9880], a URI unit name is distinguished from a registere d unit name | |||
by the presence of a colon; any registered unit name that contains | by the presence of a colon; any registered unit name that contains | |||
a colon can therefore not be directly used in SDF.</t> | a colon can therefore not be directly used in SDF.</t> | |||
</blockquote> | </blockquote> | |||
</section> | </section> | |||
<section anchor="registries"> | <section anchor="registries"> | |||
<name>Registries</name> | <name>Registries</name> | |||
<t>IANA is requested to create a "Semantic Definition Format (SDF)" regi stry group, with the | <t>IANA has created the "Semantic Definition Format (SDF)" registry grou p with the | |||
registries defined in this Section.</t> | registries defined in this Section.</t> | |||
<section anchor="qn"> | <section anchor="qn"> | |||
<name>Quality Names</name> | <name>SDF Quality Names</name> | |||
<t>IANA is requested to create a "Quality Names" registry in | <t>IANA has created the "SDF Quality Names" registry in | |||
the "Semantic Definition Format (SDF)" registry group, with the following templa | the "Semantic Definition Format (SDF)" registry group with the following templat | |||
te:</t> | e:</t> | |||
<dl> | <dl> | |||
<dt>Name:</dt> | <dt>Name:</dt> | |||
<dd> | <dd> | |||
<t>A quality name composed of ASCII letters, digits, and dollar si gns, starting | <t>A quality name composed of ASCII letters, digits, and dollar si gns, starting | |||
with a lower case ASCII letter or a dollar sign (i.e., using a | with a lowercase ASCII letter or a dollar sign (i.e., using a | |||
pattern of "<tt>[a-z$][A-Za-z$0-9]*</tt>").</t> | pattern of "<tt>[a-z$][A-Za-z$0-9]*</tt>").</t> | |||
</dd> | </dd> | |||
<dt>Brief Description:</dt> | <dt>Brief Description:</dt> | |||
<dd> | <dd> | |||
<t>A brief description.</t> | <t>A brief description.</t> | |||
</dd> | </dd> | |||
<dt>Reference:</dt> | <dt>Reference:</dt> | |||
<dd> | <dd> | |||
<t>A pointer to a specification.</t> | <t>A pointer to a specification.</t> | |||
</dd> | </dd> | |||
<dt>Change Controller:</dt> | <dt>Change Controller:</dt> | |||
<dd> | <dd> | |||
<t>(see Section <xref target="RFC8126" section="2.3" sectionFormat ="bare"/> of RFC 8126 <xref target="BCP26"/>)</t> | <t>(See Section <xref target="RFC8126" section="2.3" sectionFormat ="bare"/> of RFC 8126 <xref target="BCP26"/>)</t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<t>Quality Names in this registry are intended to be registered in | <t>Quality Names in this registry are intended to be registered in | |||
conjunction with RFCs and activities of the IETF.</t> | conjunction with RFCs and activities of the IETF.</t> | |||
<t>The registration policy is Specification Required as per Section <x ref target="RFC8126" section="4.6" sectionFormat="bare"/> of RFC 8126 <xref targ et="BCP26"/>. | <t>The registration policy is Specification Required as per Section <x ref target="RFC8126" section="4.6" sectionFormat="bare"/> of RFC 8126 <xref targ et="BCP26"/>. | |||
(Note that the policy is not "RFC Required" or "IETF Review" Sections <xref targ | Note that the policy is not "RFC Required" or "IETF Review" (Sections <xref targ | |||
et="RFC8126" section="4.7" sectionFormat="bare"/> and <xref target="RFC8126" sec | et="RFC8126" | |||
tion="4.8" sectionFormat="bare"/> of RFC 8126 <xref target="BCP26"/> so that reg | section="4.7" sectionFormat="bare"/> and <xref target="RFC8126" section="4.8" se | |||
istrations can be made earlier | ctionFormat="bare"/> of RFC 8126 <xref target="BCP26"/>) so that registrations c | |||
an be made earlier | ||||
in the process, even earlier than foreseen in <xref target="BCP100"/>.)</t> | in the process, even earlier than foreseen in <xref target="BCP100"/>.)</t> | |||
<t>The instructions to the Experts are:</t> | <t>The instructions to the Experts are:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<t>to ascertain that the specification is available in an immutabl e | <t>to ascertain that the specification is available in an immutabl e | |||
reference and has achieved a good level of review in conjunction with | reference and has achieved a good level of review in conjunction with | |||
RFCs or activities of the IETF, and</t> | RFCs or activities of the IETF, and</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>to be frugal in the allocation of quality names that are sugges tive | <t>to be frugal in the allocation of quality names that are sugges tive | |||
of generally applicable semantics, keeping them in reserve for | of generally applicable semantics, keeping them in reserve for | |||
qualities that are likely to enjoy wide use and can make good use of | qualities that are likely to enjoy wide use and can make good use of | |||
their conciseness.</t> | their conciseness.</t> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t>The "Quality Names" registry starts out as in | <t>The "SDF Quality Names" registry starts out as in | |||
<xref target="tab-quality-names"/>; all references for these initial entries are to | <xref target="tab-quality-names"/>; all references for these initial entries are to | |||
RFC XXXX and all change controllers are given as "IETF"".</t> | RFC 9880 (this document) and all change controllers are "IETF"".</t> | |||
<table anchor="tab-quality-names"> | <table anchor="tab-quality-names"> | |||
<name>Initial Content of Quality Names Registry</name> | <name>Initial Content of the SDF Quality Names Registry</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Name</th> | <th align="left">Name</th> | |||
<th align="left">Brief Description</th> | <th align="left">Brief Description</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">$comment</td> | <td align="left">$comment</td> | |||
<td align="left">source code comments only, no semantics</td> | <td align="left">source code comments only, no semantics</td> | |||
skipping to change at line 2547 ¶ | skipping to change at line 2655 ¶ | |||
<td align="left">engineering unit and scale (per SenML registry) </td> | <td align="left">engineering unit and scale (per SenML registry) </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">writable</td> | <td align="left">writable</td> | |||
<td align="left">boolean: can the item be written to?</td> | <td align="left">boolean: can the item be written to?</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<section anchor="qnp"> | <section anchor="qnp"> | |||
<name>Quality Name Prefixes</name> | <name>SDF Quality Name Prefixes</name> | |||
<t>IANA is requested to create a "Quality Name Prefixes" registry in | <t>IANA has created the "SDF Quality Name Prefixes" registry in | |||
the "Semantic Definition Format (SDF)" registry group, with the following templa | the "Semantic Definition Format (SDF)" registry group with the following templat | |||
te:</t> | e:</t> | |||
<dl> | <dl> | |||
<dt>Prefix:</dt> | <dt>Prefix:</dt> | |||
<dd> | <dd> | |||
<t>A quality name prefix composed of lower case ASCII letters and digits, starting | <t>A quality name prefix composed of lower case ASCII letters and digits, starting | |||
with a lower case ASCII letter (i.e., using a pattern of "<tt>[a-z][a-z0-9]*</t t>").</t> | with a lower case ASCII letter (i.e., using a pattern of "<tt>[a-z][a-z0-9]*</t t>").</t> | |||
</dd> | </dd> | |||
<dt>Contact:</dt> | <dt>Contact:</dt> | |||
<dd> | <dd> | |||
<t>A contact point for the organization that assigns quality names with | <t>A contact point for the organization that assigns quality names with | |||
this prefix.</t> | this prefix.</t> | |||
</dd> | </dd> | |||
<dt>Reference:</dt> | <dt>Reference:</dt> | |||
<dd> | <dd> | |||
<t>A pointer to additional information, if available.</t> | <t>A pointer to additional information, if available.</t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<t>Quality Name Prefixes are intended to be registered by organization s | <t>Quality Name Prefixes are intended to be registered by organization s | |||
that plan to define quality names constructed with an | that plan to define quality names constructed with an | |||
organization-specifix prefix (<xref target="gnqn"/>).</t> | organization-specific prefix (<xref target="gnqn"/>).</t> | |||
<t>The registration policy is Expert Review as per Section <xref targe t="RFC8126" section="4.5" sectionFormat="bare"/> of RFC 8126 <xref target="BCP26 "/>. | <t>The registration policy is Expert Review as per Section <xref targe t="RFC8126" section="4.5" sectionFormat="bare"/> of RFC 8126 <xref target="BCP26 "/>. | |||
The instructions to the Expert are to ascertain that the organization | The instructions to the Expert are to ascertain that the organization | |||
will handle quality names constructed using their prefix in a way that | will handle quality names constructed using their prefix in a way that | |||
roughly achieves the objectives for an IANA registry that support | roughly achieves the objectives for an IANA registry that supports | |||
interoperability of SDF models employing these quality names, | interoperability of SDF models employing these quality names, | |||
including:</t> | including:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<t>Stability, "stable and permanent";</t> | <t>Stability, "stable and permanent";</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>Transparency, "readily available", "in sufficient detail" (Sect ion <xref target="RFC8126" section="4.6" sectionFormat="bare"/> of RFC 8126 <xre f target="BCP26"/>).</t> | <t>Transparency, "readily available" and "in sufficient detail" (S ection <xref target="RFC8126" section="4.6" sectionFormat="bare"/> of RFC 8126 < xref target="BCP26"/>).</t> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t>The "Quality Name Prefixes" registry starts out empty.</t> | <t>The "SDF Quality Name Prefixes" registry is empty at this time.</t> | |||
</section> | </section> | |||
<section anchor="sdftype-values"> | <section anchor="sdftype-values"> | |||
<name>sdfType Values</name> | <name>sdfType Values</name> | |||
<t>IANA is requested to create a "sdfType values" registry in | <t>IANA has created the "sdfType Values" registry in | |||
the "Semantic Definition Format (SDF)" registry group, with the following templa | the "Semantic Definition Format (SDF)" registry group with the following templat | |||
te:</t> | e:</t> | |||
<dl> | <dl> | |||
<dt>Name:</dt> | <dt>Name:</dt> | |||
<dd> | <dd> | |||
<t>A name composed of lower case ASCII letters, digits and <tt>-</ tt> (ASCII | <t>A name composed of lower case ASCII letters, digits and <tt>-</ tt> (ASCII | |||
hyphen/minus) characters, starting with a lower case ASCII letter | hyphen/minus) characters, starting with a lower case ASCII letter | |||
(i.e., using a pattern of "<tt>[a-z][-a-z0-9]*</tt>").</t> | (i.e., using a pattern of "<tt>[a-z][-a-z0-9]*</tt>").</t> | |||
</dd> | </dd> | |||
<dt>Description:</dt> | <dt>Description:</dt> | |||
<dd> | <dd> | |||
<t>A short description of the information model level structure an d semantics</t> | <t>A short description of the information model level structure an d semantics.</t> | |||
</dd> | </dd> | |||
<dt>type:</dt> | <dt>type:</dt> | |||
<dd> | <dd> | |||
<t>The value of the quality "type" to be used with this sdfType</t > | <t>The value of the quality "type" to be used with this sdfType.</ t> | |||
</dd> | </dd> | |||
<dt>JSON Representation</dt> | <dt>JSON Representation</dt> | |||
<dd> | <dd> | |||
<t>A short description of a JSON representation that can be used f or | <t>A short description of a JSON representation that can be used f or | |||
this sdfType. As per <xref target="sdftype"/>, this <bcp14>MUST</bcp14> be cons istent with the type.</t> | this sdfType. As per <xref target="sdftype"/>, this <bcp14>MUST</bcp14> be cons istent with the type.</t> | |||
</dd> | </dd> | |||
<dt>Reference:</dt> | <dt>Reference:</dt> | |||
<dd> | <dd> | |||
<t>A more detailed specification of meaning and use of sdfType.</t > | <t>A more detailed specification of meaning and use of sdfType.</t > | |||
</dd> | </dd> | |||
skipping to change at line 2624 ¶ | skipping to change at line 2732 ¶ | |||
<t>sdfType values are intended to be registered to enable modeling add itional | <t>sdfType values are intended to be registered to enable modeling add itional | |||
SDF-specific types (see <xref target="sdftype"/>).</t> | SDF-specific types (see <xref target="sdftype"/>).</t> | |||
<t>The registration policy is Specification Required as per Section <x ref target="RFC8126" section="4.6" sectionFormat="bare"/> of RFC 8126 <xref targ et="BCP26"/>. The instructions to the Expert are to ascertain that the | <t>The registration policy is Specification Required as per Section <x ref target="RFC8126" section="4.6" sectionFormat="bare"/> of RFC 8126 <xref targ et="BCP26"/>. The instructions to the Expert are to ascertain that the | |||
specification provides enough detail to enable interoperability | specification provides enough detail to enable interoperability | |||
between implementations of the sdfType being registered, and that | between implementations of the sdfType being registered, and that | |||
names are chosen with enough specificity that ecosystem-specific | names are chosen with enough specificity that ecosystem-specific | |||
sdfTypes will not be confused with more generally applicable ones.</t> | sdfTypes will not be confused with more generally applicable ones.</t> | |||
<t>The initial set of registrations is described in <xref target="sdft ype1"/>.</t> | <t>The initial set of registrations is described in <xref target="sdft ype1"/>.</t> | |||
</section> | </section> | |||
<section anchor="fn"> | <section anchor="fn"> | |||
<name>Feature Names</name> | <name>SDF Feature Names</name> | |||
<t>IANA is requested to create a "Feature Names" registry in the "Sema | <t>IANA has created the "SDF Feature Names" registry in the "Semantic | |||
ntic | Definition Format (SDF)" registry group with the following template:</t> | |||
Definition Format (SDF)" registry group, with the following template:</t> | ||||
<dl> | <dl> | |||
<dt>Name:</dt> | <dt>Name:</dt> | |||
<dd> | <dd> | |||
<t>A feature name composed of ASCII letters, digits, and dollar si gns, starting | <t>A feature name composed of ASCII letters, digits, and dollar si gns, starting | |||
with a lower case ASCII letter or a dollar sign (i.e., using a | with a lower case ASCII letter or a dollar sign (i.e., using a | |||
pattern of "<tt>[a-z$][A-Za-z$0-9]*</tt>").</t> | pattern of "<tt>[a-z$][A-Za-z$0-9]*</tt>").</t> | |||
</dd> | </dd> | |||
<dt>Brief Description:</dt> | <dt>Brief Description:</dt> | |||
<dd> | <dd> | |||
<t>A brief description.</t> | <t>A brief description.</t> | |||
</dd> | </dd> | |||
<dt>Reference:</dt> | <dt>Reference:</dt> | |||
<dd> | <dd> | |||
<t>A pointer to a specification.</t> | <t>A pointer to a specification.</t> | |||
</dd> | </dd> | |||
<dt>Change Controller:</dt> | <dt>Change Controller:</dt> | |||
<dd> | <dd> | |||
<t>(see Section <xref target="RFC8126" section="2.3" sectionFormat ="bare"/> of RFC 8126 <xref target="BCP26"/>)</t> | <t>(See Section <xref target="RFC8126" section="2.3" sectionFormat ="bare"/> of RFC 8126 <xref target="BCP26"/>)</t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<t>The registration policy is Specification Required as per Section <x ref target="RFC8126" section="4.6" sectionFormat="bare"/> of RFC 8126 <xref targ et="BCP26"/>.</t> | <t>The registration policy is Specification Required as per Section <x ref target="RFC8126" section="4.6" sectionFormat="bare"/> of RFC 8126 <xref targ et="BCP26"/>.</t> | |||
<t>The instructions to the Experts are:</t> | <t>The instructions to the Experts are:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<t>to ascertain that the specification is available in an immutabl e | <t>to ascertain that the specification is available in an immutabl e | |||
reference and has achieved a good level of review, and</t> | reference and has achieved a good level of review, and</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>to be frugal in the allocation of feature names that are sugges tive | <t>to be frugal in the allocation of feature names that are sugges tive | |||
of generally applicable semantics, keeping them in reserve for | of generally applicable semantics, keeping them in reserve for | |||
features that are likely to enjoy wide use and can make good use of | features that are likely to enjoy wide use and can make good use of | |||
their conciseness.</t> | their conciseness.</t> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t>The "Feature Names" registry starts out empty.</t> | <t>The "SDF Feature Names" registry is empty at this time.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="seccons"> | <section anchor="seccons"> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<t>Some wider security considerations applicable to Things are discussed | <t>Some wider security considerations applicable to Things are discussed | |||
in <xref target="RFC8576"/>.</t> | in <xref target="RFC8576"/>.</t> | |||
<t><xref section="5" sectionFormat="of" target="RFC8610"/> gives an overvi ew over security considerations | <t><xref section="5" sectionFormat="of" target="RFC8610"/> gives an overvi ew over security considerations | |||
that arise when formal description techniques are used to govern | that arise when formal description techniques are used to govern | |||
interoperability; analogs of these security considerations can apply | interoperability; analogs of these security considerations can apply | |||
to SDF.</t> | to SDF.</t> | |||
<t>The security considerations of underlying building blocks such as | <t>The security considerations of underlying building blocks such as | |||
those detailed in Section <xref target="RFC3629" section="10" sectionFormat="bar e"/> of RFC 3629 <xref target="STD63"/> apply.</t> | those detailed in Section <xref target="RFC3629" section="10" sectionFormat="bar e"/> of RFC 3629 <xref target="STD63"/> apply.</t> | |||
<t>SDF uses JSON as a representation language. | <t>SDF uses JSON as a representation language. | |||
For a number of | For a number of | |||
cases, <xref target="STD90"/> indicates that implementation behavior for certain constructs | cases, <xref target="STD90"/> indicates that implementation behavior for certain constructs | |||
allowed by the JSON grammar is unpredictable.</t> | allowed by the JSON grammar is unpredictable.</t> | |||
<t>Implementations need to be robust against invalid or unpredictable | <t>Implementations need to be robust against invalid or unpredictable | |||
cases on input, preferably by rejecting input that is invalid or | cases on input, preferably by rejecting input that is invalid or | |||
that would lead to unpredictable behavior, and need to avoid generating | that would lead to unpredictable behavior, and avoid generating | |||
these cases on output.</t> | these cases on output.</t> | |||
<t>Implementations of model languages may also exhibit | <t>Implementations of model languages may also exhibit | |||
performance-related availability issues when the attacker can control | performance-related availability issues when the attacker can control | |||
the input, see <xref section="4.1" sectionFormat="of" target="RFC9535"/> for a b rief discussion and | the input, see <xref section="4.1" sectionFormat="of" target="RFC9535"/> for a b rief discussion and | |||
<xref section="8" sectionFormat="of" target="RFC9485"/> for considerations speci fic to the use | <xref section="8" sectionFormat="of" target="RFC9485"/> for considerations speci fic to the use | |||
of <tt>pattern</tt>.</t> | of <tt>pattern</tt>.</t> | |||
<t>SDF may be used in two processes that are often security relevant: | <t>SDF may be used in two processes that are often security relevant: | |||
model-based <em>validation</em> of data that is intended to be described by SDF models, and | model-based <em>validation</em> of data that is intended to be described by SDF models and | |||
model-based <em>augmentation</em> of these data with information obtained from t he SDF | model-based <em>augmentation</em> of these data with information obtained from t he SDF | |||
models that apply.</t> | models that apply.</t> | |||
<t>Implementations need to ascertain the provenance (and thus | <t>Implementations need to ascertain the provenance (and thus | |||
authenticity and integrity) and applicability of | authenticity and integrity) and applicability of | |||
the SDF models they employ operationally in such security relevant ways. | the SDF models they employ operationally in such security-relevant ways. | |||
Implementations that make use of the composition mechanisms defined in this | Implementations that make use of the composition mechanisms defined in this | |||
document need to do this for each of the components they combine | document need to do this for each of the components they combine | |||
into the SDF models they employ. | into the SDF models they employ. | |||
Essentially, this process needs to undergo the same care and scrutiny | Essentially, this process needs to undergo the same care and scrutiny | |||
as any other introduction of source code into a build environment; the | as any other introduction of source code into a build environment; the | |||
possibility of supply-chain attacks on the modules imported needs to | possibility of supply-chain attacks on the modules imported needs to | |||
be considered.</t> | be considered.</t> | |||
<t>Specifically, implementations might rely on model-based input | <t>Specifically, implementations might rely on model-based input | |||
validation for enforcing certain properties of the data structure | validation for enforcing certain properties of the data structure | |||
ingested (which, if not validated, could lead to malfunctions such as | ingested (which, if not validated, could lead to malfunctions such as | |||
crashes and remote code execution). | crashes and remote code execution). | |||
These implementations need to be particularly careful | These implementations need to be particularly careful | |||
about the data models they apply, including their provenance and | about the data models they apply, including their provenance and | |||
potential changes of these properties that upgrades to the referenced | potential changes of these properties that upgrades to the referenced | |||
modules may (inadvertently or as part of an attack) cause. | modules may (inadvertently or as part of an attack) cause. | |||
More generally speaking, implementations should strive to be robust | More generally speaking, implementations should strive to be robust | |||
against expected and unexpected limitations of the model-based input | against expected and unexpected limitations of the model-based input | |||
validation mechanisms and their implementations.</t> | validation mechanisms and their implementations.</t> | |||
<t>Similarly, implementations that rely on model-based augmentation may | <t>Similarly, implementations that rely on model-based augmentation may | |||
generate false data from their inputs; this is an integrity violation | generate false data from their inputs; this is an integrity violation | |||
in any case but also can possibly be exploited for further attacks.</t> | in any case, but also can possibly be exploited for further attacks.</t> | |||
<!-- [rfced] What is "these" referring to in the sentence below? | ||||
Current: | ||||
In applications that dynamically acquire models and obtain modules | ||||
from module references in these, the security considerations of | ||||
dereferenceable identifiers apply (see [DEREFERENCEABLE-ID-PATTERN] | ||||
for a more extensive discussion of dereferenceable identifiers). | ||||
Perhaps: | ||||
In applications that dynamically acquire models and obtain modules | ||||
from module references in these applications, the security considerations of | ||||
dereferenceable identifiers apply (see [DEREF-ID-PATTERN] | ||||
for a more extensive discussion of dereferenceable identifiers). | ||||
--> | ||||
<t>In applications that dynamically acquire models and obtain modules | <t>In applications that dynamically acquire models and obtain modules | |||
from module references in these, the security considerations of | from module references in these, the security considerations of | |||
dereferenceable identifiers apply (see <xref target="I-D.bormann-t2trg-deref-id" /> for a more extensive | dereferenceable identifiers apply (see <xref target="I-D.bormann-t2trg-deref-id" /> for a more extensive | |||
discussion of dereferenceable identifiers).</t> | discussion of dereferenceable identifiers).</t> | |||
<t>There may be confidentiality requirements on SDF models, both on their | <t>There may be confidentiality requirements on SDF models, both on their | |||
content and on the fact that a specific model is used in a particular | content and on the fact that a specific model is used in a particular | |||
Thing or environment. | Thing or environment. | |||
The present specification does not discuss model discovery or define | The present specification does not discuss model discovery or define | |||
an access control model for SDF models, nor does it define a way to | an access control model for SDF models, nor does it define a way to | |||
obtain selective disclosure where that may be required. | obtain selective disclosure where that may be required. | |||
It is likely that these definitions require additional context from | It is likely that these definitions require additional context from | |||
underlying ecosystems and the characteristics of the protocols | underlying ecosystems and the characteristics of the protocols | |||
employed there; this is therefore left as future work (e.g., for | employed there; therefore, this is left as future work (e.g., for | |||
documents such as <xref target="I-D.bormann-asdf-sdf-mapping"/>).</t> | documents such as <xref target="I-D.bormann-asdf-sdf-mapping"/>).</t> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<displayreference target="I-D.irtf-t2trg-rest-iot" to="REST-IOT"/> | ||||
<displayreference target="I-D.bormann-t2trg-deref-id" to="DEREF-ID-PATTERN"/ | ||||
> | ||||
<displayreference target="I-D.bormann-asdf-sdftype-link" to="SDFTYPE-LINK"/> | ||||
<displayreference target="I-D.bormann-asdf-sdf-mapping" to="SDF-MAPPING"/> | ||||
<displayreference target="I-D.handrews-json-schema" to="JSO7"/> | ||||
<displayreference target="I-D.handrews-json-schema-validation" to="JSO7V"/> | ||||
<displayreference target="I-D.fge-json-schema-validation" to="JSO4V"/> | ||||
<displayreference target="I-D.zyp-json-schema" to="JSO4"/> | ||||
<references anchor="sec-combined-references"> | <references anchor="sec-combined-references"> | |||
<name>References</name> | <name>References</name> | |||
<references anchor="sec-normative-references"> | <references anchor="sec-normative-references"> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<reference anchor="IANA.senml" target="https://www.iana.org/assignments/ senml"> | <reference anchor="IANA.senml" target="https://www.iana.org/assignments/ senml"> | |||
<front> | <front> | |||
<title>Sensor Measurement Lists (SenML)</title> | <title>Sensor Measurement Lists (SenML)</title> | |||
<author> | <author> | |||
<organization>IANA</organization> | <organization>IANA</organization> | |||
</author> | </author> | |||
skipping to change at line 2769 ¶ | skipping to change at line 2901 ¶ | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="IANA.core-parameters" target="https://www.iana.org/as signments/core-parameters"> | <reference anchor="IANA.core-parameters" target="https://www.iana.org/as signments/core-parameters"> | |||
<front> | <front> | |||
<title>Constrained RESTful Environments (CoRE) Parameters</title> | <title>Constrained RESTful Environments (CoRE) Parameters</title> | |||
<author> | <author> | |||
<organization>IANA</organization> | <organization>IANA</organization> | |||
</author> | </author> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="RFC3339"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
<front> | 339.xml"/> | |||
<title>Date and Time on the Internet: Timestamps</title> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
<author fullname="G. Klyne" initials="G." surname="Klyne"/> | 428.xml"/> | |||
<author fullname="C. Newman" initials="C." surname="Newman"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
<date month="July" year="2002"/> | 798.xml"/> | |||
<abstract> | ||||
<t>This document defines a date and time format for use in Interne | ||||
t protocols that is a profile of the ISO 8601 standard for representation of dat | ||||
es and times using the Gregorian calendar.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3339"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3339"/> | ||||
</reference> | ||||
<reference anchor="RFC8428"> | ||||
<front> | ||||
<title>Sensor Measurement Lists (SenML)</title> | ||||
<author fullname="C. Jennings" initials="C." surname="Jennings"/> | ||||
<author fullname="Z. Shelby" initials="Z." surname="Shelby"/> | ||||
<author fullname="J. Arkko" initials="J." surname="Arkko"/> | ||||
<author fullname="A. Keranen" initials="A." surname="Keranen"/> | ||||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | ||||
<date month="August" year="2018"/> | ||||
<abstract> | ||||
<t>This specification defines a format for representing simple sen | ||||
sor measurements and device parameters in Sensor Measurement Lists (SenML). Repr | ||||
esentations are defined in JavaScript Object Notation (JSON), Concise Binary Obj | ||||
ect Representation (CBOR), Extensible Markup Language (XML), and Efficient XML I | ||||
nterchange (EXI), which share the common SenML data model. A simple sensor, such | ||||
as a temperature sensor, could use one of these media types in protocols such a | ||||
s HTTP or the Constrained Application Protocol (CoAP) to transport the measureme | ||||
nts of the sensor or to be configured.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8428"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8428"/> | ||||
</reference> | ||||
<reference anchor="RFC8798"> | ||||
<front> | ||||
<title>Additional Units for Sensor Measurement Lists (SenML)</title> | ||||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | ||||
<date month="June" year="2020"/> | ||||
<abstract> | ||||
<t>The Sensor Measurement Lists (SenML) media type supports the in | ||||
dication of units for a quantity represented. This short document registers a nu | ||||
mber of additional unit names in the IANA registry for units in SenML. It also d | ||||
efines a registry for secondary units that cannot be in SenML's main registry, a | ||||
s they are derived by linear transformation from units already in that registry. | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8798"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8798"/> | ||||
</reference> | ||||
<referencegroup anchor="STD66" target="https://www.rfc-editor.org/info/s td66"> | <referencegroup anchor="STD66" target="https://www.rfc-editor.org/info/s td66"> | |||
<reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rf | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC | |||
c3986"> | .3986.xml"/> | |||
<front> | ||||
<title>Uniform Resource Identifier (URI): Generic Syntax</title> | ||||
<author fullname="T. Berners-Lee" initials="T." surname="Berners-L | ||||
ee"/> | ||||
<author fullname="R. Fielding" initials="R." surname="Fielding"/> | ||||
<author fullname="L. Masinter" initials="L." surname="Masinter"/> | ||||
<date month="January" year="2005"/> | ||||
<abstract> | ||||
<t>A Uniform Resource Identifier (URI) is a compact sequence of | ||||
characters that identifies an abstract or physical resource. This specification | ||||
defines the generic URI syntax and a process for resolving URI references that m | ||||
ight be in relative form, along with guidelines and security considerations for | ||||
the use of URIs on the Internet. The URI syntax defines a grammar that is a supe | ||||
rset of all valid URIs, allowing an implementation to parse the common component | ||||
s of a URI reference without knowing the scheme-specific requirements of every p | ||||
ossible identifier. This specification does not define a generative grammar for | ||||
URIs; that task is performed by the individual specifications of each URI scheme | ||||
. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="66"/> | ||||
<seriesInfo name="RFC" value="3986"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3986"/> | ||||
</reference> | ||||
</referencegroup> | </referencegroup> | |||
<reference anchor="RFC9562"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
<front> | 562.xml"/> | |||
<title>Universally Unique IDentifiers (UUIDs)</title> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
<author fullname="K. Davis" initials="K." surname="Davis"/> | 901.xml"/> | |||
<author fullname="B. Peabody" initials="B." surname="Peabody"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
<author fullname="P. Leach" initials="P." surname="Leach"/> | 396.xml"/> | |||
<date month="May" year="2024"/> | ||||
<abstract> | ||||
<t>This specification defines UUIDs (Universally Unique IDentifier | ||||
s) -- | ||||
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform | ||||
Resource Name namespace for UUIDs. A UUID is 128 bits long and is | ||||
intended to guarantee uniqueness across space and time. UUIDs were | ||||
originally used in the Apollo Network Computing System (NCS), later | ||||
in the Open Software Foundation's (OSF's) Distributed Computing | ||||
Environment (DCE), and then in Microsoft Windows platforms.</t> | ||||
<t>This specification is derived from the OSF DCE specification wi | ||||
th the | ||||
kind permission of the OSF (now known as "The Open Group"). Information from ear | ||||
lier versions of the OSF DCE specification have | ||||
been incorporated into this document. This document obsoletes RFC | ||||
4122.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9562"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9562"/> | ||||
</reference> | ||||
<reference anchor="RFC6901"> | ||||
<front> | ||||
<title>JavaScript Object Notation (JSON) Pointer</title> | ||||
<author fullname="P. Bryan" initials="P." role="editor" surname="Bry | ||||
an"/> | ||||
<author fullname="K. Zyp" initials="K." surname="Zyp"/> | ||||
<author fullname="M. Nottingham" initials="M." role="editor" surname | ||||
="Nottingham"/> | ||||
<date month="April" year="2013"/> | ||||
<abstract> | ||||
<t>JSON Pointer defines a string syntax for identifying a specific | ||||
value within a JavaScript Object Notation (JSON) document.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6901"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6901"/> | ||||
</reference> | ||||
<reference anchor="RFC7396"> | ||||
<front> | ||||
<title>JSON Merge Patch</title> | ||||
<author fullname="P. Hoffman" initials="P." surname="Hoffman"/> | ||||
<author fullname="J. Snell" initials="J." surname="Snell"/> | ||||
<date month="October" year="2014"/> | ||||
<abstract> | ||||
<t>This specification defines the JSON merge patch format and proc | ||||
essing rules. The merge patch format is primarily intended for use with the HTTP | ||||
PATCH method as a means of describing a set of modifications to a target resour | ||||
ce's content.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7396"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7396"/> | ||||
</reference> | ||||
<referencegroup anchor="STD63" target="https://www.rfc-editor.org/info/s td63"> | <referencegroup anchor="STD63" target="https://www.rfc-editor.org/info/s td63"> | |||
<reference anchor="RFC3629" target="https://www.rfc-editor.org/info/rf | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC | |||
c3629"> | .3629.xml"/> | |||
<front> | ||||
<title>UTF-8, a transformation format of ISO 10646</title> | ||||
<author fullname="F. Yergeau" initials="F." surname="Yergeau"/> | ||||
<date month="November" year="2003"/> | ||||
<abstract> | ||||
<t>ISO/IEC 10646-1 defines a large character set called the Univ | ||||
ersal Character Set (UCS) which encompasses most of the world's writing systems. | ||||
The originally proposed encodings of the UCS, however, were not compatible with | ||||
many current applications and protocols, and this has led to the development of | ||||
UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the | ||||
full US-ASCII range, providing compatibility with file systems, parsers and othe | ||||
r software that rely on US-ASCII values but are transparent to other values. Thi | ||||
s memo obsoletes and replaces RFC 2279.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="63"/> | ||||
<seriesInfo name="RFC" value="3629"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3629"/> | ||||
</reference> | ||||
</referencegroup> | </referencegroup> | |||
<referencegroup anchor="STD90" target="https://www.rfc-editor.org/info/s td90"> | <referencegroup anchor="STD90" target="https://www.rfc-editor.org/info/s td90"> | |||
<reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rf | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC | |||
c8259"> | .8259.xml"/> | |||
<front> | ||||
<title>The JavaScript Object Notation (JSON) Data Interchange Form | ||||
at</title> | ||||
<author fullname="T. Bray" initials="T." role="editor" surname="Br | ||||
ay"/> | ||||
<date month="December" year="2017"/> | ||||
<abstract> | ||||
<t>JavaScript Object Notation (JSON) is a lightweight, text-base | ||||
d, language-independent data interchange format. It was derived from the ECMAScr | ||||
ipt Programming Language Standard. JSON defines a small set of formatting rules | ||||
for the portable representation of structured data.</t> | ||||
<t>This document removes inconsistencies with other specificatio | ||||
ns of JSON, repairs specification errors, and offers experience-based interopera | ||||
bility guidance.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="90"/> | ||||
<seriesInfo name="RFC" value="8259"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8259"/> | ||||
</reference> | ||||
</referencegroup> | </referencegroup> | |||
<reference anchor="RFC8610"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
<front> | 610.xml"/> | |||
<title>Concise Data Definition Language (CDDL): A Notational Convent | ||||
ion to Express Concise Binary Object Representation (CBOR) and JSON Data Structu | ||||
res</title> | ||||
<author fullname="H. Birkholz" initials="H." surname="Birkholz"/> | ||||
<author fullname="C. Vigano" initials="C." surname="Vigano"/> | ||||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | ||||
<date month="June" year="2019"/> | ||||
<abstract> | ||||
<t>This document proposes a notational convention to express Conci | ||||
se Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal | ||||
is to provide an easy and unambiguous way to express structures for protocol me | ||||
ssages and data formats that use CBOR or JSON.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8610"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8610"/> | ||||
</reference> | ||||
<referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/s td94"> | <referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/s td94"> | |||
<reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rf | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC | |||
c8949"> | .8949.xml"/> | |||
<front> | ||||
<title>Concise Binary Object Representation (CBOR)</title> | ||||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | ||||
<author fullname="P. Hoffman" initials="P." surname="Hoffman"/> | ||||
<date month="December" year="2020"/> | ||||
<abstract> | ||||
<t>The Concise Binary Object Representation (CBOR) is a data for | ||||
mat whose design goals include the possibility of extremely small code size, fai | ||||
rly small message size, and extensibility without the need for version negotiati | ||||
on. These design goals make it different from earlier binary serializations such | ||||
as ASN.1 and MessagePack.</t> | ||||
<t>This document obsoletes RFC 7049, providing editorial improve | ||||
ments, new details, and errata fixes while keeping full compatibility with the i | ||||
nterchange format of RFC 7049. It does not create a new version of the format.</ | ||||
t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="94"/> | ||||
<seriesInfo name="RFC" value="8949"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8949"/> | ||||
</reference> | ||||
</referencegroup> | </referencegroup> | |||
<reference anchor="RFC9193"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
<front> | 193.xml"/> | |||
<title>Sensor Measurement Lists (SenML) Fields for Indicating Data V | ||||
alue Content-Format</title> | ||||
<author fullname="A. Keränen" initials="A." surname="Keränen"/> | ||||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | ||||
<date month="June" year="2022"/> | ||||
<abstract> | ||||
<t>The Sensor Measurement Lists (SenML) media types support multip | ||||
le types of values, from numbers to text strings and arbitrary binary Data Value | ||||
s. In order to facilitate processing of binary Data Values, this document specif | ||||
ies a pair of new SenML fields for indicating the content format of those binary | ||||
Data Values, i.e., their Internet media type, including parameters as well as a | ||||
ny content codings applied.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9193"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9193"/> | ||||
</reference> | ||||
<referencegroup anchor="BCP26" target="https://www.rfc-editor.org/info/b cp26"> | <referencegroup anchor="BCP26" target="https://www.rfc-editor.org/info/b cp26"> | |||
<reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rf | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC | |||
c8126"> | .8126.xml"/> | |||
<front> | ||||
<title>Guidelines for Writing an IANA Considerations Section in RF | ||||
Cs</title> | ||||
<author fullname="M. Cotton" initials="M." surname="Cotton"/> | ||||
<author fullname="B. Leiba" initials="B." surname="Leiba"/> | ||||
<author fullname="T. Narten" initials="T." surname="Narten"/> | ||||
<date month="June" year="2017"/> | ||||
<abstract> | ||||
<t>Many protocols make use of points of extensibility that use c | ||||
onstants to identify various protocol parameters. To ensure that the values in t | ||||
hese fields do not have conflicting uses and to promote interoperability, their | ||||
allocations are often coordinated by a central record keeper. For IETF protocols | ||||
, that role is filled by the Internet Assigned Numbers Authority (IANA).</t> | ||||
<t>To make assignments in a given registry prudently, guidance d | ||||
escribing the conditions under which new values should be assigned, as well as w | ||||
hen and how modifications to existing values can be made, is needed. This docume | ||||
nt defines a framework for the documentation of these guidelines by specificatio | ||||
n authors, in order to assure that the provided guidance for the IANA Considerat | ||||
ions is clear and addresses the various issues that are likely in the operation | ||||
of a registry.</t> | ||||
<t>This is the third edition of this document; it obsoletes RFC | ||||
5226.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="26"/> | ||||
<seriesInfo name="RFC" value="8126"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8126"/> | ||||
</reference> | ||||
</referencegroup> | </referencegroup> | |||
<referencegroup anchor="BCP73" target="https://www.rfc-editor.org/info/b cp73"> | <referencegroup anchor="BCP73" target="https://www.rfc-editor.org/info/b cp73"> | |||
<reference anchor="RFC3553" target="https://www.rfc-editor.org/info/rf | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC | |||
c3553"> | .3553.xml"/> | |||
<front> | ||||
<title>An IETF URN Sub-namespace for Registered Protocol Parameter | ||||
s</title> | ||||
<author fullname="M. Mealling" initials="M." surname="Mealling"/> | ||||
<author fullname="L. Masinter" initials="L." surname="Masinter"/> | ||||
<author fullname="T. Hardie" initials="T." surname="Hardie"/> | ||||
<author fullname="G. Klyne" initials="G." surname="Klyne"/> | ||||
<date month="June" year="2003"/> | ||||
<abstract> | ||||
<t>This document describes a new sub-delegation for the 'ietf' U | ||||
RN namespace for registered protocol items. The 'ietf' URN namespace is defined | ||||
in RFC 2648 as a root for persistent URIs that refer to IETF- defined resources. | ||||
This document specifies an Internet Best Current Practices for the Internet Com | ||||
munity, and requests discussion and suggestions for improvements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="73"/> | ||||
<seriesInfo name="RFC" value="3553"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3553"/> | ||||
</reference> | ||||
</referencegroup> | </referencegroup> | |||
<reference anchor="W3C.NOTE-curie-20101216" target="https://www.w3.org/T R/2010/NOTE-curie-20101216/"> | <reference anchor="W3C.NOTE-curie-20101216" target="https://www.w3.org/T R/2010/NOTE-curie-20101216/"> | |||
<front> | <front> | |||
<title>CURIE Syntax 1.0</title> | <title>CURIE Syntax 1.0</title> | |||
<author fullname="Mark Birbeck" role="editor"/> | <author fullname="Mark Birbeck" role="editor"/> | |||
<author fullname="Shane McCarron" role="editor"/> | <author fullname="Shane McCarron" role="editor"/> | |||
<date day="16" month="December" year="2010"/> | <date day="16" month="December" year="2010"/> | |||
</front> | </front> | |||
<seriesInfo name="W3C NOTE" value="NOTE-curie-20101216"/> | <refcontent>W3C Working Group Note</refcontent> | |||
<seriesInfo name="W3C" value="NOTE-curie-20101216"/> | ||||
</reference> | </reference> | |||
<referencegroup anchor="STD80" target="https://www.rfc-editor.org/info/s td80"> | <referencegroup anchor="STD80" target="https://www.rfc-editor.org/info/s td80"> | |||
<reference anchor="RFC0020" target="https://www.rfc-editor.org/info/rf | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC | |||
c20"> | .0020.xml"/> | |||
<front> | ||||
<title>ASCII format for network interchange</title> | ||||
<author fullname="V.G. Cerf" initials="V.G." surname="Cerf"/> | ||||
<date month="October" year="1969"/> | ||||
</front> | ||||
<seriesInfo name="STD" value="80"/> | ||||
<seriesInfo name="RFC" value="20"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC0020"/> | ||||
</reference> | ||||
</referencegroup> | </referencegroup> | |||
<reference anchor="SPDX" target="https://spdx.org/licenses/"> | <reference anchor="SPDX" target="https://spdx.org/licenses/"> | |||
<front> | <front> | |||
<title>SPDX License List</title> | <title>SPDX License List</title> | |||
<author> | <author> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date/> | <date/> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="RFC9165"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
<front> | 165.xml"/> | |||
<title>Additional Control Operators for the Concise Data Definition | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
Language (CDDL)</title> | 119.xml"/> | |||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
<date month="December" year="2021"/> | 174.xml"/> | |||
<abstract> | ||||
<t>The Concise Data Definition Language (CDDL), standardized in RF | ||||
C 8610, provides "control operators" as its main language extension point.</t> | ||||
<t>The present document defines a number of control operators that | ||||
were not yet ready at the time RFC 8610 was completed:.plus,.cat, and.det for t | ||||
he construction of constants;.abnf/.abnfb for including ABNF (RFC 5234 and RFC 7 | ||||
405) in CDDL specifications; and.feature for indicating the use of a non-basic f | ||||
eature in an instance.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9165"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9165"/> | ||||
</reference> | ||||
<referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/b | ||||
cp14"> | ||||
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rf | ||||
c2119"> | ||||
<front> | ||||
<title>Key words for use in RFCs to Indicate Requirement Levels</t | ||||
itle> | ||||
<author fullname="S. Bradner" initials="S." surname="Bradner"/> | ||||
<date month="March" year="1997"/> | ||||
<abstract> | ||||
<t>In many standards track documents several words are used to s | ||||
ignify the requirements in the specification. These words are often capitalized. | ||||
This document defines these words as they should be interpreted in IETF documen | ||||
ts. This document specifies an Internet Best Current Practices for the Internet | ||||
Community, and requests discussion and suggestions for improvements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="2119"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
</reference> | ||||
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rf | ||||
c8174"> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ | ||||
title> | ||||
<author fullname="B. Leiba" initials="B." surname="Leiba"/> | ||||
<date month="May" year="2017"/> | ||||
<abstract> | ||||
<t>RFC 2119 specifies common key words that may be used in proto | ||||
col specifications. This document aims to reduce the ambiguity by clarifying tha | ||||
t only UPPERCASE usage of the key words have the defined special meanings.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="8174"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
</reference> | ||||
</referencegroup> | ||||
</references> | </references> | |||
<references anchor="sec-informative-references"> | <references anchor="sec-informative-references"> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<reference anchor="JSO7"> | ||||
<front> | ||||
<title>JSON Schema: A Media Type for Describing JSON Documents</titl | ||||
e> | ||||
<author fullname="Austin Wright" initials="A." surname="Wright"> | ||||
</author> | ||||
<author fullname="Henry Andrews" initials="H." surname="Andrews"> | ||||
<organization>Cloudflare, Inc.</organization> | ||||
</author> | ||||
<date day="19" month="March" year="2018"/> | ||||
<abstract> | ||||
<t> JSON Schema defines the media type "application/schema+json" | ||||
, a JSON- | ||||
based format for describing the structure of JSON data. JSON Schema | ||||
asserts what a JSON document must look like, ways to extract | ||||
information from it, and how to interact with it. The "application/ | ||||
schema-instance+json" media type provides additional feature-rich | ||||
integration with "application/schema+json" beyond what can be offered | ||||
for "application/json" documents. | ||||
</t> | <!-- [JSO7] | |||
</abstract> | draft-handrews-json-schema-02 | |||
</front> | IESG State: Replaced by draft-bhutton-json-schema | |||
<seriesInfo name="Internet-Draft" value="draft-handrews-json-schema-01 | --> | |||
"/> | ||||
<annotation>This is the base specification for json-schema.org "draft | <reference anchor="I-D.handrews-json-schema" target="https://datatracker.ietf.or | |||
7".</annotation> | g/doc/html/draft-handrews-json-schema-02"> | |||
</reference> | <front> | |||
<reference anchor="JSO7V"> | <title>JSON Schema: A Media Type for Describing JSON Documents</title> | |||
<front> | <author initials="A." surname="Wright" fullname="Austin Wright" role="edit | |||
<title>JSON Schema Validation: A Vocabulary for Structural Validatio | or"> | |||
n of JSON</title> | ||||
<author fullname="Austin Wright" initials="A." surname="Wright"> | ||||
</author> | </author> | |||
<author fullname="Henry Andrews" initials="H." surname="Andrews"> | <author initials="H." surname="Andrews" fullname="Henry Andrews" role="edi | |||
<organization>Cloudflare, Inc.</organization> | tor"> | |||
</author> | ||||
<author fullname="Geraint Luff" initials="G." surname="Luff"> | ||||
</author> | </author> | |||
<date day="19" month="March" year="2018"/> | <author initials="B." surname="Hutton" fullname="Ben Hutton" role="editor" | |||
<abstract> | > | |||
<t> JSON Schema (application/schema+json) has several purposes, | <organization>Wellcome Sanger Institute</organization> | |||
one of | </author> | |||
which is JSON instance validation. This document specifies a | <author initials="G." surname="Dennis" fullname="Greg Dennis"> | |||
vocabulary for JSON Schema to describe the meaning of JSON documents, | </author> | |||
provide hints for user interfaces working with JSON data, and to make | <date month="September" day="17" year="2019" /> | |||
assertions about what a valid document must look like. | </front> | |||
<seriesInfo name="Internet-Draft" value="draft-handrews-json-schema-02" /> | ||||
</t> | </reference> | |||
</abstract> | ||||
</front> | <!-- [JSO7V] | |||
<seriesInfo name="Internet-Draft" value="draft-handrews-json-schema-va | draft-handrews-json-schema-validation-02 | |||
lidation-01"/> | IESG State: Replaced by draft-bhutton-json-schema-validation | |||
<annotation>This is the validation specification for json-schema.org " | --> | |||
draft 7".</annotation> | ||||
</reference> | <reference anchor="I-D.handrews-json-schema-validation" target="https://datatrac | |||
<reference anchor="JSO4"> | ker.ietf.org/doc/html/draft-handrews-json-schema-validation-02"> | |||
<front> | <front> | |||
<title>JSON Schema: core definitions and terminology</title> | <title>JSON Schema Validation: A Vocabulary for Structural Validation of J | |||
<author fullname="Francis Galiegue" initials="F." surname="Galiegue" | SON</title> | |||
> | <author initials="A." surname="Wright" fullname="Austin Wright" role="edit | |||
or"> | ||||
</author> | </author> | |||
<author fullname="Kris Zyp" initials="K." surname="Zyp"> | <author initials="H." surname="Andrews" fullname="Henry Andrews" role="edi | |||
<organization>SitePen (USA)</organization> | tor"> | |||
</author> | ||||
<author fullname="Gary Court" initials="G." surname="Court"> | ||||
</author> | </author> | |||
<date day="31" month="January" year="2013"/> | <author initials="B." surname="Hutton" fullname="Ben Hutton" role="editor" | |||
<abstract> | > | |||
<t> JSON Schema defines the media type "application/schema+json" | <organization>Wellcome Sanger Institute</organization> | |||
, a JSON | </author> | |||
based format for defining the structure of JSON data. JSON Schema | <date month="September" day="17" year="2019" /> | |||
provides a contract for what JSON data is required for a given | </front> | |||
application and how to interact with it. JSON Schema is intended to | <seriesInfo name="Internet-Draft" value="draft-handrews-json-schema-validatio | |||
define validation, documentation, hyperlink navigation, and | n-02" /> | |||
interaction control of JSON data. | ||||
</t> | </reference> | |||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-zyp-json-schema-04"/> | ||||
<annotation>This is the base specification for json-schema.org "draft | ||||
4".</annotation> | ||||
</reference> | ||||
<reference anchor="JSO4V"> | ||||
<front> | ||||
<title>JSON Schema: interactive and non interactive validation</titl | ||||
e> | ||||
<author fullname="Kris Zyp" initials="K." surname="Zyp"> | ||||
<organization>SitePen (USA)</organization> | ||||
</author> | ||||
<author fullname="Gary Court" initials="G." surname="Court"> | ||||
</author> | ||||
<date day="31" month="January" year="2013"/> | ||||
<abstract> | ||||
<t> JSON Schema (application/schema+json) has several purposes, | ||||
one of | ||||
which is instance validation. The validation process may be | ||||
interactive or non interactive. For instance, applications may use | ||||
JSON Schema to build a user interface enabling interactive content | ||||
generation in addition to user input checking, or validate data | ||||
retrieved from various sources. This specification describes schema | ||||
keywords dedicated to validation purposes. | ||||
</t> | <!-- [JSO4] | |||
</abstract> | draft-zyp-json-schema-04 | |||
</front> | IESG State: Replaced by draft-wright-json-schema | |||
<seriesInfo name="Internet-Draft" value="draft-fge-json-schema-validat | --> | |||
ion-00"/> | ||||
<annotation>This is the validation specification for json-schema.org " | <reference anchor="I-D.zyp-json-schema" target="https://datatracker.ietf.org/doc | |||
draft 4".</annotation> | /html/draft-zyp-json-schema-04"> | |||
</reference> | <front> | |||
<reference anchor="I-D.irtf-t2trg-rest-iot"> | <title>JSON Schema: core definitions and terminology</title> | |||
<front> | <author initials="F." surname="Galiegue" fullname="Francis Galiegue" role= | |||
<title>Guidance on RESTful Design for Internet of Things Systems</ti | "editor"> | |||
tle> | ||||
<author fullname="Ari Keränen" initials="A." surname="Keränen"> | ||||
<organization>Ericsson</organization> | ||||
</author> | ||||
<author fullname="Matthias Kovatsch" initials="M." surname="Kovatsch | ||||
"> | ||||
<organization>Siemens</organization> | ||||
</author> | ||||
<author fullname="Klaus Hartke" initials="K." surname="Hartke"> | ||||
</author> | </author> | |||
<date day="23" month="April" year="2025"/> | <author initials="K." surname="Zyp" fullname="Kris Zyp" role="editor"> | |||
<abstract> | <organization>SitePen (USA)</organization> | |||
<t> This document gives guidance for designing Internet of Thing | </author> | |||
s (IoT) | <author initials="G." surname="Court" fullname="Gary Court"> | |||
systems that follow the principles of the Representational State | </author> | |||
Transfer (REST) architectural style. This document is a product of | <date month="January" day="31" year="2013" /> | |||
the IRTF Thing-to-Thing Research Group (T2TRG). | </front> | |||
<seriesInfo name="Internet-Draft" value="draft-zyp-json-schema-04" /> | ||||
</reference> | ||||
<!-- [JSO4V] | ||||
draft-fge-json-schema-validation-00 | ||||
IESG State: Replaced by draft-wright-json-schema-validation | ||||
--> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | ||||
fge-json-schema-validation.xml"/> | ||||
<!-- [I-D.irtf-t2trg-rest-iot] | ||||
draft-irtf-t2trg-rest-iot-16 | ||||
IESG State: I-D Exists as of 05/14/25 | ||||
--> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | ||||
irtf-t2trg-rest-iot.xml"/> | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-rest-iot-16" | ||||
/> | ||||
</reference> | ||||
<reference anchor="ZCL"> | <reference anchor="ZCL"> | |||
<front> | <front> | |||
<title>The ZigBee Cluster Library</title> | <title>Chapter 6 - The ZigBee Cluster Library</title> | |||
<author> | <author> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date year="2008"/> | <date year="2008"/> | |||
</front> | </front> | |||
<seriesInfo name="Zigbee Wireless Networking" value="pp. 239-271"/> | <refcontent>Zigbee Wireless Networking, pp. 239-271</refcontent> | |||
<seriesInfo name="DOI" value="10.1016/b978-0-7506-8597-9.00006-9"/> | <seriesInfo name="DOI" value="10.1016/b978-0-7506-8597-9.00006-9"/> | |||
<seriesInfo name="ISBN" value="["9780750685979"]"/> | <seriesInfo name="ISBN" value="9780750685979"/> | |||
<refcontent>Elsevier</refcontent> | ||||
</reference> | </reference> | |||
<!-- [rfced] References | ||||
a) Please review the following reference. The original URL for this reference | ||||
- http://www.openmobilealliance.org/wp/omna/lwm2m/lwm2mregistry.html - | ||||
redirects to the following URL: | ||||
https://www.openmobilealliance.org/specifications with the title "OMA | ||||
Specifications". | ||||
We could not find a page with the original title for this reference "OMA | ||||
LightweightM2M (LwM2M) Object and Resource Registry". We did find the | ||||
following page: https://www.openmobilealliance.org/specifications/registries, | ||||
which contains separate links to the LwM2M Objects and Resources registries. | ||||
Would you like to update this reference to point to this new URL? | ||||
Current: | ||||
[OMA] Open Mobile Alliance, "OMA LightweightM2M (LwM2M) Object | ||||
and Resource Registry", | ||||
<http://www.openmobilealliance.org/wp/omna/lwm2m/ | ||||
lwm2mregistry.html>. | ||||
b) The information for this reference appears to be from the 2020 version of | ||||
ECMA Standard ECMA-262. However, the URL provided points to the 2024 edition. | ||||
We've updated this reference to use the information from the URL - that is, | ||||
the 2024 edition. Please let us know if you have any objections. | ||||
Current: | ||||
[ECMA-262] Ecma International, "ECMAScript 2024 Language | ||||
Specification", 15th Edition, ECMA Standard ECMA-262, June | ||||
2024, <https://www.ecma-international.org/wp- | ||||
content/uploads/ECMA-262.pdf>. | ||||
--> | ||||
<reference anchor="OMA" target="http://www.openmobilealliance.org/wp/omn a/lwm2m/lwm2mregistry.html"> | <reference anchor="OMA" target="http://www.openmobilealliance.org/wp/omn a/lwm2m/lwm2mregistry.html"> | |||
<front> | <front> | |||
<title>OMA LightweightM2M (LwM2M) Object and Resource Registry</titl e> | <title>OMA LightweightM2M (LwM2M) Object and Resource Registry</titl e> | |||
<author> | <author> | |||
<organization/> | <organization>Open Mobile Alliance</organization> | |||
</author> | </author> | |||
<date/> | <date/> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="OCF" target="https://openconnectivity.org/specs/OCF_R | ||||
esource_Type_Specification.pdf"> | <!-- XML for new OMA URL | |||
<reference anchor="OMA" target="https://www.openmobilealliance.org/speci | ||||
fications/registries"> | ||||
<front> | <front> | |||
<title>OCF Resource Type Specification</title> | <title>LwM2M Registries</title> | |||
<author> | <author> | |||
<organization/> | <organization>Open Mobile Alliance</organization> | |||
</author> | </author> | |||
<date/> | <date/> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="RFC8576"> | --> | |||
<reference anchor="OCF" target="https://openconnectivity.org/specs/OCF_R | ||||
esource_Type_Specification.pdf"> | ||||
<front> | <front> | |||
<title>Internet of Things (IoT) Security: State of the Art and Chall | <title>OCF Resource Type Specification</title> | |||
enges</title> | <author> | |||
<author fullname="O. Garcia-Morchon" initials="O." surname="Garcia-M | <organization>Open Connectivity Foundation</organization> | |||
orchon"/> | </author> | |||
<author fullname="S. Kumar" initials="S." surname="Kumar"/> | <date month="November" year="2023"/> | |||
<author fullname="M. Sethi" initials="M." surname="Sethi"/> | ||||
<date month="April" year="2019"/> | ||||
<abstract> | ||||
<t>The Internet of Things (IoT) concept refers to the usage of sta | ||||
ndard Internet protocols to allow for human-to-thing and thing-to-thing communic | ||||
ation. The security needs for IoT systems are well recognized, and many standard | ||||
ization steps to provide security have been taken -- for example, the specificat | ||||
ion of the Constrained Application Protocol (CoAP) secured with Datagram Transpo | ||||
rt Layer Security (DTLS). However, security challenges still exist, not only bec | ||||
ause there are some use cases that lack a suitable solution, but also because ma | ||||
ny IoT devices and systems have been designed and deployed with very limited sec | ||||
urity capabilities. In this document, we first discuss the various stages in the | ||||
lifecycle of a thing. Next, we document the security threats to a thing and the | ||||
challenges that one might face to protect against these threats. Lastly, we dis | ||||
cuss the next steps needed to facilitate the deployment of secure IoT systems. T | ||||
his document can be used by implementers and authors of IoT specifications as a | ||||
reference for details about security considerations while documenting their spec | ||||
ific security challenges, threat models, and mitigations.</t> | ||||
<t>This document is a product of the IRTF Thing-to-Thing Research | ||||
Group (T2TRG).</t> | ||||
</abstract> | ||||
</front> | </front> | |||
<seriesInfo name="RFC" value="8576"/> | <refcontent>Version 2.2.7</refcontent> | |||
<seriesInfo name="DOI" value="10.17487/RFC8576"/> | ||||
</reference> | </reference> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
576.xml"/> | ||||
<reference anchor="ECMA-262" target="https://www.ecma-international.org/ wp-content/uploads/ECMA-262.pdf"> | <reference anchor="ECMA-262" target="https://www.ecma-international.org/ wp-content/uploads/ECMA-262.pdf"> | |||
<front> | <front> | |||
<title>ECMAScript 2020 Language Specification</title> | <title>ECMAScript 2024 Language Specification</title> | |||
<author> | <author> | |||
<organization>Ecma International</organization> | <organization>Ecma International</organization> | |||
</author> | </author> | |||
<date year="2020" month="June"/> | <date year="2024" month="June"/> | |||
</front> | </front> | |||
<seriesInfo name="ECMA" value="Standard ECMA-262, 11th Edition"/> | <seriesInfo name="ECMA Standard" value="ECMA-262"/> | |||
<refcontent>15th Edition</refcontent> | ||||
</reference> | </reference> | |||
<reference anchor="CamelCase" target="http://wiki.c2.com/?CamelCase"> | <reference anchor="CamelCase" target="http://wiki.c2.com/?CamelCase"> | |||
<front> | <front> | |||
<title>Camel Case</title> | <title>Camel Case</title> | |||
<author> | <author> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date year="2014" month="December"/> | <date year="2014" month="December"/> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="KebabCase" target="http://wiki.c2.com/?KebabCase"> | <reference anchor="KebabCase" target="http://wiki.c2.com/?KebabCase"> | |||
<front> | <front> | |||
<title>Kebab Case</title> | <title>Kebab Case</title> | |||
<author> | <author> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date year="2014" month="August"/> | <date year="2014" month="August"/> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="I-D.bormann-asdf-sdftype-link"> | ||||
<front> | ||||
<title>An sdfType for Links</title> | ||||
<author fullname="Carsten Bormann" initials="C." surname="Bormann"> | ||||
<organization>Universität Bremen TZI</organization> | ||||
</author> | ||||
<date day="6" month="December" year="2024"/> | ||||
<abstract> | ||||
<t> This document defines and registers an sdfType "link" for th | ||||
e | ||||
Semantic Definition Format (SDF) for Data and Interactions of Things | ||||
(draft-ietf-asdf-sdf). | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-bormann-asdf-sdftype-li | ||||
nk-04"/> | ||||
</reference> | ||||
<reference anchor="I-D.bormann-asdf-sdf-mapping"> | ||||
<front> | ||||
<title>Semantic Definition Format (SDF): Mapping files</title> | ||||
<author fullname="Carsten Bormann" initials="C." surname="Bormann"> | ||||
<organization>Universität Bremen TZI</organization> | ||||
</author> | ||||
<author fullname="Jan Romann" initials="J." surname="Romann"> | ||||
<organization>Universität Bremen</organization> | ||||
</author> | ||||
<date day="20" month="July" year="2025"/> | ||||
<abstract> | ||||
<t> The Semantic Definition Format (SDF) is a format for domain | ||||
experts | ||||
to use in the creation and maintenance of data and interaction models | ||||
that describe Things, i.e., physical objects that are available for | ||||
interaction over a network. It was created as a common language for | ||||
use in the development of the One Data Model liaison organization | ||||
(OneDM) models. Tools convert this format to database formats and | ||||
other serializations as needed. | ||||
An SDF specification often needs to be augmented by additional | <!-- [I-D.bormann-asdf-sdftype-link] | |||
information that is specific to its use in a particular ecosystem or | draft-bormann-asdf-sdftype-link-04 | |||
application. SDF mapping files provide a mechanism to represent this | IESG State: I-D Exists as of 05/14/25 | |||
augmentation. | --> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | ||||
bormann-asdf-sdftype-link.xml"/> | ||||
</t> | <!-- [I-D.bormann-asdf-sdf-mapping] | |||
</abstract> | draft-bormann-asdf-sdf-mapping-05 | |||
</front> | IESG State: I-D Exists as of 05/14/25 | |||
<seriesInfo name="Internet-Draft" value="draft-bormann-asdf-sdf-mappin | --> | |||
g-07"/> | ||||
</reference> | ||||
<reference anchor="I-D.bormann-t2trg-deref-id"> | ||||
<front> | ||||
<title>The "dereferenceable identifier" pattern</title> | ||||
<author fullname="Carsten Bormann" initials="C." surname="Bormann"> | ||||
<organization>Universität Bremen TZI</organization> | ||||
</author> | ||||
<author fullname="Christian Amsüss" initials="C." surname="Amsüss"> | ||||
</author> | ||||
<date day="3" month="March" year="2025"/> | ||||
<abstract> | ||||
<t> In a protocol or an application environment, it is often imp | ||||
ortant to | ||||
be able to create unambiguous identifiers for some meaning (concept | ||||
or some entity). | ||||
Due to the simplicity of creating URIs, these have become popular for | <reference anchor="I-D.bormann-asdf-sdf-mapping" target="https://datatracker.iet | |||
this purpose. Beyond the purpose of identifiers to be uniquely | f.org/doc/html/draft-bormann-asdf-sdf-mapping-05"> | |||
associated with a meaning, some of these URIs are in principle | <front> | |||
_dereferenceable_, so something can be placed that can be retrieved | <title>Semantic Definition Format (SDF): Mapping files</title> | |||
when encountering such a URI. | <author initials="C." surname="Bormann" fullname="Carsten Bormann" role="e | |||
ditor"> | ||||
<organization>Universität Bremen TZI</organization> | ||||
</author> | ||||
<author initials="J." surname="Romann" fullname="Jan Romann"> | ||||
<organization>Hochschule Emden/Leer</organization> | ||||
</author> | ||||
<date month="December" day="6" year="2024" /> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-bormann-asdf-sdf-mapping-05" / | ||||
> | ||||
// The present revision -04 includes a few clarifications. | </reference> | |||
</t> | <!-- [I-D.bormann-t2trg-deref-id] | |||
</abstract> | draft-bormann-t2trg-deref-id-05 | |||
</front> | IESG State: I-D Exists as of 05/14/25 | |||
<seriesInfo name="Internet-Draft" value="draft-bormann-t2trg-deref-id- | --> | |||
05"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
</reference> | bormann-t2trg-deref-id.xml"/> | |||
<reference anchor="RFC9485"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
<front> | 485.xml"/> | |||
<title>I-Regexp: An Interoperable Regular Expression Format</title> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | 535.xml"/> | |||
<author fullname="T. Bray" initials="T." surname="Bray"/> | ||||
<date month="October" year="2023"/> | ||||
<abstract> | ||||
<t>This document specifies I-Regexp, a flavor of regular expressio | ||||
n that is limited in scope with the goal of interoperation across many different | ||||
regular expression libraries.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9485"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9485"/> | ||||
</reference> | ||||
<reference anchor="RFC9535"> | ||||
<front> | ||||
<title>JSONPath: Query Expressions for JSON</title> | ||||
<author fullname="S. Gössner" initials="S." role="editor" surname="G | ||||
össner"/> | ||||
<author fullname="G. Normington" initials="G." role="editor" surname | ||||
="Normington"/> | ||||
<author fullname="C. Bormann" initials="C." role="editor" surname="B | ||||
ormann"/> | ||||
<date month="February" year="2024"/> | ||||
<abstract> | ||||
<t>JSONPath defines a string syntax for selecting and extracting J | ||||
SON (RFC 8259) values from within a given JSON value.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9535"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9535"/> | ||||
</reference> | ||||
<referencegroup anchor="STD97" target="https://www.rfc-editor.org/info/s td97"> | <referencegroup anchor="STD97" target="https://www.rfc-editor.org/info/s td97"> | |||
<reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rf | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC | |||
c9110"> | .9110.xml"/> | |||
<front> | ||||
<title>HTTP Semantics</title> | ||||
<author fullname="R. Fielding" initials="R." role="editor" surname | ||||
="Fielding"/> | ||||
<author fullname="M. Nottingham" initials="M." role="editor" surna | ||||
me="Nottingham"/> | ||||
<author fullname="J. Reschke" initials="J." role="editor" surname= | ||||
"Reschke"/> | ||||
<date month="June" year="2022"/> | ||||
<abstract> | ||||
<t>The Hypertext Transfer Protocol (HTTP) is a stateless applica | ||||
tion-level protocol for distributed, collaborative, hypertext information system | ||||
s. This document describes the overall architecture of HTTP, establishes common | ||||
terminology, and defines aspects of the protocol that are shared by all versions | ||||
. In this definition are core protocol elements, extensibility mechanisms, and t | ||||
he "http" and "https" Uniform Resource Identifier (URI) schemes.</t> | ||||
<t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, | ||||
7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="97"/> | ||||
<seriesInfo name="RFC" value="9110"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9110"/> | ||||
</reference> | ||||
</referencegroup> | </referencegroup> | |||
<referencegroup anchor="BCP100" target="https://www.rfc-editor.org/info/ bcp100"> | <referencegroup anchor="BCP100" target="https://www.rfc-editor.org/info/ bcp100"> | |||
<reference anchor="RFC7120" target="https://www.rfc-editor.org/info/rf | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC | |||
c7120"> | .7120.xml"/> | |||
<front> | ||||
<title>Early IANA Allocation of Standards Track Code Points</title | ||||
> | ||||
<author fullname="M. Cotton" initials="M." surname="Cotton"/> | ||||
<date month="January" year="2014"/> | ||||
<abstract> | ||||
<t>This memo describes the process for early allocation of code | ||||
points by IANA from registries for which "Specification Required", "RFC Required | ||||
", "IETF Review", or "Standards Action" policies apply. This process can be used | ||||
to alleviate the problem where code point allocation is needed to facilitate de | ||||
sired or required implementation and deployment experience prior to publication | ||||
of an RFC, which would normally trigger code point allocation. The procedures in | ||||
this document are intended to apply only to IETF Stream documents.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="100"/> | ||||
<seriesInfo name="RFC" value="7120"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7120"/> | ||||
</reference> | ||||
</referencegroup> | </referencegroup> | |||
<reference anchor="WoT" target="https://www.w3.org/TR/wot-thing-descript ion11/"> | <reference anchor="WoT" target="https://www.w3.org/TR/2023/REC-wot-thing -description11-20231205/"> | |||
<front> | <front> | |||
<title>Web of Things (WoT) Thing Description 1.1</title> | <title>Web of Things (WoT) Thing Description 1.1</title> | |||
<author initials="S." surname="Kaebisch" fullname="Sebastian Kaebisc h"> | <author initials="S." surname="Kaebisch" fullname="Sebastian Kaebisc h" role="editor"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author initials="M." surname="McCool" fullname="Michael McCool"> | <author initials="M." surname="McCool" fullname="Michael McCool" rol e="editor"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author initials="E." surname="Korkan" fullname="Ege Korkan"> | <author initials="E." surname="Korkan" fullname="Ege Korkan" role="e ditor"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date year="2023" month="December" day="05"/> | <date year="2023" month="December" day="05"/> | |||
</front> | </front> | |||
<seriesInfo name="W3C" value="Recommendation"/> | <seriesInfo name="W3C" value="Recommendation"/> | |||
</reference> | </reference> | |||
</references> | </references> | |||
</references> | </references> | |||
<?line 2321?> | ||||
<section anchor="syntax"> | <section anchor="syntax"> | |||
<name>Formal Syntax of SDF</name> | <name>Formal Syntax of SDF</name> | |||
<t>This normative appendix describes the syntax of SDF using CDDL <xref ta rget="RFC8610"/>.</t> | <t>This normative appendix describes the syntax of SDF using CDDL <xref ta rget="RFC8610"/>.</t> | |||
<t>This appendix shows the framework syntax only, i.e., a syntax with libe ral extension points. | <t>This appendix shows the framework syntax only, i.e., a syntax with libe ral extension points. | |||
Since this syntax is nearly useless in finding typos in an SDF | Since this syntax is nearly useless in finding typos in an SDF | |||
specification, a second syntax, the validation syntax, is defined that | specification, a second syntax, the validation syntax, is defined that | |||
does not include the extension points. | does not include the extension points. | |||
The validation syntax can be generated from the framework syntax by | The validation syntax can be generated from the framework syntax by | |||
leaving out all lines containing the string <tt>EXTENSION-POINT</tt>; as this | leaving out all lines containing the string <tt>EXTENSION-POINT</tt>; as this | |||
skipping to change at line 3670 ¶ | skipping to change at line 3464 ¶ | |||
[time-secfrac] | [time-secfrac] | |||
full-date = date-fullyear "-" date-month "-" date-mday | full-date = date-fullyear "-" date-month "-" date-mday | |||
modified-dt = full-date ["T" partial-time "Z"] | modified-dt = full-date ["T" partial-time "Z"] | |||
' | ' | |||
]]></sourcecode> | ]]></sourcecode> | |||
</section> | </section> | |||
<section anchor="jso"> | <section anchor="jso"> | |||
<name>json-schema.org Rendition of SDF Syntax</name> | <name>json-schema.org Rendition of SDF Syntax</name> | |||
<t>This informative appendix describes the syntax of SDF defined in <xref target="syntax"/>, but | <t>This informative appendix describes the syntax of SDF defined in <xref target="syntax"/>, but | |||
using a version of the description techniques advertised on | uses a version of the description techniques advertised on | |||
json-schema.org <xref target="JSO7"/> <xref target="JSO7V"/>.</t> | json-schema.org <xref target="I-D.handrews-json-schema"/> <xref target="I-D.hand | |||
rews-json-schema-validation"/>.</t> | ||||
<t>The appendix shows both the validation and the framework syntax. | <t>The appendix shows both the validation and the framework syntax. | |||
Since most of the lines are the same between these two files, those lines are sh own only once, with a leading space, in the form of a unified diff. | Since most of the lines are the same between these two files, those lines are sh own only once, with a leading space, in the form of a unified diff. | |||
Lines leading with a <tt>-</tt> are part of the validation syntax, and lines lea ding with a <tt>+</tt> are part of the framework syntax.</t> | Lines leading with a <tt>-</tt> are part of the validation syntax and lines lead ing with a <tt>+</tt> are part of the framework syntax.</t> | |||
<sourcecode type="jso.json"><![CDATA[ | <sourcecode type="jso.json"><![CDATA[ | |||
{ | { | |||
- "title": "sdf-validation.cddl -- Generated: 2024-02-29T07:42:35Z", | - "title": "sdf-validation.cddl -- Generated: 2024-02-29T07:42:35Z", | |||
+ "title": "sdf-framework.cddl -- Generated: 2024-02-29T07:42:52Z", | + "title": "sdf-framework.cddl -- Generated: 2024-02-29T07:42:52Z", | |||
"$schema": "http://json-schema.org/draft-07/schema#", | "$schema": "http://json-schema.org/draft-07/schema#", | |||
"$ref": "#/definitions/sdf-syntax", | "$ref": "#/definitions/sdf-syntax", | |||
"definitions": { | "definitions": { | |||
"sdf-syntax": { | "sdf-syntax": { | |||
"type": "object", | "type": "object", | |||
"properties": { | "properties": { | |||
skipping to change at line 5666 ¶ | skipping to change at line 5460 ¶ | |||
- "enum": [ | - "enum": [ | |||
- "byte-string", | - "byte-string", | |||
- "unix-time" | - "unix-time" | |||
- ] | - ] | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</section> | </section> | |||
<section anchor="jso-inspired"> | <section anchor="jso-inspired"> | |||
<name>Data Qualities inspired by json-schema.org</name> | <name>Data Qualities Inspired by json-schema.org</name> | |||
<t>This appendix is normative.</t> | <t>This appendix is normative.</t> | |||
<t>Data qualities define data used in SDF affordances at an information | <t>Data qualities define data used in SDF affordances at an information | |||
model level. | model level. | |||
A popular way to describe JSON data at a data model level is proposed | A popular way to describe JSON data at a data model level is proposed | |||
by a number of drafts on json-schema.org (which collectively are | by a number of drafts on json-schema.org (which collectively are | |||
abbreviated JSO here); for reference to a popular version this appendix | abbreviated JSO here); for reference to a popular version, this appendix | |||
points to <xref target="JSO7"/> and <xref target="JSO7V"/>. | points to <xref target="I-D.handrews-json-schema"/> and <xref target="I-D.handre | |||
ws-json-schema-validation"/>. | ||||
As the vocabulary used by JSO is familiar to many JSON modelers, the | As the vocabulary used by JSO is familiar to many JSON modelers, the | |||
present specification borrows some of the terms and ports their | present specification borrows some of the terms and ports their | |||
semantics to the information model level needed for SDF.</t> | semantics to the information model level needed for SDF.</t> | |||
<t>The main data quality imported is the "<tt>type</tt>". | <t>The main data quality imported is the "<tt>type</tt>". | |||
In SDF, this can take one of six (text string) values, which are | In SDF, this can take one of six (text string) values, which are | |||
discussed in the following subsections (note that the JSO type | discussed in the following subsections (note that the JSO type | |||
"<tt>null</tt>" is not supported as a value of this data quality in SDF).</t> | "<tt>null</tt>" is not supported as a value of this data quality in SDF).</t> | |||
<t>The additional quality "<tt>const</tt>" restricts the data to one speci fic | <t>The additional quality "<tt>const</tt>" restricts the data to one speci fic | |||
value (given as the value of the <tt>const</tt> quality).</t> | value (given as the value of the <tt>const</tt> quality).</t> | |||
<t>Similarly, the additional quality "<tt>default</tt>" provides data that can | <t>Similarly, the additional quality "<tt>default</tt>" provides data that can | |||
skipping to change at line 5698 ¶ | skipping to change at line 5492 ¶ | |||
<t>Other qualities that are inspired by JSO are "<tt>$comment</tt>" and | <t>Other qualities that are inspired by JSO are "<tt>$comment</tt>" and | |||
"<tt>description</tt>", both of which are also available in the information bloc k.</t> | "<tt>description</tt>", both of which are also available in the information bloc k.</t> | |||
<section anchor="type-number-type-integer"> | <section anchor="type-number-type-integer"> | |||
<name>type "<tt>number</tt>", type "<tt>integer</tt>"</name> | <name>type "<tt>number</tt>", type "<tt>integer</tt>"</name> | |||
<t>The types "<tt>number</tt>" and "<tt>integer</tt>" are associated wit h floating point | <t>The types "<tt>number</tt>" and "<tt>integer</tt>" are associated wit h floating point | |||
and integer numbers, as they are available in JSON. | and integer numbers, as they are available in JSON. | |||
A type value of <tt>integer</tt> means that only integer values of JSON | A type value of <tt>integer</tt> means that only integer values of JSON | |||
numbers can be used (note that <tt>10.0</tt> is an integer value, even if it | numbers can be used (note that <tt>10.0</tt> is an integer value, even if it | |||
is in a notation that would also allow non-zero decimal fractions).</t> | is in a notation that would also allow non-zero decimal fractions).</t> | |||
<t>The additional data qualities "<tt>minimum</tt>", "<tt>maximum</tt>", | <t>The additional data qualities "<tt>minimum</tt>", "<tt>maximum</tt>", | |||
"<tt>exclusiveMinimum</tt>", "<tt>exclusiveMaximum</tt>" provide number values t hat | "<tt>exclusiveMinimum</tt>", and "<tt>exclusiveMaximum</tt>" provide number valu es that | |||
serve as inclusive/exclusive lower/upper bounds for the number. | serve as inclusive/exclusive lower/upper bounds for the number. | |||
(Note that the Boolean form of | (Note that the Boolean form of | |||
"<tt>exclusiveMinimum</tt>"/"<tt>exclusiveMaximum</tt>" found in earlier JSO dra fts <xref target="JSO4V"/> | "<tt>exclusiveMinimum</tt>"/"<tt>exclusiveMaximum</tt>" found in earlier JSO dra fts <xref target="I-D.fge-json-schema-validation"/> | |||
is not used.)</t> | is not used.)</t> | |||
<t>The data quality "<tt>multipleOf</tt>" gives a positive number that | <t>The data quality "<tt>multipleOf</tt>" gives a positive number that | |||
constrains the data value to be an integer multiple of the number | constrains the data value to be an integer multiple of the number | |||
given. | given. | |||
(Type "<tt>integer</tt>" can also be expressed as a "<tt>multipleOf</tt>" qualit y of | (Type "<tt>integer</tt>" can also be expressed as a "<tt>multipleOf</tt>" qualit y of | |||
value 1, unless another "<tt>multipleOf</tt>" quality is present.)</t> | value 1, unless another "<tt>multipleOf</tt>" quality is present.)</t> | |||
</section> | </section> | |||
<section anchor="type-string"> | <section anchor="type-string"> | |||
<name>type "<tt>string</tt>"</name> | <name>type "<tt>string</tt>"</name> | |||
<t>The type "<tt>string</tt>" is associated with Unicode text string val ues as | <t>The type "<tt>string</tt>" is associated with Unicode text string val ues, as | |||
they can be represented in JSON.</t> | they can be represented in JSON.</t> | |||
<t>The length (as measured in characters, specifically Unicode scalar | <t>The length (as measured in characters, specifically Unicode scalar | |||
values) can be constrained by the | values) can be constrained by the | |||
additional data qualities "<tt>minLength</tt>" and "<tt>maxLength</tt>", which a re | additional data qualities "<tt>minLength</tt>" and "<tt>maxLength</tt>", which a re | |||
inclusive bounds.</t> | inclusive bounds.</t> | |||
<t>(More specifically, Unicode text strings as defined in this | <t>(More specifically, Unicode text strings as defined in this | |||
specification are sequences of Unicode scalar values, the number of | specification are sequences of Unicode scalar values, the number of | |||
which is taken as the length of such a text string.</t> | which is taken as the length of such a text string.</t> | |||
<t>The data quality "<tt>pattern</tt>" takes a string value that is inte rpreted | <t>The data quality "<tt>pattern</tt>" takes a string value that is inte rpreted | |||
as an <xref target="ECMA-262"/> regular expression in Unicode mode that constrai ns the | as an <xref target="ECMA-262"/> regular expression in Unicode mode that constrai ns the | |||
string (note that these are not anchored by default, so unless <tt>^</tt> and | string (note that these are not anchored by default, so unless <tt>^</tt> and | |||
<tt>$</tt> anchors are employed, ECMA-262 regular expressions match any string t hat <em>contains</em> a match). | <tt>$</tt> anchors are employed, ECMA-262 regular expressions match any string t hat <em>contains</em> a match). | |||
The JSO proposals acknowledge that regular expression support is | The JSO proposals acknowledge that regular expression support is | |||
rather diverse in various platforms, so the suggestion is to limit | rather diverse in various platforms, so the suggestion is to limit | |||
them to:</t> | them to:</t> | |||
<!-- [rfced] Should "their complements" be placed on a separate bullet to | ||||
follow the original pattern of this list? | ||||
Original: | ||||
* characters; | ||||
* character classes in square brackets, including ranges; their | ||||
complements; | ||||
* simple quantifiers *, +, ?, and range quantifiers {n}, {n,m}, and | ||||
{n,}; | ||||
* grouping parentheses; | ||||
* the choice operator |; | ||||
* and anchors (beginning-of-input ^ and end-of-input $). | ||||
Perhaps: | ||||
* characters; | ||||
* character classes in square brackets, including ranges; | ||||
* their complements; | ||||
* simple quantifiers *, +, ?, and range quantifiers {n}, {n,m}, and | ||||
{n,}; | ||||
* grouping parentheses; | ||||
* the choice operator |; | ||||
* and anchors (beginning-of-input ^ and end-of-input $). | ||||
--> | ||||
<ul spacing="compact"> | <ul spacing="compact"> | |||
<li> | <li> | |||
<t>characters;</t> | <t>characters;</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>character classes in square brackets, including ranges; their com plements;</t> | <t>character classes in square brackets, including ranges; their com plements;</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>simple quantifiers <tt>*</tt>, <tt>+</tt>, <tt>?</tt>, and range quantifiers <tt>{n}</tt>, | <t>simple quantifiers <tt>*</tt>, <tt>+</tt>, <tt>?</tt>, and range quantifiers <tt>{n}</tt>, | |||
<tt>{n,m}</tt>, and <tt>{n,}</tt>;</t> | <tt>{n,m}</tt>, and <tt>{n,}</tt>;</t> | |||
skipping to change at line 5749 ¶ | skipping to change at line 5566 ¶ | |||
<t>grouping parentheses;</t> | <t>grouping parentheses;</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>the choice operator <tt>|</tt>;</t> | <t>the choice operator <tt>|</tt>;</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>and anchors (beginning-of-input <tt>^</tt> and end-of-input <tt>$ </tt>).</t> | <t>and anchors (beginning-of-input <tt>^</tt> and end-of-input <tt>$ </tt>).</t> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t>Note that this subset is somewhat similar to the subset introduced by | <t>Note that this subset is somewhat similar to the subset introduced by | |||
I-Regexps <xref target="RFC9485"/>, which however are anchored | I-Regexps <xref target="RFC9485"/>, which are anchored | |||
regular expressions, and which include certain backslash escapes for | regular expressions and include certain backslash escapes for | |||
characters and character classes.</t> | characters and character classes.</t> | |||
<t>The additional data quality "<tt>format</tt>" can take one of the fol lowing | <t>The additional data quality "<tt>format</tt>" can take one of the fol lowing | |||
values. Note that, at an information model level, the presence of | values. Note that, at an information model level, the presence of | |||
this data quality changes the type from being a simple text string to | this data quality changes the type from being a simple text string to | |||
the abstract meaning of the format given (i.e., the format "date-time" | the abstract meaning of the format given (i.e., the format "date-time" | |||
is less about the specific syntax employed in <xref target="RFC3339"/> than abou t the usage | is less about the specific syntax employed in <xref target="RFC3339"/> than abou t the usage | |||
as an absolute point in civil time).</t> | as an absolute point in civil time).</t> | |||
<ul spacing="compact"> | <ul spacing="compact"> | |||
<li> | <li> | |||
<t>"<tt>date-time</tt>", "<tt>date</tt>", "<tt>time</tt>": | <t>"<tt>date-time</tt>", "<tt>date</tt>", "<tt>time</tt>": | |||
An <xref target="RFC3339"/> <tt>date-time</tt>, <tt>full-date</tt>, or <tt>full- time</tt>, respectively.</t> | A <tt>date-time</tt>, <tt>full-date</tt>, or <tt>full-time</tt> as defined in <x ref target="RFC3339"/>, respectively.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>"<tt>uri</tt>", "<tt>uri-reference</tt>": | <t>"<tt>uri</tt>", "<tt>uri-reference</tt>": | |||
An <xref target="STD66"/> URI or URI Reference, respectively.</t> | A URI or URI Reference as defined in <xref target="STD66"/>, respectively.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>"<tt>uuid</tt>": An <xref target="RFC9562"/> UUID.</t> | <t>"<tt>uuid</tt>": A Universally Unique Identifier (UUID) as define d in <xref target="RFC9562"/>).</t> | |||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="type-boolean"> | <section anchor="type-boolean"> | |||
<name>type "<tt>boolean</tt>"</name> | <name>type "<tt>boolean</tt>"</name> | |||
<t>The type "<tt>boolean</tt>" can take the values "<tt>true</tt>" or "< tt>false</tt>".</t> | <t>The type "<tt>boolean</tt>" can take the values "<tt>true</tt>" or "< tt>false</tt>".</t> | |||
</section> | </section> | |||
<section anchor="type-array"> | <section anchor="type-array"> | |||
<name>type "<tt>array</tt>"</name> | <name>type "<tt>array</tt>"</name> | |||
<t>The type "<tt>array</tt>" is associated with arrays as they are avail able in | <t>The type "<tt>array</tt>" is associated with arrays, as they are avai lable in | |||
JSON.</t> | JSON.</t> | |||
<t>The additional quality "<tt>items</tt>" gives the type that each of t he | <t>The additional quality "<tt>items</tt>" gives the type that each of t he | |||
elements of the array must match.</t> | elements of the array must match.</t> | |||
<t>The number of elements in the array can be constrained by the additio nal | <t>The number of elements in the array can be constrained by the additio nal | |||
data qualities "<tt>minItems</tt>" and "<tt>maxItems</tt>", which are inclusive | data qualities "<tt>minItems</tt>" and "<tt>maxItems</tt>", which are inclusive | |||
bounds.</t> | bounds.</t> | |||
<t>The additional data quality "<tt>uniqueItems</tt>" gives a Boolean va lue | <t>The additional data quality "<tt>uniqueItems</tt>" gives a Boolean va lue | |||
that, if true, requires the elements to be all different.</t> | that, if true, requires the elements to be all different.</t> | |||
</section> | </section> | |||
<section anchor="type-object"> | <section anchor="type-object"> | |||
<name>type "<tt>object</tt>"</name> | <name>type "<tt>object</tt>"</name> | |||
<t>The type "<tt>object</tt>" is associated with maps, from strings to v alues, as | <t>The type "<tt>object</tt>" is associated with maps, from strings to v alues, as | |||
they are available in JSON.</t> | they are available in JSON.</t> | |||
<t>The additional quality "<tt>properties</tt>" is a map the entries of which | <t>The additional quality "<tt>properties</tt>" is a map the entries of which | |||
describe entries in the specified JSON map: The key gives an | describe entries in the specified JSON map: the key gives an | |||
allowable map key for the specified JSON map, and the value is a | allowable map key for the specified JSON map and the value is a | |||
map with a named set of data qualities giving the type for the | map with a named set of data qualities giving the type for the | |||
corresponding value in the specified JSON map.</t> | corresponding value in the specified JSON map.</t> | |||
<t>All entries specified this way are optional, unless they are listed i n | <t>All entries specified in this way are optional unless they are listed in | |||
the value of the additional quality "<tt>required</tt>", which is an array of | the value of the additional quality "<tt>required</tt>", which is an array of | |||
string values that give the key names of required entries.</t> | string values that give the key names of required entries.</t> | |||
<t>Note that the term "properties" as an additional quality for | <t>Note that the term "properties" as an additional quality for | |||
defining map entries is unrelated to sdfProperty.</t> | defining map entries is unrelated to sdfProperty.</t> | |||
<t>For example, to include information about the type of the event in th e | <t>For example, to include information about the type of the event in th e | |||
"overTemperatureEvent" of <xref target="example-req"/>, the sdfOutputData there could | "overTemperatureEvent" of <xref target="example-req"/>, the sdfOutputData there could | |||
be defined as follows:</t> | be defined as follows:</t> | |||
<figure anchor="example-obj-type"> | <figure anchor="example-obj-type"> | |||
<name>Using object type with sdfOutputData</name> | <name>Using Object Type with sdfOutputData</name> | |||
<sourcecode type="json"><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
"sdfOutputData": { | "sdfOutputData": { | |||
"type": "object", | "type": "object", | |||
"properties": { | "properties": { | |||
"alarmType": { | "alarmType": { | |||
"sdfRef": "cap:#/sdfData/alarmTypes/quantityAlarms", | "sdfRef": "cap:#/sdfData/alarmTypes/quantityAlarms", | |||
"const": "OverTemperatureAlarm" | "const": "OverTemperatureAlarm" | |||
}, | }, | |||
"temperature": { | "temperature": { | |||
"sdfRef": "#/sdfObject/temperatureWithAlarm/sdfData/temperatureData" | "sdfRef": "#/sdfObject/temperatureWithAlarm/sdfData/temperatureData" | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="implementation-notes"> | <section anchor="implementation-notes"> | |||
<name>Implementation notes</name> | <name>Implementation Notes</name> | |||
<t>JSO-based keywords are also used in the specification techniques of a | <t>JSO-based keywords are also used in the specification techniques of a | |||
number of ecosystems, but some adjustments may be required.</t> | number of ecosystems, but some adjustments may be required.</t> | |||
<t>For instance, <xref target="OCF"/> is based on Swagger 2.0 which appe | <t>For instance, <xref target="OCF"/> is based on Swagger 2.0, which app | |||
ars to be based on | ears to be based on | |||
"draft-4" <xref target="JSO4"/><xref target="JSO4V"/> (also called draft-5, but | "draft-4" <xref target="I-D.zyp-json-schema"/> <xref target="I-D.fge-json-schema | |||
semantically intended to | -validation"/> (also called draft-5, but semantically intended to | |||
be equivalent to draft-4). | be equivalent to draft-4). | |||
The "<tt>exclusiveMinimum</tt>" and "<tt>exclusiveMaximum</tt>" keywords use the | The "<tt>exclusiveMinimum</tt>" and "<tt>exclusiveMaximum</tt>" keywords use the | |||
Boolean form there, so on import to SDF their values have to be | Boolean form there, so on import to SDF, their values have to be | |||
replaced by the values of the respective "<tt>minimum</tt>"/"<tt>maximum</tt>" | replaced by the values of the respective "<tt>minimum</tt>"/"<tt>maximum</tt>" | |||
keyword, which are themselves then removed; the reverse transformation | keyword, which are then removed; the reverse transformation | |||
applies on export.</t> | applies on export.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="composition-examples"> | <section anchor="composition-examples"> | |||
<name>Composition Examples</name> | <name>Composition Examples</name> | |||
<t>This informative appendix contains two examples illustrating different composition approaches | <t>This informative appendix contains two examples illustrating different composition approaches | |||
using the <tt>sdfThing</tt> quality.</t> | using the <tt>sdfThing</tt> quality.</t> | |||
<section anchor="outlet-strip-example"> | <section anchor="outlet-strip-example"> | |||
<name>Outlet Strip Example</name> | <name>Outlet Strip Example</name> | |||
<figure anchor="exa-sdfthing-outlet-strip"> | <figure anchor="exa-sdfthing-outlet-strip"> | |||
skipping to change at line 5915 ¶ | skipping to change at line 5732 ¶ | |||
"type": "number", | "type": "number", | |||
"unit": "Cel" | "unit": "Cel" | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="earlier"> | <section anchor="earlier"> | |||
<!-- [rfced] Does "earlier drafts" refer to earlier drafts of the I-D that becam | ||||
e this RFC or earlier versions of SDF (defined elsewhere)? Perhaps this can be | ||||
clarified? | ||||
Current: | ||||
Appendix E. Some Changes From Earlier Drafts | ||||
--> | ||||
<name>Some Changes From Earlier Drafts</name> | <name>Some Changes From Earlier Drafts</name> | |||
<t>This appendix is informative.</t> | <t>This appendix is informative.</t> | |||
<t>The present document provides the SDF base definition. | <t>The present document provides the SDF base definition. | |||
Previous revisions of SDF have been in use for several years, and both | Previous revisions of SDF have been in use for several years, and both | |||
significant collections of older SDF models and older SDF conversion | significant collections of older SDF models and older SDF conversion | |||
tools are available today. | tools are available today. | |||
This appendix provides a brief checklist that can aid in upgrading | This appendix provides a brief checklist that can aid in upgrading | |||
these to the standard.</t> | these to the standard.</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<t>The quality <tt>unit</tt> was previously called <tt>units</tt>.</t> | <t>The quality <tt>unit</tt> was previously called <tt>units</tt>.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t><tt>sdfType</tt> was developed out of a concept previously called < tt>subtype</tt>.</t> | <t><tt>sdfType</tt> was developed out of a concept previously called < tt>subtype</tt>.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t><tt>sdfChoice</tt> is the preferred way to represent JSO <tt>enum</ tt> (only a | <t><tt>sdfChoice</tt> is the preferred way to represent JSO <tt>enum</ tt> (only a | |||
limited form of which is retained), and also the way to represent | limited form of which is retained) and also the way to represent | |||
JSO <tt>anyOf</tt>.</t> | JSO <tt>anyOf</tt>.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>the length of text strings (as used with <tt>minLength</tt>/<tt>max Length</tt> | <t>The length of text strings (as used with <tt>minLength</tt>/<tt>max Length</tt> | |||
constraints) was previously defined in bytes. | constraints) was previously defined in bytes. | |||
It now is defined as the number of characters (Unicode scalar | It now is defined as the number of characters (Unicode scalar | |||
values, to be exact); a length in bytes is not meaningful unless | values, to be exact); a length in bytes is not meaningful unless | |||
bound to a specific encoding, which might differ from UTF-8 in some | bound to a specific encoding, which might differ from UTF-8 in some | |||
ecosystem mappings and protocol bindings.</t> | ecosystem mappings and protocol bindings.</t> | |||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section numbered="false" anchor="list-of-figures"> | <section numbered="false" anchor="list-of-figures"> | |||
<name>List of Figures</name> | <name>List of Figures</name> | |||
skipping to change at line 6068 ¶ | skipping to change at line 5891 ¶ | |||
<street>Threefield House</street> | <street>Threefield House</street> | |||
<street>Threefield Lane</street> | <street>Threefield Lane</street> | |||
<city>Southampton</city> | <city>Southampton</city> | |||
<country>United Kingdom</country> | <country>United Kingdom</country> | |||
</postal> | </postal> | |||
<email>w.vanderbeek@cascoda.com</email> | <email>w.vanderbeek@cascoda.com</email> | |||
</address> | </address> | |||
</contact> | </contact> | |||
</section> | </section> | |||
</back> | </back> | |||
<!-- ##markdown-source: | ||||
H4sIAAAAAAAAA+y9+3rbVpYv+D+eAkP3TKgUSVmy7NhyqjqKbHepy5e0rZxU | ||||
V3VOESRBCmUSYABQl8ju75s3OX+cJ5nzJvMks657rw2AkuwkNWfmO/66KxQJ | ||||
7Ovaa6/rbw2Hw+j8MH4QTYtZli8O4009Hz6O7sXV+WKYzYbTZZrkm/VhXJeb | ||||
NIrOH1yulvvlfHoYxXGdTJbp3yZFOUvL6jBeZouzOorqrF6mh/Ef4IF36SrJ | ||||
62waP0vnWZ7VWZHHL4pyldRx/92zFzvxvCjjZ0mdxEk+i0/yOi2TKT5VxcU8 | ||||
Pj2DAVVRMpmUKQwRXoC3tra4E82KaZ6soOtZmczrYZbCTJJqNh/i/y+TOq3q | ||||
aAr/WRTl1WFc1TOYc16lebWpZHrVZrLKqgoara/W0NDJ89MXUZSUaXIYH63X | ||||
ywxex9FFF0X5flEWuC5HMK7ofXoFX80OeQ55Wg+f4RhgvdJ8k+JaxbE+f9Oq | ||||
3GE94j72uENNrpJseRjjHL/B2Y6KcsFdZfXZZnIY0xJcLGgVdnGcUbKpz4oS | ||||
BzSMebFeZdOzJF3Gfyoq6I5eh2YO4z+dHsfHsBBlsYyPvqXvq7pM0/ow3n9y | ||||
sPcwPlrCtq+LLK/jt0UyoyemWQ1L++2ymL6vJptyMYiPj/iHYgZ9ffHk4cO9 | ||||
gy/kmw00Dk9//44fWZ8VOTzT+93e8Kv7Xw0f3t8fPtx78KhHP6Y81RUP9u/F | ||||
Wf6exvvNAn8YTYsVPQaDhSbSWVYXpZnjcVLCw3n8La5ynvtJfp9n50C7Wf0/ | ||||
/nsdf1umK3jo9C8n+kBSTbPMPJWkrad0Tb6D4cyT6Vn84MH9g4P7djXoBbMK | ||||
z4b7jx88fBKuwr+kOLQruxK/O3gyPNjfG+7vPR4+evBkf8+uxDSZFN/UP2du | ||||
z7dM/ajM4j+l5f/473lq5v28zKZVVeRmmP9alOdJZTfr/v7B/v3GZr3I8iXQ | ||||
ph1JUmaj90Co0ME3qbRLGzJF6skmmzokuH9NciCYcB/+WEzPqunZZpnGz1ez | ||||
NN99mQotSid/T/JRSS99c1YNU3xmuIRnRrN02zpqfz8UGyCU+EN8Dh0Dycbf | ||||
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 | ||||
<!-- [rfced] Please review each artwork element and let us know if any should | ||||
be marked as sourcecode (or another element) instead. | ||||
We updated Figure 5 from artwork to sourcecode. Please confirm that this is | ||||
correct. | ||||
In addition, please consider whether the "type" attribute of any sourcecode | ||||
element should be set and/or has been set correctly. | ||||
The current list of preferred values for "type" is available at | ||||
<https://www.rfc-editor.org/rpc/wiki/doku.php?id=sourcecode-types>. | ||||
If the current list does not contain an applicable type, feel free to | ||||
suggest additions for consideration. Note that it is also acceptable | ||||
to leave the "type" attribute not set. | ||||
--> | --> | |||
<!-- [rfced] We note that these terms appear both with and without <tt> tags. | ||||
Please review each instance of the terms below and ensure that they appear in | ||||
the document as desired. If these terms should be formatted consistently or | ||||
follow a specific pattern, please let us know. | ||||
<tt>absolute-URI</tt> | ||||
<tt>array</tt> | ||||
<tt>boolean</tt> | ||||
<tt>curie</tt> | ||||
<tt>date-time</tt> (also appears in quotes) | ||||
<tt>defaultNamespace</tt> | ||||
<tt>description</tt> | ||||
<tt>enum</tt> | ||||
<tt>false</tt> | ||||
<tt>features</tt> (also appears in quotes) | ||||
<tt>format</tt> | ||||
<tt>info</tt> | ||||
<tt>integer</tt> | ||||
<tt>items</tt> | ||||
<tt>json-schema.org</tt> | ||||
<tt>label</tt> | ||||
<tt>length</tt> | ||||
<tt>named-sdq</tt> | ||||
<tt>namespace</tt> | ||||
<tt>null</tt> | ||||
<tt>number</tt> | ||||
<tt>object</tt> (also appears in quotes) | ||||
<tt>pattern</tt> (also appears in quotes) | ||||
<tt>properties</tt> (also appears in quotes) | ||||
<tt>referenceable-name</tt> (also appears in quotes) | ||||
<tt>required</tt> | ||||
<tt>sdfAction</tt> | ||||
<tt>sdfChoice</tt> | ||||
<tt>sdfData</tt> | ||||
<tt>sdfEvent</tt> | ||||
<tt>sdfObject</tt> | ||||
<tt>sdfOutputData</tt> | ||||
<tt>sdfProperty</tt> | ||||
<tt>sdfRef</tt> | ||||
<tt>sdfRequired</tt> (also appears in quotes) | ||||
<tt>sdfThing</tt> | ||||
<tt>sdf</tt> | ||||
<tt>sdfType</tt> | ||||
<tt>string</tt> | ||||
<tt>toggle</tt> (also appears in quotes) | ||||
<tt>true</tt> | ||||
<tt>type</tt> | ||||
<tt>unit(s)</tt> | ||||
<tt>value</tt> | ||||
--> | ||||
<!-- [rfced] Please review the following terms and let us know if/how we | ||||
should update for consistency. | ||||
a) Capitalization | ||||
affordance vs. Affordance | ||||
boolean vs. Boolean | ||||
CURIE vs. curie | ||||
JSON pointer vs. JSON Pointer | ||||
Properties vs. properties | ||||
quality names vs. Quality Names | ||||
SDF model vs. SDF Model | ||||
b) Spacing | ||||
data qualities vs. dataqualities | ||||
data quality vs. data quality | ||||
c) Other | ||||
base SDF vs. SDF base | ||||
--> | ||||
<!-- [rfced] FYI - We have added expansions for abbreviations upon first use | ||||
per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review each | ||||
expansion in the document carefully to ensure correctness. | ||||
--> | ||||
<!-- [rfced] Please review the "Inclusive Language" portion of the online | ||||
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | ||||
and let us know if any changes are needed. Updates of this nature typically | ||||
result in more precise language, which is helpful for readers. | ||||
Note that our script did not flag any words in particular, but this should | ||||
still be reviewed as a best practice. --> | ||||
</rfc> | </rfc> | |||
End of changes. 290 change blocks. | ||||
1958 lines changed or deleted | 927 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |