This repo contains several datastructure examples to use with IPLD, the new data format for IPFS.
These examples aim to be complete.
- (todo) foaf SW/LD style FOAF
- (todo) identity a basic identity system
- (todo) keychain a draft for the keychain datastruct
- (wip) mediachain a draft for the Mine Mediachain
- (todo) minecraft for a minecraft like game.
- (todo) multikey a draft for the multikey format
- (todo) orbit a draft for orbit
- (ok) post a draft for POST
- (todo) schema.org a draft for the schema.org datastructs.
- (todo) sharding a draft for IPFS object sharding
- (ok) unixfs a draft for IPFS unixfs
- (todo) uport a draft for the Ethereum/ConsenSys uPort wallet profiles
How to structure pathing and resolution through objects is a troublesome issue. You can read the IPLD spec here and read some of the arguments here.
The problem boils down to an issue introduced by the combination of link-local properties (properties on the link object itself) and transparent resolution of objects and links (using a single delimiter for traversing objects and links).
To resolve this, a number of variations have been presented:
- 1) transparent, no link properties access use only
/
but disallow accessing link-local properties. cons: cannot access link properties :( - 2) transparent, no link properties use only
/
but disallow using link-local properties. cons: cannot HAVE link properties :c - 3) transparent, hope for the best use only
/
and define the order the accesses happen, so that it is not ambiguous. cons: it may be confusing. - 4) different delimiters, strict - use different delimiters for "link local" and "link resolving" components (eg
. /
or/ //
). cons: two delimiters, escaping or incompatibilities - 5) different delimiters, permissive like (3) + (4), allow different delimiters to disambiguate "link local" and "link resolving" components
- 6) .object and .link accessors use explicit
.object
to access the object resolved through, and/or.link
for accessing link local properties. - 7) use explicit
link/
to resolve through (or some other operator string/char) con: a/link/b/link/c/link typing. - 8) different delimiters, strict and explicit
link/
, a combination of (5) and (8).
One goal of this repo is to experiment with these and see which feels best.