Copyright © 2020-2024 W3C ® ( MIT , ERCIM , Keio , Beihang ). W3C liability , trademark and permissive document license rules apply.
CBOR is a compact binary data serialization and messaging format. This specification defines CBOR-LD 1.0, a CBOR-based format to serialize Linked Data. The encoding is designed to leverage the existing JSON-LD ecosystem, which is deployed on hundreds of millions of systems today, to provide a compact serialization format for those seeking efficient encoding schemes for Linked Data. By utilizing semantic compression schemes, compression ratios in excess of 60% better than generalized compression schemes are possible. This format is primarily intended to be a way to use Linked Data in storage and bandwidth constrained programming environments, to build interoperable semantic wire-level protocols, and to efficiently store Linked Data in CBOR-based storage engines.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.
This document is experimental.
There is a reference implementation that is capable of demonstrating the features described in this document.
This document was published by the JSON-LD Community Group as an Editor's Draft.
GitHub Issues are preferred for discussion of this specification. Alternatively, you can send comments to our mailing list. Please send them to public-linked-json@w3.org ( archives ).
Publication as an Editor's Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the W3C Patent Policy . W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy .
This document is governed by the 1 March 2019 W3C Process Document .
This section is non-normative.
CBOR is a compact binary data serialization and messaging format. This specification defines CBOR-LD 1.0, a CBOR-based format to serialize Linked Data. The encoding is designed to leverage the existing JSON-LD ecosystem, which is deployed on hundreds of millions of systems today, to provide a compact serialization format for those seeking efficient encoding schemes for Linked Data. By utilizing semantic compression schemes, compression ratios in excess of 60% better than generalized compression schemes are possible. This format is primarily intended to be a way to use Linked Data in storage and bandwidth constrained programming environments, to build interoperable semantic wire-level protocols, and to efficiently store Linked Data in CBOR-based storage engines.
This section is non-normative.
This document is a detailed specification for a serialization of Linked Data in CBOR. The document is primarily intended for the following audiences:
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key word MUST in this document is to be interpreted as described in BCP 14 [ RFC2119 ] [ RFC8174 ] when, and only when, they appear in all capitals, as shown here.
This section is non-normative.
There are a number of ways that one may participate in the development of this specification:
This section is non-normative.
CBOR-LD satisfies the following design goals:
Similarly, the following are non-goals.
The following minefields have been identified while working on this specification:
This section is non-normative.
The general CBOR-LD encoding algorithm takes a JSON-LD Document and does the following:
"@type":
"@id"
,
replace
the
value
with
the
byte
value
associated
with
the
term.
"@type":
"@id"
,
replace
the
value
with
the
byte
value
associated
with
the
term.
This
algorithm
takes
a
JSON-LD
object
jsonldDocument
and
options
as
input.
result
be
an
empty
CBOR-encoded
byte
array.
contextUrls
to
the
return
value
of
the
"Get
Context
URLs
Algorithm"
passing
jsonldDocument
as
input.
result
to
the
return
value
of
the
"Generate
Uncompressed
CBOR-LD
Algorithm".
result
to
the
return
value
of
the
"Generate
Compressed
CBOR-LD
Algorithm"
passing
contextUrls
as
options.contextUrls
.
result
.
This
algorithm
takes
a
JSON-LD
object
jsonldDocument
and
options
as
input.
result
be
an
empty
CBOR-encoded
byte
array.
This
algorithm
takes
a
JSON-LD
object
jsonldDocument
and
options
as
input.
The
options
MUST
contain:
applicationContextMap
applicationTermMap
result
be
an
empty
CBOR-encoded
byte
array.
result
to
0xd90501
(CBOR
Tag
-
0xd9,
CBOR-LD
-
0x05,
Compressed
-
CBOR-LD
compression
algorithm
version
1
-
0x01,
Tag
1281)).
termCodecMap
to
the
result
of
the
§
3.4
Get
Term
Codec
Map
Algorithm
,
passing
contextUrls
as
input.
result
by
recursively
processing
every
name-value
pair
in
jsonldDocument
termHint
be
the
value
associated
with
the
JSON
name
in
the
termCodecMap
.
termHint.value
value.
termHint.valueCompressor
function.
result
.
This
algorithm
takes
a
list
of
URL
strings
contextUrls
and
returns
a
CBOR-LD
term
codec
map
that
maps
JSON-LD
terms
to
their
associated
byte
values
and
value
compression
functions.
result
be
an
ordered
map.
contextUrls
,
dereference
the
JSON-LD
contexts
and
process
every
entry.
value
with
an
undefined
value.
compressor
be
a
known
global
compressor
function
associated
with
the
@type
property,
a
known
local
compressor
function
that
was
provided
to
this
function,
or
the
generic
CBOR
compressor
function,
which
returns
the
bytes
associated
with
a
typical
CBOR
compression
of
the
given
datatype.
sortedTerms
be
the
value
of
sorting
all
of
the
keys
in
result
.
sortedTerms
set
the
associated
termHint.value
value
to
the
associated
index
of
sortedTerms
.
result
.
result
be
a
ordered
map.
@context
result
where
the
key
in
the
map
is
set
to
the
JSON
value
associated
with
@id
.
result
.
The following is a registry of well-known term codecs. These will be registered on a first-come first-serve basis.
Value | Context URL | Context Name |
---|---|---|
0x00
-
0x0F
|
RESERVED
|
Reserved for future use. |
0x10
|
https://www.w3.org/ns/activitystreams
|
ActivityStreams 2.0 |
0x11
|
https://www.w3.org/2018/credentials/v1
|
Verifiable Credentials Data Model v1 |
0x12
|
https://www.w3.org/ns/did/v1
|
Decentralized Identifiers (DID) Core Spec v1 |
0x13
|
https://w3id.org/security/suites/ed25519-2018/v1
|
Ed25519Signature2018 Suite |
0x14
|
https://w3id.org/security/suites/ed25519-2020/v1
|
Ed25519Signature2020 Suite |
0x15
|
https://w3id.org/cit/v1
|
Concealed Id Token |
0x16
|
https://w3id.org/age/v1
|
Age Verification |
0x17
|
https://w3id.org/security/suites/x25519-2020/v1
|
X25519KeyAgreementKey2020 Suite |
0x18
|
https://w3id.org/veres-one/v1
|
Veres One DID Method |
0x19
|
https://w3id.org/webkms/v1
|
WebKMS (Key Management System) |
0x1A
|
https://w3id.org/zcap/v1
|
Authorization Capabilities (zCap) |
0x1B
|
https://w3id.org/security/suites/hmac-2019/v1
|
Sha256HmacKey2019 Crypto Suite |
0x1C
|
https://w3id.org/security/suites/aes-2019/v1
|
AesKeyWrappingKey2019 Crypto Suite |
0x1D
|
https://w3id.org/vaccination/v1
|
Vaccination Certificate Vocabulary v0.1 |
0x1E
|
https://w3id.org/vc-revocation-list-2020/v1
|
Verifiable Credentials Revocation List 2020 |
0x1F
|
https://w3id.org/dcc/v1
|
DCC (Decentralized Credentials Consortium) Core Context |
0x20
|
https://w3id.org/vc/status-list/v1
|
Verifiable Credentials Status List |
0x21
-
0x2F
|
Available for use. | |
0x30
|
https://w3id.org/security/data-integrity/v1
|
Data Integrity v1.0 |
0x31
|
https://w3id.org/security/multikey/v1
|
Multikey v1.0 |
0x32
|
https://purl.imsglobal.org/spec/ob/v3p0/context.json |
|
0x33
|
https://w3id.org/security/data-integrity/v2
|
Data Integrity v2.0 |
0x34
|
ecdsa-rdfc-2019
|
Data Integrity ECDSA RDFC 2019 cryptosuite identifier |
0x35
|
ecdsa-sd-2023
|
Data Integrity ECDSA-SD 2023 cryptosuite identifier |
0x36
|
eddsa-rdfc-2022
|
Data Integrity EDDSA RDFC 2022 cryptosuite identifier |