<?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.43 (Ruby 4.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-csv-09" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="CDDL for CSVs">Using CDDL for CSVs</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-csv-09"/>
    <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>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <date year="2026" month="September" day="01"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 46?>

<t>The Concise Data Definition Language (CDDL), standardized in RFC 8610,
is defined to provide data models for data shaped like JSON or CBOR.</t>
      <t>Another representation format that is quote popular is the CSV
(Comma-Separated Values) file as defined by RFC 4180.</t>
      <t>The present document shows a way how to use CDDL to provide a data model for
CSV files.</t>
    </abstract>
  </front>
  <middle>
    <?line 58?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The Concise Data Definition Language (CDDL), standardized in <xref target="RFC8610"/>,
is defined to provide data models for data shaped like JSON or CBOR.</t>
      <t>Another representation format that is quote popular is the CSV file as
defined by <xref target="RFC4180"/>.</t>
      <t>The present document shows how to use CDDL to provide a data model for
CSV files.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This specification uses terminology from <xref target="RFC8610"/>.</t>
      </section>
    </section>
    <section anchor="csv-generic-data-model">
      <name>CSV generic data model</name>
      <t>The CSV format is defined in <xref target="RFC4180"/>.
The generic data model for the data in a CSV file can be described in CDDL as:</t>
      <sourcecode type="cddl"><![CDATA[
csv = [?header, *record]
header = [+header-field]
record = [+field]
header-field = text
field = text
]]></sourcecode>
      <t>Note that the elements of this data model describe the interpretation
of the data after processing and removal of lexical structure such as newlines,
commas, escape characters, and quotation marks.</t>
      <t>For the purposes of a specific application, the data model level
structure of each field may be described in a more elaborate way,
e.g., as a number.
A recently published CDDL extension, <xref target="RFC9741"/>, provides some CDDL control operators
that could be used to express the
transformation between the text string in the CSV field and the number
that this text string
represents at the application data model level; this could be explored
in future revisions of this specification.
For now, the usage of anything
but "text" for a field therefore <bcp14>MUST</bcp14> be
accompanied by an instruction how to perform the translation.
As a preferred choice, the JSON representation of the data model item, if it
exists, <bcp14>MAY</bcp14> be chosen by that instruction.</t>
      <t>Since the CSV media type text/csv defaults to using the US-ASCII
character set (i.e., <xref target="STD80"/>; see <xref section="3" sectionFormat="of" target="RFC4180"/>), many uses of CSV will need to specify the media type
parameter <tt>charset</tt>.
(Note that CDDL can describe text information that is in UTF-8 form,
which includes US-ASCII as that is a subset of UTF-8.
If a different form that is not a subset of UTF-8 is really still
needed, some rules for conversion will need to be defined by the
application.)</t>
      <t>The media type parameter <tt>header</tt> <bcp14>MAY</bcp14> be used to
indicate the presence or absence of a header line; if it is not given,
the grammar <bcp14>MUST NOT</bcp14> be ambiguous about the presence of a header
(i.e., it <bcp14>MUST</bcp14> be either mandatory or absent).</t>
      <t>Note that the ABNF <xref target="STD68"/> in <xref target="RFC4180"/> does not quite handle the case that
<tt>charset</tt> is not <tt>us-ascii</tt>.
For the purposes of the present specification, the ABNF is understood
to allow all characters from the <tt>charset</tt> except %x22 and %x2C in <tt>TEXTDATA</tt>.
For the purposes of the present specification, the ABNF rule <tt>CRLF</tt> is
read as:</t>
      <sourcecode type="abnf"><![CDATA[
CRLF = [CR] LF
]]></sourcecode>
      <t>as is hinted in <xref section="3" sectionFormat="of" target="RFC4180"/>.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>A simplified CSV form definition of a SID file <xref target="RFC9595"/>
might look like this:</t>
      <sourcecode type="cddl"><![CDATA[
; header = absent

SID-File = [meta-record, 
            ?description-record,
            *dependency-record,
            *range-record,
            *item-record]

meta-record = ["ietf-sid-file",
               module-name: text,
               module-revision: empty / text,
               sid-file-revision: empty / text,
               sid-file-status: empty / "unpublished" / "published"]

description-record = ["description",
                      description: empty / text]

dependency-record = ["dependency",
                     module-name: text,
                     module-revision: text]

range-record = ["range",
                entry-point: uint,
                size: uint]

item-record = [; "item", -- useful to elide for bulk of file
               sid: uint
               (
                 namespace: "module" / "identity" / "feature"
                 identifier: yang-identifier
                //
                 namespace: "data"
                 identifier: schema-node-path
               )
               status: empty / "stable" / "unstable" / "obsolete"]

yang-identifier = text .abnf ("yang-identifier" .det id-abnf)
schema-node-path = text .abnf ("schema-node-path" .det id-abnf)
id-abnf = '
  schema-node-path = "/" QID *( "/" OQID)
  yang-identifier = ID
  QID = ID ":" ID
  OQID = ID [":" ID]
  ID = I *C
  I = "_" / %x41-5a / %x61-7a
  C = I / %x30-39 / "-" / "."
'

empty = ""
]]></sourcecode>
      <t>This CDDL data model assumes that the text strings representing the
numbers <tt>entry-point</tt>, <tt>size</tt>, and <tt>sid</tt> are converted to uint.
(Note that, due to the way YANG-JSON <xref target="RFC7951"/> defines the
representation of <tt>uint64</tt> data items, these actually are text strings
in JSON, which in CSV is indistinguishable from numbers.
However, the CDDL model for the CSV files will be more useful if it
takes into account typical CSV applications that automatically convert
integer-like text strings into numbers.)</t>
      <t>The result of representing in CSV the sid file ietf-system.sid (as
defined in <xref section="A" sectionFormat="of" target="RFC9595"/>) is shown in <xref target="sid-example"/>.</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"/> and <xref target="RFC4180"/> 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="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>
        <referencegroup anchor="STD68" target="https://www.rfc-editor.org/info/std68">
          <reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5234">
            <front>
              <title>Augmented BNF for Syntax Specifications: ABNF</title>
              <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
              <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>
        </referencegroup>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
            <front>
              <title>Key words for use in RFCs to Indicate Requirement Levels</title>
              <author fullname="S. Bradner" initials="S." surname="Bradner"/>
              <date month="March" year="1997"/>
              <abstract>
                <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
          </reference>
          <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
            <front>
              <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
              <author fullname="B. Leiba" initials="B." surname="Leiba"/>
              <date month="May" year="2017"/>
              <abstract>
                <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
          </reference>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9595">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="A. Pelov" initials="A." role="editor" surname="Pelov"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>YANG Schema Item iDentifiers (YANG SIDs) are globally unique 63-bit unsigned integers used to identify YANG items. SIDs provide a more compact method for identifying those YANG items that can be used efficiently, notably in constrained environments (RFC 7228). This document defines the semantics, registration processes, and assignment processes for YANG SIDs for IETF-managed YANG modules. To enable the implementation of these processes, this document also defines a file format used to persist and publish assigned YANG SIDs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9595"/>
          <seriesInfo name="DOI" value="10.17487/RFC9595"/>
        </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>
        <reference anchor="RFC7951">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines encoding rules for representing configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, and notifications defined using YANG as JavaScript Object Notation (JSON) text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7951"/>
          <seriesInfo name="DOI" value="10.17487/RFC7951"/>
        </reference>
        <referencegroup anchor="STD80" target="https://www.rfc-editor.org/info/std80">
          <reference anchor="RFC0020" target="https://www.rfc-editor.org/info/rfc20">
            <front>
              <title>ASCII format for network interchange</title>
              <author fullname="V.G. Cerf" initials="V.G." surname="Cerf"/>
              <date month="October" year="1969"/>
            </front>
            <seriesInfo name="STD" value="80"/>
            <seriesInfo name="RFC" value="20"/>
            <seriesInfo name="DOI" value="10.17487/RFC20"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
      </references>
    </references>
    <?line 238?>

<section anchor="sid-example">
      <name>Example: ietf-system.sid represented in CSV</name>
      <t>This appendix shows the CSV file that is automatically generated from <xref section="A" sectionFormat="of" target="RFC9595"/>.
(Note that plaintext-based RFCs are limited to 72 columns; therefore
five long lines in the CSV file have been folded as defined in
<xref target="RFC8792"/>.)</t>
      <sourcecode type="csv"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

ietf-sid-file,ietf-system,2014-08-06,,
description,Example sid file
dependency,ietf-yang-types,2013-07-15
dependency,ietf-inet-types,2013-07-15
dependency,ietf-netconf-acm,2018-02-14
dependency,iana-crypt-hash,2014-08-06
range,1700,100
1700,module,ietf-system,
1701,identity,authentication-method,
1702,identity,local-users,
1703,identity,radius,
1704,identity,radius-authentication-type,
1705,identity,radius-chap,
1706,identity,radius-pap,
1707,feature,authentication,
1708,feature,dns-udp-tcp-port,
1709,feature,local-users,
1710,feature,ntp,
1711,feature,ntp-udp-port,
1712,feature,radius,
1713,feature,radius-authentication,
1714,feature,timezone-name,
1715,data,/ietf-system:set-current-datetime,
1775,data,/ietf-system:set-current-datetime/input,
1776,data,/ietf-system:set-current-datetime/input/current-datetime,
1717,data,/ietf-system:system,
1718,data,/ietf-system:system-restart,
1719,data,/ietf-system:system-shutdown,
1720,data,/ietf-system:system-state,
1721,data,/ietf-system:system-state/clock,
1722,data,/ietf-system:system-state/clock/boot-datetime,
1723,data,/ietf-system:system-state/clock/current-datetime,
1724,data,/ietf-system:system-state/platform,
1725,data,/ietf-system:system-state/platform/machine,
1726,data,/ietf-system:system-state/platform/os-name,
1727,data,/ietf-system:system-state/platform/os-release,
1728,data,/ietf-system:system-state/platform/os-version,
1729,data,/ietf-system:system/authentication,
1730,data,/ietf-system:system/authentication/user,
1731,data,/ietf-system:system/authentication/user-authentication-\
                                                               order,
1732,data,/ietf-system:system/authentication/user/authorized-key,
1733,data,/ietf-system:system/authentication/user/authorized-key/\
                                                           algorithm,
1734,data,/ietf-system:system/authentication/user/authorized-key/key\
                                                               -data,
1735,data,/ietf-system:system/authentication/user/authorized-key/\
                                                                name,
1736,data,/ietf-system:system/authentication/user/name,
1737,data,/ietf-system:system/authentication/user/password,
1738,data,/ietf-system:system/clock,
1739,data,/ietf-system:system/clock/timezone-name,
1740,data,/ietf-system:system/clock/timezone-utc-offset,
1741,data,/ietf-system:system/contact,
1742,data,/ietf-system:system/dns-resolver,
1743,data,/ietf-system:system/dns-resolver/options,
1744,data,/ietf-system:system/dns-resolver/options/attempts,
1745,data,/ietf-system:system/dns-resolver/options/timeout,
1746,data,/ietf-system:system/dns-resolver/search,
1747,data,/ietf-system:system/dns-resolver/server,
1748,data,/ietf-system:system/dns-resolver/server/name,
1749,data,/ietf-system:system/dns-resolver/server/udp-and-tcp,
1750,data,/ietf-system:system/dns-resolver/server/udp-and-tcp/\
                                                             address,
1751,data,/ietf-system:system/dns-resolver/server/udp-and-tcp/port,
1752,data,/ietf-system:system/hostname,
1753,data,/ietf-system:system/location,
1754,data,/ietf-system:system/ntp,
1755,data,/ietf-system:system/ntp/enabled,
1756,data,/ietf-system:system/ntp/server,
1757,data,/ietf-system:system/ntp/server/association-type,
1758,data,/ietf-system:system/ntp/server/iburst,
1759,data,/ietf-system:system/ntp/server/name,
1760,data,/ietf-system:system/ntp/server/prefer,
1761,data,/ietf-system:system/ntp/server/udp,
1762,data,/ietf-system:system/ntp/server/udp/address,
1763,data,/ietf-system:system/ntp/server/udp/port,
1764,data,/ietf-system:system/radius,
1765,data,/ietf-system:system/radius/options,
1766,data,/ietf-system:system/radius/options/attempts,
1767,data,/ietf-system:system/radius/options/timeout,
1768,data,/ietf-system:system/radius/server,
1769,data,/ietf-system:system/radius/server/authentication-type,
1770,data,/ietf-system:system/radius/server/name,
1771,data,/ietf-system:system/radius/server/udp,
1772,data,/ietf-system:system/radius/server/udp/address,
1773,data,/ietf-system:system/radius/server/udp/authentication-port,
1774,data,/ietf-system:system/radius/server/udp/shared-secret,
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Rob Wilton, unknowingly, made us write this specification.
We hope it will be useful.
Laurent Toutain inspired the SID CDDL format with an example.</t>
      <!--  LocalWords:  dedenting dedented
 -->

</section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
