app.gainforest.organization.observations.dendogram
Schema Diff
+76 -1
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
}