-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
WIP: Use micro model directly from Entsoe
- Loading branch information
1 parent
89189c0
commit 2117ac7
Showing
19 changed files
with
17,784 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
from __future__ import annotations | ||
|
||
import hashlib | ||
import re | ||
import uuid | ||
from collections.abc import Iterable | ||
from pathlib import Path | ||
|
||
from rdflib import ConjunctiveGraph | ||
from rdflib.term import Literal, URIRef | ||
|
||
|
||
class XmlModelAdaptor: | ||
def __init__(self, filenames: Iterable[Path]) -> None: | ||
self.graph = ConjunctiveGraph() | ||
for filename in filenames: | ||
profile = filename.stem.rpartition("/")[-1] | ||
uri = URIRef(f"http://cimsparql/xml-adpator/{profile}") | ||
destination_graph = self.graph.get_context(uri) | ||
destination_graph.parse(filename, publicID="http://cim") | ||
|
||
def namespaces(self) -> dict[str, str]: | ||
return {str(prefix): str(name) for prefix, name in self.graph.namespaces()} | ||
|
||
def graphs(self) -> list[str]: | ||
return self.graph.get_context() | ||
|
||
@classmethod | ||
def from_folder(cls, folder: Path) -> XmlModelAdaptor: | ||
return XmlModelAdaptor(list(folder.glob("*.xml"))) | ||
|
||
def add_mrid(self) -> None: | ||
""" | ||
Adds cim:IdentifiedObject.mRID if not present | ||
""" | ||
ns = self.namespaces() | ||
identified_obj_mrid = URIRef(f"{ns['cim']}IdentifiedObject.mRID") | ||
for result in self.graph.query( | ||
"select ?s ?g where {graph ?g {?s cim:IdentifiedObject.name ?name}}", initNs=ns | ||
): | ||
mrid_str = str(result["s"]).rpartition("#_")[-1] | ||
mrid = mrid_str if is_uuid(mrid_str) else generate_uuid(mrid_str) | ||
self.graph.add((result["s"], identified_obj_mrid, Literal(mrid), result["g"])) | ||
|
||
def adapt(self) -> None: | ||
self.add_mrid() | ||
|
||
def nq_bytes(self, contexts: list[URIRef] | None = None) -> bytes: | ||
""" | ||
Return the contexts as bytes. If contexts is None, the entire graph | ||
is exported | ||
""" | ||
if contexts is None: | ||
return self.graph.serialize(format="nquads", encoding="utf8") | ||
raise NotImplementedError() | ||
|
||
|
||
def is_uuid(x: str) -> bool: | ||
return re.match("^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", x) is not None | ||
|
||
|
||
def generate_uuid(x: str) -> str: | ||
h = hashlib.md5(x.encode(), usedforsecurity=False) | ||
return str(uuid.UUID(hex=h.hexdigest())) |
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,190 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cim="http://iec.ch/TC57/2013/CIM-schema-cim16#" xmlns:entsoe="http://entsoe.eu/CIM/SchemaExtension/3/1#" xmlns:md="http://iec.ch/TC57/61970-552/ModelDescription/1#"> | ||
<md:FullModel rdf:about="urn:uuid:3a4b6367-7c3e-4946-a1a1-c3a43c58fad3"> | ||
<md:Model.created>2014-10-24T14:27:49</md:Model.created> | ||
<md:Model.scenarioTime>2017-10-02T09:30:00Z</md:Model.scenarioTime> | ||
<md:Model.version>3</md:Model.version> | ||
<md:Model.DependentOn rdf:resource="urn:uuid:2399cbd0-9a39-11e0-aa80-0800200c9a66"/> | ||
<md:Model.DependentOn rdf:resource="urn:uuid:ec68a1f1-2396-4d6c-9479-716fd328e05f"/> | ||
<md:Model.DependentOn rdf:resource="urn:uuid:2399cbd1-9a39-11e0-aa80-0800200c9a66"/> | ||
<md:Model.description>CGMES Conformity Assessment: MicroGridTestConfiguration T1 (MAS NL). The model is owned by ENTSO-E and is provided by ENTSO-E “as it is”. To the fullest extent permitted by law, ENTSO-E shall not be liable for any damages of any kind arising out of the use of the model (including any of its subsequent modifications). ENTSO-E neither warrants, nor represents that the use of the model will not infringe the rights of third parties. Any use of the model shall include a reference to ENTSO-E. ENTSO-E web site is the only official source of information related to the model.</md:Model.description> | ||
<md:Model.modelingAuthoritySet>http://tennet.eu/nl/CAS2.0/MicroGridTestConfiguration</md:Model.modelingAuthoritySet> | ||
<md:Model.profile>http://entsoe.eu/CIM/Topology/4/1</md:Model.profile> | ||
<md:Model.Supersedes rdf:resource="urn:uuid:5d32d257-1646-4906-a1f6-4d7ce3f91569"/> | ||
</md:FullModel> | ||
<cim:ConnectivityNode rdf:about="#_c79edc43-4a5e-4ba8-bd08-16fcdd1beee7"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_97d7d14a-7294-458f-a8d7-024700a08717"/> | ||
</cim:ConnectivityNode> | ||
<cim:TopologicalNode rdf:ID="_97d7d14a-7294-458f-a8d7-024700a08717"> | ||
<cim:IdentifiedObject.name>NL_TR_BUS2</cim:IdentifiedObject.name> | ||
<cim:TopologicalNode.BaseVoltage rdf:resource="#_c1d5bff18f8011e08e4d00247eb1f55e"/> | ||
<cim:TopologicalNode.ConnectivityNodeContainer rdf:resource="#_8d8a82ba-b5b0-4e94-861a-192af055f2b8"/> | ||
</cim:TopologicalNode> | ||
<cim:ConnectivityNode rdf:about="#_7e9dd682-86cd-4594-b58f-1a0534540aca"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_afddd60d-f7e6-419a-a5c2-be28d29beaf9"/> | ||
</cim:ConnectivityNode> | ||
<cim:ConnectivityNode rdf:about="#_1520ab3c-9392-41c2-8873-39ec83a76c26"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_795a117d-7caf-4fc2-a8d9-dc8f4cf2344a"/> | ||
</cim:ConnectivityNode> | ||
<cim:ConnectivityNode rdf:about="#_ecb6a97e-bd2d-40c0-91f6-99dc1e7f59e2"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_6bdc33de-d027-49b7-b98f-3b3d87716615"/> | ||
</cim:ConnectivityNode> | ||
<cim:TopologicalNode rdf:ID="_6bdc33de-d027-49b7-b98f-3b3d87716615"> | ||
<cim:IdentifiedObject.name>N1230822413</cim:IdentifiedObject.name> | ||
<cim:TopologicalNode.BaseVoltage rdf:resource="#_c1d5bff18f8011e08e4d00247eb1f55e"/> | ||
<cim:TopologicalNode.ConnectivityNodeContainer rdf:resource="#_2a37dc57-2faf-464a-8175-bc415f9a635f"/> | ||
</cim:TopologicalNode> | ||
<cim:ConnectivityNode rdf:about="#_bd68fe72-ecac-45cc-9d34-33d95ed9a47a"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_97d7d14a-7294-458f-a8d7-024700a08717"/> | ||
</cim:ConnectivityNode> | ||
<cim:ConnectivityNode rdf:about="#_e4743b84-976a-414d-a888-4362532c39e6"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_795a117d-7caf-4fc2-a8d9-dc8f4cf2344a"/> | ||
</cim:ConnectivityNode> | ||
<cim:TopologicalNode rdf:ID="_795a117d-7caf-4fc2-a8d9-dc8f4cf2344a"> | ||
<cim:IdentifiedObject.name>NL_Busbar__4</cim:IdentifiedObject.name> | ||
<entsoe:IdentifiedObject.shortName>NL_B__4</entsoe:IdentifiedObject.shortName> | ||
<cim:IdentifiedObject.description>NAMST_22: UCTE DEF code</cim:IdentifiedObject.description> | ||
<cim:TopologicalNode.BaseVoltage rdf:resource="#_7891a026ba2c42098556665efd13ba94"/> | ||
<cim:TopologicalNode.ConnectivityNodeContainer rdf:resource="#_c1d5bfea8f8011e08e4d00247eb1f55e"/> | ||
</cim:TopologicalNode> | ||
<cim:ConnectivityNode rdf:about="#_124b9180-9112-4b8a-a651-9c1bb9a031da"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_6bdc33de-d027-49b7-b98f-3b3d87716615"/> | ||
</cim:ConnectivityNode> | ||
<cim:ConnectivityNode rdf:about="#_cae57656-3fc2-4f5e-9ab9-fa5b118a632a"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_afddd60d-f7e6-419a-a5c2-be28d29beaf9"/> | ||
</cim:ConnectivityNode> | ||
<cim:TopologicalNode rdf:ID="_afddd60d-f7e6-419a-a5c2-be28d29beaf9"> | ||
<cim:IdentifiedObject.name>NL-Busbar_2</cim:IdentifiedObject.name> | ||
<entsoe:IdentifiedObject.shortName>NL-B_2</entsoe:IdentifiedObject.shortName> | ||
<cim:IdentifiedObject.description>NAMST_21; this is the old code</cim:IdentifiedObject.description> | ||
<cim:TopologicalNode.BaseVoltage rdf:resource="#_7891a026ba2c42098556665efd13ba94"/> | ||
<cim:TopologicalNode.ConnectivityNodeContainer rdf:resource="#_c1d5bfea8f8011e08e4d00247eb1f55e"/> | ||
</cim:TopologicalNode> | ||
<cim:ConnectivityNode rdf:about="#_90f78705-5ef4-479a-8d5a-70efc554e0ba"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_81b0e447-181e-4aec-8921-f1dd7813bebc"/> | ||
</cim:ConnectivityNode> | ||
<cim:ConnectivityNode rdf:about="#_17eb9e2c-dd0d-4005-ac1c-c7174e3a88e1"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_81b0e447-181e-4aec-8921-f1dd7813bebc"/> | ||
</cim:ConnectivityNode> | ||
<cim:ConnectivityNode rdf:about="#_5cb2cb9a-695c-458b-b63a-a84c025981e4"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_81b0e447-181e-4aec-8921-f1dd7813bebc"/> | ||
</cim:ConnectivityNode> | ||
<cim:ConnectivityNode rdf:about="#_7221e0f9-008b-4273-8d40-b5d4c6efa0fe"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_81b0e447-181e-4aec-8921-f1dd7813bebc"/> | ||
</cim:ConnectivityNode> | ||
<cim:TopologicalNode rdf:ID="_81b0e447-181e-4aec-8921-f1dd7813bebc"> | ||
<cim:IdentifiedObject.name>N1230992195</cim:IdentifiedObject.name> | ||
<entsoe:IdentifiedObject.shortName>NL-_B_1</entsoe:IdentifiedObject.shortName> | ||
<cim:IdentifiedObject.description>NAMST_11; old UCTE Name</cim:IdentifiedObject.description> | ||
<cim:TopologicalNode.BaseVoltage rdf:resource="#_65dd04e792584b3b912374e35dec032e"/> | ||
<cim:TopologicalNode.ConnectivityNodeContainer rdf:resource="#_c1d5bfde8f8011e08e4d00247eb1f55e"/> | ||
</cim:TopologicalNode> | ||
<cim:ConnectivityNode rdf:about="#_f28134fe-076d-4605-aa92-b9e0bbe96841"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_795a117d-7caf-4fc2-a8d9-dc8f4cf2344a"/> | ||
</cim:ConnectivityNode> | ||
<cim:ConnectivityNode rdf:about="#_546121e7-acf3-4bc2-ae49-446e550a1e5c"> | ||
<cim:ConnectivityNode.TopologicalNode rdf:resource="#_795a117d-7caf-4fc2-a8d9-dc8f4cf2344a"/> | ||
</cim:ConnectivityNode> | ||
<cim:Terminal rdf:about="#_757d4f50-707b-47a0-891c-cbaefd649631"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_81b0e447-181e-4aec-8921-f1dd7813bebc"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_ae588863-b154-451d-978a-7ab08ac50fb6"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_f03d65b2a51049ffa533e433721145c1"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_653bc4b8-518b-4adc-9d68-012fb641fb1d"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_795a117d-7caf-4fc2-a8d9-dc8f4cf2344a"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_57979d14-d1d8-4311-ae53-aa8890423885"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_8d7bad8bcc634e0796e362390d9040b6"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_5dfee914-a4fd-4bde-a5b4-c4caa6378d10"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_795a117d-7caf-4fc2-a8d9-dc8f4cf2344a"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_6aecb9ba-5835-4b70-89bc-96d687e45779"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_1fa19c281c8f4e1eaad9e1cab70f923e"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_c557146e-dfc4-4020-9738-d592b188338b"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_81b0e447-181e-4aec-8921-f1dd7813bebc"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_8f308117-8bbd-4798-b145-4e78f7d049e7"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_9d25a1f9e5d14d47b6dcde99c4380b40"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_357e3e14-c38e-4a7e-9c95-b3dbe158f5f3"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_81b0e447-181e-4aec-8921-f1dd7813bebc"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_6b1cd30c-19ba-44e1-9447-d01db6b1ef9d"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_d4affe50316740bdbbf4ae9c7cbf3cfd"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_8121d4c3-9cb2-47db-b40a-99678602bb2a"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_795a117d-7caf-4fc2-a8d9-dc8f4cf2344a"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_5f40c3f7-9540-4e1b-aa97-6553d5524877"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_afddd60d-f7e6-419a-a5c2-be28d29beaf9"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_e3e0c496-5837-4f0f-a596-cc421940f73f"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_81b0e447-181e-4aec-8921-f1dd7813bebc"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_baa7aef1-afcd-4981-97c0-ccec7b5ad4e0"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_afddd60d-f7e6-419a-a5c2-be28d29beaf9"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_1128e664-0653-448a-9068-e37f1a097c05"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_795a117d-7caf-4fc2-a8d9-dc8f4cf2344a"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_da232169-1c36-495a-8af6-a0d7d2b39f52"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_6bdc33de-d027-49b7-b98f-3b3d87716615"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_bd61b1f9-474d-424e-9709-42f75337c477"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_afddd60d-f7e6-419a-a5c2-be28d29beaf9"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_4f1c405f-07c9-4fb0-b64e-551896a29aa8"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_97d7d14a-7294-458f-a8d7-024700a08717"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_ae4b7cbe-349a-41c8-ace2-25ec26f14a64"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_6bdc33de-d027-49b7-b98f-3b3d87716615"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_f04ecab5-1a12-4cc0-ba56-b157ebf11a42"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_6bdc33de-d027-49b7-b98f-3b3d87716615"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_faab7959-f9bf-421b-bc3f-d364e0c1388b"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_97d7d14a-7294-458f-a8d7-024700a08717"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_a015f692-3fc5-4ec3-8d1d-977c7b499e7c"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_81b0e447-181e-4aec-8921-f1dd7813bebc"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_f970233f-b573-49d9-9fc3-3a2a59ed3bbb"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_9d25a1f9e5d14d47b6dcde99c4380b40"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_24dd035c-0a8c-4351-aeb2-08d6622b42ae"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_8d7bad8bcc634e0796e362390d9040b6"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_26e50b4b-9a19-420d-98ce-bc4f11971cd7"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_1fa19c281c8f4e1eaad9e1cab70f923e"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_f48d48c7-e9f6-460c-898f-cc68a96efdeb"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_f03d65b2a51049ffa533e433721145c1"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_39d27c17-1e5b-4edc-a7ec-65a2d56542df"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_d4affe50316740bdbbf4ae9c7cbf3cfd"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_fab54e9c-b12e-4e47-a9f2-fec4ef96c0c0"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_afddd60d-f7e6-419a-a5c2-be28d29beaf9"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_6dad1a97-6874-4206-a5a5-837e495325f8"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_81b0e447-181e-4aec-8921-f1dd7813bebc"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_f461fd2d-1e41-4a3e-8213-7cc33c77a089"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_81b0e447-181e-4aec-8921-f1dd7813bebc"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_ecea10ff-e006-436b-a86a-beac4c2a30c1"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_795a117d-7caf-4fc2-a8d9-dc8f4cf2344a"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_42800bad-5e47-42e6-b9b0-1fb8fc5831aa"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_97d7d14a-7294-458f-a8d7-024700a08717"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_0f199d49-0093-4b51-b357-70371424d174"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_6bdc33de-d027-49b7-b98f-3b3d87716615"/> | ||
</cim:Terminal> | ||
<cim:Terminal rdf:about="#_50f00b94-fe0f-48fd-887e-f0d4d59eee87"> | ||
<cim:Terminal.TopologicalNode rdf:resource="#_afddd60d-f7e6-419a-a5c2-be28d29beaf9"/> | ||
</cim:Terminal> | ||
</rdf:RDF> |
Oops, something went wrong.