Participants make Statements about a work
by: Pablo Picasso
title: Bull
year: 1958
-Love, MoMA
can be derived from existing metadata through Translators
signed with the participant's keypair
form a tree(-ish)
walked to form a complete picture
title: Horse and Barge,
artist: David Cox
-Tate
title: Horse and Barge,
artist: ???,
year: 1820
-MoMA
title: Horse and Barge,
artist: David Cox,
year: 1820
anyone can contribute, but untrusted statements discarded at read time
title: Horse and Barge,
artist: David Cox
-Tate
title: Horse and Barge,
artist: ???,
year: 1820
-MoMA
title: Horse and Barge,
artist: David Cox,
year: 1820
title: I Like Cheese
-Donald Trump
@link
@link
@link
@link
@link
@link
ipns://
IPFS
IPFS
IPLD
IPLD
IPLD
(all shown IPLD syntax to be considered schematic/experimental)
ImageBlob
Person
RawMetadataBlob
{
"sourcedFrom": {
"@link": "QmeP3JJgXunsiVKZ4ffd7tgbXEZjtMg5f2eLjC9cRYvLBc"
},
"author": {
"@link": "QmbTcS3DuahG3npWbkmnND2XGFkoPBmTeFr9TgCemnnh8s"
},
"title": "Horse and Barge",
"thumbnail": {
"@link": "QmZozKTkUGUTsV94MbNLrezyF8ep5kn8ifZmt7w3r2Pn3W"
},
"signed": {
"publicKeyId": "+tate",
"signature": "87604ba565dd4ad6452640463605f0f5"
}
}
ImageBlob
{
"name": "David Cox",
"passname": "+davidcox"
}
Person
{
"acno": "A00169",
"acquisitionYear": 1927,
"classification": "on paper, unique",
"contributors": [
{
"birthYear": 1783,
"date": "1783–1859",
"fc": "David Cox",
"id": 117,
"role": "artist"
}
],
"creditLine": "Bequeathed by J.R. Holliday 1927",
"dateText": "date not known",
"id": 2858,
"medium": "Watercolour on paper. Verso: graphite on paper",
"thumbnailUrl": "http://www.tate.org.uk/art/images/work/A/A00/A00169_8.jpg",
"title": "Horse and Barge"
}
RawMetadataBlob (raw JSON text)
Mutable, signed pointer for merges
Exactly equivalent to IPNS!
ipns://QmXSyBgdatMpHnPmP...
ipfs://QmbTcS3DuahG3npWb...
Preserve
Transpose
or
parent
parent
child
child
{
"sourcedFrom": {
"@link": "QmeP3JJgXunsiVKZ4f..."
},
"author": {
"@link": "QmbTcS3DuahG3npWbkmn..."
},
"title": "Horse and Barge",
"thumbnail": {
"@link": "QmZozKTkUGUTsV94MbNL..."
},
"signed": {
"publicKeyId": "+tate",
"signature": "17363ad405d98f3..."
},
"modifiedBy": {
"@link": "QmbmtAMrHNjHypZuzaHAY..."
}
}
{
"sourcedFrom": {
"@link": "QmPoWhsvGJ5w9f4Z4x6q..."
},
"author": {
"@link": "QmbTcS3DuahG3npWbkmnN..."
},
"title": "Horse and Barge",
"pubDate": "1820",
"signed": {
"publicKeyId": "+moma",
"signature": "b5804628cdad90..."
}
}
Parent
Child
QmbmtAMrHNjHypZuzaHAY...
Traverse root to leaves as with normal graph
Parent hash depends on all children so must write entire tree at once
(only applies to modifiedBy relationship)
modifying
{
"sourcedFrom": {
"@link": "QmeP3JJgXunsiVKZ4..."
},
"author": {
"@link": "QmbTcS3DuahG3npWb..."
},
"title": "Horse and Barge",
"thumbnail": {
"@link": "QmZozKTkUGUTsV94M..."
},
"signed": {
"publicKeyId": "+tate",
"signature": "87604ba565d..."
}
}
{
"sourcedFrom": {
"@link": "QmPoWhsvGJ5w9f4Z..."
},
"author": {
"@link": "QmbTcS3DuahG3npW..."
},
"title": "Horse and Barge",
"pubDate": "1820",
"signed": {
"publicKeyId": "+moma",
"signature": "b5804628cdad..."
},
"modifying": {
"@link": "QmeqmtCxJDLTjYZ..."
}
}
Parent
Child
QmeqmtCxJDLTjYZ...
Each node is immutable, specifies parent
No obvious way to traverse from the root
Allows permissionless appends
(pending final decisions)
"sourcedFrom": {
"@link": "QmeP3JJgXunsi...",
"importedOn": "2016-03-26T06:44:40+00:00"
}
{
"sourcedFrom": {
"@link": "QmeP3JJgXunsiVKZ4f..."
},
"author": {
"@link": "QmbTcS3DuahG3npWbkmn..."
},
"title": "Horse and Barge",
"thumbnail": {
"@link": "QmZozKTkUGUTsV94MbNL..."
},
"signed": {
"publicKeyId": "+tate",
"signature": "17363ad405d98f3..."
},
"modifiedBy": {
"@link": "QmbmtAMrHNjHypZuzaHAY..."
}
}
{
"sourcedFrom": {
"@link": "QmPoWhsvGJ5w9f4Z4x6q..."
},
"author": {
"@link": "QmbTcS3DuahG3npWbkmnN..."
},
"title": "Horse and Barge",
"pubDate": "1820",
"signed": {
"publicKeyId": "+moma",
"signature": "b5804628cdad90..."
}
}
{
"name": "David Cox",
"passname": "+davidcox"
}
{
"acno": "A00169",
"acquisitionYear": 1927,
"classification": "on paper, unique",
"contributors": [
{
"birthYear": 1783,
"date": "1783–1859",
"fc": "David Cox",
"id": 117,
"role": "artist"
}
],
"creditLine": "Bequeathed by J.R. Holliday 1927",
"dateText": "date not known",
"id": 2858,
"medium": "Watercolour on paper. Verso: graphite on paper",
"thumbnailUrl": "http://www.tate.org.uk/art/images/work/A/A00/A00169_8.jpg",
"title": "Horse and Barge"
}
{
"Title": "Horse and Barge",
"Artist": "David Cox",
"Date": "1820",
"Medium": "Watercolour on paper",
"MoMANumber": "1.9999",
"DateAcquired": "1997-01-15",
"CuratorApproved": "Y",
"ObjectID": "9999-9",
"URL": "http://www.moma.org/collection/works/9999"
}
ipns://QmXSyBgdatMpHnPmP...
(some vertices/edges omitted for clarity)
g.v("#15:3").out("described-by").out("authored-by").out("described-by")
ipns://QmXSyBgdatMpHnPmPx.../described-by/authored-by/described-by
(where "#15:3" and "QmX..." correspond to this tree's toplevel identifier)
{
"sourcedFrom": {
"@link": "QmeP3JJgXunsiVKZ4f..."
},
"authoredBy": {
"@link": "QmbTcS3DuahG3npWbkmn..."
},
"title": "Horse and Barge",
"thumbnail": {
"@link": "QmZozKTkUGUTsV94MbNL..."
},
"signed": {
"publicKeyId": "+tate",
"signature": "17363ad405d98f3..."
},
"modifiedBy": {
"@link": "QmbmtAMrHNjHypZuzaHAY..."
}
}
{
"name": "David Cox",
"passname": "+davidcox"
}
ipns://QmXSyB...
{
"describedBy":
{ "@link" : "Q..." }
}
{
"describedBy":
{ "@link" : "Q..." }
}
Gremlin
IPLD
Traverse as if entire graph is local
Fetch + cache missing objects
Naive traverse reqiuires 1 RT/edge (w/o cache)
IPLD addressing only supports following named out edges (@link keys)
= ??? ms
g.V(n).repeat(in('modifiedBy')).times(2).emit().path().by('title')
Remote must fulfill more complex requests
Simplified feature set
Transport needs to be graph-aware
Identity
Distributed index/search
Performance and Reliability
Eventual consistency???
Structured export + L-SPACE as write-through cache
Raw OrientDB dumps
Fully distributed future
http://mediachain-slack.herokuapp.com
@mine_labs
@parkan
mediachain/L-SPACE
We're Hiring!