From
bafyreiflvjppbpbg3znurg33dbcosis2upxz6vn77hqotg3ny365ahs55m
indexed 2026-02-18 18:05 UTC
View this version
To
bafyreif27dtcrgeogvqpzhpmsiozwk677r7sjuufcgfjcs3jzxb2y3lc74
indexed 2026-04-29 14:28 UTC
View this version
Compatibility
backward compatible Backward compatible. 40 non-breaking changes.
Non-breaking changes (40)
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.cloudCover" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.completeness" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.equipmentUsed" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.humidity" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.monitoringFrequency" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.monitoringProgramme" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.moonPhase" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.precipitation" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.projectRef" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.qualityControlNotes" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.recordedBy" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.recordedByID" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.siteRef" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.teamSize" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.temperature" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.visibility" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.waterLevel" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.waterTemperature" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.weatherRemarks" }
- AddedVertex AddedVertex { vertex_id: "app.gainforest.dwc.event:body.windSpeed" }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.cloudCover", kind: "prop", name: Some("cloudCover") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.completeness", kind: "prop", name: Some("completeness") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.equipmentUsed", kind: "prop", name: Some("equipmentUsed") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.humidity", kind: "prop", name: Some("humidity") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.monitoringFrequency", kind: "prop", name: Some("monitoringFrequency") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.monitoringProgramme", kind: "prop", name: Some("monitoringProgramme") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.moonPhase", kind: "prop", name: Some("moonPhase") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.precipitation", kind: "prop", name: Some("precipitation") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.projectRef", kind: "prop", name: Some("projectRef") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.qualityControlNotes", kind: "prop", name: Some("qualityControlNotes") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.recordedBy", kind: "prop", name: Some("recordedBy") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.recordedByID", kind: "prop", name: Some("recordedByID") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.siteRef", kind: "prop", name: Some("siteRef") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.teamSize", kind: "prop", name: Some("teamSize") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.temperature", kind: "prop", name: Some("temperature") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.visibility", kind: "prop", name: Some("visibility") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.waterLevel", kind: "prop", name: Some("waterLevel") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.waterTemperature", kind: "prop", name: Some("waterTemperature") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.weatherRemarks", kind: "prop", name: Some("weatherRemarks") }
- AddedEdge AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.windSpeed", kind: "prop", name: Some("windSpeed") }
Migration guidance
Added
AddedVertex { vertex_id: "app.gainforest.dwc.event:body.cloudCover" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.completeness" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.equipmentUsed" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.humidity" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.monitoringFrequency" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.monitoringProgramme" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.moonPhase" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.precipitation" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.projectRef" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.qualityControlNotes" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.recordedBy" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.recordedByID" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.siteRef" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.teamSize" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.temperature" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.visibility" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.waterLevel" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.waterTemperature" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.weatherRemarks" }AddedVertex { vertex_id: "app.gainforest.dwc.event:body.windSpeed" }
Notes
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.cloudCover", kind: "prop", name: Some("cloudCover") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.completeness", kind: "prop", name: Some("completeness") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.equipmentUsed", kind: "prop", name: Some("equipmentUsed") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.humidity", kind: "prop", name: Some("humidity") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.monitoringFrequency", kind: "prop", name: Some("monitoringFrequency") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.monitoringProgramme", kind: "prop", name: Some("monitoringProgramme") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.moonPhase", kind: "prop", name: Some("moonPhase") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.precipitation", kind: "prop", name: Some("precipitation") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.projectRef", kind: "prop", name: Some("projectRef") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.qualityControlNotes", kind: "prop", name: Some("qualityControlNotes") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.recordedBy", kind: "prop", name: Some("recordedBy") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.recordedByID", kind: "prop", name: Some("recordedByID") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.siteRef", kind: "prop", name: Some("siteRef") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.teamSize", kind: "prop", name: Some("teamSize") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.temperature", kind: "prop", name: Some("temperature") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.visibility", kind: "prop", name: Some("visibility") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.waterLevel", kind: "prop", name: Some("waterLevel") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.waterTemperature", kind: "prop", name: Some("waterTemperature") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.weatherRemarks", kind: "prop", name: Some("weatherRemarks") }
- Non-breaking: AddedEdge { src: "app.gainforest.dwc.event:body", tgt: "app.gainforest.dwc.event:body.windSpeed", kind: "prop", name: Some("windSpeed") }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"main": {55
"description": "A sampling or collecting event. Multiple dwc.occurrence records can reference the same event via eventRef, sharing location and protocol metadata.",66
"key": "tid",77
"record": {88
"properties": {9
"cloudCover": {10
"description": "Cloud cover percentage.",11
"maxGraphemes": 16,12
"type": "string"13
},14
"completeness": {15
"description": "Assessment of survey completeness (e.g., 'complete', 'partial - rain stopped survey', 'incomplete').",16
"maxGraphemes": 64,17
"type": "string"18
},919
"coordinateUncertaintyInMeters": {1020
"description": "Uncertainty radius in meters around the coordinates.",1121
"minimum": 1,1222
"type": "integer"1323
},1424
"country": {1525
"description": "The name of the country.",1626
"maxGraphemes": 128,1727
"type": "string"1828
},1929
"countryCode": {2030
"description": "ISO 3166-1 alpha-2 country code.",2131
"maxLength": 2,2232
"minLength": 2,2333
"type": "string"2434
},2535
"county": {2636
"description": "Second-level administrative division.",2737
"maxGraphemes": 256,2838
"type": "string"2939
},3040
"createdAt": {3141
"description": "Timestamp of record creation in the ATProto PDS.",3242
"format": "datetime",3343
"type": "string"3444
},3545
"decimalLatitude": {3646
"description": "Geographic latitude in decimal degrees (WGS84). Range: -90 to 90.",3747
"maxGraphemes": 32,3848
"type": "string"3949
},4050
"decimalLongitude": {4151
"description": "Geographic longitude in decimal degrees (WGS84). Range: -180 to 180.",4252
"maxGraphemes": 32,4353
"type": "string"4454
},55
"equipmentUsed": {56
"description": "Description of equipment used during the event.",57
"maxGraphemes": 1024,58
"type": "string"59
},4560
"eventDate": {4661
"description": "The date or date range during which the event occurred. ISO 8601 format (e.g., '2024-03-15', '2024-03-15/2024-03-17').",4762
"maxGraphemes": 64,4863
"type": "string"4964
},5065
"eventID": {5166
"description": "An identifier for the event. Should be globally unique or unique within the dataset.",5267
"maxGraphemes": 256,5368
"type": "string"5469
},5570
"eventRemarks": {5671
"description": "Comments or notes about the event.",5772
"maxGraphemes": 5000,5873
"type": "string"5974
},6075
"eventTime": {6176
"description": "The time or time range during which the event occurred. ISO 8601 format (e.g., '06:30:00', '06:30:00/09:00:00').",6277
"maxGraphemes": 64,6378
"type": "string"6479
},6580
"fieldNotes": {6681
"description": "Notes or a reference to notes taken in the field about the event.",6782
"maxGraphemes": 10000,6883
"type": "string"6984
},7085
"geodeticDatum": {7186
"description": "The spatial reference system. Recommended: 'EPSG:4326'.",7287
"maxGraphemes": 64,7388
"type": "string"7489
},7590
"habitat": {7691
"description": "A category or description of the habitat in which the event occurred (e.g., 'primary tropical rainforest', 'degraded pasture', 'riparian zone').",7792
"maxGraphemes": 512,7893
"type": "string"7994
},95
"humidity": {96
"description": "Relative humidity percentage.",97
"maxGraphemes": 16,98
"type": "string"99
},80100
"locality": {81101
"description": "Specific locality description.",82102
"maxGraphemes": 1024,83103
"type": "string"84104
},85105
"locationID": {86106
"description": "Identifier for the location where the event occurred.",87107
"maxGraphemes": 256,88108
"type": "string"89109
},90110
"locationRemarks": {91111
"description": "Comments about the location.",92112
"maxGraphemes": 2048,93113
"type": "string"94114
},95115
"maximumElevationInMeters": {96116
"description": "Upper limit of elevation range in meters above sea level.",97117
"type": "integer"98118
},99119
"minimumElevationInMeters": {100120
"description": "Lower limit of elevation range in meters above sea level.",101121
"type": "integer"102122
},123
"monitoringFrequency": {124
"description": "How often this type of event recurs (e.g., 'monthly', 'quarterly', 'annual', 'one-time').",125
"maxGraphemes": 64,126
"type": "string"127
},128
"monitoringProgramme": {129
"description": "Name of the monitoring programme (e.g., 'Annual Biodiversity Survey 2025').",130
"maxGraphemes": 256,131
"type": "string"132
},133
"moonPhase": {134
"description": "Moon phase (relevant for nocturnal surveys).",135
"maxGraphemes": 32,136
"type": "string"137
},103138
"municipality": {104139
"description": "Third-level administrative division.",105140
"maxGraphemes": 256,106141
"type": "string"107142
},108143
"parentEventID": {109144
"description": "An identifier for the broader event that this event is part of (e.g., a survey campaign that contains multiple transects).",110145
"maxGraphemes": 256,111146
"type": "string"112147
},113148
"parentEventRef": {114149
"description": "AT-URI reference to the parent app.gainforest.dwc.event record.",115150
"format": "at-uri",116151
"type": "string"117152
},153
"precipitation": {154
"description": "Precipitation description (e.g., 'none', 'light rain', '5mm').",155
"maxGraphemes": 32,156
"type": "string"157
},158
"projectRef": {159
"description": "AT-URI reference to the organization info record.",160
"format": "at-uri",161
"type": "string"162
},163
"qualityControlNotes": {164
"description": "Notes on data quality issues encountered during or after the event.",165
"maxGraphemes": 2048,166
"type": "string"167
},168
"recordedBy": {169
"description": "Person(s) who conducted the event. Pipe-delimited for multiple people (e.g., 'Jane Smith | John Doe').",170
"maxGraphemes": 512,171
"type": "string"172
},173
"recordedByID": {174
"description": "ORCID or other persistent identifiers for the recorder(s). Pipe-delimited for multiple IDs.",175
"maxGraphemes": 512,176
"type": "string"177
},118178
"sampleSizeUnit": {119179
"description": "The unit of measurement for the sampleSizeValue (e.g., 'square meters', 'hectares', 'trap-nights').",120180
"maxGraphemes": 128,121181
"type": "string"122182
},123183
"sampleSizeValue": {124184
"description": "A numeric value for a measurement of the size of a sample in the event (e.g., '20', '0.25').",125185
"maxGraphemes": 64,126186
"type": "string"127187
},128188
"samplingEffort": {129189
"description": "The amount of effort expended during the event (e.g., '3 person-hours', '14 trap-nights', '2 km transect walked').",130190
"maxGraphemes": 256,131191
"type": "string"132192
},133193
"samplingProtocol": {134194
"description": "The names of, references to, or descriptions of the methods used during the event (e.g., 'camera trap array', 'line transect distance sampling', 'audio point count 10-min').",135195
"maxGraphemes": 1024,136196
"type": "string"137197
},198
"siteRef": {199
"description": "AT-URI reference to the organization site record.",200
"format": "at-uri",201
"type": "string"202
},138203
"stateProvince": {139204
"description": "First-level administrative division.",140205
"maxGraphemes": 256,141206
"type": "string"207
},208
"teamSize": {209
"description": "Number of people involved in the event.",210
"minimum": 1,211
"type": "integer"212
},213
"temperature": {214
"description": "Temperature in Celsius during event.",215
"maxGraphemes": 16,216
"type": "string"217
},218
"visibility": {219
"description": "Visibility conditions (e.g., 'clear', 'foggy', '10m underwater').",220
"maxGraphemes": 32,221
"type": "string"222
},223
"waterLevel": {224
"description": "Water level if aquatic survey (e.g., 'low', '2.3m').",225
"maxGraphemes": 32,226
"type": "string"227
},228
"waterTemperature": {229
"description": "Water temperature in Celsius.",230
"maxGraphemes": 16,231
"type": "string"232
},233
"weatherRemarks": {234
"description": "General weather description.",235
"maxGraphemes": 512,236
"type": "string"237
},238
"windSpeed": {239
"description": "Wind speed during event.",240
"maxGraphemes": 16,241
"type": "string"142242
}143243
},144244
"required": [145245
"eventID",146246
"eventDate",147247
"createdAt"148248
],149249
"type": "object"150250
},151251
"type": "record"152252
}153253
},154254
"description": "A sampling event record aligned with Darwin Core Event class. Enables star-schema pattern where multiple occurrences reference a shared event context (location, protocol, effort).",155255
"id": "app.gainforest.dwc.event",156256
"lexicon": 1157257
}