<?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.31 (Ruby 3.4.8) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-freezer-17" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="CDDL feature freezer">A feature freezer for the Concise Data Definition Language (CDDL)</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-freezer-17"/>
    <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="2026" month="March" day="01"/>
    <keyword>CDDL evolution</keyword>
    <abstract>
      <?line 55?>

<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.</t>
      <t>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>
  <middle>
    <?line 69?>

<section anchor="intro">
      <name>Introduction</name>
      <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 <xref target="RFC8610"/>, or the specifications exercising its extension points, such
as <xref target="RFC9165"/>.</t>
      <t>Significant parts of this draft have now moved over to <xref target="I-D.bormann-cbor-cddl-2-draft"/>, which in turn references <xref target="RFC9682"/>, <xref target="RFC9741"/>, <xref target="I-D.ietf-cbor-cddl-modules"/>.
The remaining items in Sections <xref format="counter" target="lit"/> to <xref format="counter" target="controls"/> of this draft are not directly related to the CDDL
2.0 effort.
<xref target="co-occ"/> might turn into a part of CDDL 2.5.</t>
      <t>The remaining sections are not proposing to change CDDL, but are
ancillary developments:
<xref target="altrep"/> is more interesting for the ecosystem of tools around CDDL.
<xref target="alttarget"/> examines extending the area of application of CDDL beyond
CBOR and JSON.</t>
      <t>There is always a danger for a document like this to become a shopping
list; the intention is to develop this document further based on the
rapidly growing real-world experience with the first CDDL standard.
Some sections are labeled WONTFIX, reflecting an assumption that the
specific extension objective will not be addressed or will be
addressed in a different way.</t>
    </section>
    <section anchor="base-language-features">
      <name>Base language features</name>
      <section anchor="cuts">
        <name>Cuts</name>
        <t><xref section="3.5.4" sectionFormat="of" target="RFC8610"/> alludes to a new language feature, <em>cuts</em>,
and defines it in a fashion that is rather focused on a single
application in the context of maps and generating better diagnostic
information about them.</t>
        <t>The present document is expected to grow a more complete definition of
cuts, with the expectation that it will be upwards-compatible to the
existing one in <xref target="RFC8610"/>, before this possibly becomes a mainline
language feature in a future version of CDDL.</t>
      </section>
    </section>
    <section anchor="lit">
      <name>Literal syntax</name>
      <t>Literal syntax is also discussed in <xref section="A.1" sectionFormat="of" target="I-D.bormann-cbor-cddl-2-draft"/>,
which might provide another approach to <xref target="relit"/>.
This appendix is in turn based on ideas in <xref target="I-D.ietf-cbor-edn-literals"/>.</t>
      <section anchor="relit">
        <name>Regular Expression Literals (WONTFIX)</name>
        <t>Regular expressions currently are notated as strings in CDDL, with all
the string escaping rules applied once.  It might be convenient to
have a more conventional literal format for regular expressions,
possibly also providing a place to add modifiers such as <tt>/i</tt>.
This might also imply <tt>text .regexp ...</tt>, which with the proposal in
<xref target="pcre"/> then raises the question of how to indicate the regular
expression flavor.</t>
        <t>(With the support for ABNF in <xref target="RFC9165"/>, the need for this is
reduced.
Also, the proliferation of regular expression flavors is hard to
address with a single syntax.)</t>
      </section>
    </section>
    <section anchor="controls">
      <name>Controls</name>
      <t>Controls are the main extension point of the CDDL language.
It is relatively painless to add controls to CDDL; this mechanism has
been exercised in <xref target="RFC9090"/> for SDNV <xref target="RFC6256"/> and ASN.1 OID related byte
strings, and in <xref target="RFC9165"/> for more generally applicable controls,
including an interface to ABNF <xref target="RFC5234"/> <xref target="RFC7405"/>.
A more recent collection of additions has been published in <xref target="RFC9741"/>.</t>
      <t>Several further candidates have been identified that aren't quite ready for
adoption, of which a few shall be listed here.</t>
      <section anchor="pcre">
        <name>Control operator .pcre</name>
        <t>There are many variants of regular expression languages.
<xref section="3.8.3" sectionFormat="of" target="RFC8610"/> defines the .regexp control, which is
based on <xref target="XSD2">XSD</xref> regular expressions.
As discussed in that section, the most desirable form of regular
expressions in many cases is the family called "Perl-Compatible
Regular Expressions" (<xref target="PCRE"/>); however, no formally stable
definition of PCRE is available at this time for normatively
referencing it from an RFC.</t>
        <t>The present document defines the control operator .pcre, which is
similar to .regexp, but uses PCRE2 regular expressions.
More specifically, a <tt>.pcre</tt> control indicates that the text string
given as a target needs to match the PCRE regular expression given as
a value in the control type, where that regular expression is anchored
on both sides.
(If anchoring is not desired for a side, <tt>.*</tt> needs to be inserted
there.)</t>
        <t>Similarly, <tt>.es2018re</tt> could be defined for ECMAscript 2018 regular
expressions with anchors added.</t>
        <t>See also <xref target="RFC9485"/>, which could be specifically called out via
<tt>.iregexp</tt> (even though <tt>.regexp</tt> as per <xref section="3.8.3" sectionFormat="of" target="RFC8610"/>
would also have the same semantics, except for a wider range of regexps).</t>
      </section>
      <section anchor="endianness-in-bits">
        <name>Endianness in .bits</name>
        <t>How useful would it be to have another variant of .bits that counts
bits like in RFC box notation?  (Or at least per-byte?  32-bit words
don't always perfectly mesh with byte strings.)</t>
      </section>
      <section anchor="bitfield-control">
        <name>.bitfield control</name>
        <t>Provide a way to specify bitfields in byte strings and uints to a
higher level of detail than is possible with .bits.  Strawman:</t>
        <sourcecode type="CDDL"><![CDATA[
Field = uint .bitfield Fieldbits

Fieldbits = [
  flag1: [1, bool],
  val: [4, Vals],
  flag2: [1, bool],
]

Vals = &(A: 0, B: 1, C: 2, D: 3)
]]></sourcecode>
        <t>Note that the group within the controlling array can have choices,
enabling the whole power of a context-free grammar (but not much more).</t>
      </section>
    </section>
    <section anchor="co-occ">
      <name>Co-occurrence Constraints</name>
      <t>While there are no co-occurrence constraints in CDDL, many actual use
cases can be addressed by using the fact that a group is a grammar:</t>
      <sourcecode type="CDDL"><![CDATA[
postal = {
  ( street: text,
    housenumber: text) //
  ( pobox: text .regexp "[0-9]+" )
}
]]></sourcecode>
      <t>However, constraints that are not just structural/tree-based but are
predicates combining parts of the structure cannot be expressed:</t>
      <sourcecode type="CDDLx"><![CDATA[
session = {
  timeout: uint,
}

other-session = {
  timeout: uint  .lt [somehow refer to session.timeout],
}
]]></sourcecode>
      <t>As a minimum, this requires the ability to reach over to other parts
of the tree in a control.  Compare JSON Pointer <xref target="RFC6901"/> and JSON
Relative Pointer <xref target="I-D.handrews-relative-json-pointer"/>, as well as
<contact fullname="Stefan Gössner"/>'s jsonpath, a JSON analogue of XPath that has recently
been standardized <xref target="RFC9535"/>.</t>
      <t>More generally, something akin to what Schematron is to Relax-NG may
be needed.</t>
    </section>
    <section anchor="altrep">
      <name>Alternative Representations</name>
      <t>For CDDL, alternative representations e.g. in JSON (and thus in YAML)
could be defined, similar to the way YANG defines an XML-based
serialization called YIN in <xref section="11" sectionFormat="of" target="RFC6020"/>.
One proposal for such a syntax is provided by the <tt>cddlc</tt> tool
<xref target="cddlc"/>, which is reproduced below.
This could be written up in more detail and agreed upon.
(Since cddlc version 0.1.8, the "mem"-labeled array includes
information about the presence of a cut, see <xref section="3.5.4" sectionFormat="of" target="RFC8610"/>.)</t>
      <sourcecode type="cddl"><![CDATA[
cddlj = ["cddl", +rule]
rule = ["=" / "/=" / "//=", namep, type]
namep = ["name", id] / ["gen", id, +id]
id = text .regexp "[A-Za-z@_$](([-.])*[A-Za-z0-9@_$])*"
op = ".." / "..." /
  text .regexp "\\.[A-Za-z@_$](([-.])*[A-Za-z0-9@_$])*"
namea = ["name", id] / ["gen", id, +type]
type = value / namea / ["op", op, type, type] /
  ["map", group] / ["ary", group] / ["tcho", 2*type] /
  ["unwrap", namea] / ["enum", group / namea] /
  ["prim", ?((6, type/uint, ?type) // (0..7, ?uint))]
group = ["mem", bool, null/type, type] /
  ["rep", uint, uint/false, group] /
  ["seq", 2*group] / ["gcho", 2*group]
value = ["number"/"text"/"bytes", text]
]]></sourcecode>
      <t>The "prim"-labeled array includes support for non-literal tag numbers
(<xref section="3.2" sectionFormat="of" target="RFC9682"/>).</t>
      <t>More recently, a variant of this format has been used for easier
processing.  It collects rules in a map (JSON object) and binds
generic parameters to argument positions.  This variant will be
described in a further revision of this document.</t>
    </section>
    <section anchor="alttarget">
      <name>Other target formats</name>
      <t>CDDL has originally been designed to describe CBOR and JSON data.
One format of interest is comma-separated values, CSV <xref target="RFC4180"/><xref target="I-D.shafranovich-rfc4180-bis"/>.
<xref target="I-D.bormann-cbor-cddl-csv"/> is a draft for using CDDL models with CSV.</t>
    </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:.plus,.cat, and.det for the construction of constants;.abnf/.abnfb for including ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and.feature 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>
        <reference anchor="RFC9741">
          <front>
            <title>Concise Data Definition Language (CDDL): Additional Control Operators for the Conversion and Processing of Text</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="March" year="2025"/>
            <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 in both an application-specific and a more general way.</t>
              <t>The present document defines a number of additional generally applicable control operators for text conversion (bytes, integers, printf-style formatting, and JSON) and for an operation on text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9741"/>
          <seriesInfo name="DOI" value="10.17487/RFC9741"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <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">
          <front>
            <title>Case-Sensitive String Support in ABNF</title>
            <author fullname="P. Kyzivat" initials="P." surname="Kyzivat"/>
            <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">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags for Object Identifiers</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <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="RFC6256">
          <front>
            <title>Using Self-Delimiting Numeric Values in Protocols</title>
            <author fullname="W. Eddy" initials="W." surname="Eddy"/>
            <author fullname="E. Davies" initials="E." surname="Davies"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>Self-Delimiting Numeric Values (SDNVs) have recently been introduced as a field type in proposed Delay-Tolerant Networking protocols. SDNVs encode an arbitrary-length non-negative integer or arbitrary- length bitstring with minimum overhead. They are intended to provide protocol flexibility without sacrificing economy and to assist in future-proofing protocols under development. This document describes formats and algorithms for SDNV encoding and decoding, along with notes on implementation and usage. This document is a product of the Delay-Tolerant Networking Research Group and has been reviewed by that group. No objections to its publication as an RFC were raised. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6256"/>
          <seriesInfo name="DOI" value="10.17487/RFC6256"/>
        </reference>
        <reference anchor="XSD2" target="https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">
          <front>
            <title>XML Schema Part 2: Datatypes Second Edition</title>
            <author fullname="Ashok Malhotra" role="editor"/>
            <author fullname="Paul V. Biron" role="editor"/>
            <date day="28" month="October" year="2004"/>
          </front>
          <seriesInfo name="W3C REC" value="REC-xmlschema-2-20041028"/>
          <seriesInfo name="W3C" value="REC-xmlschema-2-20041028"/>
        </reference>
        <reference anchor="PCRE" target="http://pcre.org/current/doc/html/">
          <front>
            <title>Perl-compatible Regular Expressions (revised API: PCRE2)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC9485">
          <front>
            <title>I-Regexp: An Interoperable Regular Expression Format</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="T. Bray" initials="T." surname="Bray"/>
            <date month="October" year="2023"/>
            <abstract>
              <t>This document specifies I-Regexp, a flavor of regular expression that is limited in scope with the goal of interoperation across many different regular expression libraries.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9485"/>
          <seriesInfo name="DOI" value="10.17487/RFC9485"/>
        </reference>
        <reference anchor="RFC9535">
          <front>
            <title>JSONPath: Query Expressions for JSON</title>
            <author fullname="S. Gössner" initials="S." role="editor" surname="Gössner"/>
            <author fullname="G. Normington" initials="G." role="editor" surname="Normington"/>
            <author fullname="C. Bormann" initials="C." role="editor" surname="Bormann"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>JSONPath defines a string syntax for selecting and extracting JSON (RFC 8259) values from within a given JSON value.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9535"/>
          <seriesInfo name="DOI" value="10.17487/RFC9535"/>
        </reference>
        <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="I-D.bormann-cbor-cddl-2-draft">
          <front>
            <title>CDDL 2.0 and beyond -- a draft plan</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="1" month="March" year="2026"/>
            <abstract>
              <t>   The Concise Data Definition Language (CDDL) today is defined by
   RFC 8610, RFC 9165, RFC 9682, and RFC 9741).  RFC 9165 and 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.

   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.

   The present document provides a roadmap towards a "CDDL 2.0"; it is
   intended to serve as a basis for implementations that evolve with the
   concept of 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.  This document is intended to evolve
   over time; it might spawn specific documents and then retire, or it
   might eventually be published as a roadmap document.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-2-draft-08"/>
        </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="16" month="October" year="2025"/>
            <abstract>
              <t>   This document formalizes and consolidates the definition of the
   Extended Diagnostic Notation (EDN) of the Concise Binary Object
   Representation (CBOR), addressing implementer experience.

   Replacing EDN's previous informal descriptions, it updates RFC 8949,
   obsoleting its Section 8, and RFC 8610, obsoleting its Appendix G.

   It also specifies and uses registry-based extension points, using one
   to support text representations of epoch-based dates/times and of IP
   addresses and prefixes.


   // (This cref will be removed by the RFC editor:) The present -19
   // includes the definition of the cri'' application- extension. cri''
   // was previously defined in draft-ietf-core-href; however the latter
   // document overtook the present document in the approval process.
   // As the definition of cri'' is dependent on the present document
   // (and conversely has essentially no dependency on the technical
   // content of draft-ietf-core-href beyond its mere existence), the
   // text (including IANA considerations) has been moved here. -19 is
   // intended for use at the CBOR WG meeting at IETF 124.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-19"/>
        </reference>
        <reference anchor="RFC9682">
          <front>
            <title>Updates to the Concise Data Definition Language (CDDL) Grammar</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="November" year="2024"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), as defined in RFCs 8610 and 9165, provides an easy and unambiguous way to express structures for protocol messages and data formats that are represented in Concise Binary Object Representation (CBOR) or JSON.</t>
              <t>This document updates RFC 8610 by addressing related errata reports and making other small fixes for the ABNF grammar defined for CDDL.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9682"/>
          <seriesInfo name="DOI" value="10.17487/RFC9682"/>
        </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="1" month="March" year="2026"/>
            <abstract>
              <t>   At the time of writing, the Concise Data Definition Language (CDDL)
   is defined by RFC 8610 and RFC 9682 as well as RFC 9165 and RFC 9741.
   The latter two have 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-06"/>
        </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="1" month="March" year="2026"/>
            <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-08"/>
        </reference>
        <reference anchor="RFC6901">
          <front>
            <title>JavaScript Object Notation (JSON) Pointer</title>
            <author fullname="P. Bryan" initials="P." role="editor" surname="Bryan"/>
            <author fullname="K. Zyp" initials="K." surname="Zyp"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6901"/>
          <seriesInfo name="DOI" value="10.17487/RFC6901"/>
        </reference>
        <reference anchor="I-D.handrews-relative-json-pointer">
          <front>
            <title>Relative JSON Pointers</title>
            <author fullname="Geraint Luff" initials="G." surname="Luff">
         </author>
            <author fullname="Henry Andrews" initials="H." surname="Andrews">
         </author>
            <date day="18" month="September" year="2019"/>
            <abstract>
              <t>   JSON Pointer is a syntax for specifying locations in a JSON document,
   starting from the document root.  This document defines an extension
   to the JSON Pointer syntax, allowing relative locations from within
   the document.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-handrews-relative-json-pointer-02"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC4180">
          <front>
            <title>Common Format and MIME Type for Comma-Separated Values (CSV) Files</title>
            <author fullname="Y. Shafranovich" initials="Y." surname="Shafranovich"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This RFC documents the format used for Comma-Separated Values (CSV) files and registers the associated MIME type "text/csv". This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4180"/>
          <seriesInfo name="DOI" value="10.17487/RFC4180"/>
        </reference>
        <reference anchor="I-D.shafranovich-rfc4180-bis">
          <front>
            <title>Common Format and MIME Type for Comma-Separated Values (CSV) Files</title>
            <author fullname="Yakov Shafranovich" initials="Y." surname="Shafranovich">
              <organization>Amazon Web Services</organization>
            </author>
            <date day="2" month="August" year="2024"/>
            <abstract>
              <t>   This RFC documents the common format used for Comma-Separated Values
   (CSV) files and updates the associated MIME type "text/csv".

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-shafranovich-rfc4180-bis-07"/>
        </reference>
      </references>
    </references>
    <?line 305?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Before <xref target="RFC8610"/> was finally published, many people have asked for CDDL to be completed, soon.
These are usually also the people who have brought up observations
that led to the proposals discussed here.
Sean Leonard has campaigned for a regexp literal syntax.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
o8f0UGwd7aTib3gldz6VKAAA

-->

</rfc>
