Value
An amount with its unit and uncertainty. A list amount can lie along axes (a spectrum, a time series, a profile, a grid), and a large amount can sit in a File. Measured, calculated and set values all use it.
https://opendevelopmentstandards.org/schema/1.0.0-rc.2/core/Value.json
Fields
amountThe amount: a number, text, true or false, or a list. With axes, the list nests one level per axis, outermost axis first; null marks an element with no data.
fileThe file that holds the amount, when it is too large to write here.
encodingunitThe unit, as a code from a units vocabulary (for example dB, m, Hz). Leave it out when the amount has no unit.
axesThe axes the amount lies along, outermost first. Leave them out for one amount or a plain list.
statisticHow the amount sums up the data it comes from.
averagingduration (ISO 8601)The time each element covers, as an ISO 8601 duration, such as PT1H for 1-hour means.
periodThe window that repeats which the amount covers, such as night-time.
crsThe coordinate reference system of spatial axes. Required when an axis is
easting,northing,longitudeorlatitude.uncertainty
- Exactly one of
amountorfile. encodingneedsfile.
Element
One element of a list amount: a number, text, true or false, null for no data, or a nested list for the next axis.
UncertaintyElement
One element of a list uncertainty: a number, null, or a nested list for the next axis.
Encoding
How the file stores the amount. The file's media type says how to read it.
dataTypeRequiredOne ofthe codes belowHow each element is stored.
int8- A signed 8-bit integer.
int16- A signed 16-bit integer.
int32- A signed 32-bit integer.
float32- An IEEE 754 single-precision number.
float64- An IEEE 754 double-precision number.
complex64- A complex number of two 32-bit floats, real part first. Inline, a complex amount uses a `complex_part` axis instead.
complex128- A complex number of two 64-bit floats, real part first.
scalenumberThe stored number times
scale, plusoffset, gives the amount. Asscale_factorin the CF conventions.offsetnumberAdded after
scale. Asadd_offsetin the CF conventions.missingnumberorAlways"NaN"The stored number that marks an element with no data, or
NaNfor a float type that marks it with not-a-number. As_FillValuein the CF conventions.arraytextThe array's name inside the file, when the file holds several arrays.
Uncertainty
How far the true amount may be from the stated amount.
amountRequiredThe size of the uncertainty, plus or minus: one number for every element, or a list with the amount's shape.
unitIts unit, when it differs from the value's.
typeRequiredOne ofthe codes belowWhere the uncertainty comes from.
method- The spread the method itself allows, such as an engine's stated accuracy.
numerical- The spread from the numerical solution, such as grid or sampling error.
measurement- The spread of a measurement, such as an instrument's class tolerance.
confidencenumbermore than 0at most 1The confidence level the amount covers, for example 0.95. Leave it out when not stated.
coverageFactornumbermore than 0The coverage factor k the amount was multiplied by, as the GUM (JCGM 100:2008): 1 for a standard uncertainty, 2 for about 95 % coverage.
Links
Points at Records whose ids this record holds, with the field that holds each.
- FileEntityfileA file that records point at, such as a recording, a certificate, a photo or a grid, with its media type, its place and its hash. A file does not change: a changed file is a new File.
- PeriodPartperiodA recurring window in local time that a rule judges by, such as night-time from 22:00 to 07:00. A window whose end is not after its start runs past midnight.
Held by Records that embed this one, with their field that holds it.
- AllocationPartStateShare.shareWhere and when an activity happens, and the operating states its sources run in there.
- CalibrationPartresultA check of an instrument against a reference, with its date, its result and its certificate.
- ComparisonPartdifferencetoleranceTwo results for the same thing, their difference, the tolerance that judges it and the verdict. Validation runs, monitoring against prediction and conformance tests use it.
- EmissionPartvalueWhat a source gives off in one operating state, such as sound power, a pollutant rate or a discharge. A module schema can require more of it for its domain.
- EvidenceEntityresultOne observation, measured or calculated: what was observed, of which record, by which instrument or algorithm, over which interval, and the result. As in ISO 19156 (Observations and measurements).
- ExpressionDatatypevalueA formula that a criterion, an edge or a variable evaluates. It is a literal, a variable, a Value, or an operation on further expressions. ODS has this one expression language.
- Linear referenceDatatypedistanceoffsetA place stated as a distance along a line, such as a kilometre post on a pipeline. As in ISO 19148.
- OriginDatatyperesolutiondistanceWhere data came from, such as a station, a model or a provider, and how strong that source is.
- PathPartlengthA route from one place to another, with its line and the ordered events along it, such as a sound path from a source to a receptor or a plume's trajectory.
- PropertyPartvalueOne fact about a record, such as a source's rotational speed, a terrain's ground type or the air temperature of a weather condition. Its
typecomes from a quantities vocabulary, which gives the unit and the valid range. - TraceEntityStepValue.valueStepValue.fallback.valueWhat one run of a flow or an algorithm did: what it used, each step, what it made, and the verdict. Its terms follow W3C PROV where they map: agents (prov:wasAssociatedWith), inputs (prov:used), outputs (prov:generated).
- VariablePartvalueA named Value or formula that criteria and steps refer to, such as a framework's limit or a method's parameter.
Examples
An id that another example defines opens that record.
Example 5
{
"file": "file-noise-map",
"encoding": {
"dataType": "int16",
"scale": 0.01,
"missing": -32768,
"array": "lp"
},
"unit": "dB",
"crs": {
"epsgCode": 3402
},
"axes": [
{
"quantity": "northing",
"unit": "m",
"start": 5791005,
"step": 10,
"count": 200,
"bins": {
"width": 10
}
},
{
"quantity": "easting",
"unit": "m",
"start": 512005,
"step": 10,
"count": 200,
"bins": {
"width": 10
}
}
]
}Show 4 more examplesHide the other examples
Example 1
{
"amount": 38.2,
"unit": "dB",
"statistic": {
"type": "energy_mean"
},
"period": "period-night",
"uncertainty": {
"amount": 2,
"type": "method",
"confidence": 0.95
}
}Example 2
{
"amount": 450,
"unit": "m"
}Example 3
{
"amount": "gravel"
}Example 4
{
"amount": [
88.1,
92.4,
95,
96.2,
94.8,
91.3,
86,
79.5
],
"unit": "dB",
"axes": [
{
"quantity": "frequency",
"unit": "Hz",
"values": [
63,
125,
250,
500,
1000,
2000,
4000,
8000
],
"bins": {
"set": "octave"
}
}
]
}Changes and file
Changes
- 0.1.0 First version.
Schema file
Show the JSON SchemaHide the JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://opendevelopmentstandards.org/schema/1.0.0-rc.2/core/Value.json",
"title": "Value",
"description": "An amount with its unit and uncertainty. A list amount can lie along axes (a spectrum, a time series, a profile, a grid), and a large amount can sit in a File. Measured, calculated and set values all use it.",
"type": "object",
"properties": {
"amount": {
"description": "The amount: a number, text, true or false, or a list. With axes, the list nests one level per axis, outermost axis first; null marks an element with no data.",
"anyOf": [
{
"type": "number"
},
{
"type": "string"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/Element"
}
}
]
},
"file": {
"type": "string",
"minLength": 1,
"x-ods-ref": "File",
"description": "The file that holds the amount, when it is too large to write here."
},
"encoding": {
"$ref": "#/$defs/Encoding"
},
"unit": {
"type": "string",
"x-ods-vocabulary": "*/units",
"description": "The unit, as a code from a units vocabulary (for example dB, m, Hz). Leave it out when the amount has no unit."
},
"axes": {
"type": "array",
"items": {
"$ref": "Axis.json"
},
"description": "The axes the amount lies along, outermost first. Leave them out for one amount or a plain list.",
"minItems": 1
},
"statistic": {
"$ref": "Statistic.json",
"description": "How the amount sums up the data it comes from."
},
"averaging": {
"type": "string",
"pattern": "^-?P(?!$)(\\d+(\\.\\d+)?Y)?(\\d+(\\.\\d+)?M)?(\\d+(\\.\\d+)?W)?(\\d+(\\.\\d+)?D)?(T(?=\\d)(\\d+(\\.\\d+)?H)?(\\d+(\\.\\d+)?M)?(\\d+(\\.\\d+)?S)?)?$",
"description": "The time each element covers, as an ISO 8601 duration, such as PT1H for 1-hour means."
},
"period": {
"type": "string",
"minLength": 1,
"x-ods-ref": "Period",
"description": "The window that repeats which the amount covers, such as night-time."
},
"crs": {
"$ref": "Crs.json",
"description": "The coordinate reference system of spatial axes. Required when an axis is `easting`, `northing`, `longitude` or `latitude`."
},
"uncertainty": {
"$ref": "#/$defs/Uncertainty"
}
},
"oneOf": [
{
"properties": {
"amount": true
},
"required": [
"amount"
]
},
{
"properties": {
"file": true
},
"required": [
"file"
]
}
],
"dependentRequired": {
"encoding": [
"file"
]
},
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false,
"$defs": {
"Element": {
"description": "One element of a list amount: a number, text, true or false, null for no data, or a nested list for the next axis.",
"anyOf": [
{
"type": "number"
},
{
"type": "string"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/Element"
}
}
]
},
"UncertaintyElement": {
"description": "One element of a list uncertainty: a number, null, or a nested list for the next axis.",
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/UncertaintyElement"
}
}
]
},
"Encoding": {
"type": "object",
"properties": {
"dataType": {
"type": "string",
"enum": [
"int8",
"int16",
"int32",
"float32",
"float64",
"complex64",
"complex128"
],
"description": "How each element is stored.",
"x-ods-options": [
{
"value": "int8",
"title": "8-bit integer",
"description": "A signed 8-bit integer."
},
{
"value": "int16",
"title": "16-bit integer",
"description": "A signed 16-bit integer."
},
{
"value": "int32",
"title": "32-bit integer",
"description": "A signed 32-bit integer."
},
{
"value": "float32",
"title": "32-bit float",
"description": "An IEEE 754 single-precision number."
},
{
"value": "float64",
"title": "64-bit float",
"description": "An IEEE 754 double-precision number."
},
{
"value": "complex64",
"title": "64-bit complex",
"description": "A complex number of two 32-bit floats, real part first. Inline, a complex amount uses a `complex_part` axis instead."
},
{
"value": "complex128",
"title": "128-bit complex",
"description": "A complex number of two 64-bit floats, real part first."
}
]
},
"scale": {
"type": "number",
"description": "The stored number times `scale`, plus `offset`, gives the amount. As `scale_factor` in the CF conventions."
},
"offset": {
"type": "number",
"description": "Added after `scale`. As `add_offset` in the CF conventions."
},
"missing": {
"anyOf": [
{
"type": "number"
},
{
"const": "NaN"
}
],
"description": "The stored number that marks an element with no data, or `NaN` for a float type that marks it with not-a-number. As `_FillValue` in the CF conventions."
},
"array": {
"type": "string",
"description": "The array's name inside the file, when the file holds several arrays."
}
},
"required": [
"dataType"
],
"description": "How the file stores the amount. The file's media type says how to read it.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
},
"Uncertainty": {
"type": "object",
"properties": {
"amount": {
"description": "The size of the uncertainty, plus or minus: one number for every element, or a list with the amount's shape.",
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "array",
"items": {
"$ref": "#/$defs/UncertaintyElement"
}
}
]
},
"unit": {
"type": "string",
"x-ods-vocabulary": "*/units",
"description": "Its unit, when it differs from the value's."
},
"type": {
"type": "string",
"enum": [
"method",
"numerical",
"measurement"
],
"description": "Where the uncertainty comes from.",
"x-ods-options": [
{
"value": "method",
"title": "Method",
"description": "The spread the method itself allows, such as an engine's stated accuracy."
},
{
"value": "numerical",
"title": "Numerical",
"description": "The spread from the numerical solution, such as grid or sampling error."
},
{
"value": "measurement",
"title": "Measurement",
"description": "The spread of a measurement, such as an instrument's class tolerance."
}
]
},
"confidence": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1,
"description": "The confidence level the amount covers, for example 0.95. Leave it out when not stated."
},
"coverageFactor": {
"type": "number",
"exclusiveMinimum": 0,
"description": "The coverage factor k the amount was multiplied by, as the GUM (JCGM 100:2008): 1 for a standard uncertainty, 2 for about 95 % coverage."
}
},
"required": [
"amount",
"type"
],
"description": "How far the true amount may be from the stated amount.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
}
},
"examples": [
{
"amount": 38.2,
"unit": "dB",
"statistic": {
"type": "energy_mean"
},
"period": "period-night",
"uncertainty": {
"amount": 2,
"type": "method",
"confidence": 0.95
}
},
{
"amount": 450,
"unit": "m"
},
{
"amount": "gravel"
},
{
"amount": [
88.1,
92.4,
95,
96.2,
94.8,
91.3,
86,
79.5
],
"unit": "dB",
"axes": [
{
"quantity": "frequency",
"unit": "Hz",
"values": [
63,
125,
250,
500,
1000,
2000,
4000,
8000
],
"bins": {
"set": "octave"
}
}
]
},
{
"file": "file-noise-map",
"encoding": {
"dataType": "int16",
"scale": 0.01,
"missing": -32768,
"array": "lp"
},
"unit": "dB",
"crs": {
"epsgCode": 3402
},
"axes": [
{
"quantity": "northing",
"unit": "m",
"start": 5791005,
"step": 10,
"count": 200,
"bins": {
"width": 10
}
},
{
"quantity": "easting",
"unit": "m",
"start": 512005,
"step": 10,
"count": 200,
"bins": {
"width": 10
}
}
]
}
],
"x-ods-status": "draft",
"x-ods-kind": "datatype",
"x-ods-module": "core",
"x-ods-changes": {
"0.1.0": "First version."
}
}