Skip to content

Commit 1d488a3

Browse files
author
kristjan.vilgo
committed
Added CGMES dangling reference fuction
1 parent 85b90b9 commit 1d488a3

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

triplets/cgmes_tools.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,22 @@ def export_to_cimrdf_depricated(instance_data, rdf_map, namespace_map):
502502
# print(etree.tostring(RDF, pretty_print=True).decode())
503503
return etree.tostring(RDF, pretty_print=True, xml_declaration=True, encoding='UTF-8')
504504

505+
def get_dangling_references(data, detailed=False):
506+
"""Find all reference within CGMES data, by using the fact of the CGMES data model convention where references are with .<CapitalLetter>
507+
Assumptions:
508+
1. Class names are with Capital letters
509+
2. Relations are defined <Class_FROM>.<Class_TO>"""
510+
511+
cgmes_reference_pattern = r"\.[A-Z]"
512+
references = data[data.KEY.str.contains(cgmes_reference_pattern)]
513+
dangling_references = data.query("KEY == 'Type'").merge(references, left_on="ID", right_on="VALUE", indicator=True, how="right", suffixes=("_TO", "_FROM")).query("_merge != 'both'")
514+
515+
if detailed:
516+
return dangling_references
517+
else:
518+
return dangling_references.KEY_FROM.value_counts()
519+
520+
505521
def export_to_cimrdf(instance_data, rdf_map, namespace_map, class_KEY="Type", export_undefined=True):
506522

507523
# Create xml element builder and the root element

0 commit comments

Comments
 (0)