openEngiadina wiki

Content-addressable RDF

A special case of content-addressed storage where the stored data is RDF.

See the published write-up for a detailed description.


Normalization / Canonicalization

C14N is complicated. Really complicated. You just won't believe how vastly, hugely, mindbogglingly complicated it is. — Canonicalization of an XML document

[fn:Canonicalization is sometimes abbreviated to C14N]


Identifier can not be part of serialization

Previous work

Signing RDF Graphs (2003)

Main points made are:

RDF C14N Is GI Complete (Section 2.3)

Canonicalization of RDF is Graph Isomorphism complete. Graph Isomorphism is considered to be a hard problem (NP, but not known if NP-Complete (!)).

RDF C14N without Blank Nodes (Section 3.4)

Canonicalization of RDF without blank nodes is trivial, simply sort the statements in lexicographical order.

Labeling Blank Nodes (Section 4)

An algorithm for deterministically labeling blank nodes (most of them).

Signing Indiviual Fragments of an RDF Graph (2005)

Introduce a grouping of statements that can be signed: Minimum Self-contained Graph (MSG).

RDF Dataset Normalization (2019, draft)

The W3C draft on how to do normalization of RDF.


The BitTorrent encoding that can be hashed (as there is a single encoding for every value).

RDF serialization to s-expressions (2006)

Effort towards serializing RDF with S-expressions from 2006.

See also

Trusty URIs

A similar scheme used for Nanopublications.



The IPFS data model for linked data.

Curiously they never mention the Semantic Web/Linked Data.

RDFSync Efficient Remote Synchronization of RDF Models (2007)

A method for synchronizing RDF data that may be directly usable for content-addressable RDF as we propose.