Dynamic and Time-Series
The Dynamic and Time-Series extension models systems whose state changes continuously: how data moves between systems, metrics measured as time series, and models that predict one metric from others. It extends the Performance domain and the interoperability extensions with three record types:
- Data flow: a configured movement of data from source systems to target systems, with its trigger, cadence, payload schema, quality measure and governance. A data flow can be a live operational feed, or a monitored source such as a regulator's publication page watched daily for new instruments.
- Timebound metric: a metric measured as a time series, with its unit, update interval, target and alert thresholds.
- Predictive model: a model that predicts a timebound metric from others. Its governance (ownership, validation, monitoring) lives in its Model Risk Management model profile.
Schemas: data-flow.schema.json, timebound-metric.schema.json, predictive-model.schema.json
Specification: JSON Schema Draft-07
Monitored sources
When a data flow feeds governed reasoning, such as an agent that watches regulators for change, sourcePrecedence records how much weight the source carries when sources disagree, and whether a change from it alone may set a record's status or date. freshnessThreshold sets how long records fed by the flow stay fresh without reverification, and governance.humanApprovalRequired records whether changes need a named approver. New instruments the flow finds are recorded as Triggers.
Data Flow
| Attribute | Type | Description | Required |
|---|---|---|---|
dataFlowID | String | Unique identifier for the data flow, e.g. DF-PROC-001 | ✓ |
title | String | Name of the data flow | ✓ |
description | String | What the data flow carries and why | |
sourceSystems | Array[Object] | Systems or sources the data comes from | ✓ |
sourceSystems[].endpointType | Enum | Kind of endpoint: software, sensor, dataStore, webPage, feed, register, api, person, other (required) | |
sourceSystems[].title | String | Name of the endpoint (required) | |
sourceSystems[].systemReference | Object | Technology or Information record for the endpoint, when one exists | |
sourceSystems[].url | String | Address of the endpoint, for web sources and APIs | |
targetSystems | Array[Object] | Systems that receive the data | |
targetSystems[].endpointType | Enum | Kind of endpoint: software, sensor, dataStore, webPage, feed, register, api, person, other (required) | |
targetSystems[].title | String | Name of the endpoint (required) | |
targetSystems[].systemReference | Object | Technology or Information record for the endpoint, when one exists | |
targetSystems[].url | String | Address of the endpoint, for web sources and APIs | |
frequency | Enum | Cadence of the data flow: continuous, realTime, hourly, daily, weekly, monthly, quarterly, semiAnnually, annually, eventDriven, onDemand, adHoc | ✓ |
triggeringEvent | Object | Event that starts the flow, for event-driven flows | |
triggeringEvent.eventName | String | Name of the event, e.g. PartProduced (required) | |
triggeringEvent.source | String | Where the event comes from, e.g. Machine101 | |
schemaReference | Object | Schema of the data payload | |
schemaReference.format | Enum | Payload format: json, xml, csv, html, pdf, rss, atom, binary, other (required) | |
schemaReference.schemaID | String | Identifier or URI of the payload schema, e.g. SCHEMA-MFG002 or a Triodian schema $id | |
sourcePrecedence | Object | How much weight the source carries when sources disagree. Used where a flow feeds governed reasoning | |
sourcePrecedence.rank | Integer | 1 (highest precedence) to 5 (lowest) (required) | |
sourcePrecedence.basis | Enum | Why the source has that rank: officialText, regulatorPublication, standardsBodyPublication, commentary, news, internalSystem, sensor, other (required) | |
sourcePrecedence.canSetStatusOrDate | Boolean | Whether a change from this source alone may set a record's status or date, or only serve as a lead to a higher-ranked source | |
externalOrgID | String | External Organization that owns the source, for external sources | |
jurisdiction | String | Jurisdiction the source covers, for regulatory sources | |
dataQualityMetricID | String | Performance or timebound metric that measures the flow's data quality, latency or freshness | |
latency | String | Expected latency of the flow, as an ISO 8601 duration or plain text, e.g. PT0.1S or 100ms | |
volume | String | Expected volume, e.g. 1000 records/min | |
freshnessThreshold | String | Maximum age, as an ISO 8601 duration, after which records fed by this flow are treated as stale unless re-verified, e.g. P90D | |
governance | Object | Governance controls applied to the flow | |
governance.ownerTitle | String | Person or team that owns the flow | |
governance.ownerStakeholderID | String | Stakeholder record for the owner | |
governance.approvedDate | Date | Date the flow was approved | |
governance.reviewFrequency | Enum | How often the flow is reviewed: continuous, realTime, hourly, daily, weekly, monthly, quarterly, semiAnnually, annually, eventDriven, onDemand, adHoc | |
governance.humanApprovalRequired | Boolean | Whether changes derived from this flow need a named human approver before they are published | |
status | Enum | Implementation state of the flow: notStarted, planned, inProgress, implemented, operational, verified, retiring, retired, abandoned, notApplicable |
{
"dataFlowID": "DF-PROC-001",
"title": "Live Manufacturing Process Data",
"description": "Real-time ingestion of data from a manufacturing process line.",
"sourceSystems": [
{
"endpointType": "sensor",
"title": "Sensor Network A"
}
],
"targetSystems": [
{
"endpointType": "software",
"title": "Operational Dashboard"
},
{
"endpointType": "software",
"title": "Quality Control Engine"
}
],
"frequency": "realTime",
"triggeringEvent": {
"eventName": "PartProduced",
"source": "Machine101"
},
"schemaReference": {
"format": "json",
"schemaID": "SCHEMA-MFG002"
},
"dataQualityMetricID": "MET-LATENCY-001",
"latency": "100ms",
"governance": {
"ownerTitle": "DataOps Team",
"approvedDate": "2025-08-20"
}
}
Timebound Metric
| Attribute | Type | Description | Required |
|---|---|---|---|
timeboundMetricID | String | Unique identifier for the metric, e.g. TBM-MACHINE-TEMPERATURE | ✓ |
title | String | Name of the metric | ✓ |
description | String | What the metric measures | |
source | String | Sensor, stream or data flow the values come from | |
dataFlowID | String | Data flow that supplies the values | |
unitOfMeasure | String | Unit the metric is measured in, e.g. Celsius | ✓ |
updateFrequency | Enum | How often the metric updates: continuous, realTime, hourly, daily, weekly, monthly, quarterly, semiAnnually, annually, eventDriven, onDemand, adHoc | ✓ |
updateInterval | String | Exact update interval as an ISO 8601 duration, e.g. PT10S | |
target | Object | Desired or expected value | |
target.value | Number | Target value (required) | |
target.comparison | Enum | How a reading is compared with the target: atMost, atLeast, equals, within | |
target.tolerance | Number | Allowed deviation when comparison is within | |
alertThresholds | Array[Object] | Values that raise an alert | |
alertThresholds[].value | Number | Threshold value (required) | |
alertThresholds[].direction | Enum | Whether the alert fires above or below the value: above, below (required) | |
alertThresholds[].severity | Enum | Seriousness of the alert: low, medium, high, critical (required) | |
linkedInitiativeID | String | Strategic initiative the metric supports | |
performanceID | String | Performance record the metric reports into |
{
"timeboundMetricID": "TBM-MACHINE-TEMPERATURE",
"title": "Machine 101 Temperature",
"description": "Temperature of a critical machine component, updated every 10 seconds.",
"source": "Machine-101-Sensor-B",
"unitOfMeasure": "Celsius",
"updateFrequency": "realTime",
"updateInterval": "PT10S",
"target": {
"value": 85.0,
"comparison": "atMost"
},
"linkedInitiativeID": "INIT-ENERGY-EFFICIENCY"
}
Predictive Model
| Attribute | Type | Description | Required |
|---|---|---|---|
predictiveModelID | String | Unique identifier for the model, e.g. PM-INVENTORY-FORECAST | ✓ |
title | String | Name of the model | ✓ |
description | String | What the model predicts and from what | |
modelAlgorithm | Enum | Kind of algorithm: regression, classification, timeSeriesForecast, clustering, anomalyDetection, neuralNetwork, ensemble, largeLanguageModel, other | |
inputTimeboundMetricIDs | Array[String] | Timebound metrics that feed the model | ✓ |
predictedTimeboundMetricID | String | Timebound metric the model outputs | ✓ |
accuracy | Object | Measured accuracy of the model | |
accuracy.metric | String | Accuracy measure, e.g. MAPE, AUC, accuracy (required) | |
accuracy.value | Number | Value of the measure (required) | |
accuracy.measuredDate | Date | Date it was measured | |
modelRiskModelID | String | Model Risk Management model profile that governs the model | |
useCaseIDs | Array[String] | Standardised AI use cases the model is used in |
{
"predictiveModelID": "PM-INVENTORY-FORECAST",
"title": "Inventory Demand Forecast",
"description": "Predicts future inventory demand from sales data, seasonality and promotional events.",
"modelAlgorithm": "regression",
"inputTimeboundMetricIDs": [
"TBM-SALES-VOLUMES",
"TBM-PROMO-EVENTS"
],
"predictedTimeboundMetricID": "TBM-INVENTORY-LEVELS",
"accuracy": {
"metric": "accuracy",
"value": 0.955
}
}
Use cases
- Major events. Data flows ingest turnstile and camera feeds; timebound metrics track crowd density at each gate and car park use; a predictive model forecasts peak parking demand from ticket sales, weather and live traffic.
- Manufacturing. Data flows carry sensor readings from assembly machines to a quality engine; timebound metrics track temperature, vibration and energy use; a predictive model forecasts the remaining useful life of a part.
- Healthcare. Data flows move patient vitals from bedside monitors to the health record; timebound metrics track heart rate and oxygen levels with alert thresholds; a predictive model forecasts the likelihood of deterioration.
- Regulatory monitoring. Data flows watch legislation registers and regulator publication pages; each new instrument becomes a Trigger; a timebound metric tracks how many records are past their freshness threshold.