Awesome
This repository is no longer maintained, see https://ipld.io for the latest information on IPLD and its use.
IPLD Examples
This repo contains several datastructure examples to use with IPLD, the new data format for IPFS.
These examples aim to be complete.
Contents
- (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
Experiment
Pathing Semantics
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 (4) and (7).
One goal of this repo is to experiment with these and see which feels best.
Contribute
Feel free to join in. All welcome. Open an issue!
This repository falls under the IPFS Code of Conduct.