<?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.6 (Ruby 3.2.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-04" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.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-04"/>
    <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="February" 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 before <strong>IETF 119</strong>.</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.
To be submitted to IESG after addressing one more issue and a short
final WGLC.</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.
Ready for WGLC.</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).
Ready for WGLC.</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>To be done <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>
      <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="2" month="September" year="2023"/>
            <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-12"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-edn-literals">
          <front>
            <title>CBOR Extended Diagnostic Notation (EDN): Application-Oriented Literals, ABNF, and Media Type</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="1" month="February" 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.

   This document 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.  To facilitate
   tool interoperation, this document specifies a formal ABNF definition
   for extended diagnostic notation (EDN) that accommodates application-
   oriented literals.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-08"/>
        </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="29" month="January" 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-03"/>
        </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="26" month="February" 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), operations on text, and deterministic
   encoding.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cddl-more-control-03"/>
        </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>
            <date day="18" month="December" year="2023"/>
            <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 corrections
   and additional features has 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.

   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-01"/>
        </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="2023"/>
            <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-02"/>
        </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="2" month="September" year="2023"/>
            <abstract>
              <t>   CBOR-based protocols often make use of numbers allocated in a
   registry.  While developing 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.  Such changes are very well
   possible in the future, at which time this draft will be updated.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-draft-numbers-02"/>
        </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="24" month="December" year="2023"/>
            <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-04"/>
        </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="26" month="February" 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 (-11) adds an author, the "record" function
   // tag (TBD114), a special role for the simple value undefined, and a
   // number of editorial cleanups.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-packed-11"/>
        </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="8" month="January" 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.

   This document also introduces the concept of Application Profiles,
   which are layered on top of the CBOR CDE Profile and can address more
   application specific requirements.  Application Profiles are defined
   in separate documents.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cde-01"/>
        </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.
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:
H4sIAAAAAAAAA6Va23IbR5J9r6+ohR5MctDgRZex4PGFEiUNd2VJYcn2xDgc
y0J3AehRoxvTF4Iwgxv7EfsBftgv8f7Jfsmek1l9AUnZD8sIWw2gLlmZJzNP
ZnUUReZyah8aU6d15qf2K2Pt87Oz17/9ejI5si5P7MxvC/zzv//5X9bZpHTz
2q4zlxs3m5Uec7vRJini3K2wiIyKZkW5cnkexXiI4iTJopNIf8lc7avaPLAn
RyePoqOT6OTPxnz0201RJlN7nte+zH0dnXGwiV09tWk+L0xVl96tMODFh5dm
s8DWz95+Z38syo9pvrCLsmjWxlz6vPFTnGLl0mxqR9z9m9TX80lRLkb4fpHW
y2Y2tSLWZnGokhmzTqf2p7qIx7YqSuw0r/C0XelDXKzWLq7lYeXzuvrZGNfU
y6LkVhH+s1bP/tyVVe1z+0xPL79g56n9Pk8vfVml9f/8d22flR7L2A9/P5cB
PJnHMd8VVT138dI+fHj06NGR/Ban9XYaJugXRYJ9zqKTzx8+fhq+afK6xKhX
nptu5cv1ssgx7k+PnkaPTo6jk+PPoycPn54cy49etRO7WfFN/UtK3Rhjcspc
Q0we6ruXzz9/cnyEQVCQfn56/OQxPhfYrMiOjaFVBjPOo7PJXaPPcbRffDm1
4SEMpEl0lE/yKEthc5dVUzv8dGdos04AnYhyRYvSrVYO64aHO4Nl91VR+ihI
PLXDT3dXDxOSJvMVx8rDfecq53E32Gc61mf3DlXA581qBttPbXj4pLLi6lIV
zqc7AgKCHz08RP+9R37PyR4/wAlWvVLF5LUrF8TYsq7X1fTwkAhwZbyE8Sat
fxzyi8NVBa/Agodnny///ejFolh8/vSV++71yzeb2fEP83/L/nr+SJfsYwb/
fnqOST8DhHVNh0xSt8gB6DS2eVEDJUVu/ZVbraFVOLRGico2eeLLFlSyEm08
7WPDE3zZVH7eZPcfRB16As88HPr04Sb9mB5+LxMjBqmhyPq1DV+/e//D+f1r
bzabyeahqOZv374+PDk6Ojk8eny4ri7TCDJFsasEIr3QkPjoSXTy6NZuiAsY
aeEvFgvZ9/ESLigb29N35/C9KIqsmyEQIMwY82GJGUUep5h55mpnz/w8zVPR
4WuXLxq38HaP4u/bukjc1qaVTTjGI2JvDZz1t1/pJhLC5ROddyILI/wCGHbP
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
PDsz/wc9Jz3+qC4AAA==

-->

</rfc>
