com.t0ronto.commons.entity
Schema Diff
+3 -91
Compatibility Analysis
Breaking Changes Detected
46 breaking changes, 2 non-breaking changes.
Breaking Changes (46)
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses:items" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses:items:variant0" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses:items:variant1" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses:items:variant2" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses:items:variant3" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.alignments" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.alignments:items" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.audience" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.audience:items" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.cadence" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.description" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.link" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.locatedIn" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.locatedIn:items" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.name" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.social" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.social:items" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.topics" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.topics:items" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.types" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.types:items" }
- RemovedVertex RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.updatedAt" }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.addresses", kind: "prop", name: Some("addresses") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.alignments", kind: "prop", name: Some("alignments") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.audience", kind: "prop", name: Some("audience") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.cadence", kind: "prop", name: Some("cadence") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.description", kind: "prop", name: Some("description") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.link", kind: "prop", name: Some("link") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.locatedIn", kind: "prop", name: Some("locatedIn") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.name", kind: "prop", name: Some("name") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.social", kind: "prop", name: Some("social") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.topics", kind: "prop", name: Some("topics") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.types", kind: "prop", name: Some("types") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.updatedAt", kind: "prop", name: Some("updatedAt") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body.addresses", tgt: "com.t0ronto.commons.entity:body.addresses:items", kind: "items", name: None }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body.addresses:items", tgt: "com.t0ronto.commons.entity:body.addresses:items:variant0", kind: "variant", name: Some("community.lexicon.location.address") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body.addresses:items", tgt: "com.t0ronto.commons.entity:body.addresses:items:variant1", kind: "variant", name: Some("community.lexicon.location.geo") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body.addresses:items", tgt: "com.t0ronto.commons.entity:body.addresses:items:variant2", kind: "variant", name: Some("community.lexicon.location.fsq") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body.addresses:items", tgt: "com.t0ronto.commons.entity:body.addresses:items:variant3", kind: "variant", name: Some("community.lexicon.location.hthree") }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body.alignments", tgt: "com.t0ronto.commons.entity:body.alignments:items", kind: "items", name: None }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body.audience", tgt: "com.t0ronto.commons.entity:body.audience:items", kind: "items", name: None }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body.locatedIn", tgt: "com.t0ronto.commons.entity:body.locatedIn:items", kind: "items", name: None }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body.social", tgt: "com.t0ronto.commons.entity:body.social:items", kind: "items", name: None }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body.topics", tgt: "com.t0ronto.commons.entity:body.topics:items", kind: "items", name: None }
- RemovedEdge RemovedEdge { src: "com.t0ronto.commons.entity:body.types", tgt: "com.t0ronto.commons.entity:body.types:items", kind: "items", name: None }
Non-Breaking Changes (2)
- ConstraintRemoved ConstraintRemoved { vertex_id: "com.t0ronto.commons.entity:body.description", sort: "maxGraphemes" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "com.t0ronto.commons.entity:body.name", sort: "maxGraphemes" }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses:items" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses:items:variant0" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses:items:variant1" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses:items:variant2" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.addresses:items:variant3" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.alignments" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.alignments:items" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.audience" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.audience:items" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.cadence" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.description" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.link" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.locatedIn" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.locatedIn:items" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.name" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.social" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.social:items" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.topics" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.topics:items" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.types" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.types:items" }RemovedVertex { vertex_id: "com.t0ronto.commons.entity:body.updatedAt" }
Constraint Changes
- ConstraintRemoved ConstraintRemoved { vertex_id: "com.t0ronto.commons.entity:body.description", sort: "maxGraphemes" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "com.t0ronto.commons.entity:body.name", sort: "maxGraphemes" }
Additional Notes
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.addresses", kind: "prop", name: Some("addresses") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.alignments", kind: "prop", name: Some("alignments") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.audience", kind: "prop", name: Some("audience") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.cadence", kind: "prop", name: Some("cadence") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.description", kind: "prop", name: Some("description") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.link", kind: "prop", name: Some("link") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.locatedIn", kind: "prop", name: Some("locatedIn") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.name", kind: "prop", name: Some("name") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.social", kind: "prop", name: Some("social") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.topics", kind: "prop", name: Some("topics") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.types", kind: "prop", name: Some("types") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body", tgt: "com.t0ronto.commons.entity:body.updatedAt", kind: "prop", name: Some("updatedAt") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body.addresses", tgt: "com.t0ronto.commons.entity:body.addresses:items", kind: "items", name: None }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body.addresses:items", tgt: "com.t0ronto.commons.entity:body.addresses:items:variant0", kind: "variant", name: Some("community.lexicon.location.address") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body.addresses:items", tgt: "com.t0ronto.commons.entity:body.addresses:items:variant1", kind: "variant", name: Some("community.lexicon.location.geo") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body.addresses:items", tgt: "com.t0ronto.commons.entity:body.addresses:items:variant2", kind: "variant", name: Some("community.lexicon.location.fsq") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body.addresses:items", tgt: "com.t0ronto.commons.entity:body.addresses:items:variant3", kind: "variant", name: Some("community.lexicon.location.hthree") }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body.alignments", tgt: "com.t0ronto.commons.entity:body.alignments:items", kind: "items", name: None }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body.audience", tgt: "com.t0ronto.commons.entity:body.audience:items", kind: "items", name: None }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body.locatedIn", tgt: "com.t0ronto.commons.entity:body.locatedIn:items", kind: "items", name: None }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body.social", tgt: "com.t0ronto.commons.entity:body.social:items", kind: "items", name: None }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body.topics", tgt: "com.t0ronto.commons.entity:body.topics:items", kind: "items", name: None }
- Breaking: RemovedEdge { src: "com.t0ronto.commons.entity:body.types", tgt: "com.t0ronto.commons.entity:body.types:items", kind: "items", name: None }
1
1
{
2
2
"id": "com.t0ronto.commons.entity",
3
3
"defs": {
4
4
"main": {
5
-
"key": "tid",
5
+
"key": "any",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
-
"name",
11
10
"createdAt"
12
11
],
13
12
"properties": {
14
-
"link": {
15
-
"type": "string",
16
-
"format": "uri",
17
-
"description": "Primary canonical URL for the entity (its official site)."
18
-
},
19
-
"name": {
20
-
"type": "string",
21
-
"description": "Display name of the entity.",
22
-
"maxGraphemes": 256,
23
-
"minGraphemes": 1
24
-
},
25
-
"types": {
26
-
"type": "array",
27
-
"items": {
28
-
"type": "string",
29
-
"format": "at-uri"
30
-
},
31
-
"description": "P31-style 'instance of' references to com.t0ronto.commons.concept records with sub='type'. Multi-valued — an entity can declare itself multiple kinds simultaneously."
32
-
},
33
-
"social": {
34
-
"type": "array",
35
-
"items": {
36
-
"ref": "com.t0ronto.commons.defs#social",
37
-
"type": "ref"
38
-
},
39
-
"description": "Social-platform presences. See com.t0ronto.commons.defs#social for per-platform value contract — note that bluesky values are DIDs, not URLs."
40
-
},
41
-
"topics": {
42
-
"type": "array",
43
-
"items": {
44
-
"type": "string",
45
-
"format": "at-uri"
46
-
},
47
-
"description": "P921-style 'main subject' references to com.t0ronto.commons.concept records with sub='topic'. What this entity is about."
48
-
},
49
-
"cadence": {
50
-
"type": "string",
51
-
"format": "at-uri",
52
-
"description": "Frequency of operation (P2257-style). Single-valued reference to a com.t0ronto.commons.concept record with sub='cadence'."
53
-
},
54
-
"audience": {
55
-
"type": "array",
56
-
"items": {
57
-
"type": "string",
58
-
"format": "at-uri"
59
-
},
60
-
"description": "References to com.t0ronto.commons.concept records with sub='audience'. Communities this entity is about, serves, or attracts."
61
-
},
62
-
"addresses": {
63
-
"type": "array",
64
-
"items": {
65
-
"refs": [
66
-
"community.lexicon.location.address",
67
-
"community.lexicon.location.geo",
68
-
"community.lexicon.location.fsq",
69
-
"community.lexicon.location.hthree"
70
-
],
71
-
"type": "union"
72
-
},
73
-
"description": "Physical location(s). Multiple shapes are allowed and can coexist — a postal address plus coordinates plus a Foursquare POI ID, for example. All shapes are defined by the community.lexicon.location.* vocabulary, deliberately reused rather than redefined."
74
-
},
75
13
"createdAt": {
76
14
"type": "string",
77
15
"format": "datetime",
78
-
"description": "Client-declared timestamp when the record was first authored."
79
-
},
80
-
"locatedIn": {
81
-
"type": "array",
82
-
"items": {
83
-
"type": "string",
84
-
"format": "at-uri"
85
-
},
86
-
"description": "P131-style references to other com.t0ronto.commons.entity records this one is geographically located in — typically neighbourhoods, boroughs, cities, or container venues. Multi-valued: a gallery can be located in a community centre AND a neighbourhood at the same time."
87
-
},
88
-
"updatedAt": {
89
-
"type": "string",
90
-
"format": "datetime",
91
-
"description": "Client-declared timestamp when the record was last updated."
92
-
},
93
-
"alignments": {
94
-
"type": "array",
95
-
"items": {
96
-
"ref": "com.t0ronto.commons.defs#alignment",
97
-
"type": "ref"
98
-
},
99
-
"description": "Cross-vocabulary alignments to external authorities (LCNAF, Wikidata, GeoNames, etc.)."
100
-
},
101
-
"description": {
102
-
"type": "string",
103
-
"description": "One- to several-sentence description in the local language. Plain text, no markup.",
104
-
"maxGraphemes": 2000
16
+
"description": "Client-declared timestamp when this identity was minted. The only field on an anchor — by design it carries no claims; claims live in statement records that reference this anchor's at-uri."
105
17
}
106
18
}
107
19
},
108
-
"description": "An entry in the t0ronto data commons: an organization, programme, venue, neighbourhood, or other community-relevant thing. Polymorphic — what kind of thing an entity is is declared via `types[]` (P31-style references to com.t0ronto.commons.concept records), not by which collection it lives in. An entity can declare multiple types and surface in multiple buckets simultaneously: CONTACT, for example, declares itself both an organization and a festival."
20
+
"description": "An anchor in the t0ronto data commons: a bare, claim-free identity for a thing — an organization, programme, venue, neighbourhood, or a vocabulary concept. The anchor holds NO properties of its own. Everything true of it — name, type, topics, location, prefLabel, broader, alignments — is asserted by separate com.t0ronto.commons.statement records, which may be authored by many different DIDs. The anchor exists only to mint a stable, resolvable identity that statements point at. Whether an anchor denotes a real-world thing or a vocabulary concept is itself an attestation (an `instanceOf` statement, e.g. instanceOf skos:Concept), not a property of this record or of which collection it lives in. The rkey IS the entity's stable identifier: a UUIDv7 for real-world things (mapping 1:1 to the public URL t0ronto.ca/e/<uuid>) or a curated slug for vocabulary concepts (e.g. at://<did>/com.t0ronto.commons.entity/music)."
109
21
}
110
22
},
111
23
"$type": "com.atproto.lexicon.schema",
112
24
"lexicon": 1
113
25
}