<?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.7.19 (Ruby 3.3.4) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-2-draft-05" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.0 -->
  <front>
    <title abbrev="CDDL 2.0">CDDL 2.0 and beyond — a draft plan</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-2-draft-05"/>
    <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="2024" month="August" day="27"/>
    <workgroup>CBOR Working group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 62?>

<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.
This document is intended to evolve over time; it might spawn specific
documents and then retire or eventually be published as a roadmap
document.</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>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cbor-wg/cddl-2"/>.</t>
    </note>
  </front>
  <middle>
    <?line 85?>

<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.
One such draft, <xref target="I-D.ietf-cbor-cddl-more-control"/>, is planned to form the first set of
specifications going forward from the CDDL-2 project together with <xref target="I-D.ietf-cbor-update-8610-grammar"/>.</t>
      <t>The rest of this introduction gives a rough overview over what could
be the development plan for CDDL 1.1, 2.0, 2.5.</t>
      <section anchor="s11">
        <name>CDDL 1.1 + 2 plan (standards track)</name>
        <t>This section documents the status in Summer 2024.</t>
        <t>CDDL 1.1 milestone (documents technically complete, implemented):</t>
        <ul spacing="normal">
          <li>
            <t>"CDDL 1.1": <xref target="I-D.ietf-cbor-update-8610-grammar"/>, <em>Grammar</em> fixes:
Empty files (enabling CDDL 2), non-literal tags, errata fixes.
Approved document, in RFC editor queue (EDIT state) at the time of writing.</t>
          </li>
          <li>
            <t>Parallel to CDDL 1.1: More <em>control</em> operators
<xref target="I-D.ietf-cbor-cddl-more-control"/>: Additional control operators, another iteration
like RFC 9165 before.
Passed WGLC, to be submitted to IESG after a final chair check.</t>
          </li>
        </ul>
        <t>CDDL 2.0 work:</t>
        <ul spacing="normal">
          <li>
            <t>Technically complete before <strong>IETF 119</strong>: CDDL 2.0: <xref target="I-D.ietf-cbor-cddl-modules"/>
(<tt>import</tt>/<tt>include</tt> directives, implemented).
Feedback is available from IETF 119, one open technical issue
(sockets); WGLC before IETF 121.</t>
          </li>
          <li>
            <t>Potentially, further directives to be added.
No proposals are ripe for specification; this work could go into a
second document constituting "CDDL 2.1" so we have the
well-understood <tt>import</tt>/<tt>include</tt> available now.</t>
          </li>
        </ul>
        <t>"CDDL 2.5":</t>
        <ul spacing="normal">
          <li>
            <t>Being prepared in <strong>2024</strong>: CDDL 2.5: <xref target="anno"/> of the present document
("<em>annotations</em>", plus some functionality enabled by that).
The requirements are reasonably well-understood;
the specific form this takes needs to be worked out.
Enables, e.g., <xref section="5" sectionFormat="of" target="I-D.bormann-cbor-cddl-freezer"/> (co-occurrence).</t>
          </li>
        </ul>
      </section>
      <section anchor="s12">
        <name>Other documents</name>
        <t>Not on the main line of development, but important ancillary work:</t>
        <ul spacing="normal">
          <li>
            <t>(Informational, implemented): Section <xref target="I-D.bormann-cbor-cddl-freezer" section="6" sectionFormat="bare">alternative representations</xref> of <xref target="I-D.bormann-cbor-cddl-freezer"/>:
CDDL-in-JSON format(s) for interchange of CDDL model information
between tools.</t>
          </li>
          <li>
            <t>(Informational, companion to <xref target="I-D.ietf-cbor-cddl-modules"/>): <xref target="I-D.bormann-cbor-rfc-cddl-models"/>
(builds standard collection of referenceable models).</t>
          </li>
          <li>
            <t>(BCP? Informational?): <xref target="I-D.bormann-cbor-draft-numbers"/>
(BCP for handling assigned numbers during draft stage; can stay
informational as the work described is completed and any reference
to the document erased before a specification using it would be published).</t>
          </li>
          <li>
            <t>Application-oriented literal <tt>e''</tt> so diagnostic notation can refer
to named numbers that are specified in CDDL (makes use of <xref target="I-D.ietf-cbor-edn-literals"/>,
implemented, see <xref target="enum-literals"/> for an introduction).</t>
          </li>
        </ul>
        <t>More explorative at this point:</t>
        <ul spacing="normal">
          <li>
            <t>(Standards-Track?) The remaining <xref target="syntax"/> of this document:
application-oriented literals in CDDL mirroring the work in
<xref target="I-D.ietf-cbor-edn-literals"/>.</t>
          </li>
          <li>
            <t>(Informational or Standards-Track?): <xref target="I-D.bormann-cbor-cddl-csv"/> (using CDDL to
model CSV documents).</t>
          </li>
        </ul>
        <t>Important CBOR work that may be reflected in some CDDL extensions:</t>
        <ul spacing="normal">
          <li>
            <t>Evolving Extended Diagnostic Notation <xref target="I-D.ietf-cbor-edn-literals"/>.  While EDN
and CDDL are independent languages (with EDN rooted in JSON and CDDL
in ABNF and Relax-NG), they are often used together, and
developments in one may spawn parallel work in the other.</t>
          </li>
          <li>
            <t>Common Deterministic Encoding (CDE) <xref target="I-D.ietf-cbor-cde"/> and related documents.
These do define CDDL operators already, which may be sufficient for
initial use; this might be extended once more experience has been
gained.</t>
          </li>
          <li>
            <t>Packed CBOR <xref target="I-D.ietf-cbor-packed"/>.
CDDL already can be used to describe the original
data item represented in a packed data item.
Requirements for describing the latter have not yet been collected;
there is some relation to <xref target="transformation">transformation</xref> that
might need to be explored.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="syntax">
      <name>Mending syntax deficits</name>
      <t>The previous content of this section formed the basis for <xref target="I-D.ietf-cbor-update-8610-grammar"/>,
except for <xref target="tagolit-ref"/>.</t>
      <section anchor="tagolit-ref">
        <name>Tag-oriented Literals</name>
        <t>Incomplete, see <xref target="tagolit"/>.</t>
      </section>
    </section>
    <section anchor="anno">
      <name>Processing model: Beyond Validation</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>
      <section anchor="annotations">
        <name>Annotations</name>
        <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.bormann-cbor-cddl-freezer"/>).</t>
      </section>
      <section anchor="transformation">
        <name>Transformation</name>
        <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>
      </section>
      <section anchor="next-steps">
        <name>Next Steps</name>
        <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 follow-ons.
This document proposes to continue the experimentation and document
good approaches.</t>
      </section>
    </section>
    <section anchor="module-superstructure">
      <name>Module superstructure</name>
      <t>The previous content of this section formed the basis for <xref target="I-D.ietf-cbor-cddl-modules"/>.
Additional work might be started on the ideas outlined in the
subsections of this section.</t>
      <section anchor="cross-universe-references">
        <name>Cross-universe references</name>
        <t>See <xref target="cross"/>.
<!-- {Appendix A.2 of -cddl-2-draft}}. -->
        </t>
      </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>This document makes no requests of IANA.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>The security considerations of <xref target="RFC8610"/> apply.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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"/>
            <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 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">
          <front>
            <title>Additional Control Operators for the Concise Data Definition Language (CDDL)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.bormann-cbor-cddl-freezer">
          <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="28" month="February" year="2024"/>
            <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.

   Significant parts of this draft have now moved over to the CDDL 2.0
   project, described in draft-bormann-cbor-cddl-2-draft.  The remaining
   items in this draft are not directly related to the CDDL 2.0 effort.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-freezer-13"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-edn-literals">
          <front>
            <title>CBOR Extended Diagnostic Notation (EDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="21" month="August" year="2024"/>
            <abstract>
              <t>   The Concise Binary Object Representation, CBOR (STD 94, RFC 8949),
   defines a "diagnostic notation" in order to be able to converse about
   CBOR data items without having to resort to binary data.  RFC 8610
   extends this into what is known as Extended Diagnostic Notation
   (EDN).

   This document sets forth a further step of evolution of EDN, and it
   is intended to serve as a single reference target in specifications
   that use EDN.

   It specifies how to add application-oriented extensions to the
   diagnostic notation.  It then defines two such extensions for text
   representations of epoch-based date/times and of IP addresses and
   prefixes (RFC 9164).

   A few further additions close some gaps in usability.  It modifies
   one extension specified in Appendix G.4 of RFC 8610 to enable further
   increasing usability.  To facilitate tool interoperation, this
   document specifies a formal ABNF definition for EDN as defined today,
   and it adds media types.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-11"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-update-8610-grammar">
          <front>
            <title>Updates to the CDDL grammar of RFC 8610</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="24" month="June" year="2024"/>
            <abstract>
              <t>   The Concise Data Definition Language (CDDL), as defined in RFC 8610
   and RFC 9165, provides an easy and unambiguous way to express
   structures for protocol messages and data formats that are
   represented in CBOR or JSON.

   The present document updates RFC 8610 by addressing errata and making
   other small fixes for the ABNF grammar defined for CDDL there.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-update-8610-grammar-06"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-cddl-more-control">
          <front>
            <title>More Control Operators for CDDL</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="21" month="July" year="2024"/>
            <abstract>
              <t>   The Concise Data Definition Language (CDDL), standardized in RFC
   8610, provides "control operators" as its main language extension
   point.  RFCs have added to this extension point both in an
   application-specific and a more general way.

   The present document defines a number of additional generally
   applicable control operators for text conversion (Bytes, Integers,
   JSON, Printf-style formatting) and for an operation on text.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cddl-more-control-06"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-cddl-modules">
          <front>
            <title>CDDL Module Structure</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Brendan Moran" initials="B." surname="Moran">
              <organization>Arm Limited</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   At the time of writing, the Concise Data Definition Language (CDDL)
   is defined by RFC 8610 and RFC 9165.  The latter has used the
   extension point provided in RFC 8610, the _control operator_.

   As CDDL is being used in larger projects, the need for features has
   become known that cannot be easily mapped into this single extension
   point.

   The present document defines a backward- and forward-compatible way
   to add a module structure to CDDL.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cddl-modules-02"/>
        </reference>
        <reference anchor="I-D.bormann-cbor-rfc-cddl-models">
          <front>
            <title>CDDL models for some existing RFCs</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="27" month="August" year="2024"/>
            <abstract>
              <t>   A number of CBOR- and JSON-based protocols have been defined before
   CDDL was standardized or widely used.

   This short draft records some CDDL definitions for such protocols,
   which could become part of a library of CDDL definitions available
   for use in CDDL2 processors.  It focuses on CDDL in (almost)
   published IETF RFCs.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-rfc-cddl-models-04"/>
        </reference>
        <reference anchor="I-D.bormann-cbor-draft-numbers">
          <front>
            <title>Managing CBOR numbers in Internet-Drafts</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="29" month="February" year="2024"/>
            <abstract>
              <t>   CBOR-based protocols often make use of numbers allocated in a
   registry.  During development of the protocols, those numbers may not
   yet be available.  This impedes the generation of data models and
   examples that actually can be used by tools.

   This short draft proposes a common way to handle these situations,
   without any changes to existing tools.  Also, in conjunction with the
   application-oriented EDN literal "e", a further reduction in
   editorial processing of CBOR examples around the time of approval can
   be achieved.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-draft-numbers-03"/>
        </reference>
        <reference anchor="I-D.bormann-cbor-cddl-csv">
          <front>
            <title>Using CDDL for CSVs</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="16" month="June" year="2024"/>
            <abstract>
              <t>   The Concise Data Definition Language (CDDL), standardized in RFC
   8610, is defined to provide data models for data shaped like JSON or
   CBOR.

   Another representation format that is quote popular is the CSV
   (Comma-Separated Values) file as defined by RFC 4180.

   The present document shows a way how to use CDDL to provide a data
   model for CSV files.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-csv-05"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-packed">
          <front>
            <title>Packed CBOR</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Mikolai Gütschow" initials="M." surname="Gütschow">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <date day="2" month="March" year="2024"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR, RFC 8949 == STD 94)
   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.

   CBOR does not provide any forms of data compression.  CBOR data
   items, in particular when generated from legacy data models, often
   allow considerable gains in compactness when applying data
   compression.  While traditional data compression techniques such as
   DEFLATE (RFC 1951) can work well for CBOR encoded data items, their
   disadvantage is that the receiver needs to decompress the compressed
   form to make use of the data.

   This specification describes Packed CBOR, a simple transformation of
   a CBOR data item into another CBOR data item that is almost as easy
   to consume as the original CBOR data item.  A separate decompression
   step is therefore often not required at the receiver.


   // The present version (-12) updates the IANA "Values for Tag
   // Numbers" table, sorting it and cleaning up the "Data Item" column.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-packed-12"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-cde">
          <front>
            <title>CBOR Common Deterministic Encoding (CDE)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="25" month="July" year="2024"/>
            <abstract>
              <t>   CBOR (STD 94, RFC 8949) defines "Deterministically Encoded CBOR" in
   its Section 4.2, providing some flexibility for application specific
   decisions.  To facilitate Deterministic Encoding to be offered as a
   selectable feature of generic encoders, the present document defines
   a CBOR Common Deterministic Encoding (CDE) Profile that can be shared
   by a large set of applications with potentially diverging detailed
   requirements.  It also defines "Basic Serialization", which stops
   short of the potentially more onerous requirements that make CDE
   fully deterministic, while employing most of its reductions of the
   variability needing to be handled by decoders.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cde-05"/>
        </reference>
        <reference anchor="enum-literals" target="https://mailarchive.ietf.org/arch/msg/cbor/D8h_0Egog89GaRLFNwb1VfKlHI4">
          <front>
            <title>[Cbor] Getting diagnostic notation examples in drafts under control</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="February" day="26"/>
          </front>
        </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="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>
      </references>
    </references>
    <?line 282?>

<section anchor="fridge">
      <name>Fridge</name>
      <t>This appendix contains sections that may not make it to a 2.0
milestone, but might be part of a followup.</t>
      <section anchor="tagolit">
        <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 the
serialization of their tag content in CBOR.
There is currently no way to add such syntaxes, no
defined extension point either.</t>
        <t>The specification
"CBOR Extended Diagnostic Notation (EDN): Application-Oriented Literals, ABNF, and Media Type"
<xref target="I-D.ietf-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 namespace for the prefix that indicates an
application specific literal.
A registry could be provided to turn this namespace into 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.ietf-cbor-edn-literals"/> does not
enable the use of named CDDL rules — using it directly in CDDL would
have the same flaw that is being
fixed for tag numbers in <xref section="3.2" sectionFormat="of" target="I-D.ietf-cbor-update-8610-grammar"/>.</t>
      </section>
      <section anchor="cross">
        <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 proposed <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.
<xref section="3.1" sectionFormat="of" target="I-D.bormann-cbor-rfc-cddl-models"/> contains an example of a CDDL module that is
automatically generated from those assignments.</t>
          <t>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>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>TBD</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
fZ4vAAA=

-->

</rfc>
