app.gainforest.organization.observations.measuredTreesCluster
Schema Diff
+81 -1
Compatibility Analysis
Breaking Changes Detected
14 breaking changes, 32 non-breaking changes.
Breaking Changes (14)
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementDateRange", sort: "maxGraphemes", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.averageHeightMeters", sort: "maxGraphemes", value: "16" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.speciesCount", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementProtocol", sort: "maxGraphemes", value: "1024" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.areaSqMeters", sort: "maxGraphemes", value: "32" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.name", sort: "maxGraphemes", value: "256" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measuredBy", sort: "maxGraphemes", value: "512" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.dataSource", sort: "maxGraphemes", value: "256" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.license", sort: "maxGraphemes", value: "256" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.averageDbhCm", sort: "maxGraphemes", value: "16" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.totalTreeCount", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLongitude", sort: "maxGraphemes", value: "32" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLatitude", sort: "maxGraphemes", value: "32" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.dominantSpecies", sort: "maxGraphemes", value: "256" }
Non-Breaking Changes (32)
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.areaSqMeters" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.averageDbhCm" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.averageHeightMeters" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.dataSource" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLatitude" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLongitude" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.description" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.dominantSpecies" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.license" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measuredBy" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementDateRange" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementProtocol" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.name" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.siteRef" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.speciesCount" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.totalTreeCount" }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.areaSqMeters", kind: "prop", name: Some("areaSqMeters") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.averageDbhCm", kind: "prop", name: Some("averageDbhCm") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.averageHeightMeters", kind: "prop", name: Some("averageHeightMeters") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.dataSource", kind: "prop", name: Some("dataSource") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLatitude", kind: "prop", name: Some("decimalLatitude") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLongitude", kind: "prop", name: Some("decimalLongitude") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.description", kind: "prop", name: Some("description") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.dominantSpecies", kind: "prop", name: Some("dominantSpecies") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.license", kind: "prop", name: Some("license") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.measuredBy", kind: "prop", name: Some("measuredBy") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementDateRange", kind: "prop", name: Some("measurementDateRange") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementProtocol", kind: "prop", name: Some("measurementProtocol") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.name", kind: "prop", name: Some("name") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.siteRef", kind: "prop", name: Some("siteRef") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.speciesCount", kind: "prop", name: Some("speciesCount") }
- AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.totalTreeCount", kind: "prop", name: Some("totalTreeCount") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.areaSqMeters" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.averageDbhCm" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.averageHeightMeters" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.dataSource" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLatitude" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLongitude" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.description" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.dominantSpecies" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.license" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measuredBy" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementDateRange" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementProtocol" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.name" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.siteRef" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.speciesCount" }AddedVertex { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.totalTreeCount" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementDateRange", sort: "maxGraphemes", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.license", sort: "maxGraphemes", value: "256" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measuredBy", sort: "maxGraphemes", value: "512" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.areaSqMeters", sort: "maxGraphemes", value: "32" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementProtocol", sort: "maxGraphemes", value: "1024" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.speciesCount", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLongitude", sort: "maxGraphemes", value: "32" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.name", sort: "maxGraphemes", value: "256" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLatitude", sort: "maxGraphemes", value: "32" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.totalTreeCount", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.dominantSpecies", sort: "maxGraphemes", value: "256" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.averageHeightMeters", sort: "maxGraphemes", value: "16" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.averageDbhCm", sort: "maxGraphemes", value: "16" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.dataSource", sort: "maxGraphemes", value: "256" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.areaSqMeters", kind: "prop", name: Some("areaSqMeters") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.averageDbhCm", kind: "prop", name: Some("averageDbhCm") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.averageHeightMeters", kind: "prop", name: Some("averageHeightMeters") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.dataSource", kind: "prop", name: Some("dataSource") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLatitude", kind: "prop", name: Some("decimalLatitude") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.decimalLongitude", kind: "prop", name: Some("decimalLongitude") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.description", kind: "prop", name: Some("description") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.dominantSpecies", kind: "prop", name: Some("dominantSpecies") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.license", kind: "prop", name: Some("license") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.measuredBy", kind: "prop", name: Some("measuredBy") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementDateRange", kind: "prop", name: Some("measurementDateRange") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.measurementProtocol", kind: "prop", name: Some("measurementProtocol") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.name", kind: "prop", name: Some("name") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.siteRef", kind: "prop", name: Some("siteRef") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.speciesCount", kind: "prop", name: Some("speciesCount") }
- Non-breaking: AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body", tgt: "app.gainforest.organization.observations.measuredTreesCluster:body.totalTreeCount", kind: "prop", name: Some("totalTreeCount") }
1
1
{
2
2
"id": "app.gainforest.organization.observations.measuredTreesCluster",
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
"shapefile",
11
11
"createdAt"
12
12
],
13
13
"properties": {
14
+
"name": {
15
+
"type": "string",
16
+
"description": "Name of the tree cluster/plot (e.g., 'Plot A - Riparian Zone')",
17
+
"maxGraphemes": 256
18
+
},
19
+
"license": {
20
+
"type": "string",
21
+
"description": "Data license",
22
+
"maxGraphemes": 256
23
+
},
24
+
"siteRef": {
25
+
"type": "string",
26
+
"format": "at-uri",
27
+
"description": "AT-URI reference to the site this cluster belongs to"
28
+
},
14
29
"createdAt": {
15
30
"type": "string",
16
31
"format": "datetime",
17
32
"description": "The date and time of the creation of the record"
18
33
},
19
34
"shapefile": {
20
-
"ref": "app.gainforest.common.defs#smallBlob",
35
+
"ref": "org.hypercerts.defs#smallBlob",
21
36
"type": "ref",
22
37
"description": "A blob pointing to a shapefile of the measured trees cluster"
38
+
},
39
+
"dataSource": {
40
+
"type": "string",
41
+
"description": "Source of the data (e.g., 'KoBoToolbox', 'field survey')",
42
+
"maxGraphemes": 256
43
+
},
44
+
"measuredBy": {
45
+
"type": "string",
46
+
"description": "Person(s) who measured the trees (pipe-delimited)",
47
+
"maxGraphemes": 512
48
+
},
49
+
"description": {
50
+
"ref": "app.gainforest.common.defs#richtext",
51
+
"type": "ref",
52
+
"description": "Description of the cluster"
53
+
},
54
+
"areaSqMeters": {
55
+
"type": "string",
56
+
"description": "Area of the cluster in square meters",
57
+
"maxGraphemes": 32
58
+
},
59
+
"averageDbhCm": {
60
+
"type": "string",
61
+
"description": "Average diameter at breast height in cm",
62
+
"maxGraphemes": 16
63
+
},
64
+
"speciesCount": {
65
+
"type": "integer",
66
+
"minimum": 0,
67
+
"description": "Number of distinct species in the cluster"
68
+
},
69
+
"totalTreeCount": {
70
+
"type": "integer",
71
+
"minimum": 0,
72
+
"description": "Total number of measured trees in the cluster"
73
+
},
74
+
"decimalLatitude": {
75
+
"type": "string",
76
+
"description": "Centroid latitude of the cluster",
77
+
"maxGraphemes": 32
78
+
},
79
+
"dominantSpecies": {
80
+
"type": "string",
81
+
"description": "Most common species scientific name",
82
+
"maxGraphemes": 256
83
+
},
84
+
"decimalLongitude": {
85
+
"type": "string",
86
+
"description": "Centroid longitude of the cluster",
87
+
"maxGraphemes": 32
88
+
},
89
+
"averageHeightMeters": {
90
+
"type": "string",
91
+
"description": "Average tree height in meters",
92
+
"maxGraphemes": 16
93
+
},
94
+
"measurementProtocol": {
95
+
"type": "string",
96
+
"description": "Description of the measurement protocol used",
97
+
"maxGraphemes": 1024
98
+
},
99
+
"measurementDateRange": {
100
+
"type": "string",
101
+
"description": "Date range of measurements (ISO 8601 interval)",
102
+
"maxGraphemes": 64
23
103
}
24
104
}
25
105
},
26
106
"description": "A declaration of a measured trees cluster for an organization"
27
107
}
28
108
},
29
109
"$type": "com.atproto.lexicon.schema",
30
110
"lexicon": 1
31
111
}