<?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.24 (Ruby 3.4.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-csv-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="CDDL for CSVs">Using CDDL for CSVs</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-csv-06"/>
    <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="March" day="03"/>
    <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 approved CDDL extension, <xref target="I-D.ietf-cbor-cddl-more-control"/>, 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="I-D.ietf-cbor-cddl-more-control">
          <front>
            <title>Concise Data Definition Language (CDDL): Additional Control Operators for the Conversion and Processing of Text</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="9" month="January" 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 both in an
   application-specific and a more general way.

   The present document defines a number of additional generally
   applicable control operators for text conversion (Bytes, Integers,
   JSON, Printf-style formatting) and for an operation on text.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cddl-more-control-08"/>
        </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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
GJiE1S0AAA==

-->

</rfc>
