English
Decision draft
One automated decision about one entity: a model's answers to the questions of a rule set, with probabilities, and the resulting action.
| Kind | entity |
| Type IRI | https://datamodels.jp/ns/decision/Decision |
| @context | https://datamodels.jp/context/decision/v1.jsonld |
| JSON Schema | /schema/decision/Decision/v1.json |
| Licence | CC0 1.0: the files (@context, JSON Schema, examples) can be used without conditions |
These @context and JSON Schema URLs always point to the latest compatible version.
For URLs that never change, see Versions. More in URLs and versions.
Types and relationships
Relationship (attribute name)↻ Relationship to the same type
Attributes
| Attribute | Description | Value |
|---|---|---|
refersTo | The entity the decision is about (the input). One of refersTo or externalReference is requiredhttp://www.w3.org/ns/prov#used | Relationship → any entity |
externalReference | What the decision is about when it is not an entity in the broker, for example an issue URLhttps://datamodels.jp/ns/decision/externalReference | Property, string |
action* | The action the rules gave, meaning what happens next (for example auto, review, publish, urgent). The values are defined by the rule sethttps://datamodels.jp/ns/decision/action | Property, string |
answers* | The model's answers, one per question, each with its probability. Each item has name (the question), type (noul for yes or no, choice for one of a list of options, score for a level on an ordered scale), value, probability (of that value) and, for choice and score, probabilities (per option or level)https://datamodels.jp/ns/decision/answers | JsonProperty, array |
facts | Every spatial fact the rule set asks for, as looked up for this decision (whether or not the matching rule used it), computed by spatial operations, not by the model (for example inside a flood zone, or the distance to the nearest evacuation site). Each item has name and missing, and either values (per field) and source, or, when it could not be looked up, reason (no_location, unavailable, timeout, error). Rules that need a missing fact do not matchhttps://datamodels.jp/ns/decision/facts | JsonProperty, array |
profile* | Id of the rule set that asked the questions and turned the answers into the actionhttps://datamodels.jp/ns/decision/profile | Property, string |
profileVersion* | Version of the rule sethttps://datamodels.jp/ns/decision/profileVersion | Property, integer, ≥ 1 |
policyRule | Which rule gave the action: its index from 0 as text ("0", "1", ...), or "default" when no rule matched. The reason for the resulthttps://datamodels.jp/ns/decision/policyRule | Property, string |
model* | Id of the model that answeredhttps://datamodels.jp/ns/decision/model | Property, string |
decidedAt* | When the decision was madehttp://www.w3.org/ns/prov#endedAtTime | Property, string (date-time) |
humanInvolvement | How a person takes part, as a W3C DPV term: dpv:HumanInvolvementForVerification (a person checks before the action is taken), dpv:HumanInvolvementForOversight (the action is taken, and a person can check and correct it later), dpv:HumanInvolvementForDecision (a person decides, and the answers only inform), dpv:HumanNotInvolvedhttps://w3id.org/dpv#hasHumanInvolvement | VocabProperty, string: dpv:HumanInvolvementForVerification | dpv:HumanInvolvementForOversight | dpv:HumanInvolvementForDecision | dpv:HumanNotInvolved |
reviewStatus | State of the check by a person, pending or resolved. Absent when no check was askedhttps://datamodels.jp/ns/decision/reviewStatus | Property, string: pending | resolved |
finalAction | The action after the check by a personhttps://datamodels.jp/ns/decision/finalAction | Property, string |
reviewedBypersonal data | Who resolved the check, as an account, role or team identifier, not a personal namehttps://datamodels.jp/ns/decision/reviewedBy | Property, string |
reviewedAt | When the check was resolvedhttps://datamodels.jp/ns/decision/reviewedAt | Property, string (date-time) |
correctionspersonal data | Answers corrected by a person (the ground truth for measuring the model). Each item has name, value, by (an identifier), at and optionally notehttps://datamodels.jp/ns/decision/corrections | JsonProperty, array |
wasInformedBy | The decision this one followed, in a chain of decisionshttp://www.w3.org/ns/prov#wasInformedBy | Relationship → Decision |
* required
Using this model
How to validate data and send it to a broker: Using the models.
To add attributes of your own to this model, the extension builder writes the @context and JSON Schema.
Extended this model? List your extension so others can reuse your names (how to fill in the form).
Files that particular brokers and tools can load as they are, made from this model: Adapters
The Link header, for sending data without @context in the body:
httpLink: <https://datamodels.jp/context/decision/v1.jsonld>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"
Example
The examples are a fictional scenario (heavy rain in Chiyoda, Tokyo). Place names and codes are real; the events, people and teams are invented. See writing examples.
json
{
"id": "urn:ngsi-ld:Decision:7d20731d-5cc8-4315-97ba-1576c5466269",
"type": "Decision",
"refersTo": "urn:ngsi-ld:RoadRestriction:0001",
"action": "review",
"answers": {
"json": [
{
"name": "category",
"type": "choice",
"value": "closedWeather",
"probability": 0.81,
"probabilities": {
"closedWeather": 0.81,
"closedConstruction": 0.02,
"closedHeavyVehicle": 0.01,
"closedWinter": 0,
"laneRestriction": 0.09,
"alternatingOneWay": 0.05,
"mobileRestriction": 0,
"chainRestriction": 0,
"chainGuidance": 0,
"other": 0.02
}
},
{
"name": "status_matches",
"type": "noul",
"value": true,
"probability": 0.92
},
{
"name": "danger",
"type": "noul",
"value": false,
"probability": 0.58
},
{
"name": "clarity",
"type": "score",
"value": 3,
"probability": 0.74,
"probabilities": {
"0": 0.02,
"1": 0.06,
"2": 0.18,
"3": 0.74
}
}
]
},
"facts": {
"json": [
{
"name": "flood",
"missing": false,
"values": {
"inside": true,
"rank": 4,
"class": "1 to 3 m"
},
"source": "gsi-flood-max"
}
]
},
"profile": "road-restriction-check",
"profileVersion": 1,
"policyRule": "default",
"model": "clef-flash",
"decidedAt": "2026-07-08T10:46:12+09:00",
"humanInvolvement": {
"vocab": "dpv:HumanInvolvementForVerification"
},
"reviewStatus": "resolved",
"finalAction": "publish",
"reviewedBy": "staff-0012",
"reviewedAt": "2026-07-08T10:52:40+09:00",
"corrections": {
"json": [
{
"name": "category",
"value": "closedWeather",
"by": "staff-0012",
"at": "2026-07-08T10:52:40+09:00",
"note": "冠水による通行止めで間違いない"
}
]
}
}Files: example.json · example-normalized.jsonld · Open in the JSON-LD Playground: see the full IRI behind every attribute (expanded form).
Something missing or wrong?
Open an issue, or propose new attributes or models with the proposal form. How it works: Contributing. The source files (notes, mapping tables) are on GitHub.
Notes
- The provenance part rests on W3C PROV-O (https://www.w3.org/TR/prov-o/, W3C Recommendation 2013). A decision is a prov:Activity: refersTo is prov:used, decidedAt prov:endedAtTime, wasInformedBy prov:wasInformedBy. The model that answered is a prov:SoftwareAgent and the rule set version a prov:Plan; model, profile and profileVersion are plain values (ids) so they are easy to use in NGSI-LD. Full PROV-O would mint IRIs for models and rule set versions and add a prov:qualifiedAssociation (prov:agent, prov:hadPlan). The check by a person is a separate activity in PROV-O; it is kept on the same entity to keep consumers simple.
- W3C/OGC SOSA/SSN (https://www.w3.org/TR/vocab-ssn/) publishes its own alignment to PROV-O with the same shape: sosa:hasFeatureOfInterest ⊑ prov:used (refersTo), sosa:madeBySensor ⊑ prov:wasAssociatedWith (model), sosa:usedProcedure (profile), sosa:resultTime ⊑ prov:endedAtTime (2017; sosa:endTime in the 2023 draft). Not used as the type: one observation has one result, and a question is not really an observable property.
- The values of humanInvolvement are W3C DPV 2.3 terms (https://w3c-cg.github.io/dpv/2.3/dpv/, W3C Community Group report). DPV describes kinds of processing, not single decision records, so only its human-involvement terms are borrowed.
- Upstream considered (2026-10-07). Smart Data Models SMAnalysis (SocialMedia: one analysis with one value and one confidence) is the closest, but has no multiple answers and no review. MLModel and MLProcessing (descriptions of models and jobs), Alert, Anomaly, AIPrediction, DataQualityAssessment, schema.org AssessAction and ChooseAction, ML Schema, FAIR4ML, AIRO, VAIR and DMN do not fit as the type. ETSI ISG CIM has no model for AI results. The probability standards checked (DQV, ISO 19156 result quality, UncertML, QUDT) do not fit a probability per option, so probability and probabilities are our own.
- Laws and guidelines (checked 2026-10-07) define no record format. policyRule (the reason for the result) is there because AI事業者ガイドライン 第1.2版 6)① and the Digital Agency's DS-920 6.5 ask for it in logs; humanInvolvement records how a person takes part; it is useful for the duties in GDPR Art. 22(3) and 13–15, the EU AI Act Art. 26(11) and 86, and the guideline's U-7. Retention is a deployment setting, not a model attribute.
- answers and corrections are NGSI-LD 1.8 JsonProperties (their keys are not expanded as JSON-LD), humanInvolvement a VocabProperty (its value is an IRI). Orion-LD (post-1.12.0, as of 2026-09-25) refuses both types, so it cannot store entities of this model; Scorpio 6.0.2, Stellio 2.38.0 and GeonicDB can (checked 2026-10-07). No copy of the input: it can hold personal data, so refersTo points to it.
- facts are the spatial facts the rule set asks for, as looked up for the decision; a JsonProperty keeps the values themselves. In PROV-O they are inputs of the decision, but as a JsonProperty they make no prov:used link (only refersTo does); full PROV-O would make an entity per fact and link it with prov:used. source is an id such as a layer and its date, not an IRI. The location itself is not stored (it is on the refersTo entity). Only the rules use the facts; the model does not see them (in tests, language models rated danger higher whenever facts were present).
- Draft. The subject name decision and the namespace https://datamodels.jp/ns/decision/ are for the group to decide, as a new subject. Real data: decisions on road restriction reports in an NGSI-LD broker (GeonicDB).