Independent Submission                                       M. Basaglia
Request for Comments: 9402                                              
Category: Informational                                      J. Bernards
ISSN: 2070-1721                                                         
                                                                 J. Maas
                                                            1 April 2023


                            Concat Notation

Abstract

   This document defines the Concat notation: a text-based language used
   to describe pictures and videos whose subject includes cats,
   containers, and their interactions.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for informational purposes.

   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.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   https://www.rfc-editor.org/info/rfc9402.

Copyright Notice

   Copyright (c) 2023 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) 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.

Table of Contents

   1.  Introduction
     1.1.  Conventions Used in This Document
   2.  Definition
     2.1.  Terminology
     2.2.  Grammar
   3.  Elements
     3.1.  Subjects
       3.1.1.  Cats
       3.1.2.  Partial Cats
       3.1.3.  Other Animals
       3.1.4.  Balls of Yarn
     3.2.  Containers
     3.3.  Positioning
       3.3.1.  Horizontal Position
       3.3.2.  Vertical Position
       3.3.3.  Multiple Repeated Objects
     3.4.  Changes over Time
       3.4.1.  Disambiguation
   4.  Internationalization Considerations
   5.  Security Considerations
   6.  IANA Considerations
   7.  Normative References
   Appendix A.  Examples
   Authors' Addresses

1.  Introduction

   Cat pictures and videos are often shared across the Internet.  Many
   of these files display feline subjects interacting with boxes and
   other containers.

   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.

   The notation language described in this document is text-based and
   limits itself to the US-ASCII character encoding [RFC0020], allowing
   the transfer of cat-related materials in environments with restricted
   capabilities.

1.1.  Conventions Used in This Document

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

2.  Definition

2.1.  Terminology

   This document uses specific terms to refer to items being depicted by
   the notation described herein.

   To avoid ambiguity, such terms are defined as follows:

   Subject:  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.

   Cat:  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.

   Container:  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.

2.2.  Grammar

   The grammar is defined using the ABNF notation [RFC5234].

   SEQUENCE  =  POSITION / POSITION "=>" 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 "}" / "<" OPT-POS ">"
   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"

3.  Elements

3.1.  Subjects

3.1.1.  Cats

   The standard notation for a cat is the word cat.

3.1.2.  Partial Cats

   When referencing cats partly inside a container, the annotation MUST
   contain the full cat mark adequately split inside and outside the
   container.

   If a cat is only partly visible in the frame of the picture or video,
   the annotation MAY only reference the visible portion of the cat.

   The partial cat notations are as follows:

   c:  marks the head of the cat.

   a:  marks the body of the cat.

   t:  marks the tail of the cat.

   ca:  marks the head and body of the cat.

   at:  marks the body and tail of the cat.

   The annotation for a partial cat SHOULD use the terms mentioned above
   that best describe the portion of the cat that is being referenced.

3.1.3.  Other Animals

   Other animals or animate objects SHOULD be represented with a
   suitable word describing the species of such animal.  The cat-
   specific words described in this document MUST NOT be used for non-
   feline subjects.

3.1.4.  Balls of Yarn

   Balls of yarn SHOULD be represented with @.

3.2.  Containers

   When a cat or other subject is inside a container, the container
   notation MUST 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:

   *  Square brackets represent boxes or other containers with a
      rectangular opening.

   *  Parentheses represent containers with a round opening or shape.

   *  Curly braces SHALL be used to represent soft containers without a
      fixed shape.

   Additionally, angle brackets MAY be used to group subjects outside a
   container.  Such annotations MUST NOT contain partial cats.

3.3.  Positioning

   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.

   The order of positional operands SHOULD follow the order in which
   they appear from left to right in the source media.

3.3.1.  Horizontal Position

   The + operator is used to represent subjects or containers next to
   each other.

3.3.2.  Vertical Position

   When a subject is above or on top of another, the operator / MUST be
   used.

3.3.3.  Multiple Repeated Objects

   When multiple objects or configurations are repeated, the shorthand
   notation MAY be used.

   Horizontal positioning is denoted by a number followed by an optional
   * and the annotation to be repeated.

   Similarly, for vertical positioning, repeated objects are denoted by
   a number followed by / and the annotation to be repeated.

   When using such a shorthand, the number of repetitions MUST be a
   positive integer.

3.4.  Changes over Time

   In the case of videos or other animations, a proper Concat notation
   SHOULD make use of the state change operator (=>) to mark significant
   changes in the cat position and major interactions.

3.4.1.  Disambiguation

   Subject tokens MAY be followed by an integer identifier to
   distinguish specific cats, balls of yarn, or other subjects.  An
   annotation containing such numeric disambiguations MUST contain such
   disambiguations for all cats and balls of yarn.

   Since a specific subject can only appear once in a static image,
   disambiguation identifiers SHOULD be used only on annotations showing
   state changes.

4.  Internationalization Considerations

   The word cat is in English and is provided to allow transfer of
   Concat notations using only the US-ASCII character encoding
   [RFC0020].

   Users of other languages MAY extend the alphabet and use their
   localized words for cat and other animals.

   Non-standard words for cats SHOULD NOT 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.

5.  Security Considerations

   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.

   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.

6.  IANA Considerations

   This document has no IANA actions.

7.  Normative References

   [RFC0020]  Cerf, V., "ASCII format for network interchange", STD 80,
              RFC 20, DOI 10.17487/RFC0020, October 1969,
              <https://www.rfc-editor.org/info/rfc20>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC5234]  Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
              Specifications: ABNF", STD 68, RFC 5234,
              DOI 10.17487/RFC5234, January 2008,
              <https://www.rfc-editor.org/info/rfc5234>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

Appendix A.  Examples

   This appendix provides some examples of the Concat notation.

   [cat]

                          Figure 1: A Cat in a Box

   [cat] + cat

            Figure 2: A Cat in a Box Next to a Cat Not in a Box

   cat / [cat]

             Figure 3: A Cat over a Box Containing Another Cat

   [c]at

                 Figure 4: A Cat with Its Head inside a Box

   3 * cat

                       Figure 5: 3 Cats Side by Side

   3 / cat

                   Figure 6: 3 Cats on Top of Each Other

   cat + cat / [cat]

      Figure 7: A Cat Standing Next to a Box That Has a Cat on Top and
                                inside of It

   <cat + cat> / [cat]

     Figure 8: Two Cats Standing on a Box with Another Cat inside of It

   cat1 + [cat2] => cat2 + [cat1]

         Figure 9: A Cat inside a Box and a Cat outside Swap Places

Authors' Addresses

   Mattia Basaglia
   Email: glax@dragon.best
   URI:   https://dragon.best/


   Joep Bernards
   Email: joep@duali.xyz


   Joost Maas
   Email: J.f.w.maas@tue.nl


ERRATA