<?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 xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-csv-08" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="CDDL for CSVs">Using CDDL for CSVs</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-csv-08"/>
    <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="March" 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/RFC0020"/>
          </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>
