Skip to main content

61970-600_Equipment-AP-Con-Complex-NotSolvedMAS-SHACL

eq600n:ACLineSegment

Severity: sh:Violation

Targets:

  • targetClass: cim:ACLineSegment

Nested Properties:

eq600n:ACLineSegment-BaseVoltageDiff

Path: rdf:type
CGMES exchanges allow 10 % difference of the BaseVoltage.nominalVoltage at the two ends of an ACLineSegment representing a complete tie-line or connecting to a boundary node.

Severity: sh:Violation

Constraints:

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

SELECT $this ?tp1nv ?tp2nv
WHERE {
?term1 cim:Terminal.ConductingEquipment $this .
?term2 cim:Terminal.ConductingEquipment $this .
?term1 cim:ACDCTerminal.sequenceNumber 1.
?term2 cim:ACDCTerminal.sequenceNumber 2.
?tp1 ^cim:Terminal.TopologicalNode ?term1 .
?tp1 cim:TopologicalNode.BaseVoltage/cim:BaseVoltage.nominalVoltage ?tp1nv .
?tp2 ^cim:Terminal.TopologicalNode ?term2 .
?tp2 cim:TopologicalNode.BaseVoltage/cim:BaseVoltage.nominalVoltage ?tp2nv .

FILTER ((?tp1nv<?tp2nv && (ABS(?tp1nv-?tp2nv)/?tp1nv)>0.1) || (?tp1nv>?tp2nv && (ABS(?tp1nv-?tp2nv)/?tp2nv)>0.1)) .
}
  • Messages: ["More that 10% difference of the BaseVoltage.nominalVoltage at the two ends of an ACLineSegment. Voltage 1: {?tp1nv}; Voltage 2: {?tp2nv}"]

eq600n:BoundaryPoint

Severity: sh:Violation

Nested Properties:

eq600n:BoundaryPoint-bppl1Bppl2

Path: rdf:type
BPPL1 EquivalentInjection classes are used to represent the power flow exchanges through Boundary points. These classes are included in the individual model MAS (e.g. Model Authority MAS) and refer to the Boundary points (ConnectivityNode-s) in the Boundary set. The SvInjection class is not used for this purpose. BPPL2 In case the use cases require the exchange of multiple SSH, TP, SV, etc. instance files (distribution) which are dependent on an EQ instance file, this EQ shall always include an instance of EquivalentInjection per Boundary point. Therefore, in a multi MAS (among TSOs, DSOs or mixed) exchange a Boundary point shall always have two EquivalentInjections per Boundary point which are contained in different MAS connecting to the Boundary point. mRIDs of those EquivalentInjections are kept persistent.

Severity: sh:Violation

Constraints:

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

SELECT $this ?value
WHERE {
$this cim:IdentifiedObject.name ?value .

{
SELECT $this
WHERE {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type ?bptype.

FILTER (bound(?bptype) && ?bptype IN (cim:ACLineSegment , cim:PowerTransformer, cim:DCLineSegment, cim:DCSeriesDevice, cim:DCSwitch, cim:DCDisconnector, cim:DCBreaker, cim:DCChopper, cim:Switch, cim:Disconnector, cim:Fuse, cim:GroundDisconnector, cim:Jumper, cim:Breaker, cim:LoadBreakSwitch, cim:DisconnectingCircuitBreaker, cim:Cut, cim:SeriesCompensator, cim:EquivalentBranch)) .
}
}
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:EquivalentInjection
}.
}
  • Messages: ["ConnectivityNode which is designated as BoundaryPoint does not have EquivalentInjection connected to it."]

eq600n:BoundaryPoint-bppl3

Path: rdf:type
A ConnectivityNode and a TopologicalNode representing a Boundary point may connect various branches.

Severity: sh:Info

Constraints:

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

SELECT $this ?value
WHERE {
$this cim:IdentifiedObject.name ?value .

FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:ACLineSegment
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:PowerTransformer
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:DCLineSegment
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:DCSeriesDevice
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:DCSwitch
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:DCDisconnector
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:DCBreaker
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:DCChopper
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:Switch
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:Disconnector
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:Fuse
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:GroundDisconnector
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:Jumper
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:Breaker
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:LoadBreakSwitch
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:DisconnectingCircuitBreaker
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:Cut
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:SeriesCompensator
}.
FILTER NOT EXISTS {
$this ^cim:Terminal.ConnectivityNode/cim:Terminal.ConductingEquipment/rdf:type cim:EquivalentBranch
}.
}
  • Messages: ["ConnectivityNode which is designated as BoundaryPoint does not have a two-Terminal ConductingEquipment connected to it."]

eq600n:EquivalentInjection

Severity: sh:Violation

Targets:

  • targetClass: cim:EquivalentInjection

Nested Properties:

eq600n:EquivalentInjection.regulationCapability-notHVDC

Path: cim:EquivalentInjection.regulationCapability
If EquivalentInjection connects to a BoundaryPoint with flag isDirectCurrent=false (meaning this is not HVDC), the EquivalentInjection.regulationCapability in EQ shall be set to false and there shall not be a ReactiveCapabilityCurve associated.

Severity: sh:Violation

Constraints:

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

SELECT $this ?value
WHERE {
$this $PATH ?value.
OPTIONAL {$this cim:EquivalentInjection.ReactiveCapabilityCurve ?curve}.
OPTIONAL {$this ^cim:Terminal.ConductingEquipment/cim:Terminal.ConnectivityNode/^eu:BoundaryPoint.ConnectivityNode ?bp } .
OPTIONAL {?bp eu:BoundaryPoint.isDirectCurrent ?ishvdc } .
FILTER (bound(?bp) && bound(?ishvdc) && ?ishvdc=false && (bound(?curve) || ?value=true)) .
}
  • Messages: ["EquivalentInjection connects to a BoundaryPoint with flag isDirectCurrent=false (meaning this is not HVDC), but either EquivalentInjection.regulationCapability is set to true or there is a ReactiveCapabilityCurve associated."]