Derived metric methodology, version 1.0
Constraint centrality: aluminum
The knowledge graph's centrality_v1 score for aluminum: the sum over every entity that transitively depends on it (within 6 hops) of the strongest dependency path weight, each edge weighing strength divided by one plus its named substitutes. One value per computation date; it changes when the curated graph changes.
Specification
How the value is computed
Formula in plain words
The custom function constraint_centrality over the whole component dataset, for each geography and period. A period with any component missing produces no value. Rounded to 3 decimals.
Components
No component metrics: the value is an assessment recorded by the named function, with its basis on every row.
- Combination
- Named function constraint_centrality, evaluated once over the whole component dataset (it reads across geographies or records an assessment) and returning the observation ids it used.
- Missing data
- Skip the period: no value is produced unless every component is present. Nothing is interpolated or carried forward.
- Window
- None: each period stands on its own.
- Normalization
- None: the combined value is published in its own unit.
- Unit and rounding
- index. Rounded to 3 decimals, applied last.
- Default geography
- WLD
Parameters
{
"entity_slug": "aluminum",
"requested_as": "aluminum",
"mapping_note": null,
"graph_version": "centrality_v1",
"max_depth": 6,
"edge_weight": "strength (default 0.5) / (1 + number of named substitutes)",
"external_inputs": {
"table": "relationships",
"loader": "loadConstraintCentralityDataset",
"note": "inputs are curated graph edges, not observations; the row records the entity id, the edge count and the direct dependency edge ids"
},
"absent_entities": [
{
"requested": "lithium",
"reason": "no lithium entity in the curated graph yet"
},
{
"requested": "nickel",
"reason": "no nickel entity in the curated graph yet"
},
{
"requested": "cobalt",
"reason": "no cobalt entity in the curated graph yet"
},
{
"requested": "graphite",
"reason": "no graphite entity in the curated graph yet"
},
{
"requested": "rare earths",
"reason": "no rare earth entity in the curated graph yet"
},
{
"requested": "uranium",
"reason": "no uranium entity in the curated graph yet"
}
]
}What has been computed
- Current values
- 1
- Geographies
- 1
- Periods
- 1, 2026-09-07 to 2026-09-07
- Last computed
- 2026-09-07 22:04 UTC
- Produced by
- version 1.0
Last verification
- Outcome
- success
- Run at
- 2026-09-07 22:15 UTC
- Examined
- 5101 derived values across all metrics, 5090 reproduced, 0 issues
- This metric
- 0 of 1 reproduced, 0 issues
Worked example
World, 2026-09-07
1.74 index
- Observation id
- 404001
- Formula version
- 1.0
- Source revision
- v1.0/e3b0c44298fc
- Computed at
- 2026-09-07 22:04 UTC
- Coverage
- 1 of 1 components (minimum 1)
- centrality_v1
- 1.74
Recorded with the value
{
"entity": "aluminum",
"entity_id": "cecab6aa-6544-457f-901d-8eb3aa74dbb2",
"max_depth": 6,
"computed_at": "2026-09-07T22:04:40.494Z",
"direct_edges": [
{
"weight": 0.2,
"edge_id": "aa5d07e3-221c-4748-b5bc-d3b871fcb961",
"dependent": "power-transformer"
}
],
"graph_version": "centrality_v1",
"edges_in_graph": 44,
"downstream_count": 10,
"direct_dependents": 1,
"requested_but_absent": [
"lithium",
"nickel",
"cobalt",
"graphite",
"rare earths",
"uranium"
]
}0 observations
This value reads no component observations: it is an assessment, and its basis is recorded above.
History
Version history
Version 1.0, effective 2026-09-07 00:00 UTCcurrent
Formula The custom function constraint_centrality over the whole component dataset, for each geography and period. A period with any component missing produces no value. Rounded to 3 decimals.
Constraint centrality: aluminum, version 1.0
Classification. Derived: deterministic arithmetic over stored values; every number is reproducible from the stored ids named in the observation's metadata.
Formula. centrality_v1 (src/lib/graph/centrality.ts): starting at the entity, walk the dependency edges outward up to 6 hops, keeping for each downstream entity the largest product of edge weights along any path back to the entity, where an edge's weight is strength / (1 + number of named substitutes). The score is the sum of those best path weights over all downstream entities, rounded to three decimals. Stored once per computation date with geography World. Inputs: the relationships table (custom function constraint_centrality over the dataset built by loadConstraintCentralityDataset).
Engine rendering: The custom function constraint_centrality over the whole component dataset, for each geography and period. A period with any component missing produces no value. Rounded to 3 decimals.
Components.
- No component metrics: the inputs are stored rows outside the observations table, named below and recorded on every row.
Windows and alignment. Recomputed from the stored relationships at every derived pass (weekly, alongside graph.recompute_centrality), dated on the computation day. History is the graph's history: a change in score means edges, strengths or substitutes were curated, and the row's edge count and direct edge ids show which.
Missing data. A period is produced only when every component has a value for it; nothing is interpolated, carried forward or estimated.
Rationale. Constraint Centrality (docs/upgrade/20) asks how many important downstream systems rely on a resource, adjusted for dependency strength and substitute availability; docs/06 section 8 lists downstream dependency centrality among the factors a bottleneck label must cite. The graph already computes exactly this statistic; publishing it per entity gives every commodity a page, a history and provenance.
Limitations. Storage choice: one metric per entity rather than one metric with metadata.entity, because pages, charts and the observation key are (metric, geography, period) and one metric could not hold several entities on the same date or show one entity's history. The score is relative to the curated graph (centrality_v1), so a small graph gives small numbers and adding a chain raises every node on it. Edge strengths and substitutes are curator judgments. The inputs are graph rows, not observations, so the reproducibility harness cannot rebuild the value from observation ids; the entity id and edge ids on the row are the provenance. Requested resources with no node in the curated graph yet, and therefore no metric and no value: lithium, nickel, cobalt, graphite, rare earths, uranium. They are listed so the gap is visible; adding the entities and their dependency edges to src/data/graph is what creates the metrics.
Revision. A new computation date is a new observation; earlier dates are kept. A change in the graph formula is a new graph version and a new methodology version here.