<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.1.2) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-2-draft-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="CDDL 2.0">CDDL 2.0 — a draft plan</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-2-draft-00"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2022" month="October" day="19"/>
    <workgroup>CBOR Working group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The Concise Data Definition Language (CDDL) today is defined by
RFC 8610 and RFC 9165.
The latter (as well as some more application specific specifications
such as RFC 9090) have used the extension point provided in RFC 8610,
the control operator.</t>
      <t>As CDDL is used in larger projects, feature requirements become known
that cannot be easily mapped into this single extension point.
Hence, there is a need for evolution of the base CDDL specification
itself.</t>
      <t>The present document provides a roadmap towards a "CDDL 2.0".
It is based on draft-bormann-cbor-cddl-freezer, but is more selective
in what potential features it takes up and more detailed in their
discussion.
It is intended to serve as a basis for prototypical implementations of
CDDL 2.0.
What specific documents spawn from the present one or whether this
document is evolved into a single CDDL 2.0 specification.</t>
    </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-bormann-cbor-cddl-2-draft/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        cbor Working Group mailing list (<eref target="mailto:cbor@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cbor/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/>.
      </t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>(Please see abstract.)</t>
      <t>Note that the existing extension point can be exercised for new
features in parallel to the work described here.</t>
    </section>
    <section anchor="mending-syntax-deficits">
      <name>Mending syntax deficits</name>
      <section anchor="tagnum">
        <name>Non-literal Tag Numbers</name>
        <dl spacing="compact">
          <dt><em>Proposal Status</em>:</dt>
          <dd>
            <t>complete</t>
          </dd>
          <dt><em>Compatibility</em>:</dt>
          <dd>
            <t>backward (not forward)</t>
          </dd>
        </dl>
        <t>The CDDL 1.0 syntax for expressing tags in CDDL is (ABNF as in <xref target="RFC5234"/>):</t>
        <sourcecode type="abnf"><![CDATA[
type2 /= "#" "6" ["." uint] "(" S type S ")"
]]></sourcecode>
        <t>This means tag numbers can only be given as literal numbers (uints).
Some specifications operate on ranges of tag numbers, e.g., <xref target="RFC9277"/>
has a range of tag numbers 1668546817 (0x63740101) to 1668612095
(0x6374FFFF) to tag specific content formats.
This can currently not be expressed in CDDL.</t>
        <t>CDDL 2.0 extends this to</t>
        <sourcecode type="abnf"><![CDATA[
type2 /= "#" "6" ["." tag-number] "(" S type S ")"
tag-number = uint / ("<" type ">")
]]></sourcecode>
        <t>So the above range can be expressed in a CDDL fragment such as:</t>
        <sourcecode type="cddl"><![CDATA[
ct-tag<content> = #6.<ct-tag-number>(content)
ct-tag-number = 1668546817..1668612095
; or use 0x63740101..0x6374FFFF
]]></sourcecode>
        <t>Note that reuses the angle bracket syntax for generics; this reuse is
innocuous as a generic parameter/argument only ever occurs after a
rule name (<tt>id</tt>), while it occurs after <tt>.</tt> here.
(Whether there is potential for human confusion can be debated; the
above example deliberately uses generics as well.)</t>
      </section>
      <section anchor="tag-oriented-literals">
        <name>Tag-oriented Literals</name>
        <dl spacing="compact">
          <dt><em>Proposal Status</em>:</dt>
          <dd>
            <t>rough idea, porting from EDN</t>
          </dd>
          <dt><em>Compatibility</em>:</dt>
          <dd>
            <t>backward (not forward)</t>
          </dd>
        </dl>
        <t>Some CBOR tags often would be most natural to use in a CDDL spec with a literal
syntax that is tailored to their semantics instead of their
serialization in CBOR.  There is currently no way to add such syntaxes, no
defined extension point either.</t>
        <t>The proposal
"Application-Oriented Literals in CBOR Extended Diagnostic Notation"
<xref target="I-D.bormann-cbor-edn-literals"/> defines application-oriented
literals, e.g., of the form</t>
        <ul empty="true">
          <li>
            <t>dt'2019-07-21T19:53Z'</t>
          </li>
        </ul>
        <t>for datetime items.  With additional considerations for unambiguous
syntax, a similar literal form could be included in CDDL.</t>
        <t>This proposal opens a name space for the prefix that indicates an
application specific literal.
A registry could be provided to make this name space a genuine
extension point.
(This is currently the production <tt>bsqual</tt> in <xref section="B" sectionFormat="of" target="RFC8610"/>.)</t>
        <t>The syntax provided in <xref target="I-D.bormann-cbor-edn-literals"/> does not
enable the use of CDDL types -- it has the same flaw that is being
fixed for tag numbers in <xref target="tagnum"/>.</t>
      </section>
      <section anchor="clarifications">
        <name>Clarifications</name>
        <dl spacing="compact">
          <dt><em>Proposal Status</em>:</dt>
          <dd>
            <t>complete</t>
          </dd>
          <dt><em>Compatibility</em>:</dt>
          <dd>
            <t>errata fix (targets 1.0 and 2.0)</t>
          </dd>
        </dl>
        <t>A number of errata reports have been made around some details of text
string and byte string literal syntax: <xref target="Err6527"/> and <xref target="Err6543"/>.
These need to be addressed by re-examining the details of these
literal syntaxes.
Also, <xref target="Err6526"/> needs to be applied (missing backslashes in text
explaining backslash escaping).</t>
        <section anchor="err6527">
          <name>Err6527</name>
          <t>The ABNF used in <xref target="RFC8610"/> for the content of text string literals
is rather permissive:</t>
          <sourcecode type="abnf"><![CDATA[
text = %x22 *SCHAR %x22
SCHAR = %x20-21 / %x23-5B / %x5D-7E / %x80-10FFFD / SESC
SESC = "\" (%x20-7E / %x80-10FFFD)
]]></sourcecode>
          <t>This allows almost any non-C0 character to be escaped by a backslash,
but critically misses out on the <tt>\uXXXX</tt> and <tt>\uHHHH\uLLLL</tt> forms
that JSON allows to specify characters in hex.  Both can be solved by
updating the SESC production to:</t>
          <sourcecode type="abnf"><![CDATA[
SESC = "\" ( %x22 / "/" / "\" /                 ; \" \/ \\
             %x62 / %x66 / %x6E / %x72 / %x74 / ; \b \f \n \r \t
             (%x75 hexchar) )                   ; \u
hexchar = non-surrogate / (high-surrogate "\" %x75 low-surrogate)
non-surrogate = ((DIGIT / "A"/"B"/"C" / "E"/"F") 3HEXDIG) /
               ("D" %x30-37 2HEXDIG )
high-surrogate = "D" ("8"/"9"/"A"/"B") 2HEXDIG
low-surrogate = "D" ("C"/"D"/"E"/"F") 2HEXDIG
]]></sourcecode>
          <t>Now that SESC is more restrictively formulated, this also requires an
update to the BCHAR production used in the ABNF syntax for byte string
literals:</t>
          <sourcecode type="abnf"><![CDATA[
bytes = [bsqual] %x27 *BCHAR %x27
BCHAR = %x20-26 / %x28-5B / %x5D-10FFFD / SESC / CRLF
bsqual = "h" / "b64"
]]></sourcecode>
          <t>The updated version explicit allows <tt>\'</tt>, which is no longer allowed
in the updated SESC:</t>
          <sourcecode type="abnf"><![CDATA[
BCHAR = %x20-26 / %x28-5B / %x5D-10FFFD / SESC / "\'" / CRLF
]]></sourcecode>
        </section>
        <section anchor="err6543">
          <name>Err6543</name>
          <t>The ABNF used in <xref target="RFC8610"/> for the content of byte string literals
lumps together byte strings notated as text with byte strings notated
in base16 (hex) or base64 (but see also updated BCHAR production above):</t>
          <sourcecode type="abnf"><![CDATA[
bytes = [bsqual] %x27 *BCHAR %x27
BCHAR = %x20-26 / %x28-5B / %x5D-10FFFD / SESC / CRLF
]]></sourcecode>
          <t>Errata report 6543 proposes to handle the two cases in separate
productions (where, with an updated SESC, BCHAR obviously needs to be
updated as above):</t>
          <sourcecode type="abnf"><![CDATA[
bytes = %x27 *BCHAR %x27
      / bsqual %x27 *QCHAR %x27
BCHAR = %x20-26 / %x28-5B / %x5D-10FFFD / SESC / CRLF
QCHAR = DIGIT / ALPHA / "+" / "/" / "-" / "_" / "=" / WS
]]></sourcecode>
          <t>This potentially causes a subtle change, which is hidden in the WS production:</t>
          <sourcecode type="abnf"><![CDATA[
WS = SP / NL
SP = %x20
NL = COMMENT / CRLF
COMMENT = ";" *PCHAR CRLF
PCHAR = %x20-7E / %x80-10FFFD
CRLF = %x0A / %x0D.0A
]]></sourcecode>
          <t>This allows any non-C0 character in a comment, so this fragment
becomes possible:</t>
          <sourcecode type="cddl"><![CDATA[
foo = h'
   43424F52 ; 'CBOR'
   0A       ; LF, but don't use CR!
'
]]></sourcecode>
          <t>The current text is not unambiguously saying whether the three apostrophes
need to be escaped with a <tt>\</tt> or not, as in:</t>
          <sourcecode type="cddl"><![CDATA[
foo = h'
   43424F52 ; \'CBOR\'
   0A       ; LF, but don\'t use CR!
'
]]></sourcecode>
          <t>... which would be supported by the existing ABNF in <xref target="RFC8610"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="processing-model">
      <name>Processing model</name>
      <dl spacing="compact">
        <dt><em>Proposal Status</em>:</dt>
        <dd>
          <t>experiments with implementations ongoing</t>
        </dd>
        <dt><em>Compatibility</em>:</dt>
        <dd>
          <t>backwards compatible</t>
        </dd>
      </dl>
      <t>The basic (implicit) processing model for CDDL 1.0 applies a CDDL data
model to a data item and returns a Boolean that indicates whether the
data item matches that model ("<em>validation</em>").</t>
      <t><xref section="4" sectionFormat="of" target="RFC9165"/> extends this model with named "<em>features</em>".
A validation can indicate which features were used.
Validation could also be parameterized with information about what
features are allowed to be used, enabling variants (see <xref section="4" sectionFormat="of" target="RFC9165"/> and <xref target="useful"/> for examples).</t>
      <t>The <tt>cddl</tt> tool (<xref section="F" sectionFormat="of" target="RFC8610"/>) also supports experimental
forms of "annotating" a validated data item with information about
which rules were used to support validation, currently entirely based on the
information that is in a standard CDDL 1.0 data model.
This leads to a more general concept of "<em>annotation</em>", where the data
model specification supports "annotating" the validated instance by
optionally supplying information in the model.
(The annotated result is a special case of a "post-schema validation
instance" <xref target="PSVI"/>, here one where the data item itself is only
augmented, not changed, by the process.)</t>
      <t>Annotations could in turn provide input to further validation steps,
as is often done with Schematron validation in Relax-NG; with an
appropriate evaluation language this can be used for checking co-occurrence
constraints (<xref section="5" sectionFormat="of" target="I-D.draft-bormann-cbor-cddl-freezer"/>).</t>
      <t>Finally, annotations are a first step to <em>transformation</em>, i.e.,
describing how a validated data item should be interpreted as a
transformed data item by performing certain computations.
This generally requires even more support from an evaluation language,
simple transformations such as adding in default values may not need
much support though.</t>
      <t>At this time, existing experimental implementations do not lead to a
clear choice for what processing model enhancements should be in
CDDL 2.0.
This document proposes to continue the experimentation and document
good approaches.</t>
    </section>
    <section anchor="module-superstructure">
      <name>Module superstructure</name>
      <dl spacing="compact">
        <dt><em>Proposal Status</em>:</dt>
        <dd>
          <t>collection of rough ideas with examples</t>
        </dd>
        <dt><em>Compatibility</em>:</dt>
        <dd>
          <t>bidirectional (both backward and forward)</t>
        </dd>
      </dl>
      <t>Originally, CDDL was used for small data models that could be
expressed in a few lines.  As the size of data models that need to be
expressed in CDDL has increased, the need to modularize and re-use
components is increasing.</t>
      <t>CDDL 1.0 has been designed with a crude form of composition:
Concatenating a number of CDDL snippets creates a valid CDDL data
model unless there is a name collision (identical redefinition is
allowed to facilitate this approach).
With larger models, managing the name space to avoid collisions
becomes more pressing.</t>
      <t>The knowledge which CDDL snippets need to be concatenated in order to
obtain the desired data model lives entirely outside the CDDL snippets
in CDDL 1.0.
In CDDL 2.0, rules could be packaged as modules and referenced from other
modules.</t>
      <t>There could be some control of namespace pollution, as well as
unambiguous referencing into evolving specifications ("versioning")
and selection of alternatives (as was emulated with snippets in
<xref section="11" sectionFormat="of" target="RFC8428"/>, although an alternative approach for expressing
variants is demonstrated in <xref target="useful"/> based on <xref section="4" sectionFormat="of" target="RFC9165"/>).</t>
      <section anchor="compatibility">
        <name>Compatibility</name>
        <t>One approach to achieve the module structure that is friendly to
existing environments that operate with CDDL 1.0 snippets and CDDL 1.0
implementations is to add a super-syntax (similar to the way pragmas
are often added to a language), e.g., by carrying them in what is
parsed as comments in CDDL 1.0.</t>
        <t>each module to be valid CDDL (if
missing some rule definitions to be imported).</t>
      </section>
      <section anchor="namespacing">
        <name>Namespacing</name>
        <t>A convention for mapping CDDL-internal names to external ones could be
developed, possibly steered by some pragma-like constructs.  External
names would likely be URI-based, with some conventions as they are
used in RDF or Curies.  Internal names might look similar to XML
QNames.  Note that the identifier character set for CDDL deliberately
includes $ and @, which could be used in such a convention.</t>
      </section>
      <section anchor="cross-universe-references">
        <name>Cross-universe references</name>
        <t>Often, a CDDL specification needs to import from specifications in a
different language or platform.</t>
        <section anchor="iana-references">
          <name>IANA references</name>
          <t>In many cases, CDDL specifications make use of values that are
specified in IANA registries.  The <tt>.iana</tt> control operator can be
used to reference such a set of values.</t>
          <t>The reference needs to be able to point to a draft, the registry of
which has not been established yet, as well as to an established IANA registry.</t>
          <t>An example of such a usage might be:</t>
          <sourcecode type="CDDL"><![CDATA[
cose-algorithm = int .iana ["cose", "algorithms", "value"]
]]></sourcecode>
          <t>Unfortunately, the vocabulary employed in IANA registries has not been
designed for machine references.  In this case, the potential values
would come from applying the XPath expression</t>
          <sourcecode type="xpath"><![CDATA[
//iana:registry[@id='algorithms']/iana:record/iana:value
]]></sourcecode>
          <t>to <tt>https://www.iana.org/assignments/cose/cose.xml</tt>, plus some
filtering on the records returned that only leaves actual allocations.
Additional functionality may be needed for filtering with respect to other
columns of the registry record, e.g., <tt>&lt;capabilities&gt;</tt> in the case of
this example.</t>
        </section>
      </section>
      <section anchor="potential-examples">
        <name>Potential examples</name>
        <t>This section shows some examples that illustrate potential syntaxes
and semantics to be examined.</t>
        <t>One of the potential objectives here is to keep documents that make
use of this extension generally valid as CDDL 1.0 documents, albeit
possibly with a need to add further CDDL 1.0 rules to obtain a
complete specification.</t>
        <section anchor="how-name-spaces-might-look-like">
          <name>How name spaces might look like</name>
          <t>Implicit namespacing might be provided by using a document reference
as a namespace tag:</t>
          <artwork><![CDATA[
RFC8610.int ⬌ int
RFC9090.oid ⬌ oid
]]></artwork>
          <t>Note that this example establishes a namespace for the prelude
(<tt>RFC8610.int</tt>); maybe it is worth to do that more explicitly.</t>
        </section>
        <section anchor="explicitly-interacting-with-namespaces">
          <name>Explicitly interacting with namespaces</name>
          <t>New syntax for explicitly interacting with namespaces might be but
into RFC 8610 comments, with a specific prefix (and possibly starting
left-aligned).  Prefixes proposed include <tt>;;&lt;</tt> and <tt>;#</tt>; the below
will use <tt>;#</tt> even though that probably could pose too many conflicts;
it also might be too inconspicuous.</t>
          <artwork><![CDATA[
;# export oid, roid, pen as RFC9090
oid = #6.111(bstr)
roid = #6.110(bstr)
pen = #6.112(bstr)

]]></artwork>
          <t>Besides an implicit import such as</t>
          <artwork><![CDATA[
; unadorned, just import?
a = [RFC9090.oid]
]]></artwork>
          <t>there also could be an explicit import syntax:</t>
          <artwork><![CDATA[
;# import oid from RFC9090
a = [oid]
]]></artwork>
          <t>Such an explicit syntax might also be able to provide additional
parameters such as in the IANA examples above.</t>
        </section>
        <section anchor="document-references">
          <name>Document references</name>
          <t>A convention for establishing RFC references might be easy to
establish, but at least Internet-Draft references and IANA registry
references should also supported.
It is probably worth to add some indirection here, as names of
Internet-Drafts might change (including by becoming RFCs).</t>
          <artwork><![CDATA[
;# include draft-ietf-cbor-time-tag-02.txt as time-tag
event-start = time-tag.etime
]]></artwork>
        </section>
        <section anchor="add-retroactive-exporting-to-rfcs">
          <name>Add retroactive exporting to RFCs</name>
          <t>Existing RFCs with CDDL in them could presume an <tt>export ...all... as RFCnnnn</tt>
(Possibly also per-section exports as in <tt>RFC8610.D</tt> for the prelude?)</t>
          <t>Namespace tags for those exports need to be reserved so they cannot be
occupied by explicit exporting.</t>
          <t>New specifications (including RFCs) can "include"/"import" from these
namespaces, and maybe "export" their own rules in a more considered way.</t>
        </section>
        <section anchor="operations">
          <name>Operations</name>
          <ul spacing="normal">
            <li>
              <t>"export":
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>prefix: add a namespace name to "local" rulenames:      </t>
                  <artwork><![CDATA[
`oid` ➔ `RFC9090.oid`
]]></artwork>
                </li>
                <li>make that namespace available to other specs</li>
              </ol>
            </li>
            <li>
              <t>"import": include (prefixed) definitions from a source
              </t>
              <ol spacing="normal" type="1"><li>use as is: <tt>RFC9090.oid</tt></li>
                <li>unprefix: <tt>oid</tt></li>
              </ol>
              <t>
Example: prelude processing -- include+unprefix from Appendix D of RFC8610.</t>
            </li>
            <li>"include": find files, turn into namespaces to import from</li>
          </ul>
        </section>
        <section anchor="to-be-discussed">
          <name>To be discussed</name>
          <t>How to find the document that exports a namespace
(IANA? Use by other SDOs?  Internal use in an org?
How to transition between these states?)</t>
          <t>Multiple documents exporting into one namespace
(<em>Immutable</em> RFC9090 namespace vs. "OID"-namespace?
Who manages <em>mutable</em> namespaces?)</t>
          <t>Updates, revisions, versions, semver:</t>
          <artwork><![CDATA[
;# insert OID ~> 2.2   ; twiddle-wakka: this version or higher
]]></artwork>
        </section>
      </section>
      <section anchor="abnf-is-a-lot-like-cddl">
        <name>ABNF is a lot like CDDL</name>
        <t>Many of the constructs defined here for CDDL also could be used with
ABNF specifications.  ABNF would definitely benefit from a standard
way to import snippets from existing RFCs.
Since CDDL contains ABNF support (<xref section="3" sectionFormat="of" target="RFC9165"/>), it would be
natural to make some of the functionality discussed in this section
available for ABNF as well.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>(Insert new registry for application specific literals here.)</t>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>The security considerations of <xref target="RFC8610"/> apply.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9165" target="https://www.rfc-editor.org/info/rfc9165">
          <front>
            <title>Additional Control Operators for the Concise Data Definition Language (CDDL)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="December" year="2021"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), standardized in RFC 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: , , and  for the construction of constants; / for including ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and for indicating the use of a non-basic feature in an instance.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9165"/>
          <seriesInfo name="DOI" value="10.17487/RFC9165"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker">
              <organization/>
            </author>
            <author fullname="P. Overell" initials="P." surname="Overell">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC7405" target="https://www.rfc-editor.org/info/rfc7405">
          <front>
            <title>Case-Sensitive String Support in ABNF</title>
            <author fullname="P. Kyzivat" initials="P." surname="Kyzivat">
              <organization/>
            </author>
            <date month="December" year="2014"/>
            <abstract>
              <t>This document extends the base definition of ABNF (Augmented Backus-Naur Form) to include a way to specify US-ASCII string literals that are matched in a case-sensitive manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7405"/>
          <seriesInfo name="DOI" value="10.17487/RFC7405"/>
        </reference>
        <reference anchor="RFC9090" target="https://www.rfc-editor.org/info/rfc9090">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags for Object Identifiers</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="July" year="2021"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR), defined in RFC 8949, is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.</t>
              <t>This document defines CBOR tags for object identifiers (OIDs) and is the reference document for the IANA registration of the CBOR tags so defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9090"/>
          <seriesInfo name="DOI" value="10.17487/RFC9090"/>
        </reference>
        <reference anchor="useful" target="https://github.com/cbor-wg/cddl/wiki/Useful-CDDL">
          <front>
            <title>Useful CDDL</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.draft-bormann-cbor-cddl-freezer" target="https://www.ietf.org/archive/id/draft-bormann-cbor-cddl-freezer-09.txt">
          <front>
            <title>A feature freezer for the Concise Data Definition Language (CDDL)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="26" month="December" year="2021"/>
            <abstract>
              <t>   In defining the Concise Data Definition Language (CDDL), some
   features have turned up that would be nice to have.  In the interest
   of completing this specification in a timely manner, the present
   document was started to collect nice-to-have features that did not
   make it into the first RFC for CDDL, RFC 8610, or the specifications
   exercising its extension points, such as RFC 9165.

   It is now time to discuss thawing some of the concepts discussed
   here.  A number of additional proposals have been added.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-freezer-09"/>
        </reference>
        <reference anchor="cddlc" target="https://github.com/cabo/cddlc">
          <front>
            <title>CDDL conversion utilities</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="Err6526" target="https://www.rfc-editor.org/errata/eid6526">
          <front>
            <title>Errata Report 6526</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
          <seriesInfo name="RFC" value="8610"/>
        </reference>
        <reference anchor="Err6527" target="https://www.rfc-editor.org/errata/eid6527">
          <front>
            <title>Errata Report 6527</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
          <seriesInfo name="RFC" value="8610"/>
        </reference>
        <reference anchor="Err6543" target="https://www.rfc-editor.org/errata/eid6543">
          <front>
            <title>Errata Report 6543</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
          <seriesInfo name="RFC" value="8610"/>
        </reference>
        <reference anchor="PSVI" target="https://www.w3.org/XML/2002/05/psvi-use-cases">
          <front>
            <title>Use Cases for XML Schema PSVI API</title>
            <author>
              <organization/>
            </author>
            <date year="2002" month="June" day="24"/>
          </front>
        </reference>
        <reference anchor="RFC9277" target="https://www.rfc-editor.org/info/rfc9277">
          <front>
            <title>On Stable Storage for Items in Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document defines a stored ("file") format for Concise Binary Object Representation (CBOR) data items that is friendly to common systems that recognize file types, such as the Unix file(1) command.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9277"/>
          <seriesInfo name="DOI" value="10.17487/RFC9277"/>
        </reference>
        <reference anchor="I-D.bormann-cbor-edn-literals" target="https://www.ietf.org/archive/id/draft-bormann-cbor-edn-literals-00.txt">
          <front>
            <title>Application-Oriented Literals in CBOR Extended Diagnostic Notation</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="6" month="October" year="2021"/>
            <abstract>
              <t>   The Concise Binary Object Representation, CBOR (RFC 8949) defines a
   "diagnostic notation" in order to be able to converse about CBOR data
   items without having to resort to binary data.

   This document specifies how to add application-oriented extensions to
   the diagnostic notation.  It then defines two such extensions for the
   use of CBOR diagnostic notation with CoRAL and Constrained Resource
   Identifiers (draft-ietf-core-coral, draft-ietf-core-href).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-edn-literals-00"/>
        </reference>
        <reference anchor="RFC8428" target="https://www.rfc-editor.org/info/rfc8428">
          <front>
            <title>Sensor Measurement Lists (SenML)</title>
            <author fullname="C. Jennings" initials="C." surname="Jennings">
              <organization/>
            </author>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="J. Arkko" initials="J." surname="Arkko">
              <organization/>
            </author>
            <author fullname="A. Keranen" initials="A." surname="Keranen">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This specification defines a format for representing simple sensor measurements and device parameters in Sensor Measurement Lists (SenML).  Representations are defined in JavaScript Object Notation (JSON), Concise Binary Object Representation (CBOR), Extensible Markup Language (XML), and Efficient XML Interchange (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 as HTTP or the Constrained Application Protocol (CoAP) to transport the measurements of the sensor or to be configured.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8428"/>
          <seriesInfo name="DOI" value="10.17487/RFC8428"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>TBD</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
VEMAAA==

-->

</rfc>
