com.t0ronto.commons.attestation
Schema Diff
+4 -23
Compatibility Analysis
Backward Compatible
No changes detected.
1
1
{
2
2
"id": "com.t0ronto.commons.attestation",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"subject",
11
11
"predicate",
12
12
"createdAt"
13
13
],
14
14
"properties": {
15
15
"graph": {
16
16
"type": "string",
17
17
"description": "Optional sub-grouping token for batch-authored attestations (e.g. \"geocode-sync\", \"lcsh-import\"). Provenance proper — author and time — comes from the record's repo and commit, not from this field.",
18
18
"maxGraphemes": 128
19
19
},
20
20
"subject": {
21
21
"type": "string",
22
22
"format": "at-uri",
23
23
"description": "The anchor this claim is about — a com.t0ronto.commons.entity at-uri. May also be another attestation's at-uri, which lets you attest about an attestation (reification / edge-metadata) without leaving the model."
24
24
},
25
25
"createdAt": {
26
26
"type": "string",
27
27
"format": "datetime",
28
28
"description": "Client-declared timestamp when the attestation was authored."
29
29
},
30
30
"objectLit": {
31
31
"ref": "#literal",
32
32
"type": "ref",
33
33
"description": "Object as a scalar literal — a property value. External-world URIs (an LCSH or Wikidata alignment target, a canonical link) are literals with datatype xsd:anyURI, never objectRef — objectRef is reserved for edges inside our own graph. Exactly one of objectRef / objectLit / objectStruct must be present."
34
34
},
35
35
"objectRef": {
36
36
"type": "string",
37
37
"format": "at-uri",
38
-
"description": "Object as an internal reference — an edge to another anchor (or, for `retracts`, to the attestation being retracted). Use for graph relations: instanceOf, mainSubject, locatedIn, broader, audience, cadence. Exactly one of objectRef / objectLit / objectStruct must be present (enforced by the index, not the lexicon)."
38
+
"description": "Object as an at-uri reference — an edge to another entity (or, for the retracts predicate, to the attestation being retracted). Used for graph relations: instanceOf, mainSubject, locatedIn, broader, audience, cadence, inScheme. Exactly one of objectRef / objectLit / objectStruct must be present (enforced by the index, not the lexicon)."
39
39
},
40
40
"predicate": {
41
41
"type": "string",
42
-
"description": "The relation asserted. Open vocabulary so the commons can grow; knownValues are the curated core. Edge-style predicates (instanceOf, mainSubject, audience, cadence, locatedIn, broader, retracts) take an objectRef; property-style predicates (label, description, link, and the alignment predicates) take an objectLit; compound predicates (address, geo, social) take an objectStruct. `instanceOf` may take an objectRef (an internal type concept) OR an objectLit with datatype xsd:anyURI (an external class such as skos:Concept — this is how an anchor is attested to be a vocabulary concept).",
43
-
"knownValues": [
44
-
"label",
45
-
"description",
46
-
"link",
47
-
"instanceOf",
48
-
"mainSubject",
49
-
"audience",
50
-
"cadence",
51
-
"locatedIn",
52
-
"broader",
53
-
"address",
54
-
"geo",
55
-
"social",
56
-
"exactMatch",
57
-
"closeMatch",
58
-
"broadMatch",
59
-
"narrowMatch",
60
-
"sameAs",
61
-
"retracts"
62
-
]
42
+
"format": "at-uri",
43
+
"description": "The relation asserted, as an at-uri to a project predicate entity (com.t0ronto.commons.entity, instanceOf the project's Property class). Project predicate entities are minted on t0ronto.com's repo (the commons authority); their canonical at-uris are listed in scripts/predicate_seed.json. External vocabularies (rdfs:label, skos:broader, wd:P276) are not used directly as predicate strings — they enter the model as sameAs attestations on the project predicate entity, with objectLit datatype xsd:anyURI. This keeps every identity in the system substrate-native (at-uri) so backlink discovery, retraction, alignment, and curation all work uniformly. Phase 8."
63
44
},
64
45
"objectStruct": {
65
46
"refs": [
66
47
"community.lexicon.location.address",
67
48
"community.lexicon.location.geo",
68
49
"community.lexicon.location.fsq",
69
50
"community.lexicon.location.hthree",
70
51
"com.t0ronto.commons.defs#social"
71
52
],
72
53
"type": "union",
73
54
"description": "Object as a compound value: a postal address, geo point, Foursquare POI, H3 cell, or social-platform presence. Reuses the community.lexicon.location.* vocabulary deliberately rather than redefining it. Exactly one of objectRef / objectLit / objectStruct must be present."
74
55
}
75
56
}
76
57
},
77
-
"description": "A single attestation in the t0ronto data commons: one quad asserting that `subject` stands in relation `predicate` to an object. The object is exactly one of `objectRef` (a reference to another anchor — an edge in the graph), `objectLit` (a scalar literal — a property value), or `objectStruct` (a compound value such as an address or social handle). Provenance is intrinsic and is NOT carried as fields: the record is signed by the repo's DID and stamped by the commit, so who-attested-it and when fall out of the substrate. Append-only by convention — corrections are new attestations (see the `retracts` predicate), not edits. rkey is a TID."
58
+
"description": "A single attestation in the t0ronto data commons: one quad asserting that `subject` stands in relation `predicate` to an object. Subject is an at-uri (a project entity, or another attestation in the retracts case). Predicate is an at-uri to a project predicate entity (see scripts/predicate_seed.json). Object is exactly one of `objectRef` (an at-uri reference to another entity — an edge in the graph), `objectLit` (a scalar literal — a property value; external IRIs live here as xsd:anyURI), or `objectStruct` (a compound value such as an address or social handle). Provenance is intrinsic and is NOT carried as fields: the record is signed by the repo's DID and stamped by the commit, so who-attested-it and when fall out of the substrate. Append-only by convention — corrections are new attestations (see the retracts predicate), not edits. rkey is a TID. Phase 8: every identity in the model — subject, predicate, objectRef — is an at-uri; the only strings are literals."
78
59
},
79
60
"literal": {
80
61
"type": "object",
81
62
"required": [
82
63
"value"
83
64
],
84
65
"properties": {
85
66
"lang": {
86
67
"type": "string",
87
68
"description": "BCP-47 language tag, used when datatype is rdf:langString. Lets the same subject carry labels/descriptions in multiple languages as separate attestations (e.g. an `en` label and a `fr` label)."
88
69
},
89
70
"value": {
90
71
"type": "string",
91
72
"description": "The literal value, lexically encoded per its datatype (e.g. \"43.6532\" for an xsd:decimal, an ISO-8601 string for an xsd:dateTime, the full URI for an xsd:anyURI).",
92
73
"maxGraphemes": 2000
93
74
},
94
75
"datatype": {
95
76
"type": "string",
96
77
"default": "xsd:string",
97
78
"description": "XSD/RDF datatype as a CURIE or URI. Common values: xsd:string, xsd:anyURI (external-vocab targets and links), xsd:dateTime, xsd:decimal, xsd:boolean, rdf:langString."
98
79
}
99
80
},
100
81
"description": "A scalar literal value with an XSD datatype. Numbers, dates, and URIs are carried in their lexical (string) form, tagged by `datatype`."
101
82
}
102
83
},
103
84
"$type": "com.atproto.lexicon.schema",
104
85
"lexicon": 1
105
86
}