Measurements in EMMO#
In science and engineering, measurement connects the physical world to data. When we measure something — like the mass of a sample or the voltage of a cell — we perform a process that produces a numerical value. In EMMO, this connection is modeled explicitly through three linked entities:
The measurement process — the act of measuring something.
The measurement result — the data produced by the process.
The property of the object — the characteristic that was measured.
This distinction makes it possible to describe not just what was measured, but also how it was measured and under what conditions — essential for traceability, reproducibility, and FAIR data.
Overview of Measurement Concepts#
|----------|--------------|----------| | MeasurementProcess | The activity or experiment that produces a value. | Weighing a sample. | | MeasurementResult | The recorded output of that process. | 1.403 kg ± 0.002 kg. | | Property | The feature of the object that was measured. | The sample’s mass. |
Together, these form a causal chain:
- ::
MeasurementProcess → produces → MeasurementResult → quantifies → Property → belongsTo → Object
Example: Measuring the mass of a sample#
Let’s walk through how to model a simple measurement: “You place a sample on a balance and record its mass as 1.403 kg.”
Step 1 — Define the object being measured#
The object of interest is an individual of type PhysicalObject (or a more specific subclass like MaterialSample).
{
"@id": "ex:Sample_A",
"@type": "PhysicalObject"
}
Step 2 — Represent the measurement process#
The act of weighing is a process — it happens in time, involves participants, and produces an outcome. We can model it as an instance of MeasurementProcess.
{
"@id": "ex:Weighing_1",
"@type": "MeasurementProcess",
"hasParticipant": { "@id": "ex:Sample_A" },
"hasInput": { "@id": "ex:Sample_A" },
"hasOutput": { "@id": "ex:MassResult_1" },
"emmo:hasMeasurementDevice": { "@type": "Balance" }
}
Here:
- The process has the sample as its participant and input.
- The output is a MeasurementResult.
- The process also specifies a device (balance).
Step 3 — Represent the measurement result#
A measurement produces data — a recorded observation with a numeric value and unit. In EMMO, this is expressed using a MeasurementResult that quantifies a Property of the measured object.
{
"@id": "ex:MassResult_1",
"@type": "MeasurementResult",
"quantifies": {
"@id": "ex:MassProperty_1",
"@type": "Mass",
"emmo:hasMeasuredObject": { "@id": "ex:Sample_A" }
},
"hasNumericalPart": {
"@type": "emmo:RealData",
"hasNumberValue": 1.403
},
"hasMeasurementUnit": "emmo:Kilogram",
"emmo:hasMeasurementUncertainty": {
"@type": "emmo:RealData",
"hasNumberValue": 0.002
}
}
This representation keeps the result separate from the property it quantifies, preserving the distinction between observation and truth about the world.
Step 4 — Assign the measured property to the object#
Finally, the property (e.g., mass) can be associated with the object through hasProperty. You can express this directly or link it back to the measurement that produced it.
{
"@id": "ex:Sample_A",
"@type": "PhysicalObject",
"hasProperty": {
"@id": "ex:MassProperty_1",
"@type": ["Mass", "MeasuredProperty"],
"hasNumericalPart": {
"@type": "emmo:RealData",
"hasNumberValue": 1.403
},
"hasMeasurementUnit": "emmo:Kilogram",
"emmo:isResultOf": { "@id": "ex:Weighing_1" }
}
}
This pattern captures the full chain from process to result to property. It also allows the same object to have multiple mass properties — for example, if measured under different conditions or by different methods.
Alternative Representations#
Depending on your modeling needs, you can link measurements and results in two main ways:
Through the result (explicit): The
MeasurementResultquantifies theProperty. Best when you want to preserve provenance and traceability.Direct property assignment (simplified): Attach the measured property directly to the object with
MeasuredPropertytyping. Best for compact data serialization when provenance is implicit.
Compact example:
{
"@type": "PhysicalObject",
"hasProperty": {
"@type": ["Mass", "MeasuredProperty"],
"hasNumericalPart": {
"@type": "emmo:RealData",
"hasNumberValue": 1.403
},
"hasMeasurementUnit": "emmo:Kilogram"
}
}
Measurement Participants#
In addition to the object being measured, measurements typically involve:
Devices (e.g., balance, voltmeter, spectrometer) →
hasMeasurementDeviceOperators or software →
hasAgentConditions (e.g., temperature, humidity) →
hasConditionorhasCharacterisationEnvironmentProperty
Example:
{
"@type": "MeasurementProcess",
"hasParticipant": [
{ "@type": "MaterialSample" },
{ "@type": "Operator" }
],
"emmo:hasMeasurementDevice": { "@type": "Balance" },
"emmo:hasMeasurementCondition": {
"@type": "CharacterisationEnvironmentProperty",
"schema:name": "AmbientTemperature",
"hasNumericalPart": { "@type": "RealData", "hasNumberValue": 22 },
"hasMeasurementUnit": "emmo:DegreeCelsius"
}
}
Linking to Workflows#
Measurements are often steps within broader experimental or testing workflows. In that case, simply include the measurement process within a Workflow using hasTask or hasSubProcess:
{
"@type": "BatteryTestWorkflow",
"hasTask": [
{ "@type": "MeasurementProcess", "@id": "ex:MassMeasurement_1" },
{ "@type": "MeasurementProcess", "@id": "ex:OCVMeasurement_1" }
]
}
Best Practices#
Treat measurement as a process, not as a property value.
Always distinguish between the property being measured and the result.
Use
hasInputandhasOutputto trace data lineage.Use
hasParticipantfor all entities involved (sample, device, operator).If possible, record uncertainty, instrument, and conditions.
Use
MeasuredPropertytyping when assigning results directly to an object.When integrating multiple measurements, link each result explicitly to its process for provenance.
Summary#
|----------|--------------|------------------|
| MeasurementProcess | The act of observing or quantifying a property. | hasInput, hasOutput, hasParticipant |
| MeasurementResult | The recorded data produced by the process. | quantifies a Property |
| Property / Quantity | The feature of the object that was measured. | Linked to the object via hasProperty |
| PhysicalObject | The entity being measured. | hasProperty or isParticipantIn |
In EMMO, these entities connect to form a complete, logically consistent chain linking the physical world, the measurement event, and the data it produces.