<?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.16 (Ruby 3.3.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-csv-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="CDDL for CSVs">Using CDDL for CSVs</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-csv-05"/>
    <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="2024" month="June" day="16"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 47?>

<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 59?>

<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 BCP 14 <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 recent proposal, <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="I-D.ietf-core-sid"/>
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="I-D.ietf-core-sid"/>) 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>
      <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>
        <reference anchor="STD68">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="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">
          <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-core-sid">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>IMT Atlantique</organization>
            </author>
            <author fullname="Ivaylo Petrov" initials="I." surname="Petrov">
              <organization>Google Switzerland GmbH</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="22" month="December" year="2023"/>
            <abstract>
              <t>   YANG Schema Item iDentifiers (YANG SID) are globally unique 63-bit
   unsigned integers used to identify YANG items, as a more compact
   method to identify YANG items that can be used for efficiency and in
   constrained environments (RFC 7228).  This document defines the
   semantics, the registration, and assignment processes of 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.


   // The present version (–24) is intended to address the remaining
   // IESG comments.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-sid-24"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-cddl-more-control">
          <front>
            <title>More Control Operators for CDDL</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="12" month="June" year="2024"/>
            <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-05"/>
        </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>
        <reference anchor="STD80">
          <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>
        <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 239?>

<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="I-D.ietf-core-sid"/>.
(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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
AAA=

-->

</rfc>
