From f6617ea85969f60f87371fa909c4e21e16aace41 Mon Sep 17 00:00:00 2001 From: Suvayu Ali Date: Wed, 14 Feb 2024 13:51:36 +0100 Subject: [PATCH] ESDL tests --- src/parsers.jl | 13 +- test/data/esdl/norse-mythology.esdl | 360 ++++++++++++++++++++++++++++ test/data/esdl/norse-mythology.json | 1 + test/test-parsers.jl | 19 ++ 4 files changed, 383 insertions(+), 10 deletions(-) create mode 100644 test/data/esdl/norse-mythology.esdl create mode 100644 test/data/esdl/norse-mythology.json create mode 100644 test/test-parsers.jl diff --git a/src/parsers.jl b/src/parsers.jl index 8102505..6825171 100644 --- a/src/parsers.jl +++ b/src/parsers.jl @@ -109,18 +109,11 @@ function json_get(json, reference::String; trunc::Int = 0) end # NOTE: index 2:end because there is a leading '/' idx = collect(Iterators.flatten(map(to_idx, split(reference, "/@"))))[2:(end-trunc)] - reduce(getindex, idx; init = json) + reduce(getindex, idx; init = json) # since $ref is from JSON, assume valid end -function json_get(json, idcs::Vector{Symbol}; default::Any = nothing) - reduce_unless((ret, i) -> get(ret, i, default), idcs; init = json, sentinel = default) -end - -function json_get(json, idcs::Vector{Int}; default::Any = nothing) - reduce_unless((ret, i) -> get(ret, i, default), idcs; init = json, sentinel = default) -end - -function json_get(json, idcs::Vector{Union{Int,Symbol}}; default::Any = nothing) +# ideally idcs should be typed Vector{Union{Int64,Symbol}} +function json_get(json, idcs; default::Any = nothing) reduce_unless((ret, i) -> get(ret, i, default), idcs; init = json, sentinel = default) end diff --git a/test/data/esdl/norse-mythology.esdl b/test/data/esdl/norse-mythology.esdl new file mode 100644 index 0000000..7c3b8e5 --- /dev/null +++ b/test/data/esdl/norse-mythology.esdl @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/data/esdl/norse-mythology.json b/test/data/esdl/norse-mythology.json new file mode 100644 index 0000000..89c2ceb --- /dev/null +++ b/test/data/esdl/norse-mythology.json @@ -0,0 +1 @@ +{"eClass": "http://www.tno.nl/esdl#//EnergySystem", "esdlVersion": "v2303", "description": "", "name": "Norse Mythology", "version": "6", "id": "d4643afe-3813-4981-8fcf-974ca7018b5b", "instance": [{"eClass": "http://www.tno.nl/esdl#//Instance", "area": {"eClass": "http://www.tno.nl/esdl#//Area", "asset": [{"eClass": "http://www.tno.nl/esdl#//ElectricityCable", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@asset.0/@port.1"}], "name": "In", "id": "69e69ad6-c8c6-4e51-92a6-1baf4bfa2f83"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.6/@port.0"}], "name": "Out", "id": "dcf68219-bdf5-4e35-9053-8bbfbe8feee8"}], "length": 7012.8, "name": "ElectricityCable_c27f", "id": "c27fa894-f32c-4e6e-b396-bd85deb6aaf0", "geometry": {"eClass": "http://www.tno.nl/esdl#//Line", "point": [{"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.054267883300785, "lat": 64.26219288908568}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.035728454589847, "lat": 64.24892076874816}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.946121215820316, "lat": 64.25026318304684}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.93925476074219, "lat": 64.24220771909953}], "CRS": "WGS84"}}, {"eClass": "http://www.tno.nl/esdl#//ElectricityCable", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@asset.0/@port.1"}], "name": "In", "id": "ace3fa7f-b41f-4a47-9cc5-bd172900ad0d"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.2/@port.0"}], "name": "Out", "id": "dd64ab3d-c368-43f0-9311-c912106e87bb"}], "length": 4785.0, "name": "ElectricityCable_5e94", "id": "5e949943-7966-446e-9514-afe5f30668b6", "geometry": {"eClass": "http://www.tno.nl/esdl#//Line", "point": [{"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.03916168212891, "lat": 64.27322328178597}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.940628051757816, "lat": 64.2779918168504}], "CRS": "WGS84"}}, {"eClass": "http://www.tno.nl/esdl#//ElectricityCable", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.2/@port.1"}], "name": "In", "id": "c02a7041-0be1-41b7-ab0a-90e6dfff7169"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.6/@port.0"}], "name": "Out", "id": "34823af7-a4d9-4ae5-a715-bbab03bea4ac"}], "length": 2848.0, "name": "ElectricityCable_acfb", "id": "acfb0111-e7d6-42bd-a2b4-de555304c8e8", "geometry": {"eClass": "http://www.tno.nl/esdl#//Line", "point": [{"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.91384887695313, "lat": 64.26681426554525}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.931358337402344, "lat": 64.24235691569335}], "CRS": "WGS84"}}, {"eClass": "http://www.tno.nl/esdl#//Pipe", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@asset.1/@port.1"}], "name": "In", "id": "a4feae4e-b6bd-4a21-b415-002ddf7b5be0"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.7/@port.0"}], "name": "Out", "id": "1453f4b9-67eb-40b9-ad5b-2e17f4424e15"}], "name": "Pipe_2c4b", "id": "2c4b3b2f-264f-4027-ae2e-f3ec5cdc0bee", "geometry": {"eClass": "http://www.tno.nl/esdl#//Line", "point": [{"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.10954284667969, "lat": 64.2586145181298}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.096153259277347, "lat": 64.24817495485091}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.044998168945316, "lat": 64.24832411924044}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.04019165039063, "lat": 64.23206046160136}], "CRS": "WGS84"}, "length": 5623.5}, {"eClass": "http://www.tno.nl/esdl#//Pipe", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.3/@port.1"}], "name": "In", "id": "d72b05fd-fd21-436c-bef6-767c2c9f9de4"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.7/@port.0"}], "name": "Out", "id": "6cfe90b8-2d51-4b3a-b2f4-cef6e0742250"}], "name": "Pipe_d0f9", "id": "d0f9a4d9-2fbe-4c4e-83b7-dcd356ac49cf", "geometry": {"eClass": "http://www.tno.nl/esdl#//Line", "point": [{"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.854454040527347, "lat": 64.26562172629494}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.872650146484375, "lat": 64.25339522950755}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.983886718750004, "lat": 64.25443916611019}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.98800659179688, "lat": 64.24310288658496}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.033325195312504, "lat": 64.2393728308295}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.03469848632813, "lat": 64.23250821324537}], "CRS": "WGS84"}, "length": 11264.1}, {"eClass": "http://www.tno.nl/esdl#//Pipe", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@asset.1/@port.1"}], "name": "In", "id": "624c451c-6da6-4941-9830-1e0068aa75fb"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.3/@port.0"}], "name": "Out", "id": "bea61cda-e8f3-462c-8abb-0ef46298dc81"}], "name": "Pipe_5563", "id": "5563475e-dad4-4ec6-a480-25f29aa09211", "geometry": {"eClass": "http://www.tno.nl/esdl#//Line", "point": [{"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.101989746093754, "lat": 64.25876362617463}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.096153259277347, "lat": 64.25533393752119}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.983886718750004, "lat": 64.25906183984983}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.880546569824222, "lat": 64.2577198529598}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.86200714111328, "lat": 64.26606893454861}], "CRS": "WGS84"}, "length": 12194.6}], "name": "Iceland", "area": [{"eClass": "http://www.tno.nl/esdl#//Area", "name": "Valhalla", "geometry": {"eClass": "http://www.tno.nl/esdl#//Polygon", "CRS": "WGS84", "exterior": {"eClass": "http://www.tno.nl/esdl#//SubPolygon", "point": [{"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.96843719482422, "lat": 64.24161092467241}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.076240539550785, "lat": 64.22474615860128}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.06731414794922, "lat": 64.1987572878947}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.834584960937505, "lat": 64.19243510075158}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.829734802246097, "lat": 64.23802988755861}]}}, "asset": [{"eClass": "http://www.tno.nl/esdl#//Export", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.6/@port.1"}], "name": "In", "id": "29ce99fd-0c4f-47ae-8e29-ab6c4041a400"}], "name": "Export_06ca", "id": "06ca24ec-77f5-44fe-be5a-bf2a059e8654", "power": 120.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.901145935058597, "lat": 64.23429914733688}}, {"eClass": "http://www.tno.nl/esdl#//Electrolyzer", "technicalLifetime": 2.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "ef1036b1-0496-4503-a174-026b9169f98e", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "0e94f850-fe14-42c2-996f-ad4f6dcc9b9a", "value": 62.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "567bbf5b-6606-42bb-a306-f24ffc052144", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "78e6ccda-9b94-4e5a-a2bc-28e0ae50a51f", "value": 26.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "13b95d58-007b-4b0e-b358-782a24a9897b", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "power": 80.0, "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.6/@port.1"}], "name": "In", "id": "a439cb30-d40f-498b-b6a7-e0cfcbda0752"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.9/@port.0"}], "name": "Out", "id": "f4e1f65a-98bd-482c-8fd1-56cd70d4b515"}], "name": "Electrolyzer_41ac", "id": "41ac619a-f1c5-4d89-a6f7-e75a9783c189", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.953330993652347, "lat": 64.2198191095311}}, {"eClass": "http://www.tno.nl/esdl#//GasStorage", "technicalLifetime": 3.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "235ed47c-6a88-4d90-b10a-b4b0f7ab92ee", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "acbd2711-9014-4e6f-8462-34358e799cbf", "value": 50.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "1b85ef70-6b17-4fa2-8a4d-e26a80f47665", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "41e539ad-dace-4098-ae50-6deb7e409afb", "value": 100.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "4467313f-fcf3-4049-9c2a-53fe870c499d", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.9/@port.1"}], "name": "In", "id": "584e6bd3-36ac-4540-b7d1-c6280785b9b9"}], "capacity": 1000.0, "maxDischargeRate": 200.0, "name": "GasStorage_f713", "maxChargeRate": 100.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.99349975585938, "lat": 64.21683259218487}, "fillLevel": 500.0, "id": "f7138a43-41d8-4fa7-9504-ed340bc5205e"}, {"eClass": "http://www.tno.nl/esdl#//HeatPump", "technicalLifetime": 2.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "acbf20d9-e15f-4b5b-ac0b-f1ebd44f1550", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "ef041594-ad92-4c87-9346-05511bd25db8", "value": 15.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "93a93849-da7a-4d75-9607-7a6c6edfbea1", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "467c3336-f052-44cf-8ac8-130c0d755d9c", "value": 16.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "9e0d5847-d565-461a-b7f6-65bb18cbf680", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "power": 10.0, "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.6/@port.1"}], "name": "In", "id": "2f90ec2a-9efc-4979-9d86-99202db07c29"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.8/@port.0"}], "name": "Out", "id": "bb1b80cd-bce7-467d-8e86-b8b0e8644ee6"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.12/@port.0"}], "name": "Waste heat inport", "id": "82d42ef9-7d32-4991-821c-62b03a751ccf"}], "name": "HeatPump_4b33", "id": "4b33f488-b157-411a-ab02-7a0d43c154a3", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.88912963867188, "lat": 64.22728399302186}}, {"eClass": "http://www.tno.nl/esdl#//FuelCell", "technicalLifetime": 3.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "f4430dfa-b5e4-4491-971e-0a1276bb4428", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "e5e20c91-0a64-4d08-b724-815dfa04d475", "value": 55.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "1ebb56e6-eb1b-41d9-9ba1-f0aced6b2731", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "5be5a662-55ce-4117-bf12-1072a6c2972d", "value": 60.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "bbf2fac1-240f-49b2-b9fe-c9aa248f6237", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "power": 90.0, "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.9/@port.1"}], "name": "In", "id": "27e984b8-7414-46c7-9f73-5f089a3c7719"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.6/@port.0"}], "name": "E Out", "id": "a02d8cc6-ea45-4bfe-91c0-1813995c5f34"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.8/@port.0"}], "name": "H Out", "id": "33e09eff-3a6f-4ba0-aa52-7d3595aef6f8"}], "name": "FuelCell_9121", "id": "91218656-3706-403a-909c-f67d14f8b40c", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.916252136230472, "lat": 64.20667602226591}}, {"eClass": "http://www.tno.nl/esdl#//PowerPlant", "technicalLifetime": 12.0, "type": "COMBINED_CYCLE_GAS_TURBINE", "power": 100.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "b9d6a549-1643-4364-81d3-f66f13d39f12", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "2f08aa06-9279-4ba0-942a-b4696a56a186", "value": 55.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "a8cc8399-5739-42f0-af76-28eeaa493e2e", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "bbd99afa-e6b8-43c5-938a-fe6a5de8a094", "value": 51.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "9919ad01-e8a3-4bdf-aedf-d3b699c195d9", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.7/@port.1"}], "name": "In", "id": "ec622226-8d89-4464-8147-c7eafea89ca5"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.6/@port.0"}], "name": "Out", "id": "c0ad56e3-3a83-46e9-8d2e-43cbd02e08c9"}], "name": "PowerPlant_7227", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.965690612792972, "lat": 64.22862745817535}, "id": "7227d20f-918c-4de1-b698-a40ba29e9bc7"}, {"eClass": "http://www.tno.nl/esdl#//ElectricityNetwork", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.4/@port.1"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.5/@port.1"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@asset.0/@port.1"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@asset.2/@port.1"}], "name": "In", "id": "5e71413e-6c3c-491f-9aef-f7702dffc477"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.0/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.1/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.3/@port.0"}], "name": "Out", "id": "dc76a962-0359-4f88-9774-054c81aa78f2"}], "name": "ElectricityNetwork_be51", "id": "be51458b-218f-46cb-af0b-315fc879b0f0", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.932731628417972, "lat": 64.23429914733688}}, {"eClass": "http://www.tno.nl/esdl#//GasNetwork", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@asset.3/@port.1"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@asset.4/@port.1"}], "name": "In", "id": "7b132b24-fb51-45a5-b56a-9f80670eaac7"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.5/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.11/@port.0"}], "name": "Out", "id": "34ffa8ad-f971-4c52-bd72-461841ffd549"}], "name": "Gas network", "id": "bbaf1227-a413-4017-8cf9-6462f1947084", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.03469848632813, "lat": 64.22056568851187}}, {"eClass": "http://www.tno.nl/esdl#//HeatNetwork", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.3/@port.1"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.4/@port.2"}], "name": "In", "id": "7cd2a9f9-da85-4a0f-9c66-89376480ae39"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.13/@port.0"}], "name": "Out", "id": "7a4a907e-331c-49e1-9630-75a50f5ce061"}], "name": "HeatNetwork_07de", "id": "07de2a53-5a92-4eb3-835a-d89fde7cadbe", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.86750030517578, "lat": 64.20368808661304}}, {"eClass": "http://www.tno.nl/esdl#//GasNetwork", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.1/@port.1"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.11/@port.1"}], "name": "In", "id": "87d08281-78d2-40de-8da5-b0db15c03361"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.2/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.4/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.10/@port.0"}], "name": "Out", "id": "226ea9fb-b875-4091-b3e8-9d21786b30b7"}], "name": "Hydrogen network", "id": "649b8515-cf84-438d-8e74-1da6c5073b69", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.973587036132812, "lat": 64.21011174971652}}, {"eClass": "http://www.tno.nl/esdl#//GasDemand", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.9/@port.1"}], "name": "In", "id": "509306f7-dd17-4597-8166-b7f8fa8854d0"}], "name": "Hydrogen demand", "id": "45fa1a43-8943-4d8f-8eba-bafbae17f974", "power": 50.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.97427368164063, "lat": 64.21952047229907}}, {"eClass": "http://www.tno.nl/esdl#//GasConversion", "technicalLifetime": 5.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "500c86f2-be54-409a-8960-8316a8149dbf", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "46394d97-7bb1-4403-b18f-d668c3c7bf89", "value": 12.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "5b76b520-c0cc-4b31-83e3-51e17a450b4a", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "a192a369-b8f5-484d-b456-e051ae6002d1", "value": 188.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "761e8aca-5cd1-4271-ab6e-a3c0b772611d", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "power": 100.0, "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.7/@port.1"}], "name": "In", "id": "2582d2d0-24b7-4e82-a2df-d192cfe55fbe"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.9/@port.0"}], "name": "Out", "id": "832a041e-8e71-46bc-8945-69705d87ba0a"}], "name": "Hydrogen generator", "id": "05058aad-f87e-4207-9118-e005a62a4004", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.01341247558594, "lat": 64.20772172357896}}, {"eClass": "http://www.tno.nl/esdl#//HeatProducer", "technicalLifetime": 2.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "f1909582-03bf-4d08-8089-6b4c0548a741", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "ef99b456-3431-49d2-9eb0-1bfd5f2d6c2a", "value": 2.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "986b29dc-081e-4ed5-9784-7d7d07ff2943", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "97abf1f5-2e52-4b9d-af64-6cc5266febfc", "value": 14.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "3638b024-9076-455c-9f4c-b1644ab99860", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "port": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.0/@asset.3/@port.2"}], "name": "Out", "id": "db89cb60-8609-4417-bdbe-a7704a734176"}], "name": "Waste heat", "id": "f1b99314-4b7c-4f6b-88f2-520f4617fcf6", "power": 100.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.857200622558597, "lat": 64.22982159465025}}, {"eClass": "http://www.tno.nl/esdl#//HeatingDemand", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.0/@asset.8/@port.1"}], "name": "In", "id": "08332a70-84ef-43bb-8619-a1805dd8a52f"}], "name": "HeatingDemand_d3b9", "id": "d3b98f6d-abda-4f10-98fc-f9d86f77fbe4", "power": 10.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.84587097167969, "lat": 64.20174575554563}}], "id": "dd27f13b-6d1e-4532-9092-bf5240099570"}, {"eClass": "http://www.tno.nl/esdl#//Area", "name": "Asgard", "geometry": {"eClass": "http://www.tno.nl/esdl#//Polygon", "CRS": "WGS84", "exterior": {"eClass": "http://www.tno.nl/esdl#//SubPolygon", "point": [{"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.105079650878906, "lat": 64.25995646156042}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.18541717529297, "lat": 64.26085105429894}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.20086669921875, "lat": 64.29541976266103}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.144905090332035, "lat": 64.3039063130678}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.05667114257813, "lat": 64.2983977970889}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.038475036621097, "lat": 64.26547265526776}]}}, "asset": [{"eClass": "http://www.tno.nl/esdl#//ElectricityNetwork", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@asset.2/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@asset.4/@port.1"}], "name": "In", "id": "d6255891-64af-4424-8d7a-b1a0caa79c35"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@asset.0/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@asset.1/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@asset.3/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@asset.5/@port.0"}], "name": "Out", "id": "8019638b-ea51-4a66-9d6a-2d7cbb3c2afd"}], "name": "ElectricityNetwork_bf61", "id": "bf612234-bcde-40a1-8c6a-943acf8cefbb", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.06353759765625, "lat": 64.26770863618859}}, {"eClass": "http://www.tno.nl/esdl#//GasNetwork", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@asset.6/@port.0"}], "name": "In", "id": "994cf723-3af6-4d4b-8347-292169d5d1c4"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@asset.3/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@asset.5/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@asset.4/@port.0"}], "name": "Out", "id": "ca13a453-57d1-4a63-b933-ca63fe33af34"}], "name": "GasNetwork_6912", "id": "691233d5-19e0-4338-9b73-fe0ff2b31329", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.111946105957035, "lat": 64.26353465868937}}, {"eClass": "http://www.tno.nl/esdl#//PVInstallation", "technicalLifetime": 2.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "bff0b4ab-9959-4b26-9aa4-a2bf0dafadf9", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "67dde7d3-2a4b-45e6-b85d-a6e84d55eb9c", "value": 2.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "e7fda4c0-4631-43ba-be45-78be78af4d1e", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "34338b70-ca31-4b62-b610-b3a3793cd344", "value": 20.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "b52aa3a1-1af8-4a66-9ece-d8e526008848", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "port": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@asset.0/@port.0"}], "name": "Out", "id": "9bd4851c-7b05-46eb-ae42-21eccc3b17f9"}], "name": "PVInstallation_e36d", "id": "e36d17db-241b-4385-b479-b5e62eae095d", "power": 150.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.061477661132816, "lat": 64.28737746326682}}, {"eClass": "http://www.tno.nl/esdl#//ElectricityDemand", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@asset.0/@port.1"}], "name": "In", "id": "efd5ad97-7b65-4acc-8bfc-44fb181daa84"}], "name": "ElectricityDemand_928f", "id": "928f1a33-549d-4e45-86aa-bb2258458a67", "power": 150.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.046714782714844, "lat": 64.26770863618859}}, {"eClass": "http://www.tno.nl/esdl#//PowerPlant", "technicalLifetime": 10.0, "type": "COMBINED_CYCLE_GAS_TURBINE", "power": 1000.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "19ae3d7c-5aeb-4429-a943-3d94b30e9851", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "4e6be453-9010-456e-b61d-28c2a010b7cf", "value": 2.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "196564d6-6a6b-4b26-8088-52a62dc84070", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "15a70fe0-6bd4-4525-9128-e10696078e02", "value": 10.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "14e9ba15-f6ff-4480-840c-01c688b3207c", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@asset.1/@port.1"}], "name": "In", "id": "9b1b3014-be88-4e51-85d7-479a6ed2a42c"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@asset.0/@port.0"}], "name": "Out", "id": "b7b65117-a9fd-4fe9-934d-1626a9939cfe"}], "efficiency": 0.5, "name": "PowerPlant_4e99", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.087913513183597, "lat": 64.26547265526776}, "id": "4e9941cd-3e92-4b52-bc66-5ca5e50ec16a"}, {"eClass": "http://www.tno.nl/esdl#//Battery", "technicalLifetime": 1.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "8a6e1d2a-c33f-4bf5-ae63-1b27b74e8999", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "c67c7311-a277-4594-bb43-dba49d881fdc", "value": 10.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "84e0236f-bb17-4607-8ec6-69a2b6922ff2", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "3703658f-f737-4a1c-a1a0-79857f35c75a", "value": 100.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "934cfee2-ce88-4956-bdf8-79e29cb30360", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@asset.0/@port.1"}], "name": "In", "id": "f937380b-3ab1-4e57-b30d-65d90f5b2d4d"}], "capacity": 1000.0, "maxDischargeRate": 100.0, "name": "Battery_0c0a", "maxChargeRate": 10.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.084136962890625, "lat": 64.27828982294201}, "fillLevel": 500.0, "id": "0c0a3807-db52-4e97-ac63-7ada2603a0a4"}, {"eClass": "http://www.tno.nl/esdl#//Import", "technicalLifetime": 1.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "09c113d1-0211-4946-9c83-5ff840620fce", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "edb4688f-bc77-4583-87da-6c917dd16997", "value": 1.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "323d590e-efe8-41fa-a0ce-3f289fe7622d", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "56fbcede-ae93-41e0-bc7c-746ce56b9de7", "value": 10.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "5046b156-a562-4c6a-9875-0aebd920ea85", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "port": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@asset.1/@port.0"}], "name": "Out", "id": "eeace68b-c6b6-498b-9980-356b6243e122"}], "name": "Import_d41d", "id": "d41de9ec-8142-4408-825e-c32a396526ad", "power": 100.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -21.154861450195316, "lat": 64.28454720766985}}], "area": [{"eClass": "http://www.tno.nl/esdl#//Area", "name": "Midgard", "geometry": {"eClass": "http://www.tno.nl/esdl#//Polygon", "CRS": "WGS84", "exterior": {"eClass": "http://www.tno.nl/esdl#//SubPolygon", "point": [{"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.931015014648438, "lat": 64.26905013784292}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.946121215820316, "lat": 64.29690882007257}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.85617065429688, "lat": 64.30941372865048}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.78922271728516, "lat": 64.29854669036891}, {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.80020904541016, "lat": 64.26636706936117}]}}, "asset": [{"eClass": "http://www.tno.nl/esdl#//WindTurbine", "technicalLifetime": 5.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "2e9f6223-d0a8-495a-a217-9a3942f22db0", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "c782cdd9-e36d-499b-b285-862e1b57a7b9", "value": 3.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "8b208543-8b4a-4988-be95-cf00ffe37ed2", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "482d61f7-ea77-4b4a-a811-62b22bc2b171", "value": 12.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "57ec3f75-71fe-4299-b621-43ed19123132", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "port": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.2/@port.0"}], "name": "Out", "id": "78aa04bd-6e64-40f3-86b2-bab87cf3936e"}], "name": "WindTurbine_6cb4", "id": "6cb408e6-ab0c-4d1e-91e8-497a9c1bb21c", "power": 120.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.895996093750004, "lat": 64.294526289623}}, {"eClass": "http://www.tno.nl/esdl#//Import", "technicalLifetime": 1.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "60825dec-e151-4cc0-9d85-e8c15f9f302e", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "d1b9c17d-21bd-4539-a4bf-0971707f589a", "value": 1.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "f2b2a2c9-4d8f-488f-9a12-8bd9cbd0832c", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "b7c8585b-b67e-4de9-a8e1-730e3e7d40e0", "value": 45.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "051818ef-c442-419a-ab2c-82477f0acb52", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "port": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.2/@port.0"}], "name": "Out", "id": "6a09f018-deea-49c1-94dc-557a5afec0c4"}], "name": "Import_56bb", "id": "56bba6e3-29ae-4b22-9005-111d03d240db", "power": 40.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.863037109375004, "lat": 64.28231259027915}}, {"eClass": "http://www.tno.nl/esdl#//ElectricityNetwork", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.0/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.1/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@asset.1/@port.1"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.6/@port.1"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.7/@port.1"}], "name": "In", "id": "7fd4562a-0345-4aa4-8723-01300f06eada"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@asset.2/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.4/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.5/@port.0"}], "name": "Out", "id": "f5f4ce72-dc9d-4928-8780-c69655cfe4d6"}], "name": "ElectricityNetwork_913c", "id": "913c7dac-c31f-46e3-b42d-2ed501a20be6", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.913505554199222, "lat": 64.27426646921975}}, {"eClass": "http://www.tno.nl/esdl#//GasNetwork", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@asset.5/@port.1"}], "name": "In", "id": "6e2be093-7baa-47bb-a98c-6093188845e2"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@asset.4/@port.0"}, {"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.6/@port.0"}], "name": "Out", "id": "f4126c2b-33ca-472f-b756-fe9894b03236"}], "name": "GasNetwork_0a42", "id": "0a426095-38cc-4b40-9cfc-bf44d6ff94f7", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.853080749511722, "lat": 64.27024252904668}}, {"eClass": "http://www.tno.nl/esdl#//PumpedHydroPower", "technicalLifetime": 2.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "9f61cb4a-50f3-413d-8e92-37b7aeba8b9a", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "ca417323-91c8-45ee-b13a-1aba3e072668", "value": 10.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "82bf3ae5-2daf-4ffe-a9ff-8cf27d250fe3", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "b73b8cc9-3e22-4199-a954-278f7f76a207", "value": 10.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "dffcb87a-cfcb-4d41-87fc-6ff260d573f6", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.2/@port.1"}], "name": "In", "id": "58194ed4-51ea-4086-abef-e804d11a98c1"}], "capacity": 2000.0, "maxDischargeRate": 20.0, "name": "PumpedHydroPower_eabf", "maxChargeRate": 100.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.92552185058594, "lat": 64.29363278764076}, "fillLevel": 2000.0, "id": "eabff8a3-a0bc-42da-a9c4-4d094cf2391a"}, {"eClass": "http://www.tno.nl/esdl#//ElectricityDemand", "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.2/@port.1"}], "name": "In", "id": "4d8e6f38-6ea6-41ea-a08b-25394cb0ed96"}], "name": "ElectricityDemand_1e9e", "id": "1e9ec4ee-e457-4c3c-9957-a4700498bb46", "power": 100.0, "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.87539672851563, "lat": 64.27098774740105}}, {"eClass": "http://www.tno.nl/esdl#//PowerPlant", "technicalLifetime": 1.0, "type": "COMBINED_CYCLE_GAS_TURBINE", "power": 20.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "383a3e95-e07c-47ac-aba5-0cdaca638a75", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "01ddee26-80c4-4964-832b-e8ce113cfe3f", "value": 12.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "b962f944-536f-4cdc-82ac-99fe266fd3e0", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "63ed74c0-6008-49c7-b708-08bcb2f26b9c", "value": 12.0}}, "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//OutPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.3/@port.1"}], "name": "In", "id": "d720f1c2-04d0-4bd6-b9a5-1fbe8d151427"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.2/@port.0"}], "name": "Out", "id": "f0433555-3e3c-4650-83fb-1bdb8e291e86"}], "name": "PowerPlant_2d4c", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.852737426757816, "lat": 64.2781408202984}, "id": "2d4c5a85-6765-4c54-9de6-8722256976ff"}, {"eClass": "http://www.tno.nl/esdl#//PowerPlant", "technicalLifetime": 12.0, "type": "NUCLEAR_3RD_GENERATION", "power": 200.0, "costInformation": {"eClass": "http://www.tno.nl/esdl#//CostInformation", "id": "689c8129-5d71-47ad-9c8d-86d569f674f4", "variableOperationalAndMaintenanceCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "120193ee-d5f2-4275-8397-568e6b6b894c", "value": 20.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "49407259-0037-4260-a0db-1ce4ae1233be", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh"}}, "investmentCosts": {"eClass": "http://www.tno.nl/esdl#//SingleValue", "id": "7a350f0d-7574-475d-a855-035c409ca4b5", "value": 20.0, "profileQuantityAndUnit": {"eClass": "http://www.tno.nl/esdl#//QuantityAndUnitType", "id": "9232171f-c4fb-4059-a1c2-743f072cd93f", "perUnit": "WATTHOUR", "perMultiplier": "MEGA", "unit": "EURO", "physicalQuantity": "COST", "description": "Cost in EUR/MWh/yr", "perTimeUnit": "YEAR"}}}, "port": [{"eClass": "http://www.tno.nl/esdl#//InPort", "name": "In", "id": "776a35a4-ef22-40a0-b488-94815b1b201a"}, {"eClass": "http://www.tno.nl/esdl#//OutPort", "connectedTo": [{"eClass": "http://www.tno.nl/esdl#//InPort", "$ref": "//@instance.0/@area/@area.1/@area.0/@asset.2/@port.0"}], "name": "Out", "id": "e2593ac4-78be-431d-b420-1207d7d67ca1"}], "name": "PowerPlant_4e1c", "geometry": {"eClass": "http://www.tno.nl/esdl#//Point", "lon": -20.87608337402344, "CRS": "WGS84", "lat": 64.2918456968408}, "id": "4e1cd004-da90-4135-8399-fb8c56dbdcb3"}], "id": "befa140e-ae38-4ac9-97c5-09376be5bbad"}], "id": "3c9f292f-d7a8-4f0b-b5a8-0b17dc6ca49e"}], "id": "83dfdeaf-f885-462a-ac24-d3d3118c8f15"}, "name": "Main", "id": "ad7d4261-f4f7-4c63-8935-8e26ebf09b2f"}]} \ No newline at end of file diff --git a/test/test-parsers.jl b/test/test-parsers.jl new file mode 100644 index 0000000..68423d1 --- /dev/null +++ b/test/test-parsers.jl @@ -0,0 +1,19 @@ +import JSON3 + +@testset "Follow references in JSON" begin + json_path = joinpath(DATA, "esdl/norse-mythology.json") + json = JSON3.read(open(f -> read(f, String), json_path)) + @testset "String references" begin + target = TulipaIO.json_get(json, "//@instance.0/@area/@area.1/@asset.1/@port.1") + @test "ca13a453-57d1-4a63-b933-ca63fe33af34" == target[:id] + target = TulipaIO.json_get(json, "//@instance.0/@area/@area.1/@asset.1/@port.1"; trunc = 2) + @test "GasNetwork_6912" == target[:name] + end + + @testset "Key/index references" begin + # NOTE: "//@instance.0/@area/@area.1/@area.0/@asset.4", indices are 1-indexed in Julia + target = TulipaIO.json_get(json, [:instance, 1, :area, :area, 2, :area, 1, :asset, 5]) + @test "PumpedHydroPower_eabf" == target[:name] + @test :costInformation in keys(target) + end +end