app.gainforest.organization.observations.dendogram

gainforest.earth

Schema Diff

+76 -1

From

CID
bafyreiemmnhx7f7...
Indexed At
2026-02-18 18:06 UTC
View this version

To

CID
bafyreihi6t5saj3...
Indexed At
2026-04-29 14:34 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

7 breaking changes, 24 non-breaking changes.

Breaking Changes (7)
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.taxonCount", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.dataSource", sort: "maxGraphemes", value: "256" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.name", sort: "maxGraphemes", value: "256" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.taxonGroups:items", sort: "maxGraphemes", value: "64" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.analysisMethod", sort: "maxGraphemes", value: "512" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.treeType", sort: "maxGraphemes", value: "64" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.rootTaxon", sort: "maxGraphemes", value: "256" }
Non-Breaking Changes (24)
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.analysisDate" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.analysisMethod" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.dataSource" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.description" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.name" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.rootTaxon" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.siteRef" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.taxonCount" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.taxonGroups" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.taxonGroups:items" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.thumbnail" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.treeType" }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.analysisDate", kind: "prop", name: Some("analysisDate") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.analysisMethod", kind: "prop", name: Some("analysisMethod") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.dataSource", kind: "prop", name: Some("dataSource") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.description", kind: "prop", name: Some("description") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.name", kind: "prop", name: Some("name") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.rootTaxon", kind: "prop", name: Some("rootTaxon") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.siteRef", kind: "prop", name: Some("siteRef") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.taxonCount", kind: "prop", name: Some("taxonCount") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.taxonGroups", kind: "prop", name: Some("taxonGroups") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.thumbnail", kind: "prop", name: Some("thumbnail") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.treeType", kind: "prop", name: Some("treeType") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.dendogram:body.taxonGroups", tgt: "app.gainforest.organization.observations.dendogram:body.taxonGroups:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.analysisDate" }
  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.analysisMethod" }
  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.dataSource" }
  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.description" }
  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.name" }
  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.rootTaxon" }
  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.siteRef" }
  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.taxonCount" }
  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.taxonGroups" }
  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.taxonGroups:items" }
  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.thumbnail" }
  • AddedVertex { vertex_id: "app.gainforest.organization.observations.dendogram:body.treeType" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.rootTaxon", sort: "maxGraphemes", value: "256" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.analysisMethod", sort: "maxGraphemes", value: "512" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.taxonGroups:items", sort: "maxGraphemes", value: "64" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.name", sort: "maxGraphemes", value: "256" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.dataSource", sort: "maxGraphemes", value: "256" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.taxonCount", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.dendogram:body.treeType", sort: "maxGraphemes", value: "64" }

Additional Notes

  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.analysisDate", kind: "prop", name: Some("analysisDate") }
  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.analysisMethod", kind: "prop", name: Some("analysisMethod") }
  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.dataSource", kind: "prop", name: Some("dataSource") }
  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.description", kind: "prop", name: Some("description") }
  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.name", kind: "prop", name: Some("name") }
  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.rootTaxon", kind: "prop", name: Some("rootTaxon") }
  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.siteRef", kind: "prop", name: Some("siteRef") }
  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.taxonCount", kind: "prop", name: Some("taxonCount") }
  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.taxonGroups", kind: "prop", name: Some("taxonGroups") }
  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.thumbnail", kind: "prop", name: Some("thumbnail") }
  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body", tgt: "app.gainforest.organization.observations.dendogram:body.treeType", kind: "prop", name: Some("treeType") }
  • Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.dendogram:body.taxonGroups", tgt: "app.gainforest.organization.observations.dendogram:body.taxonGroups:items", kind: "items", name: None }
1 1
{
2 2
  "id": "app.gainforest.organization.observations.dendogram",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "literal:self",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "dendogram",
11 11
          "createdAt"
12 12
        ],
13 13
        "properties": {
14 +
          "name": {
15 +
            "type": "string",
16 +
            "description": "Name or title of the dendogram (e.g., 'Flora Phylogenetic Tree - Site A 2025')",
17 +
            "maxGraphemes": 256
18 +
          },
19 +
          "siteRef": {
20 +
            "type": "string",
21 +
            "format": "at-uri",
22 +
            "description": "AT-URI reference to the site this dendogram represents"
23 +
          },
24 +
          "treeType": {
25 +
            "type": "string",
26 +
            "description": "Type of tree represented in the dendogram",
27 +
            "knownValues": [
28 +
              "phylogenetic",
29 +
              "phenetic",
30 +
              "cladistic",
31 +
              "functional-trait",
32 +
              "other"
33 +
            ],
34 +
            "maxGraphemes": 64
35 +
          },
14 36
          "createdAt": {
15 37
            "type": "string",
16 38
            "format": "datetime",
17 39
            "description": "The date and time of the creation of the record"
18 40
          },
19 41
          "dendogram": {
20 -
            "ref": "app.gainforest.common.defs#smallBlob",
42 +
            "ref": "org.hypercerts.defs#smallBlob",
21 43
            "type": "ref",
22 44
            "description": "An SVG of the dendogram uploaded as blob"
45 +
          },
46 +
          "rootTaxon": {
47 +
            "type": "string",
48 +
            "description": "The root taxon of the tree (e.g., 'Plantae')",
49 +
            "maxGraphemes": 256
50 +
          },
51 +
          "thumbnail": {
52 +
            "ref": "app.gainforest.common.defs#imageThumbnail",
53 +
            "type": "ref",
54 +
            "description": "Thumbnail preview image of the dendogram"
55 +
          },
56 +
          "dataSource": {
57 +
            "type": "string",
58 +
            "description": "Source of the sequence or trait data used in the analysis",
59 +
            "maxGraphemes": 256
60 +
          },
61 +
          "taxonCount": {
62 +
            "type": "integer",
63 +
            "minimum": 0,
64 +
            "description": "Number of taxa represented in the dendogram"
65 +
          },
66 +
          "description": {
67 +
            "ref": "app.gainforest.common.defs#richtext",
68 +
            "type": "ref",
69 +
            "description": "Description of what this dendogram shows"
70 +
          },
71 +
          "taxonGroups": {
72 +
            "type": "array",
73 +
            "items": {
74 +
              "type": "string",
75 +
              "knownValues": [
76 +
                "flora",
77 +
                "fauna",
78 +
                "fungi",
79 +
                "bacteria",
80 +
                "archaea",
81 +
                "protista",
82 +
                "chromista"
83 +
              ],
84 +
              "maxGraphemes": 64
85 +
            },
86 +
            "maxLength": 10,
87 +
            "description": "Which taxonomic groups are represented in the dendogram"
88 +
          },
89 +
          "analysisDate": {
90 +
            "type": "string",
91 +
            "format": "datetime",
92 +
            "description": "When the phylogenetic analysis was performed"
93 +
          },
94 +
          "analysisMethod": {
95 +
            "type": "string",
96 +
            "description": "Method used to generate the dendogram (e.g., 'Maximum Likelihood with RAxML', 'Neighbor-Joining')",
97 +
            "maxGraphemes": 512
23 98
          }
24 99
        }
25 100
      },
26 101
      "description": "A declaration of a dendogram observation for an organization"
27 102
    }
28 103
  },
29 104
  "$type": "com.atproto.lexicon.schema",
30 105
  "lexicon": 1
31 106
}

Compare Other Versions

Lexicon Garden

@