Skip to main content

61970-301_EquipmentBoundary-AP-Con-Complex-NotSolvedMAS-SHACL

eqbd301n:BoundaryPoint

Severity: sh:Violation

Targets:

  • targetClass: cim100:BoundaryPoint

Nested Properties:

eqbd301n:BoundaryPoint.isExcludedFromAreaInterchange-requiredTieFlow

Path: cim100:BoundaryPoint.isExcludedFromAreaInterchange
If true, this boundary point is on the interconnection that is excluded from control area interchange calculation and consequently has no related tie flows. Otherwise, the interconnection is included in control area interchange and a TieFlow is required at all sides of the boundary point (default).

Severity: sh:Violation

Constraints:

  • sh:SPARQLConstraintComponent (Severity: sh:Violation)
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX eu: <http://iec.ch/TC57/CIM100-European#>
PREFIX cim: <http://iec.ch/TC57/CIM100#>

SELECT $this ?value ?terminal ?tieflow
WHERE {
?terminal1 cim:Terminal.ConductingEquipment ?condeq .
?terminal1 cim:ACDCTerminal.sequenceNumber 1 .
?terminal1 cim:Terminal.ConnectivityNode ?cn1 .

OPTIONAL {?terminal2 cim:Terminal.ConductingEquipment ?condeq}.
OPTIONAL {?terminal2 cim:ACDCTerminal.sequenceNumber 2}.
OPTIONAL {?terminal2 cim:Terminal.ConnectivityNode ?cn2}.

OPTIONAL {$this $PATH ?value}.
$this eu:BoundaryPoint.ConnectivityNode ?cnbp .
OPTIONAL {?terminal cim:Terminal.ConnectivityNode ?cnbp }.
OPTIONAL {?tieflow cim:TieFlow.Terminal ?terminal }.

FILTER ((bound(?value) && ?value=false && !bound(?tieflow) && (?cnbp=?cn1 || ?cnbp=?cn2) && bound(?terminal1) && bound(?terminal2) && ?cn1!=?cn2 && (?terminal=?terminal1 || ?terminal=?terminal2)) || (!bound(?value) && !bound(?tieflow) && (?cnbp=?cn1 || ?cnbp=?cn2) && bound(?terminal1) && bound(?terminal2) && ?cn1!=?cn2 && (?terminal=?terminal1 || ?terminal=?terminal2))|| (bound(?value) && ?value=true && bound(?tieflow) && (?cnbp=?cn1 || ?cnbp=?cn2) && bound(?terminal1) && bound(?terminal2) && ?cn1!=?cn2 && (?terminal=?terminal1 || ?terminal=?terminal2))) .
}
  • Messages: ["There is either TieFlow modelled in case the value is true or there are no TieFlow modelled in case the value is false. Id of the Terminal: {?terminal}. ID of the TieFlow: {?tieflow}."]