<?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.6.35 (Ruby 3.2.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-csv-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="CDDL for CSVs">Using CDDL for CSVs</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-csv-03"/>
    <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="2023" month="June" day="23"/>
    <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 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.  CDDL currently does not have a way to express the
transformation from the text string in the CSV field to the number
that this text string
represents at the application data model level; 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>
        <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">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="P. Overell" initials="P." surname="Overell">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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>
        <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>Acklio</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="1" month="March" 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 (-20) is intended to address all IESG
   // feedback.  It has significantly progressed from -16, which was the
   // original submission to the IESG.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-sid-20"/>
        </reference>
        <reference anchor="RFC7951">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald">
              <organization/>
            </author>
            <author fullname="A. Farrel" initials="A." surname="Farrel">
              <organization/>
            </author>
            <author fullname="Q. Wu" initials="Q." surname="Wu">
              <organization/>
            </author>
            <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 234?>

<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,
1716,data,/ietf-system:set-current-datetime/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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
zhfs3zptwunbLAAA

-->

</rfc>
