com.t0ronto.commons.entity

t0ronto.com

Schema Diff

+3 -91

From

CID
bafyreievpq63abu...
Indexed At
2026-05-24 15:22 UTC
View this version

To

CID
bafyreicpbwbvibl...
Indexed At
2026-05-24 21:52 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@