app.gainforest.organization.observations.measuredTreesCluster

gainforest.earth

Schema Diff

+81 -1

From

CID
bafyreig6b2beqwg...
Indexed At
2026-02-18 18:07 UTC
View this version

To

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

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
}

Compare Other Versions

Lexicon Garden

@