<?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.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-csv-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.0 -->
  <front>
    <title abbrev="CDDL for CSVs">Using CDDL for CSVs</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-csv-04"/>
    <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="December" day="24"/>
    <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="7" month="December" year="2023"/>
            <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), operations on text, and deterministic
   encoding.

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

-->

</rfc>
