more schema docs

This commit is contained in:
Brad Fitzpatrick 2010-12-01 21:14:07 -08:00
parent 650c6c1a77
commit 107678f560
3 changed files with 81 additions and 0 deletions

50
doc/schema/claims/TODO Normal file
View File

@ -0,0 +1,50 @@
TODO:
-----
Clean this up and/or break into separate files.
Old notes from July doc:
------------------------
Claim types:
permanode-become:
-- implies either:
1) switching from typeless/lifeless virgin pnode into something (dynamic set, filesystem tree, etc)
2) changing versions of that base metadata (new filesystem snapshot)
-- permaNode is the thing that is changing
-- contents is the current node that represents what permaNode changes to
set-membership: add a blobref to a dynamic set
-- “permaNode” is blobref of the dynamic set
delete-claim: delete another claim (target is claim to delete)
-- “contents” is the claim blobref youre deleting
{set,add}-attribute:
-- attach a piece of metadata to something.
-- use set-attribute for single-valued attributes only: highest dated claim wins (of trusted person) e.g. “title”, “description”
-- use add-attribute for multi-valued things. e.g. “tag”
Tagging something:
{“claimType”: “add-attribute”, //
“attribute”: “tag”, // utf-8, should have list of valid attributes names, preferrably not made up by us (open social spec?)
“value”: “funny”, // value that doesnt have lasting value
“valueRef”: “sha1-blobref”, // hefty reference to a lasting value
“claimer?”: “sha1-of-the-dude-whos-signing”,
“claimDate”: “2010-07-10T17:20:03.9212Z”,
“claimType”, “permanode-become”,
“permaNode”: “sha1-pnode”,
}
filesystem root claim:
{
“camliVersion”: 1,
“camliType”: “claim”,
// Stuff for camliType “claim”:
“claimDate”: “2010-07-10T17:20:03.9212Z”, // redundant with data in ascii armored "camliSig". TODO: resolve
“claimType”, “permanode-become”,
// Stuff for “permanode-become”:
“permaNode”: “sha1-pnode”,
“contents”: “sha1-fs-node”
,"camliSigner": "digalg-blobref-to-ascii-armor-public-key-of-signer",
"camliSig": "......"}

16
doc/schema/keep.txt Normal file
View File

@ -0,0 +1,16 @@
A signed "keep" edge for GC/indexing purposes. Expressed a user's
intent to keep an object.
This is not the only way to keep an object alive for the purposes of
GC. Permanodes (signed by a user) are also part of that user's roots,
and anything they reference (including blobs via "become" claims on
those permanodes)
This is just the most explicit way when you're not modeling the data
with permanodes.
{"camliVersion": 1,
"camliType": "keep",
"target": "digalg-blobref-of-thing-to-keep",
<REQUIRED-JSON-SIGNATURE>}

15
doc/schema/permanode.txt Normal file
View File

@ -0,0 +1,15 @@
The idea of a permanode is that it's the anchor from which you build
mutable objects. To serve as a reliable (consistently nameable)
object it must have no mutable state itself.
{"camliVersion": 1,
"camliType": "permanode",
// Required. Any random string, to force the sha1 of this
// node to be unique. Note that the date in the ASCI-armored
// GPG JSON signature will already help it be unique, so this
// doesn't need to be a great random.
"random": "615e05c68c8411df81a2001b639d041f"
<REQUIRED-JSON-SIGNATURE>}