Last active
December 16, 2022 16:11
-
-
Save damianooldoni/c50e886f9a7ff4e4ab4e551d635b77ae to your computer and use it in GitHub Desktop.
Improved table schema for observations: `speed`, `radius` and `angle` added
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "observations", | |
"title": "Observations", | |
"description": "Table with observations based on the media files. Associated with deployments (`deploymentID`), sequences (`sequenceID`) and optionally individual media files (`mediaID`). Observations can mark non-animal events (camera setup, human, blank) or one or more animal observations (`observationType` = `animal`) of a certain taxon, count, life stage, sex, behaviour and/or individual.", | |
"fields": [ | |
{ | |
"name": "observationID", | |
"type": "string", | |
"format": "default", | |
"description": "Unique identifier (within a project) of the observation.", | |
"example": "obs1", | |
"constraints": { | |
"required": true, | |
"unique": true | |
} | |
}, | |
{ | |
"name": "deploymentID", | |
"type": "string", | |
"format": "default", | |
"description": "Unique identifier of the deployment this observation belongs to. Foreign key to `deployment:deploymentID`.", | |
"example": "dep1", | |
"constraints": { | |
"required": true | |
} | |
}, | |
{ | |
"name": "sequenceID", | |
"type": "string", | |
"format": "default", | |
"description": "Unique identifier of the sequence (collection of media files grouped by a predefined `sequenceInterval`) that is the source of this observation. Foreign key to `media:sequenceID`.", | |
"example": "seq1", | |
"constraints": { | |
"required": true | |
} | |
}, | |
{ | |
"name": "mediaID", | |
"type": "string", | |
"format": "default", | |
"description": "Unique identifier of the media file that is the source of this observation. Foreign key to `media:mediaID`. Include but leave empty for sequence-based observations.", | |
"example": "m1", | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "timestamp", | |
"type": "datetime", | |
"format": "%Y-%m-%dT%H:%M:%S%z", | |
"description": "Date and time of the observation, as an ISO 8601 formatted string with timezone designator (`YYYY-MM-DDThh:mm:ssZ` or `YYYY-MM-DDThh:mm:ss±hh:mm`). For file-based observations this is the `timestamp` of the associated media file (in `mediaID`), for sequence-based observations the `timestamp` of the first media file in the associated sequence (in `sequenceID`).", | |
"example": "2020-03-24T11:21:46Z", | |
"constraints": { | |
"required": true | |
} | |
}, | |
{ | |
"name": "observationType", | |
"type": "string", | |
"format": "default", | |
"description": "Type of observation. All categories in this vocabulary have to be understandable from an AI point of view. `unknown` describes classifications with a confidence level below some predefined threshold i.e. neither humans nor AI can say what was recorded.", | |
"example": "animal", | |
"constraints": { | |
"required": true, | |
"enum": [ | |
"animal", | |
"human", | |
"vehicle", | |
"blank", | |
"unknown", | |
"unclassified" | |
] | |
} | |
}, | |
{ | |
"name": "cameraSetup", | |
"type": "boolean", | |
"format": "default", | |
"description": "`true` if this observation is part of the camera setup process (camera deployment, pickup, maintenance).", | |
"example": "false", | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "taxonID", | |
"type": "string", | |
"format": "default", | |
"description": "Unique identifier of the `scientificName` according to the taxonomic reference list defined by `taxonIDReference` in the data package metadata.", | |
"example": "QLXL", | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "scientificName", | |
"type": "string", | |
"format": "default", | |
"description": "Scientific name of the observed individual(s).", | |
"example": "Canis lupus", | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "count", | |
"type": "integer", | |
"format": "default", | |
"description": "Number of observed individuals (optionally of given life stage, sex and behaviour).", | |
"example": "5", | |
"constraints": { | |
"required": false, | |
"minimum": 1 | |
} | |
}, | |
{ | |
"name": "countNew", | |
"type": "integer", | |
"format": "default", | |
"description": "Number of new (= previously uncounted) individuals in the associated media file (`mediaID`) taking into account the entire sequence (`sequenceID`) (optionally of given life stage, sex and behaviour).", | |
"example": "2", | |
"constraints": { | |
"required": false, | |
"minimum": 0 | |
} | |
}, | |
{ | |
"name": "lifeStage", | |
"type": "string", | |
"format": "default", | |
"description": "Age class or life stage of observed individual(s). Term borrowed from [Darwin Core](http://rs.tdwg.org/dwc/terms/lifeStage).", | |
"example": "adult", | |
"constraints": { | |
"required": false, | |
"enum": [ | |
"adult", | |
"subadult", | |
"juvenile", | |
"offspring", | |
"unknown" | |
] | |
} | |
}, | |
{ | |
"name": "sex", | |
"type": "string", | |
"format": "default", | |
"description": "Sex of observed individual(s)", | |
"example": "female", | |
"constraints": { | |
"required": false, | |
"enum": [ | |
"female", | |
"male", | |
"unknown" | |
] | |
} | |
}, | |
{ | |
"name": "behaviour", | |
"type": "string", | |
"format": "default", | |
"description": "Dominant behaviour of observed individual(s), ideally expressed as controlled values (e.g. grazing, browsing, rooting, vigilance, running, walking). A combination of dominant (first) and additional behaviours can be expressed as as a pipe (`|`) separated list.", | |
"example": "vigilance", | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "individualID", | |
"type": "string", | |
"format": "default", | |
"description": "Unique identifier (within a project) of the observed individual.", | |
"example": "RD213", | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "classificationMethod", | |
"type": "string", | |
"format": "default", | |
"description": "Classification method.", | |
"example": "human", | |
"constraints": { | |
"required": false, | |
"enum": [ | |
"human", | |
"machine" | |
] | |
} | |
}, | |
{ | |
"name": "classifiedBy", | |
"type": "string", | |
"format": "default", | |
"description": "Name or unique identifier of the person or AI algorithm that classified this observation.", | |
"example": [ | |
"Jakub Bubnicki", | |
"Megadetector" | |
], | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "classificationTimestamp", | |
"type": "datetime", | |
"format": "%Y-%m-%dT%H:%M:%S%z", | |
"description": "Date and time of the classification, as an ISO 8601 formatted string with timezone designator (`YYYY-MM-DDThh:mm:ssZ` or `YYYY-MM-DDThh:mm:ss±hh:mm`).", | |
"example": "2020-08-22T10:25:19Z", | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "classificationConfidence", | |
"type": "number", | |
"format": "default", | |
"description": "Accuracy confidence of the classification. Expressed as a probability, with `1` being maximum confidence. Provide an approximate value for human classifications.", | |
"example": "0.95", | |
"constraints": { | |
"required": false, | |
"minimum": 0, | |
"maximum": 1 | |
} | |
}, | |
{ | |
"name": "comments", | |
"type": "string", | |
"format": "default", | |
"description": "Comments or notes about the observation.", | |
"example": "", | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "_id", | |
"type": "string", | |
"format": "default", | |
"description": "Internal attribute of data management system: ID of this observation.", | |
"example": "", | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "speed", | |
"type": "number", | |
"format": "default", | |
"description": "Speed of the detected animal in m/s", | |
"example": "12.5", | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "radius", | |
"type": "number", | |
"format": "default", | |
"description": "Distance from the camera of the detected animal in meters", | |
"example": "5.2", | |
"constraints": { | |
"required": false | |
} | |
}, | |
{ | |
"name": "angle", | |
"type": "number", | |
"format": "default", | |
"description": "Angle of the detected animal from camera", | |
"example": "5.2", | |
"constraints": { | |
"required": false | |
} | |
} | |
], | |
"missingValues": [ | |
"", | |
"NaN", | |
"nan" | |
], | |
"primaryKey": "observationID", | |
"foreignKeys": [ | |
{ | |
"fields": "deploymentID", | |
"reference": { | |
"resource": "deployments", | |
"fields": "deploymentID" | |
} | |
}, | |
{ | |
"fields": "sequenceID", | |
"reference": { | |
"resource": "media", | |
"fields": "sequenceID" | |
} | |
}, | |
{ | |
"fields": "mediaID", | |
"reference": { | |
"resource": "media", | |
"fields": "mediaID" | |
} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment