Report about cim::Terminal problem and rdf:about
cim::Terminal problem
The cim:Teminal in CIM-XML file has base data(like cim:IdentifiedObject.name... ) and its topological informantion (in Terminal.TopologicalNode and Terminal.connected).
# The Terminal in the CIM-XML file could be stored by different Software in two ways:
By Cimphony, the Terminal is stored as a whole, like:
<cim:Terminal rdf:ID="_d7a9843d-5d17-11e5-918c-3417ebdd96ad">
<cim:IdentifiedObject.name>T1</cim:IdentifiedObject.name>
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
<cim:Terminal.ConductingEquipment rdf:resource="#_d7a9843c-5d17-11e5-918c-3417ebdd96ad"/>
<cim:Terminal.ConnectivityNode rdf:resource="#_d7ab0ad7-5d17-11e5-918c-3417ebdd96ad"/>
<cim:Terminal.TopologicalNode rdf:resource="#_d7a98439-5d17-11e5-918c-3417ebdd96ad"/>
</cim:Terminal>"
There is no problem.
But by PowerFactory and Neplan, the Terminal data are divided into two parts, saved in separate place as shown below:
<cim:Terminal rdf:ID="_0137917F-B758-4210-A61B-4637F2BD0F63">
<cim:IdentifiedObject.name>Cub_2</cim:IdentifiedObject.name>
<cim:Terminal.ConductingEquipment rdf:resource="#_65FDA9DC-C593-4374-B13B-C5D1B19FCF54" />
<cim:Terminal.sequenceNumber>1</cim:Terminal.sequenceNumber>
</cim:Terminal>
and
<cim:Terminal rdf:about="#_0137917F-B758-4210-A61B-4637F2BD0F63">
<cim:Terminal.TopologicalNode rdf:resource="#_0822683E-8F36-42AB-A023-219CED91798C" />
<cim:Terminal.connected>true</cim:Terminal.connected>
</cim:Terminal>
In this situation, even if the CIM-XML-Parser can parser both parts separately, but it can not combine them together. The Parser just assign the first terminal part to the the TopologicalNode Object without the second part . So in the TopologicalNode stored terminals are lack of base information:
In the TopologicalNode->List<Terminal*> just stored points of the second terminal part. i can not get the name of the terminal and which ConductingEquipment it belongs to.
TopologicalNode->List<Terminal*>
rdf:about
the CIM-XML-Parser can just parser with tag rdf:ID. I have modified a litte(added "rdf:about" ) in the source code before. This problem had been solved.
in CIMParser.cpp:
Glib::ustring CIMParser::get_rdf_id(const AttributeList &properties)
{
for(auto&& attribute : properties)
{
if(attribute.name == "rdf:ID" || attribute.name == "rdf:about")
return attribute.value;
}
throw std::logic_error("Attribute enthalten keine rdf:ID");
}