<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docName="draft-glax-concat-01" indexInclude="true" ipr="trust200902" number="9402" prepTime="2023-04-01T10:44:17" scripts="Common,Latin" sortRefs="true" submissionType="independent" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-glax-concat-01" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9402" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Concat Notation">Concat Notation</title>
    <seriesInfo name="RFC" value="9402" stream="independent"/>
    <author initials="M." surname="Basaglia" fullname="Mattia Basaglia">
      <organization showOnFrontPage="true"/>
      <address>
        <email>glax@dragon.best</email>
        <uri>https://dragon.best/</uri>
      </address>
    </author>
    <author initials="J." surname="Bernards" fullname="Joep Bernards">
      <organization showOnFrontPage="true"/>
      <address>
        <email>joep@duali.xyz</email>
      </address>
    </author>
    <author initials="J." surname="Maas" fullname="Joost Maas">
      <organization showOnFrontPage="true"/>
      <address>
        <email>J.f.w.maas@tue.nl</email>
      </address>
    </author>
    <date month="04" year="2023" day="01"/>
    <keyword>cat</keyword>
    <keyword>container</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document defines the Concat notation: a text-based language
used to describe pictures and videos whose subject includes cats,
containers, and their interactions.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for informational purposes.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This is a contribution to the RFC Series, independently of any
            other RFC stream.  The RFC Editor has chosen to publish this
            document at its discretion and makes no statement about its value
            for implementation or deployment.  Documents approved for
            publication by the RFC Editor are not candidates for any level of
            Internet Standard; see Section 2 of RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9402" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2023 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conventions-used-in-this-do">Conventions Used in This Document</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-definition">Definition</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t indent="0" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-grammar">Grammar</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-elements">Elements</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-subjects">Subjects</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.1.2">
                  <li pn="section-toc.1-1.3.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.1.2.1.1"><xref derivedContent="3.1.1" format="counter" sectionFormat="of" target="section-3.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cats">Cats</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.1.2.2.1"><xref derivedContent="3.1.2" format="counter" sectionFormat="of" target="section-3.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-partial-cats">Partial Cats</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.1.2.3">
                    <t indent="0" pn="section-toc.1-1.3.2.1.2.3.1"><xref derivedContent="3.1.3" format="counter" sectionFormat="of" target="section-3.1.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-other-animals">Other Animals</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.1.2.4">
                    <t indent="0" pn="section-toc.1-1.3.2.1.2.4.1"><xref derivedContent="3.1.4" format="counter" sectionFormat="of" target="section-3.1.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-balls-of-yarn">Balls of Yarn</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-containers">Containers</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-positioning">Positioning</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.3.2">
                  <li pn="section-toc.1-1.3.2.3.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.3.2.1.1"><xref derivedContent="3.3.1" format="counter" sectionFormat="of" target="section-3.3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-horizontal-position">Horizontal Position</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.3.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.3.2.2.1"><xref derivedContent="3.3.2" format="counter" sectionFormat="of" target="section-3.3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-vertical-position">Vertical Position</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.3.2.3">
                    <t indent="0" pn="section-toc.1-1.3.2.3.2.3.1"><xref derivedContent="3.3.3" format="counter" sectionFormat="of" target="section-3.3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-multiple-repeated-objects">Multiple Repeated Objects</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.3.2.4">
                <t indent="0" pn="section-toc.1-1.3.2.4.1"><xref derivedContent="3.4" format="counter" sectionFormat="of" target="section-3.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-changes-over-time">Changes over Time</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.4.2">
                  <li pn="section-toc.1-1.3.2.4.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.4.2.1.1"><xref derivedContent="3.4.1" format="counter" sectionFormat="of" target="section-3.4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-disambiguation">Disambiguation</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-internationalization-consid">Internationalization Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-examples">Examples</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">Cat pictures and videos are often shared across the Internet.
Many of these files display feline subjects interacting
with boxes and other containers.</t>
      <t indent="0" pn="section-1-2">Since there is currently no compact notation for describing such media,
this document details a standard notation to describe the position
and interaction of cats, containers, and related subjects pictured
in these images.</t>
      <t indent="0" pn="section-1-3">The notation language described in this document is text-based and
limits itself to the US-ASCII character encoding <xref target="RFC0020" format="default" sectionFormat="of" derivedContent="RFC0020"/>, allowing
the transfer of cat-related materials in environments with restricted
capabilities.</t>
      <section anchor="conventions-used-in-this-document" numbered="true" removeInRFC="false" toc="include" pn="section-1.1">
        <name slugifiedName="name-conventions-used-in-this-do">Conventions Used in This Document</name>
        <t indent="0" pn="section-1.1-1">
    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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/>
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <section anchor="definition" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-definition">Definition</name>
      <section anchor="terminology" numbered="true" removeInRFC="false" toc="include" pn="section-2.1">
        <name slugifiedName="name-terminology">Terminology</name>
        <t indent="0" pn="section-2.1-1">This document uses specific terms to refer to items being
depicted by the notation described herein.</t>
        <t indent="0" pn="section-2.1-2">To avoid ambiguity, such terms are defined as follows:</t>
        <dl indent="3" newline="false" spacing="normal" pn="section-2.1-3">
          <dt pn="section-2.1-3.1">Subject:</dt>
          <dd pn="section-2.1-3.2">
            <t indent="0" pn="section-2.1-3.2.1">The term "subject" is used in this document to refer to the object
that is the focus in the media to be annotated.
This usually is an animate object, specifically a cat.
An annotation can have multiple subjects interacting in various ways.</t>
          </dd>
          <dt pn="section-2.1-3.3">Cat:</dt>
          <dd pn="section-2.1-3.4">
            <t indent="0" pn="section-2.1-3.4.1">A cat is a special kind of subject of feline origin.  This document will assume a house cat is present in the source media; however, other felines are also acceptable.</t>
          </dd>
          <dt pn="section-2.1-3.5">Container:</dt>
          <dd pn="section-2.1-3.6">
            <t indent="0" pn="section-2.1-3.6.1">The term "container" is used to refer to inanimate objects inside of
which one or more subjects can be located.
Most commonly, this will be a cardboard box; however, a variety of containers
can be used.</t>
          </dd>
        </dl>
      </section>
      <section anchor="grammar" numbered="true" removeInRFC="false" toc="include" pn="section-2.2">
        <name slugifiedName="name-grammar">Grammar</name>
        <t indent="0" pn="section-2.2-1">The grammar is defined using the ABNF notation <xref target="RFC5234" format="default" sectionFormat="of" derivedContent="RFC5234"/>.</t>
        <sourcecode type="abnf" name="syntax" markers="false" pn="section-2.2-2">
SEQUENCE  =  POSITION / POSITION "=&gt;" SEQUENCE
POSITION  =  ADJACENT
ADJACENT  =  OVER / ADJACENT "+" OVER
OVER      =  MULTIPLE / MULTIPLE "/" POSITION
MULTIPLE  =  CONCAT / NUMBER [ "*" ] MULTIPLE / NUMBER "/" MULTIPLE
CONCAT    =  SUBJECT [ NUMBER ] / [ PARTIAL ] CONTAINER [ PARTIAL ]
CONTAINER =  "[" OPT-POS "]" / "(" OPT-POS ")"
CONTAINER =/ "{" OPT-POS "}" / "&lt;" OPT-POS "&gt;"
OPT-POS   =  [ POSITION ]
SUBJECT   =  CAT / 1*ALPHA / "@"
CAT       =  "cat" / PARTIAL
PARTIAL   =  "c" / "a" / "t" / "ca" / "at"
ALPHA     =   %x41-5A / %x61-7A
NUMBER    =  1*DIGIT
DIGIT     =  "0" / "1" / "2" / "3" / "4"
DIGIT     =/ "5" / "6" / "7" / "8" / "9"
</sourcecode>
      </section>
    </section>
    <section anchor="elements" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-elements">Elements</name>
      <section anchor="subjects" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-subjects">Subjects</name>
        <section anchor="cats" numbered="true" removeInRFC="false" toc="include" pn="section-3.1.1">
          <name slugifiedName="name-cats">Cats</name>
          <t indent="0" pn="section-3.1.1-1">The standard notation for a cat is the word <tt>cat</tt>.</t>
        </section>
        <section anchor="partial-cats" numbered="true" removeInRFC="false" toc="include" pn="section-3.1.2">
          <name slugifiedName="name-partial-cats">Partial Cats</name>
          <t indent="0" pn="section-3.1.2-1">When referencing cats partly inside a container, the annotation <bcp14>MUST</bcp14>
contain the full cat mark adequately split inside and outside the
container.</t>
          <t indent="0" pn="section-3.1.2-2">If a cat is only partly visible in the frame of the picture or video,
the annotation <bcp14>MAY</bcp14> only reference the visible portion of the cat.</t>
          <t indent="0" pn="section-3.1.2-3">The partial cat notations are as follows:</t>
          <dl spacing="normal" indent="3" newline="false" pn="section-3.1.2-4">
            <dt pn="section-3.1.2-4.1"><tt>c</tt>:</dt>
            <dd pn="section-3.1.2-4.2">marks the head of the cat.</dd>
            <dt pn="section-3.1.2-4.3">
              <tt>a</tt>:</dt>
            <dd pn="section-3.1.2-4.4">marks the body of the cat.</dd>
            <dt pn="section-3.1.2-4.5">
              <tt>t</tt>:</dt>
            <dd pn="section-3.1.2-4.6">marks the tail of the cat.</dd>
            <dt pn="section-3.1.2-4.7">
              <tt>ca</tt>:</dt>
            <dd pn="section-3.1.2-4.8">marks the head and body of the cat.</dd>
            <dt pn="section-3.1.2-4.9">
              <tt>at</tt>:</dt>
            <dd pn="section-3.1.2-4.10">marks the body and tail of the cat.</dd>
          </dl>
          <t indent="0" pn="section-3.1.2-5">The annotation for a partial cat <bcp14>SHOULD</bcp14> use the terms mentioned above
that best describe the portion of the cat that is being referenced.</t>
        </section>
        <section anchor="other-animals" numbered="true" removeInRFC="false" toc="include" pn="section-3.1.3">
          <name slugifiedName="name-other-animals">Other Animals</name>
          <t indent="0" pn="section-3.1.3-1">Other animals or animate objects <bcp14>SHOULD</bcp14> be represented with a
suitable word describing the species of such animal.
The cat-specific words described in this document <bcp14>MUST NOT</bcp14> be used for
non-feline subjects.</t>
        </section>
        <section anchor="balls-of-yarn" numbered="true" removeInRFC="false" toc="include" pn="section-3.1.4">
          <name slugifiedName="name-balls-of-yarn">Balls of Yarn</name>
          <t indent="0" pn="section-3.1.4-1">Balls of yarn <bcp14>SHOULD</bcp14> be represented with <tt>@</tt>.</t>
        </section>
      </section>
      <section anchor="containers" numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-containers">Containers</name>
        <t indent="0" pn="section-3.2-1">When a cat or other subject is inside a container, the container
notation <bcp14>MUST</bcp14> be used.  Such notation is denoted by its subject being
between brackets.  The type of bracket depends on the shape of the
container as follows:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2-2">
          <li pn="section-3.2-2.1">Square brackets represent boxes or other containers with a
rectangular opening.</li>
          <li pn="section-3.2-2.2">Parentheses represent containers with a round opening or shape.</li>
          <li pn="section-3.2-2.3">Curly braces <bcp14>SHALL</bcp14> be used to represent soft
          containers without a fixed shape.</li>
        </ul>
        <t indent="0" pn="section-3.2-3">Additionally, angle brackets <bcp14>MAY</bcp14> be used to group
        subjects outside a container. Such annotations <bcp14>MUST NOT</bcp14>
        contain partial cats.</t>
      </section>
      <section anchor="positioning" numbered="true" removeInRFC="false" toc="include" pn="section-3.3">
        <name slugifiedName="name-positioning">Positioning</name>
        <t indent="0" pn="section-3.3-1">The Concat notation only gives information about the general layout of
subjects and containers, but it does make a distinction between
horizontal and vertical positions.</t>
        <t indent="0" pn="section-3.3-2">The order of positional operands <bcp14>SHOULD</bcp14> follow the order in which they
appear from left to right in the source media.</t>
        <section anchor="horizontal-position" numbered="true" removeInRFC="false" toc="include" pn="section-3.3.1">
          <name slugifiedName="name-horizontal-position">Horizontal Position</name>
          <t indent="0" pn="section-3.3.1-1">The <tt>+</tt> operator is used to represent subjects or containers
next to each other.</t>
        </section>
        <section anchor="vertical-position" numbered="true" removeInRFC="false" toc="include" pn="section-3.3.2">
          <name slugifiedName="name-vertical-position">Vertical Position</name>
          <t indent="0" pn="section-3.3.2-1">When a subject is above or on top of another, the operator <tt>/</tt> <bcp14>MUST</bcp14> be
used.</t>
        </section>
        <section anchor="multiple-repeated-objects" numbered="true" removeInRFC="false" toc="include" pn="section-3.3.3">
          <name slugifiedName="name-multiple-repeated-objects">Multiple Repeated Objects</name>
          <t indent="0" pn="section-3.3.3-1">When multiple objects or configurations are repeated, the shorthand
notation <bcp14>MAY</bcp14> be used.</t>
          <t indent="0" pn="section-3.3.3-2">Horizontal positioning is denoted by a number
followed by an optional <tt>*</tt> and the annotation to be repeated.</t>
          <t indent="0" pn="section-3.3.3-3">Similarly, for vertical positioning, repeated objects are denoted by
a number followed by <tt>/</tt> and the annotation to be repeated.</t>
          <t indent="0" pn="section-3.3.3-4">When using such a shorthand, the number of repetitions <bcp14>MUST</bcp14> be a
positive integer.</t>
        </section>
      </section>
      <section anchor="changes-over-time" numbered="true" removeInRFC="false" toc="include" pn="section-3.4">
        <name slugifiedName="name-changes-over-time">Changes over Time</name>
        <t indent="0" pn="section-3.4-1">In the case of videos or other animations, a proper Concat notation
<bcp14>SHOULD</bcp14> make use of the state change operator (<tt>=&gt;</tt>) to mark significant
changes in the cat position and major interactions.</t>
        <section anchor="disambiguation" numbered="true" removeInRFC="false" toc="include" pn="section-3.4.1">
          <name slugifiedName="name-disambiguation">Disambiguation</name>
          <t indent="0" pn="section-3.4.1-1">Subject tokens <bcp14>MAY</bcp14> be followed by an integer identifier
to distinguish specific cats, balls of yarn, or other subjects.
An annotation containing such numeric disambiguations
<bcp14>MUST</bcp14> contain such disambiguations for all cats and balls of yarn.</t>
          <t indent="0" pn="section-3.4.1-2">Since a specific subject can only appear once in a static image,
disambiguation identifiers <bcp14>SHOULD</bcp14> be used only on annotations showing
state changes.</t>
        </section>
      </section>
    </section>
    <section anchor="internationalization-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-internationalization-consid">Internationalization Considerations</name>
      <t indent="0" pn="section-4-1">The word <tt>cat</tt> is in English and is provided to allow transfer of
Concat notations using only the US-ASCII character encoding <xref target="RFC0020" format="default" sectionFormat="of" derivedContent="RFC0020"/>.</t>
      <t indent="0" pn="section-4-2">Users of other languages <bcp14>MAY</bcp14> extend the alphabet and use their localized
words for cat and other animals.</t>
      <t indent="0" pn="section-4-3">Non-standard words for cats <bcp14>SHOULD NOT</bcp14> be used unless all parties
involved in the production and consumption of the Concat notation
have agreed upon a character encoding and a language prior to the
transmission of the annotation.</t>
    </section>
    <section anchor="security-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-5-1">A cat might find themselves in a container smaller than the perceived
volume of the cat.  While this might seem to be a dangerous situation,
it's actually a natural occurrence when the cat is in its liquid form.</t>
      <t indent="0" pn="section-5-2">Cats might chew on the cardboard of the box containing them. To
mitigate this attack, we recommend having multiple boxes to put the
cats into.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-6-1">This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references pn="section-7">
      <name slugifiedName="name-normative-references">Normative References</name>
      <reference anchor="RFC0020" target="https://www.rfc-editor.org/info/rfc20" quoteTitle="true" derivedAnchor="RFC0020">
        <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="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC5234" target="https://www.rfc-editor.org/info/rfc5234" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="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 indent="0">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>
    <section anchor="examples" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-examples">Examples</name>
      <t indent="0" pn="section-appendix.a-1">This appendix provides some examples of the Concat notation.</t>
      <figure align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-a-cat-in-a-box">A Cat in a Box</name>
        <sourcecode markers="false" pn="section-appendix.a-2.1">
[cat]
</sourcecode>
      </figure>
      <figure align="left" suppress-title="false" pn="figure-2">
        <name slugifiedName="name-a-cat-in-a-box-next-to-a-ca">A Cat in a Box Next to a Cat Not in a Box</name>
        <sourcecode markers="false" pn="section-appendix.a-3.1">
[cat] + cat
</sourcecode>
      </figure>
      <figure align="left" suppress-title="false" pn="figure-3">
        <name slugifiedName="name-a-cat-over-a-box-containing">A Cat over a Box Containing Another Cat</name>
        <sourcecode markers="false" pn="section-appendix.a-4.1">
cat / [cat]
</sourcecode>
      </figure>
      <figure align="left" suppress-title="false" pn="figure-4">
        <name slugifiedName="name-a-cat-with-its-head-inside-">A Cat with Its Head inside a Box</name>
        <sourcecode markers="false" pn="section-appendix.a-5.1">
[c]at
</sourcecode>
      </figure>
      <figure align="left" suppress-title="false" pn="figure-5">
        <name slugifiedName="name-3-cats-side-by-side">3 Cats Side by Side</name>
        <sourcecode markers="false" pn="section-appendix.a-6.1">
3 * cat
</sourcecode>
      </figure>
      <figure align="left" suppress-title="false" pn="figure-6">
        <name slugifiedName="name-3-cats-on-top-of-each-other">3 Cats on Top of Each Other</name>
        <sourcecode markers="false" pn="section-appendix.a-7.1">
3 / cat
</sourcecode>
      </figure>
      <figure align="left" suppress-title="false" pn="figure-7">
        <name slugifiedName="name-a-cat-standing-next-to-a-bo">A Cat Standing Next to a Box That Has a Cat on Top and inside of It</name>
        <sourcecode markers="false" pn="section-appendix.a-8.1">
cat + cat / [cat]
</sourcecode>
      </figure>
      <figure align="left" suppress-title="false" pn="figure-8">
        <name slugifiedName="name-two-cats-standing-on-a-box-">Two Cats Standing on a Box with Another Cat inside of It</name>
        <sourcecode markers="false" pn="section-appendix.a-9.1">
&lt;cat + cat&gt; / [cat]
</sourcecode>
      </figure>
      <figure align="left" suppress-title="false" pn="figure-9">
        <name slugifiedName="name-a-cat-inside-a-box-and-a-ca">A Cat inside a Box and a Cat outside Swap Places</name>
        <sourcecode markers="false" pn="section-appendix.a-10.1">
cat1 + [cat2] =&gt; cat2 + [cat1]
</sourcecode>
      </figure>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="M." surname="Basaglia" fullname="Mattia Basaglia">
        <organization showOnFrontPage="true"/>
        <address>
          <email>glax@dragon.best</email>
          <uri>https://dragon.best/</uri>
        </address>
      </author>
      <author initials="J." surname="Bernards" fullname="Joep Bernards">
        <organization showOnFrontPage="true"/>
        <address>
          <email>joep@duali.xyz</email>
        </address>
      </author>
      <author initials="J." surname="Maas" fullname="Joost Maas">
        <organization showOnFrontPage="true"/>
        <address>
          <email>J.f.w.maas@tue.nl</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
