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

3 breaking changes, 36 non-breaking changes.

Breaking Changes (3)
  • RemovedVertex RemovedVertex { vertex_id: "app.gainforest.common.defs#smallBlob" }
  • RemovedEdge RemovedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body.shapefile", tgt: "app.gainforest.common.defs#smallBlob", kind: "ref", name: None }
  • ConstraintTightened ConstraintTightened { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.shapefile", sort: "ref", old_value: "app.gainforest.common.defs#smallBlob", new_value: "org.hypercerts.defs#smallBlob" }
Non-Breaking Changes (36)
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.common.defs#richtext" }
  • 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" }
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.defs#smallBlob" }
  • 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") }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body.description", tgt: "app.gainforest.common.defs#richtext", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.gainforest.organization.observations.measuredTreesCluster:body.shapefile", tgt: "org.hypercerts.defs#smallBlob", kind: "ref", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "app.gainforest.common.defs#smallBlob" }

Added Elements

  • AddedVertex { vertex_id: "app.gainforest.common.defs#richtext" }
  • 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" }
  • AddedVertex { vertex_id: "org.hypercerts.defs#smallBlob" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "app.gainforest.organization.observations.measuredTreesCluster:body.shapefile", sort: "ref", old_value: "app.gainforest.common.defs#smallBlob", new_value: "org.hypercerts.defs#smallBlob" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@