<?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.30 (Ruby 3.4.5) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-csv-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.1 -->
  <front>
    <title abbrev="CDDL for CSVs">Using CDDL for CSVs</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-csv-07"/>
    <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="2025" month="August" day="31"/>
    <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>
