Trajectory is within tolerance. No intervention required.
1
[0.5, 1.5)
outlook:at-risk
At Risk
Trajectory is approaching tolerance boundary. Early warning — monitor closely and consider corrective action.
2
[1.5, 2.5)
outlook:off-track
Off Track
Trajectory is outside tolerance or requires immediate intervention.
3
[2.5, 3.5)
Implementation notes
Defining the "At Risk" space between "On Track" and "Off Track"
Implementors are free to choose their own method for calculating boundaries, based on their risk calculations and specific needs. One suggestion drawn from project management practices is to use estimates and tolerances. On track is within estimates (inclusive). At risk is outside the estimate but with tolerance. Off track is outside tolerance.
Integer or floating-point numbers?
The transitions between values are often the most important information for end users. Floating point values allow changes to be tracked over time rather than rounding off in a lossy manner. A project that was tracking at 1.0 ("On Track") last week and is now 1.3 is still "On Track", but it may be useful to know about the change before it breaches 1.5 ("At Risk").
Values SHOULD be checked against the range using minimum (inclusive) and maximum (exclusive) bounds:
// [min, max) — min inclusive, max exclusive
value >= min && value < max
The canonical integer values (1, 2, 3) sit at the centre of each concept's range and are sufficient for most use cases. Implementations MAY choose to use integers only.
Values cross into the next concept at the boundary. A value of 1.5 is "At Risk", not "On Track".
Considering floating point values:
allows users to organise items via drag and drop, placing items relative to each other based on their knowledge.
can calculate roll up status based on multiple child items for greater granularity in reporting.
0 up to 0.5 (exclusive) is not defined. This is intentional to allow 1 to sit consistently in the middle of the range.
Values below 0.5 or above 3.5 fall outside the defined range of this vocabulary.
Colours are illustrative only. Implementors SHOULD choose colours (if any) based on usability and accessibility.
JSON-LD
{"@context":{"skos":"http://www.w3.org/2004/02/skos/core#","dc":"http://purl.org/dc/elements/1.1/","dct":"http://purl.org/dc/terms/","xsd":"http://www.w3.org/2001/XMLSchema#","cgi":"https://currawong.games/ns#","rag":"https://currawong.games/vocab/rag#","title":{"@id":"dc:title"},"identifier":{"@id":"dc:identifier"},"description":{"@id":"dct:description"},"creator":{"@id":"dct:creator","@type":"@id"},"license":{"@id":"dct:license","@type":"@id"},"hasTopConcept":{"@id":"skos:hasTopConcept","@type":"@id"},"inScheme":{"@id":"skos:inScheme","@type":"@id"},"topConceptOf":{"@id":"skos:topConceptOf","@type":"@id"},"prefLabel":{"@id":"skos:prefLabel","@language":"en"},"definition":{"@id":"skos:definition","@language":"en"},"scopeNote":{"@id":"skos:scopeNote","@language":"en"},"notation":{"@id":"skos:notation"},"rangeMin":{"@id":"cgi:rangeMin","@type":"xsd:decimal"},"rangeMax":{"@id":"cgi:rangeMax","@type":"xsd:decimal"}},"@graph":[{"@id":"https://currawong.games/vocab/rag","@type":"skos:ConceptScheme","identifier":"rag","title":"RAG Status","description":"A three-value ordinal scale — Red, Amber, Green — used as a traffic-light signal for condition, tolerance, or risk level. The colours are intrinsic to the concept identifiers: red means stop/intervene, amber means caution/monitor, green means proceed/within tolerance.\n\nValues are floating-point numbers. The integer part identifies the concept via range lookup. The fractional part expresses relative position within that concept — proximity to a boundary may be used to signal threshold drift, but the interpretation of position is intentionally left to the consuming application.\n\nThis is an abstract base vocabulary. Domain-specific schemes (e.g. cgi:Outlook) use skos:exactMatch to map their concepts onto these three values.","creator":"https://currawong.games","license":"https://creativecommons.org/publicdomain/zero/1.0/","hasTopConcept":["rag:red","rag:amber","rag:green"]},{"@id":"rag:red","@type":"skos:Concept","inScheme":"https://currawong.games/vocab/rag","topConceptOf":"https://currawong.games/vocab/rag","prefLabel":"Red","notation":"R","definition":"Outside tolerance or requires immediate intervention.","scopeNote":"Fractional values approaching 2.5 indicate drift toward the amber boundary.","rangeMin":2.5,"rangeMax":3.5},{"@id":"rag:amber","@type":"skos:Concept","inScheme":"https://currawong.games/vocab/rag","topConceptOf":"https://currawong.games/vocab/rag","prefLabel":"Amber","notation":"A","definition":"Approaching tolerance boundary. Early warning. Monitor closely and consider action.","scopeNote":"Fractional values approaching 2.5 indicate drift toward red; values approaching 1.5 indicate drift toward green.","rangeMin":1.5,"rangeMax":2.5},{"@id":"rag:green","@type":"skos:Concept","inScheme":"https://currawong.games/vocab/rag","topConceptOf":"https://currawong.games/vocab/rag","prefLabel":"Green","notation":"G","definition":"Within tolerance. No intervention required. Continue monitoring.","scopeNote":"Fractional values approaching 1.5 indicate drift toward the amber boundary.","rangeMin":0.5,"rangeMax":1.5}]}
Turtle
@prefix skos: <http://www.w3.org/2004/02/skos/core#>.
@prefix dc: <http://purl.org/dc/elements/1.1/>.
@prefix dct: <http://purl.org/dc/terms/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix cgi: <https://currawong.games/ns#>.
@prefix rag: <https://currawong.games/vocab/rag#>.
rag:amberaskos:Concept;
skos:definition"Approaching tolerance boundary. Early warning. Monitor closely and consider action."@en;
skos:inScheme<https://currawong.games/vocab/rag>;
skos:notation"A";
skos:prefLabel"Amber"@en;
skos:scopeNote"Fractional values approaching 2.5 indicate drift toward red; values approaching 1.5 indicate drift toward green."@en;
skos:topConceptOf<https://currawong.games/vocab/rag>;
cgi:rangeMax"2.5E0"^^xsd:decimal;
cgi:rangeMin"1.5E0"^^xsd:decimal.<https://currawong.games/vocab/rag>askos:ConceptScheme;
dc:identifier"rag";
dc:title"RAG Status";
dct:creator<https://currawong.games>;
dct:description"A three-value ordinal scale — Red, Amber, Green — used as a traffic-light signal for condition, tolerance, or risk level. The colours are intrinsic to the concept identifiers: red means stop/intervene, amber means caution/monitor, green means proceed/within tolerance.\n\nValues are floating-point numbers. The integer part identifies the concept via range lookup. The fractional part expresses relative position within that concept — proximity to a boundary may be used to signal threshold drift, but the interpretation of position is intentionally left to the consuming application.\n\nThis is an abstract base vocabulary. Domain-specific schemes (e.g. cgi:Outlook) use skos:exactMatch to map their concepts onto these three values.";
dct:license<https://creativecommons.org/publicdomain/zero/1.0/>;
skos:hasTopConceptrag:amber, rag:green, rag:red.rag:greenaskos:Concept;
skos:definition"Within tolerance. No intervention required. Continue monitoring."@en;
skos:inScheme<https://currawong.games/vocab/rag>;
skos:notation"G";
skos:prefLabel"Green"@en;
skos:scopeNote"Fractional values approaching 1.5 indicate drift toward the amber boundary."@en;
skos:topConceptOf<https://currawong.games/vocab/rag>;
cgi:rangeMax"1.5E0"^^xsd:decimal;
cgi:rangeMin"5.0E-1"^^xsd:decimal.rag:redaskos:Concept;
skos:definition"Outside tolerance or requires immediate intervention."@en;
skos:inScheme<https://currawong.games/vocab/rag>;
skos:notation"R";
skos:prefLabel"Red"@en;
skos:scopeNote"Fractional values approaching 2.5 indicate drift toward the amber boundary."@en;
skos:topConceptOf<https://currawong.games/vocab/rag>;
cgi:rangeMax"3.5E0"^^xsd:decimal;
cgi:rangeMin"2.5E0"^^xsd:decimal.