An Observing Procedure describes the method, process, or operational setup used to produce an observation. It defines *how an observation is carried out. By providing explicit information on the observation method, the observing procedure ensures traceability, interpretability, and interoperability of observation results.*
observingprocedure| Name | Type | Constraints | Description |
|---|---|---|---|
id |
INTEGER |
PRIMARY KEY | A unique, read-only attribute that serves as an identifier for the entity. |
guid |
TEXT |
Universally unique identifier. | |
name |
TEXT |
NOT NULL | A property provides a label for Observing Procedure entity, commonly a descriptive name. |
definition |
TEXT |
The URI linking the Thing to an external definition. Dereferencing this URI SHOULD result in a representation of the definition of the Observing Procedure. | |
description |
TEXT |
This is a short description of the corresponding Observing Procedure entity. | |
properties |
TEXT |
mime type: ‘application/json’. A JSON Object containing user-annotated properties as key-value pairs. |
In this table, the primary key is the id field (integer, auto-incrementing).
There is also a text field named GUID, which stores a UUID (Universally Unique Identifier) compliant with RFC 4122.
Although GUID is not mandatory at the schema level (it is not declared NOT NULL), its functional requirement is enforced by two triggers:
Any foreign keys (FK) from other tables reference this table’s GUID field rather than the id field, ensuring stable and interoperable references across datasets and database instances.
Note
GUID management is handled by database triggers, which ensure their automatic generation at the time of record insertion, without any user involvement.
datastream.guid_observingprocedure → observingprocedure.guid (ON UPDATE CASCADE, ON DELETE SET NULL)obsprocedure_obsdproperty.guid_observingprocedure → observingprocedure.guid (ON UPDATE CASCADE, ON DELETE CASCADE)obsprocedure_sensor.guid_observingprocedure → observingprocedure.guid (ON UPDATE CASCADE, ON DELETE CASCADE)For every trigger you will find:
observingprocedureguid / observingprocedureguidupdateWhen they run: AFTER INSERT / AFTER UPDATE OF guid
What they do: Assign GUID at insert when missing; block changes later.
If the check passes: Insert writes GUID; unchanged updates proceed.
If the check fails: On change, abort with: Cannot update guid column.