Kortex schema — static view
This is the no-JavaScript rendering of the schema atlas, generated hourly from
live introspection (10,614,803 nodes, 27,668,516 edges, 522 tables,
snapshot 2026-07-08). The machine-readable schema is at
/api/schema; the platform manifest at
/.well-known/kortex.json.
Node labels (46) and edge types (58)
| label | nodes | domain |
|---|
| :CorporateEntity | 3,361,939 | corporate |
| :TransmissionLine | 2,265,109 | power |
| :WaterReservoir | 825,418 | water |
| :Substation | 734,478 | power |
| :Mast | 728,703 | telecom |
| :Pipeline | 317,789 | hydrocarbons |
| :MineralDeposit | 304,613 | minerals |
| :Emitter | 294,563 | environment |
| :WaterWell | 279,357 | water |
| :Junction | 223,535 | power |
| :Generator | 210,141 | power |
| :Transformer | 201,355 | power |
| :PetroleumSite | 169,592 | hydrocarbons |
| :WaterTower | 156,715 | water |
| :Switch | 127,890 | power |
| :Airport | 85,049 | transport |
| :WastewaterPlant | 82,038 | water |
| :Dam | 41,145 | water |
| :QueueProject | 36,441 | power |
| :WaterTreatmentPlant | 32,486 | water |
| :TelecomBuilding | 26,386 | telecom |
| :PumpingStation | 23,093 | water |
| :PipelineFeature | 20,758 | hydrocarbons |
| :Company | 20,503 | corporate |
| :TelecomCable | 13,657 | telecom |
| :WorldBankProject | 7,179 | corporate |
| :Compensator | 6,562 | power |
| :UraniumDeposit | 6,175 | minerals |
| :DataCentre | 5,888 | uncategorised |
| :Port | 3,630 | transport |
| :FuelCycleFacility | 872 | minerals |
| :Reactor | 721 | power |
| :Grid | 364 | power |
| :Jurisdiction | 218 | geo |
| :BathymetryProfile | 59 | orkora |
| :CycloneExposure | 59 | orkora |
| :DeploymentSite | 59 | orkora |
| :OceanThermal | 59 | orkora |
| :SeismicHazard | 59 | orkora |
| :BalancingAuthority | 53 | power |
| :TSO | 29 | power |
| :SynchronousArea | 26 | power |
| :DataSource | 15 | reference |
| :CentralBank | 14 | corporate |
| :IceMassZone | 8 | environment |
| :Meta | 1 | uncategorised |
| edge type | edges |
|---|
| -[:LOCATED_IN]- | 14,132,877 |
| -[:HEADQUARTERED_IN]- | 3,248,575 |
| -[:ENDPOINT_OF]- | 2,759,297 |
| -[:NEAREST_SUBSTATION]- | 1,159,530 |
| -[:NESTED_IN]- | 1,120,365 |
| -[:OPERATED_BY]- | 921,516 |
| -[:PIPELINE_NEXT]- | 844,629 |
| -[:WEATHER_CORRELATED]- | 573,249 |
| -[:NEXT_ON_LINE]- | 467,750 |
| -[:SUBSIDIARY_OF]- | 256,036 |
| -[:NEAREST_PORT]- | 224,581 |
| -[:PART_OF]- | 201,329 |
| -[:SOURCED_FROM]- | 198,339 |
| -[:CONNECTS_TO]- | 160,410 |
| -[:MANAGED_BY]- | 143,577 |
| -[:IMPOUNDS]- | 130,686 |
| -[:ULTIMATE_PARENT]- | 129,089 |
| -[:DIRECT_PARENT]- | 123,303 |
| -[:OPERATES_IN]- | 109,905 |
| -[:FLIES_TO]- | 103,142 |
| -[:PUMPS_TO]- | 76,128 |
| -[:OWNED_BY]- | 72,352 |
| -[:DISCHARGES_TO]- | 72,054 |
| -[:IS_SUBFUND_OF]- | 70,056 |
| -[:QUEUED_AT]- | 52,967 |
| -[:DRAWS_FROM]- | 45,232 |
| -[:SUPPLIES_WATER]- | 44,326 |
| -[:COMPETES_WITH]- | 36,913 |
| -[:CABLE_CONNECTS]- | 31,765 |
| -[:SAILS_TO]- | 25,785 |
| -[:FUELLED_BY]- | 22,991 |
| -[:INTERCONNECTING_UTILITY]- | 20,060 |
| -[:SAME_AS]- | 17,907 |
| -[:TRADES_WITH]- | 16,865 |
| -[:PIPELINE_FEEDS]- | 11,881 |
| -[:SUPPLIES_COOLING]- | 10,167 |
| -[:DAM_POWERS]- | 8,257 |
| -[:ON_SAME_RIVER]- | 7,783 |
| -[:HAS_CAPACITY_IN]- | 7,718 |
| -[:INTERNATIONAL_BRANCH_OF]- | 1,872 |
| -[:IS_FEEDER_TO]- | 1,319 |
| -[:INTERCONNECTS]- | 1,165 |
| -[:PARENT_GROUP_OF]- | 1,146 |
| -[:HAS_NETWORK_IN]- | 1,066 |
| -[:DEVELOPED_BY]- | 807 |
| -[:ELECTRICITY_FLOWS]- | 656 |
| -[:LANDS_AT]- | 226 |
| -[:GOVERNED_BY]- | 204 |
| -[:MEMBER_OF]- | 193 |
| -[:HAS_BATHYMETRY]- | 59 |
| -[:HAS_OCEAN_THERMAL]- | 59 |
| -[:IN_EEZ]- | 59 |
| -[:HAS_CYCLONE]- | 59 |
| -[:DOWNSTREAM_OF]- | 59 |
| -[:HAS_SEISMIC]- | 59 |
| -[:BALANCES]- | 53 |
| -[:MONETARY_AUTHORITY_OF]- | 34 |
| -[:REGULATED_BY]- | 29 |
Verified example queries
Every query below is live-tested against the production graph. Run them via
the Workbench or POST /v2/graph/query.
Substation: High-voltage substations in a specific country
Filter substations by jurisdiction and minimum voltage. NOTE: the iso3 property holds ISO 3166 ALPHA-2 codes ('DE', 'GB') despite the name; fills 96% of substations, voltage_kv fills 61% (TSO-tier subs).
MATCH (s:Substation)
WHERE s.iso3 = 'DE' AND s.voltage_kv >= 380
RETURN s.id, s.name, s.voltage_kv, s.lat, s.lng
ORDER BY s.voltage_kv DESC
LIMIT 50
Substation: Substations and the transmission lines they terminate
ENDPOINT_OF (2.2M edges) connects every substation to its lines. Returns each substation with its line count and a sample.
MATCH (s:Substation)-[:ENDPOINT_OF]->(t:TransmissionLine)
WHERE s.iso3 = 'GB' AND s.voltage_kv >= 275
WITH s, count(t) AS line_count, collect(t.id)[..5] AS sample_lines
RETURN s.name, s.voltage_kv, line_count, sample_lines
ORDER BY line_count DESC
LIMIT 20
Substation: Substation operator and ultimate parent
Substation -> CorporateEntity (OPERATED_BY, 402K edges) -> ULTIMATE_PARENT (129K). Resolves who controls each high-voltage substation.
MATCH (s:Substation)-[:OPERATED_BY]->(direct:CorporateEntity)
WHERE s.iso3 = 'US' AND s.voltage_kv >= 500
OPTIONAL MATCH (direct)-[:ULTIMATE_PARENT]->(ultimate:CorporateEntity)
RETURN s.name AS substation, s.voltage_kv,
direct.name AS operator, direct.lei,
coalesce(ultimate.name, direct.name) AS ultimate_parent
LIMIT 30
TransmissionLine: Longest extra-high-voltage transmission lines
Filter by voltage class and order by length. The 500kV+ class includes UHVDC interconnectors. voltage_kv fills 72% of lines.
MATCH (t:TransmissionLine)
WHERE t.voltage_kv >= 500
RETURN t.id, t.voltage_kv, t.length_km, t.operator_name
ORDER BY t.length_km DESC
LIMIT 25
TransmissionLine: Lines and both their substation endpoints
Two ENDPOINT_OF hops recover both endpoints. The id-ordering predicate suppresses duplicates (a-b vs b-a).
MATCH (s1:Substation)-[:ENDPOINT_OF]->(t:TransmissionLine)<-[:ENDPOINT_OF]-(s2:Substation)
WHERE t.voltage_kv >= 400 AND s1.iso3 = 'FR' AND s1.id < s2.id
RETURN t.id, t.voltage_kv, t.length_km,
s1.name AS from_substation, s2.name AS to_substation
LIMIT 30
TransmissionLine: Cross-border transmission lines
Lines whose two endpoint substations sit in different countries. Surfaces every physical electrical interconnection.
MATCH (s1:Substation)-[:ENDPOINT_OF]->(t:TransmissionLine)<-[:ENDPOINT_OF]-(s2:Substation)
WHERE s1.iso3 <> s2.iso3 AND t.voltage_kv >= 220 AND s1.id < s2.id
RETURN t.id, t.voltage_kv, t.length_km,
s1.iso3 + '-' + s2.iso3 AS corridor,
s1.name AS from_sub, s2.name AS to_sub
ORDER BY t.voltage_kv DESC
LIMIT 40
Generator: Operating coal generators in a specific country
Country filter via LOCATED_IN -> Jurisdiction since Generator.iso3 only fills 2% of nodes. fuel_canonical fills 96%, capacity_mw 58%.
MATCH (g:Generator)-[:LOCATED_IN]->(j:Jurisdiction {iso_alpha2: 'CN'})
WHERE g.fuel_canonical = 'Coal'
AND g.lifecycle_status = 'operational'
AND g.capacity_mw >= 500
RETURN g.id, g.name, g.capacity_mw, g.operator_name
ORDER BY g.capacity_mw DESC
LIMIT 50
Generator: Generation capacity mix within a grid zone
OPERATES_IN edge (110K) connects each generator to its TSO/ISO balancing zone. Aggregated by fuel for one zone.
MATCH (g:Generator)-[:OPERATES_IN]->(grid:Grid {id: 'GRID-DE'})
WHERE g.lifecycle_status = 'operational'
RETURN g.fuel_canonical AS fuel,
count(g) AS unit_count,
sum(g.capacity_mw) AS total_mw
ORDER BY total_mw DESC
LIMIT 20
Generator: Renewable generators with their corporate operator
Generator -> Substation (CONNECTS_TO, 85K) -> CorporateEntity (OPERATED_BY). Maps clean-energy assets to operating entities with LEI.
MATCH (g:Generator)-[:CONNECTS_TO]->(s:Substation)-[:OPERATED_BY]->(c:CorporateEntity)
WHERE g.fuel_canonical IN ['Wind', 'Solar', 'Hydro']
AND g.capacity_mw >= 100
AND g.lifecycle_status = 'operational'
RETURN g.name AS generator,
g.fuel_canonical AS fuel,
g.capacity_mw,
c.name AS operator,
c.lei
LIMIT 50
Reactor: Operational reactors by reactor type
Active commercial reactors grouped by type (PWR, BWR, CANDU, etc). Sourced from IAEA PRIS monthly snapshots.
MATCH (r:Reactor)
WHERE r.status = 'operational'
RETURN r.reactor_type AS type,
count(r) AS active_units,
sum(r.net_mwe) AS total_net_mwe
ORDER BY total_net_mwe DESC
LIMIT 20
Reactor: Reactors under construction by country
The pipeline of new nuclear capacity, with country of construction and gross MW.
MATCH (r:Reactor)
WHERE r.status = 'under_construction'
RETURN r.name, r.reactor_type, r.net_mwe,
r.country_iso3 AS country
ORDER BY r.net_mwe DESC
LIMIT 30
Reactor: Nuclear fuel-cycle dependency by country
Reactor host countries cross-referenced with domestic fuel-cycle facilities (SOURCED_FROM uranium deposits, 168K edges). Surfaces fuel-cycle self-sufficiency.
MATCH (r:Reactor)-[:LOCATED_IN]->(j:Jurisdiction)
WHERE r.status = 'operational'
WITH j, count(r) AS reactors, sum(r.net_mwe) AS reactor_mw
OPTIONAL MATCH (f:FuelCycleFacility)-[:LOCATED_IN]->(j)
OPTIONAL MATCH (u:UraniumDeposit)-[:LOCATED_IN]->(j)
RETURN j.iso3 AS country, j.name AS country_name,
reactors, reactor_mw,
count(DISTINCT f) AS domestic_fuel_facilities,
count(DISTINCT u) AS domestic_uranium_deposits
ORDER BY reactor_mw DESC
LIMIT 25
CorporateEntity: Corporate entities in a specific jurisdiction
Lookup against the GLEIF universe filtered by ISO2 of the legal jurisdiction. iso2, jurisdiction, lei and name_normalised are all indexed (100% fill).
MATCH (c:CorporateEntity)
WHERE c.iso2 = 'CH' AND c.entity_status = 'ACTIVE'
RETURN c.lei, c.name, c.legal_form, c.jurisdiction
ORDER BY c.name
LIMIT 50
CorporateEntity: Subsidiaries of a corporate group
ULTIMATE_PARENT edges (129K) form the GLEIF corporate tree. Walk one hop from any parent to find consolidated subsidiaries.
MATCH (parent:CorporateEntity)<-[:ULTIMATE_PARENT]-(child:CorporateEntity)
WHERE parent.name CONTAINS 'BERKSHIRE HATHAWAY'
RETURN parent.name AS parent_name,
child.name AS subsidiary,
child.lei, child.jurisdiction
ORDER BY child.name
LIMIT 50
CorporateEntity: Cross-border operational footprint of a corporate group
OPERATED_BY (substations) combined with LOCATED_IN (geography) maps the countries a corporate group's operated infrastructure spans.
MATCH (c:CorporateEntity)<-[:OPERATED_BY]-(s:Substation)-[:LOCATED_IN]->(j:Jurisdiction)
WHERE c.name CONTAINS 'IBERDROLA'
RETURN c.name AS operator,
j.iso3 AS country,
j.name AS country_name,
count(s) AS substation_count
ORDER BY substation_count DESC
LIMIT 30
Company: SEC-registered companies in a country
SEC EDGAR-registered companies filtered by country of registration. Smaller universe (20K) than CorporateEntity but with ticker, CIK and exchange.
MATCH (c:Company)
WHERE c.country = 'US'
RETURN c.cik, c.name, c.ticker, c.exchange
ORDER BY c.name
LIMIT 50
Company: Companies bridged to their GLEIF identity
SAME_AS edge (9,940) is the entity-resolution bridge from SEC filings into GLEIF. Direction is CorporateEntity -> Company.
MATCH (ce:CorporateEntity)-[:SAME_AS]->(co:Company)
WHERE co.country = 'US'
RETURN co.name AS sec_name, co.ticker,
ce.lei, ce.jurisdiction, ce.legal_form
LIMIT 50
Company: SEC companies with operational footprint
Four-hop traversal: SEC filing -> GLEIF entity -> operated substations -> countries. Connects the disclosure layer to the physical asset graph.
MATCH (co:Company)<-[:SAME_AS]-(ce:CorporateEntity)<-[:OPERATED_BY]-(s:Substation)-[:LOCATED_IN]->(j:Jurisdiction)
WHERE co.ticker IS NOT NULL
WITH co, ce, count(DISTINCT s) AS substations, collect(DISTINCT j.iso3) AS countries
WHERE substations >= 5
RETURN co.name AS company, co.ticker, ce.lei, substations, countries
ORDER BY substations DESC
LIMIT 30
Grid: All grid zones with their governing jurisdiction
GOVERNED_BY edge connects each TSO/ISO grid zone to its regulating country. Foundation for any market-data join.
MATCH (g:Grid)-[:GOVERNED_BY]->(j:Jurisdiction)
RETURN g.id, g.name AS grid_name,
j.iso3 AS country, j.name AS country_name,
g.dominant_fuel
ORDER BY g.id
LIMIT 100
Grid: Generation capacity mix in a specific grid
Operating generators in one grid zone, aggregated by fuel. The core 'fuel mix' view.
MATCH (g:Generator)-[:OPERATES_IN]->(grid:Grid {id: 'GRID-US-TEX-ERCO'})
WHERE g.lifecycle_status = 'operational'
RETURN g.fuel_canonical AS fuel,
count(g) AS units,
sum(g.capacity_mw) AS total_mw
ORDER BY total_mw DESC
LIMIT 20
Grid: Fossil generation share by grid zone
Per-grid ratio of fossil to total operating capacity. A simple but powerful screening signal for transition exposure.
MATCH (g:Generator)-[:OPERATES_IN]->(grid:Grid)
WHERE g.lifecycle_status = 'operational' AND g.capacity_mw IS NOT NULL
WITH grid,
sum(CASE WHEN g.fuel_canonical IN ['Coal','Gas','Oil'] THEN g.capacity_mw ELSE 0 END) AS fossil_mw,
sum(g.capacity_mw) AS total_mw
WHERE total_mw > 1000
RETURN grid.id, grid.name,
total_mw, fossil_mw,
round(10.0 * 100.0 * fossil_mw / total_mw) / 10.0 AS fossil_pct
ORDER BY fossil_pct DESC
LIMIT 30
Jurisdiction: Jurisdiction lookup by ISO code
Canonical country resolution. Indexed on both iso2 and iso3, with rich enrichment (99-100% fill on demographics, governance, energy mix).
MATCH (j:Jurisdiction)
WHERE j.iso_alpha2 IN ['GB', 'FR', 'DE', 'ES', 'IT']
RETURN j.iso_alpha2, j.name, j.population, j.gdp_per_capita, j.demand_twh
ORDER BY j.name
LIMIT 10
Jurisdiction: Infrastructure inventory for a single country
Count every kind of physical asset LOCATED_IN a jurisdiction. The fastest way to scope a market-entry analysis.
MATCH (n)-[:LOCATED_IN]->(j:Jurisdiction {iso_alpha2: 'JP'})
RETURN labels(n)[0] AS asset_type, count(n) AS count
ORDER BY count DESC
LIMIT 30
Jurisdiction: Trade partners cross-referenced with corporate footprint
TRADES_WITH (16,865 edges) gives bilateral trade topology; HEADQUARTERED_IN (5,197) anchors each entity to its HQ country. Surfaces dual physical + commercial exposure.
MATCH (a:Jurisdiction {iso_alpha2: 'GB'})-[:TRADES_WITH]->(b:Jurisdiction)
WITH a, b
OPTIONAL MATCH (c:CorporateEntity)-[:HEADQUARTERED_IN]->(a)
OPTIONAL MATCH (c)<-[:OPERATED_BY]-(s:Substation)-[:LOCATED_IN]->(b)
WITH b, count(DISTINCT c) AS uk_hq_entities, count(DISTINCT s) AS uk_operated_subs
WHERE uk_hq_entities > 0
RETURN b.iso3 AS trade_partner, b.name,
uk_hq_entities,
uk_operated_subs
ORDER BY uk_hq_entities DESC
LIMIT 25
Cross-domain: Greenwashing screen: operator clean vs fossil capacity split
Per-operator capacity by fuel. Generator -> Substation (CONNECTS_TO, 85K) -> CorporateEntity (OPERATED_BY) chains physical assets to their operating entity. Coverage limited to generators with a known substation connection and capacity_mw.
MATCH (g:Generator)-[:CONNECTS_TO]->(s:Substation)-[:OPERATED_BY]->(c:CorporateEntity)
WHERE g.lifecycle_status = 'operational' AND g.capacity_mw IS NOT NULL
WITH c,
sum(CASE WHEN g.fuel_canonical IN ['Coal','Gas','Oil']
THEN g.capacity_mw ELSE 0 END) AS fossil_mw,
sum(CASE WHEN g.fuel_canonical IN ['Wind','Solar','Hydro','Nuclear']
THEN g.capacity_mw ELSE 0 END) AS clean_mw,
sum(g.capacity_mw) AS total_mw
WHERE total_mw > 5000
RETURN c.name AS operator, c.lei,
total_mw,
round(10.0 * 100.0 * fossil_mw / total_mw) / 10.0 AS fossil_pct,
round(10.0 * 100.0 * clean_mw / total_mw) / 10.0 AS clean_pct
ORDER BY total_mw DESC
LIMIT 30
Cross-domain: Critical infrastructure ownership chain
From high-voltage US substations, walk the operator chain via ULTIMATE_PARENT. Demonstrates tracing physical assets to ultimate corporate controllers — the platform's core value proposition.
MATCH (s:Substation)-[:OPERATED_BY]->(direct:CorporateEntity)
WHERE s.voltage_kv >= 500 AND s.iso3 = 'US'
OPTIONAL MATCH (direct)-[:ULTIMATE_PARENT*1..3]->(ultimate:CorporateEntity)
RETURN s.name AS substation,
s.voltage_kv,
direct.name AS direct_operator,
coalesce(ultimate.name, direct.name) AS ultimate_parent,
coalesce(ultimate.lei, direct.lei) AS ultimate_lei
ORDER BY s.voltage_kv DESC
LIMIT 25
Cross-domain: Cross-border physical interconnection inventory
Every transmission line whose two endpoints sit in different countries (220kV+), with voltage, length and operator. The view that makes electrical interconnection real.
MATCH (s1:Substation)-[:ENDPOINT_OF]->(t:TransmissionLine)<-[:ENDPOINT_OF]-(s2:Substation)
WHERE s1.iso3 <> s2.iso3 AND t.voltage_kv >= 220 AND s1.id < s2.id
OPTIONAL MATCH (t)-[:OPERATED_BY]->(op:CorporateEntity)
RETURN s1.iso3 + '-' + s2.iso3 AS corridor,
t.voltage_kv, t.length_km,
s1.name AS from_substation,
s2.name AS to_substation,
op.name AS operator
ORDER BY t.voltage_kv DESC, t.length_km DESC
LIMIT 50
Cross-domain: Nuclear supply-chain dependency by country
Reactor host countries cross-referenced with domestic fuel-cycle facilities and uranium deposits. Surfaces national fuel-cycle self-sufficiency vs import dependence.
MATCH (r:Reactor)-[:LOCATED_IN]->(j:Jurisdiction)
WHERE r.status = 'operational'
WITH j, count(r) AS reactors, sum(r.net_mwe) AS reactor_mw
OPTIONAL MATCH (f:FuelCycleFacility)-[:LOCATED_IN]->(j)
OPTIONAL MATCH (u:UraniumDeposit)-[:LOCATED_IN]->(j)
RETURN j.iso3 AS country, j.name AS country_name,
reactors, reactor_mw,
count(DISTINCT f) AS domestic_fuel_facilities,
count(DISTINCT u) AS domestic_uranium_deposits
ORDER BY reactor_mw DESC
LIMIT 25