app.gainforest.dwc.measurement

gainforest.earth

{
  "id": "app.gainforest.dwc.measurement",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "occurrenceRef",
          "result",
          "createdAt"
        ],
        "properties": {
          "result": {
            "refs": [
              "#floraMeasurement",
              "#faunaMeasurement",
              "#genericMeasurement"
            ],
            "type": "union",
            "closed": false,
            "description": "The typed measurement payload. Use floraMeasurement for sessile organisms (trees, plants, corals, sponges), faunaMeasurement for mobile organisms (mammals, birds, reptiles, amphibians, fish, insects), or genericMeasurement as a flexible fallback."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "Timestamp of record creation in the ATProto PDS."
          },
          "measuredBy": {
            "type": "string",
            "description": "Person(s) who performed the measurements. Pipe-delimited for multiple.",
            "maxGraphemes": 512
          },
          "measuredByID": {
            "type": "string",
            "description": "ORCID or other persistent identifier(s) for the measurer(s). Pipe-delimited for multiple.",
            "maxGraphemes": 512
          },
          "occurrenceID": {
            "type": "string",
            "description": "The occurrenceID of the linked occurrence record (for cross-system interoperability with GBIF/DwC-A exports).",
            "maxGraphemes": 256
          },
          "occurrenceRef": {
            "type": "string",
            "format": "at-uri",
            "description": "AT-URI reference to the app.gainforest.dwc.occurrence record these measurements belong to."
          },
          "measurementDate": {
            "type": "string",
            "description": "Date the measurements were taken. ISO 8601 format.",
            "maxGraphemes": 64
          },
          "measurementMethod": {
            "type": "string",
            "description": "General protocol or method used (e.g., 'ForestGEO standard protocol', 'mist-net examination').",
            "maxGraphemes": 1024
          },
          "measurementRemarks": {
            "type": "string",
            "description": "Comments or notes about the measurement session.",
            "maxGraphemes": 5000
          }
        }
      },
      "description": "A bundle of measurements, facts, or characteristics about an occurrence. One record per occurrence, with all measurements grouped inside a typed result union."
    },
    "faunaMeasurement": {
      "type": "object",
      "properties": {
        "tagId": {
          "type": "string",
          "description": "Ear tag, flipper tag, fin tag, or wing tag identifier.",
          "maxGraphemes": 128
        },
        "tagType": {
          "type": "string",
          "description": "Type of tag or mark applied.",
          "knownValues": [
            "ear-tag",
            "flipper-tag",
            "wing-tag",
            "dorsal-tag",
            "pit-tag",
            "leg-band",
            "neck-collar",
            "gps-collar",
            "radio-transmitter",
            "satellite-transmitter",
            "paint-mark",
            "tattoo",
            "toe-clip",
            "other"
          ],
          "maxGraphemes": 64
        },
        "bodyMass": {
          "type": "string",
          "description": "Body mass in grams.",
          "maxGraphemes": 32
        },
        "fatScore": {
          "type": "string",
          "description": "Subcutaneous fat deposit score (0-8 scale, birds).",
          "maxGraphemes": 8
        },
        "pitTagId": {
          "type": "string",
          "description": "Passive Integrated Transponder (microchip) number.",
          "maxGraphemes": 128
        },
        "wingspan": {
          "type": "string",
          "description": "Full wingspan tip-to-tip in millimeters (birds, bats).",
          "maxGraphemes": 32
        },
        "billDepth": {
          "type": "string",
          "description": "Depth of bill at base or gonys in millimeters (birds).",
          "maxGraphemes": 32
        },
        "broodSize": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of surviving young."
        },
        "earLength": {
          "type": "string",
          "description": "Ear length from notch to tip in millimeters (mammals).",
          "maxGraphemes": 32
        },
        "groupSize": {
          "type": "integer",
          "minimum": 1,
          "description": "Total size of social group observed (herd, flock, pod, colony)."
        },
        "bandNumber": {
          "type": "string",
          "description": "Metal or color band/ring number (birds).",
          "maxGraphemes": 128
        },
        "billLength": {
          "type": "string",
          "description": "Culmen length in millimeters (birds).",
          "maxGraphemes": 32
        },
        "clutchSize": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of eggs in nest (birds, reptiles)."
        },
        "forkLength": {
          "type": "string",
          "description": "Fork length (snout to fork of caudal fin) in millimeters (fish).",
          "maxGraphemes": 32
        },
        "litterSize": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of offspring in litter (mammals)."
        },
        "nestHeight": {
          "type": "string",
          "description": "Height of nest above ground in meters.",
          "maxGraphemes": 32
        },
        "tailLength": {
          "type": "string",
          "description": "Tail length in millimeters.",
          "maxGraphemes": 32
        },
        "wingLength": {
          "type": "string",
          "description": "Flattened wing chord length in millimeters (birds).",
          "maxGraphemes": 32
        },
        "totalLength": {
          "type": "string",
          "description": "Total body length in millimeters (tip of snout/bill to tail tip).",
          "maxGraphemes": 32
        },
        "tarsusLength": {
          "type": "string",
          "description": "Tarsometatarsus length in millimeters (birds).",
          "maxGraphemes": 32
        },
        "carapaceWidth": {
          "type": "string",
          "description": "Straight carapace width in millimeters (turtles/tortoises).",
          "maxGraphemes": 32
        },
        "forearmLength": {
          "type": "string",
          "description": "Forearm length in millimeters. Standard measurement for bats.",
          "maxGraphemes": 32
        },
        "injuryPresent": {
          "type": "boolean",
          "description": "Whether visible injuries exist."
        },
        "carapaceLength": {
          "type": "string",
          "description": "Straight carapace length in millimeters (turtles/tortoises).",
          "maxGraphemes": 32
        },
        "headBodyLength": {
          "type": "string",
          "description": "Head-body length excluding tail in millimeters.",
          "maxGraphemes": 32
        },
        "hindFootLength": {
          "type": "string",
          "description": "Hind foot length in millimeters (mammals).",
          "maxGraphemes": 32
        },
        "shoulderHeight": {
          "type": "string",
          "description": "Height at shoulder in millimeters (large mammals).",
          "maxGraphemes": 32
        },
        "standardLength": {
          "type": "string",
          "description": "Standard length (snout to caudal fin base) in millimeters (fish).",
          "maxGraphemes": 32
        },
        "geneticSampleId": {
          "type": "string",
          "description": "Identifier of tissue, hair, or feather sample collected for genetic analysis.",
          "maxGraphemes": 128
        },
        "markDescription": {
          "type": "string",
          "description": "Description of natural marks, scars, or unique identifying features.",
          "maxGraphemes": 512
        },
        "recaptureStatus": {
          "type": "string",
          "description": "Whether this is a new capture or recapture.",
          "knownValues": [
            "new",
            "recapture",
            "unknown"
          ],
          "maxGraphemes": 16
        },
        "snoutVentLength": {
          "type": "string",
          "description": "Snout-vent length (SVL) in millimeters. Standard body measurement for reptiles and amphibians.",
          "maxGraphemes": 32
        },
        "ectoparasiteLoad": {
          "type": "string",
          "description": "Ectoparasite assessment.",
          "knownValues": [
            "none",
            "light",
            "moderate",
            "heavy"
          ],
          "maxGraphemes": 32
        },
        "injuryDescription": {
          "type": "string",
          "description": "Description of injuries (scars, wounds, missing limbs, broken wing).",
          "maxGraphemes": 512
        },
        "bodyConditionIndex": {
          "type": "string",
          "description": "Calculated condition index (mass/length ratio or regression residual).",
          "maxGraphemes": 32
        },
        "bodyConditionScore": {
          "type": "string",
          "description": "Standardized body condition score (scale varies by taxon: 1-5 or 1-9).",
          "maxGraphemes": 16
        },
        "diseaseDescription": {
          "type": "string",
          "description": "Description of disease signs (mange, lesions, tumors, fungal infection, avian pox, chytrid).",
          "maxGraphemes": 512
        },
        "diseaseSignsPresent": {
          "type": "boolean",
          "description": "Whether signs of disease are visible."
        },
        "pectoralMuscleScore": {
          "type": "string",
          "description": "Pectoral muscle score (0-3 scale, birds).",
          "maxGraphemes": 8
        },
        "colorBandCombination": {
          "type": "string",
          "description": "Description of color band arrangement (e.g., 'Red/White left, Blue/Metal right').",
          "maxGraphemes": 256
        },
        "additionalMeasurements": {
          "type": "array",
          "items": {
            "ref": "#measurementEntry",
            "type": "ref"
          },
          "maxLength": 50,
          "description": "Additional measurements not covered by the typed fields above."
        }
      },
      "description": "Typed measurements for mobile organisms: mammals, birds, reptiles, amphibians, fish, insects, and other animals. Covers morphometrics, health assessments, reproductive measurements, and individual marking data. All numeric values stored as strings. Field descriptions include expected units for DwC-A export mapping."
    },
    "floraMeasurement": {
      "type": "object",
      "properties": {
        "dbh": {
          "type": "string",
          "description": "Diameter at breast height in centimeters. The core measurement in all tree inventories (ForestGEO, NFI, RAINFOR).",
          "maxGraphemes": 32
        },
        "girth": {
          "type": "string",
          "description": "Circumference of trunk at breast height in centimeters. Alternative to DBH (convertible via pi).",
          "maxGraphemes": 32
        },
        "basalArea": {
          "type": "string",
          "description": "Cross-sectional area of trunk at breast height in square centimeters.",
          "maxGraphemes": 32
        },
        "phenology": {
          "type": "string",
          "description": "Current phenological state.",
          "knownValues": [
            "leafless",
            "flush",
            "full-leaf",
            "senescing",
            "dormant"
          ],
          "maxGraphemes": 64
        },
        "stemCount": {
          "type": "integer",
          "minimum": 1,
          "description": "Number of stems for multi-stemmed individuals."
        },
        "crownDepth": {
          "type": "string",
          "description": "Vertical extent of crown in meters (total height minus height to crown base).",
          "maxGraphemes": 32
        },
        "damageType": {
          "type": "string",
          "description": "Type of damage observed (e.g., 'broken crown', 'leaning', 'uprooted', 'hollow', 'scarred', 'stripped bark').",
          "maxGraphemes": 256
        },
        "decayClass": {
          "type": "string",
          "description": "Decay classification for dead trees (1-5 scale per ForestGEO/FIA protocols).",
          "maxGraphemes": 8
        },
        "growthForm": {
          "type": "string",
          "description": "Growth form classification of the organism.",
          "knownValues": [
            "tree",
            "shrub",
            "liana",
            "palm",
            "tree-fern",
            "herb",
            "grass",
            "bamboo",
            "epiphyte",
            "succulent",
            "mangrove",
            "other"
          ],
          "maxGraphemes": 64
        },
        "damageCause": {
          "type": "string",
          "description": "Cause of damage.",
          "knownValues": [
            "wind",
            "lightning",
            "fire",
            "drought",
            "flood",
            "animal",
            "human",
            "disease",
            "pest",
            "unknown",
            "other"
          ],
          "maxGraphemes": 128
        },
        "healthScore": {
          "type": "string",
          "description": "Numeric health or vigor score (protocol-dependent scale).",
          "maxGraphemes": 16
        },
        "totalHeight": {
          "type": "string",
          "description": "Total height from ground to highest living point in meters.",
          "maxGraphemes": 32
        },
        "woodDensity": {
          "type": "string",
          "description": "Specific gravity of wood (dry mass / green volume) in grams per cubic centimeter.",
          "maxGraphemes": 32
        },
        "colonyHeight": {
          "type": "string",
          "description": "Height of colony from base to apex in centimeters.",
          "maxGraphemes": 32
        },
        "crownDieback": {
          "type": "string",
          "description": "Percentage of crown showing dieback.",
          "maxGraphemes": 16
        },
        "estimatedAge": {
          "type": "string",
          "description": "Estimated age of the organism in years (from rings, radiocarbon, or allometry).",
          "maxGraphemes": 32
        },
        "basalDiameter": {
          "type": "string",
          "description": "Diameter at ground level or just above root flare in centimeters. Standard for shrubs and multi-stemmed plants.",
          "maxGraphemes": 32
        },
        "carbonContent": {
          "type": "string",
          "description": "Estimated carbon stored in kilograms of carbon (typically 47-50% of dry biomass).",
          "maxGraphemes": 32
        },
        "crownDiameter": {
          "type": "string",
          "description": "Average crown diameter in meters (typically mean of multiple radial measurements).",
          "maxGraphemes": 32
        },
        "crownPosition": {
          "type": "string",
          "description": "Canopy position relative to neighbors.",
          "knownValues": [
            "dominant",
            "codominant",
            "intermediate",
            "suppressed",
            "emergent"
          ],
          "maxGraphemes": 32
        },
        "leafAreaIndex": {
          "type": "string",
          "description": "Leaf area index: total one-sided leaf area per unit ground area (m²/m²).",
          "maxGraphemes": 32
        },
        "buttressHeight": {
          "type": "string",
          "description": "Height of buttress roots above ground in meters. Common in tropical trees.",
          "maxGraphemes": 32
        },
        "colonyDiameter": {
          "type": "string",
          "description": "Maximum colony diameter in centimeters (corals, sponges).",
          "maxGraphemes": 32
        },
        "vitalityStatus": {
          "type": "string",
          "description": "Overall vitality status of the organism.",
          "knownValues": [
            "alive",
            "dead-standing",
            "dead-fallen",
            "moribund",
            "missing",
            "unknown"
          ],
          "maxGraphemes": 32
        },
        "bleachingStatus": {
          "type": "string",
          "description": "Coral bleaching status.",
          "knownValues": [
            "none",
            "pale",
            "partially-bleached",
            "fully-bleached",
            "recently-dead"
          ],
          "maxGraphemes": 32
        },
        "floweringStatus": {
          "type": "string",
          "description": "Current flowering/reproductive state.",
          "knownValues": [
            "none",
            "budding",
            "flowering",
            "fruiting",
            "senescing"
          ],
          "maxGraphemes": 32
        },
        "colonyMorphology": {
          "type": "string",
          "description": "Colony growth form.",
          "knownValues": [
            "massive",
            "branching",
            "encrusting",
            "foliose",
            "tabular",
            "columnar",
            "free-living",
            "other"
          ],
          "maxGraphemes": 64
        },
        "depthBelowSurface": {
          "type": "string",
          "description": "Depth of the organism below water surface in meters.",
          "maxGraphemes": 32
        },
        "abovegroundBiomass": {
          "type": "string",
          "description": "Estimated aboveground biomass in kilograms, derived from allometric equations.",
          "maxGraphemes": 32
        },
        "belowgroundBiomass": {
          "type": "string",
          "description": "Estimated belowground (root) biomass in kilograms.",
          "maxGraphemes": 32
        },
        "canopyCoverPercent": {
          "type": "string",
          "description": "Percentage of ground covered by the canopy of this individual.",
          "maxGraphemes": 16
        },
        "heightToFirstBranch": {
          "type": "string",
          "description": "Height from ground to first major living branch (bole length) in meters.",
          "maxGraphemes": 32
        },
        "dbhMeasurementHeight": {
          "type": "string",
          "description": "Height above ground where DBH was measured, in meters. Important when measured above buttress or irregularity. Default is 1.3m.",
          "maxGraphemes": 32
        },
        "additionalMeasurements": {
          "type": "array",
          "items": {
            "ref": "#measurementEntry",
            "type": "ref"
          },
          "maxLength": 50,
          "description": "Additional measurements not covered by the typed fields above."
        },
        "liveTissueCoverPercent": {
          "type": "string",
          "description": "Percentage of colony surface with live tissue.",
          "maxGraphemes": 16
        },
        "annualDiameterIncrement": {
          "type": "string",
          "description": "Annual radial growth measured via dendrometer bands or core samples in millimeters per year.",
          "maxGraphemes": 32
        },
        "heightMeasurementMethod": {
          "type": "string",
          "description": "Method used for height measurement.",
          "knownValues": [
            "clinometer",
            "laser-rangefinder",
            "hypsometer",
            "direct-pole",
            "estimated",
            "drone-photogrammetry",
            "lidar",
            "other"
          ],
          "maxGraphemes": 128
        },
        "biomassAllometricEquation": {
          "type": "string",
          "description": "Reference to the allometric equation used for biomass estimation (e.g., 'Chave et al. 2014').",
          "maxGraphemes": 512
        }
      },
      "description": "Typed measurements for sessile organisms: trees, woody plants, herbs, grasses, corals, sponges, lichens, and other non-mobile life forms. All numeric values stored as strings. Field descriptions include expected units for DwC-A export mapping."
    },
    "measurementEntry": {
      "type": "object",
      "required": [
        "measurementType",
        "measurementValue"
      ],
      "properties": {
        "measurementType": {
          "type": "string",
          "description": "The nature of the measurement (e.g., 'DBH', 'tree height', 'canopy cover', 'tail length', 'soil pH').",
          "maxGraphemes": 256
        },
        "measurementUnit": {
          "type": "string",
          "description": "The units for the value (e.g., 'cm', 'm', 'kg', '%', 'degrees Celsius').",
          "maxGraphemes": 64
        },
        "measurementValue": {
          "type": "string",
          "description": "The value of the measurement (e.g., '45.2', 'present', 'blue').",
          "maxGraphemes": 1024
        },
        "measurementMethod": {
          "type": "string",
          "description": "Method or instrument used to determine this specific measurement.",
          "maxGraphemes": 512
        },
        "measurementRemarks": {
          "type": "string",
          "description": "Notes about this specific measurement.",
          "maxGraphemes": 1024
        },
        "measurementAccuracy": {
          "type": "string",
          "description": "Potential error (e.g., '0.5 cm', '5%').",
          "maxGraphemes": 128
        }
      },
      "description": "A single measurement fact, aligned with one row of the Darwin Core MeasurementOrFact extension. Used in additionalMeasurements arrays and in genericMeasurement."
    },
    "genericMeasurement": {
      "type": "object",
      "required": [
        "measurements"
      ],
      "properties": {
        "measurements": {
          "type": "array",
          "items": {
            "ref": "#measurementEntry",
            "type": "ref"
          },
          "maxLength": 100,
          "description": "Array of individual measurements, each with type, value, and optional unit."
        }
      },
      "description": "Flexible measurement container for organisms that do not fit the flora/fauna split, or for legacy compatibility. Contains an array of key-value measurement entries."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "Measurement or fact records aligned with the Darwin Core MeasurementOrFact class. Links to an occurrence via occurrenceRef. Supports three paths: floraMeasurement (typed fields for sessile organisms like trees, plants, corals), faunaMeasurement (typed fields for mobile organisms like mammals, birds, reptiles, fish), and genericMeasurement (flexible key-value array for anything else). All three paths bundle multiple measurements into a single record per occurrence, reducing PDS storage compared to one-record-per-measurement."
}

Validate Record

Validate a record against app.gainforest.dwc.measurement

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:qoti4acfmc5wg6zzmtix6hse
CID
bafyreihyaz57ucx3gpstdqeqe5ijvrqkoxbbsxf6qb5wql4h7qf3psbo2q
Indexed At
2026-04-29 14:34 UTC
AT-URI
at://did:plc:qoti4acfmc5wg6zzmtix6hse/com.atproto.lexicon.schema/app.gainforest.dwc.measurement

Version History (2 versions)

Lexicon Garden

@