1. 引言
本文定义了一种用于表达简明二进制对象表示 (Concise Binary Object Representation, CBOR) 数据结构的记法约定 [RFC7049].
该约定的主要目标是提供一种统一记法, 可用于定义使用 CBOR 的协议. 我们将此约定称为 "Concise Data Definition Language", 即 CDDL.
CBOR 记法约定具有以下目标:
(G1) 对 CBOR 数据项的整体结构提供无歧义的描述.
(G2) 能够灵活表达数据在 CBOR 数据格式中可被表示的多种方式.
(G3) 能够表达常见的 CBOR 数据类型和结构.
(G4) 提供一种单一格式, 既便于人类阅读和编辑, 又可由机器处理.
(G5) 支持自动检查 CBOR 数据项是否符合数据格式要求.
(G6) 支持从 CBOR 数据中提取特定元素以供进一步处理.
严格来说, 这本身并不是最初目标, 但由于 JSON 通用数据模型是 CBOR 通用数据模型的子集, 一个便利的副作用是 CDDL 也可用于描述 JSON 数据结构 (见 Appendix E).
本文结构如下:
CDDL 的语法在 Section 3 中定义. CDDL 示例以及相关 CBOR 数据项 ("instance") 的示例, 其中一些使用 JSON 形式, 在 Appendix H 中描述. Section 4 讨论 CDDL 的用法. 全文各处提供示例, 以便更好地说明概念定义. Appendix B 给出了使用 ABNF grammar [RFC5234] 对 CDDL 作出的形式化定义. 最后, Appendix D 列出了一组标准 CDDL 定义的 prelude, 它会被自动前置到每个 CDDL 规范中, 因而可在其中使用.
1.1. 需求记法
当且仅当本文中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 和 "OPTIONAL" 以此处所示的全大写形式出现时, 应按 BCP 14 [RFC2119] [RFC8174] 中的描述解释.
1.2. 术语
新术语以 cursive 引入, 在纯文本中呈现为由下划线包围的新术语. 正文中的 CDDL 文本使用 "typewriter" 样式, 在纯文本中呈现为用双引号括起的 CDDL 文本 (双引号也按通常的英语含义使用; 读者应根据上下文消除歧义).
在本规范中, 术语 "byte" 使用其现在通行的含义, 作为 "octet" 的同义词.