Skip to main content

61970-456_SteadyStateHypothesis-AP-Con-Complex-NotSolvedMAS-SHACL

ssh456n:Equipment

Severity: sh:Violation

Targets:

  • targetClass: cim:DCSwitch
  • targetClass: cim:Disconnector
  • targetClass: cim:PowerTransformer
  • targetClass: cim:PowerElectronicsConnection
  • targetClass: cim:Equipment
  • targetClass: cim:PetersenCoil
  • targetClass: cim:PotentialTransformer
  • targetClass: cim:EnergyConsumer
  • targetClass: cim:EquivalentShunt
  • targetClass: cim:Cut
  • targetClass: cim:WaveTrap
  • targetClass: cim:ExternalNetworkInjection
  • targetClass: cim:DCShunt
  • targetClass: cim:DCDisconnector
  • targetClass: cim:Clamp
  • targetClass: cim:CurrentTransformer
  • targetClass: cim:SynchronousMachine
  • targetClass: cim:VsConverter
  • targetClass: cim:EquivalentInjection
  • targetClass: cim:PostLineSensor
  • targetClass: cim:CsConverter
  • targetClass: cim:ConformLoad
  • targetClass: cim:DCChopper
  • targetClass: cim:AsynchronousMachine
  • targetClass: cim:SurgeArrester
  • targetClass: cim:DCBreaker
  • targetClass: cim:PhotoVoltaicUnit
  • targetClass: cim:LoadBreakSwitch
  • targetClass: cim:DisconnectingCircuitBreaker
  • targetClass: cim:PowerElectronicsWindUnit
  • targetClass: cim:Breaker
  • targetClass: cim:GeneratingUnit
  • targetClass: cim:SeriesCompensator
  • targetClass: cim:DCGround
  • targetClass: cim:LinearShuntCompensator
  • targetClass: cim:EnergySource
  • targetClass: cim:NonlinearShuntCompensator
  • targetClass: cim:WindGeneratingUnit
  • targetClass: cim:NonConformLoad
  • targetClass: cim:ACLineSegment
  • targetClass: cim:FaultIndicator
  • targetClass: cim:StationSupply
  • targetClass: cim:Switch
  • targetClass: cim:Fuse
  • targetClass: cim:StaticVarCompensator
  • targetClass: cim:DCLineSegment
  • targetClass: cim:BusbarSection
  • targetClass: cim:Junction
  • targetClass: cim:Ground
  • targetClass: cim:EquivalentBranch
  • targetClass: cim:DCSeriesDevice
  • targetClass: cim:DCBusbar
  • targetClass: cim:NuclearGeneratingUnit
  • targetClass: cim:SolarGeneratingUnit
  • targetClass: cim:HydroGeneratingUnit
  • targetClass: cim:GroundingImpedance
  • targetClass: cim:GroundDisconnector
  • targetClass: cim:HydroPump
  • targetClass: cim:Jumper
  • targetClass: cim:BatteryUnit
  • targetClass: cim:ThermalGeneratingUnit

ssh456n:EquivalentInjection

Severity: sh:Violation

Targets:

  • targetClass: cim:EquivalentInjection

Nested Properties:

ssh456n:EquivalentInjection.p-limits

Path: cim:EquivalentInjection.p
The negated value (necessary due to sign convention) of EquivalentInjection.p shall be less than or equal to EquivalentInjection.maxP and shall be greater than or equal to EquivalentInjection.minP.

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.maxP ?maxp} .
#OPTIONAL {$this cim:EquivalentInjection.minP ?minp} .
$this cim:EquivalentInjection.maxP ?maxp .
$this cim:EquivalentInjection.minP ?minp .
#FILTER (bound(?maxp) && bound(?minp) && !(-?value<=?maxp && -?value>=?minp && ?value!=0) && !(?value<=?maxp && ?value>=?minp && ?value=0)) .
FILTER (!(-?value<=?maxp && -?value>=?minp && ?value!=0) && !(?value<=?maxp && ?value>=?minp && ?value=0)) .
}
  • Messages: ["Active power is outside defined active power limits."]

ssh456n:EquivalentInjection.q-limits

Path: cim:EquivalentInjection.q
The negated value (necessary due to sign convention) of EquivalentInjection.q shall be less than or equal to EquivalentInjection.maxQ and shall be greater than or equal to EquivalentInjection.minQ.

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.maxQ ?maxq} .
#OPTIONAL {$this cim:EquivalentInjection.minQ ?minq} .
$this cim:EquivalentInjection.maxQ ?maxq .
$this cim:EquivalentInjection.minQ ?minq .
#FILTER (bound(?maxq) && bound(?minq) && !(-?value<=?maxq && -?value>=?minq && ?value!=0) && !(?value<=?maxq && ?value>=?minq && ?value=0)) .
FILTER (!(-?value<=?maxq && -?value>=?minq && ?value!=0) && !(?value<=?maxq && ?value>=?minq && ?value=0)) .
}
  • Messages: ["Reactive power is outside defined reactive power limits."]

ssh456n:EquivalentInjection-regulation

Path: cim:EquivalentInjection.regulationCapability
If EquivalentInjection.regulationCapability in EQ is true, then EquivalentInjection.regulationStatus and EquivalentInjection.regulationTarget are required in SSH. If EquivalentInjection.regulationCapability in EQ is false, then EquivalentInjection.regulationStatus and EquivalentInjection.regulationTarget are not exchanged in SSH.

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.regulationStatus ?rstatus}.
OPTIONAL {$this cim:EquivalentInjection.regulationTarget ?rtarget}.
FILTER ((?value=true && (!bound(?rstatus) || !bound(?rtarget))) || (?value=false && (bound(?rstatus) || bound(?rtarget)))) .
}
  • Messages: ["Inconsistancy between EquivalentInjection.regulationCapability, EquivalentInjection.regulationStatus and EquivalentInjection.regulationTarget. "]

ssh456n:ExternalNetworkInjection

Severity: sh:Violation

Targets:

  • targetClass: cim:ExternalNetworkInjection

Nested Properties:

ssh456n:ExternalNetworkInjection.p-limits

Path: cim:ExternalNetworkInjection.p
The negated value (necessary due to sign convention) of ExternalNetworkInjection.p shall be less than or equal to ExternalNetworkInjection.maxP and shall be greater than or equal to ExternalNetworkInjection.minP.

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 .
$this cim:ExternalNetworkInjection.maxP ?maxp .
$this cim:ExternalNetworkInjection.minP ?minp .
FILTER (!(-?value<=?maxp && -?value>=?minp && ?value!=0) && !(?value<=?maxp && ?value>=?minp && ?value=0)) .
}
  • Messages: ["Active power is outside defined active power limits."]

ssh456n:ExternalNetworkInjection.q-limits

Path: cim:ExternalNetworkInjection.q
The negated value (necessary due to sign convention) of ExternalNetworkInjection.q shall be less than or equal to ExternalNetworkInjection.maxQ and shall be greater than or equal to ExternalNetworkInjection.minQ.

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 .
$this cim:ExternalNetworkInjection.maxQ ?maxq .
$this cim:ExternalNetworkInjection.minQ ?minq .
FILTER (!(-?value<=?maxq && -?value>=?minq && ?value!=0) && !(?value<=?maxq && ?value>=?minq && ?value=0)) .
}
  • Messages: ["Reactive power is outside defined reactive power limits."]

ssh456n:GeneratingUnit

Severity: sh:Violation

Targets:

  • targetNode: cim:AllGeneratingUnit

Nested Properties:

ssh456n:GeneratingUnit-singleActivePowerSlack

Path: rdf:type
Active power slack by a single generator per ControlArea: one generator has GeneratingUnit.normalPF set to a highest value (non-zero) and all other generating units have a zero GeneratingUnit.normalPF.

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 ?countm ?countd (COUNT(?npf1) as ?counte) ?countall
WHERE {
?gu cim:GeneratingUnit.normalPF ?npf1 .
BIND ("" AS ?value).
FILTER (?npf1=?countm)
{
SELECT $this (COUNT(DISTINCT ?npf) as ?countd) (MAX(?npf) as ?countm) (COUNT(?npf) as ?countall)
WHERE {
?gu cim:GeneratingUnit.normalPF ?npf .
}
GROUP BY $this datatype(?npf)
}
}
GROUP BY $this ?value ?countm ?countd datatype(?npf1) ?countall
HAVING((?countd<2 && ?countall!=1) || ?countm=0 || ?counte!=1)

  • Messages: ["Either there is no highest value among GeneratingUnit.normalPF or there are multiple maximum values which are the same."]

ssh456n:RegulatingControl

Severity: sh:Violation

Targets:

  • targetClass: cim:RegulatingControl
  • targetClass: cim:TapChangerControl

Nested Properties:

ssh456n:RegulatingControl.targetValue-value

Path: cim:RegulatingControl.targetValue
RegulatingControl.targetValue shall be positive value in cases where the RegulatingControl.mode is set to voltage in EQ profile.

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:RegulatingControl.mode cim:RegulatingControlModeKind.voltage .
$this $PATH ?value .
FILTER (?value<=0 ) .
#FILTER (?value<=0 && ?mode=cim:RegulatingControlModeKind.voltage) .
}
  • Messages: ["The value is negative or zero for RegulatingControl in voltage mode."]

ssh456n:RotatingMachine

Severity: sh:Violation

Targets:

  • targetClass: cim:AsynchronousMachine
  • targetClass: cim:SynchronousMachine

Nested Properties:

ssh456n:RotatingMachine.p-limits

Path: cim:RotatingMachine.p
The negated value (necessary due to sign convention) of RotatingMachine.p shall be less than or equal to GeneratingUnit.maxOperatingP and shall be greater than or equal to GeneratingUnit.minOperatingP of the associated GeneratingUnit.

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:Equipment.inService true .
$this cim:RotatingMachine.GeneratingUnit ?genunit.
#BIND(EXISTS{$this cim:RotatingMachine.GeneratingUnit ?hasgenunit} AS ?hasgu).
$this $PATH ?value .
?genunit cim:GeneratingUnit.maxOperatingP ?maxp .
?genunit cim:GeneratingUnit.minOperatingP ?minp .
FILTER (!(-?value<=?maxp && -?value>=?minp && ?value!=0) && !(?value<=?maxp && ?value>=?minp && ?value=0)) .
#FILTER (?hasgu=true && !(-?value<=?maxp && -?value>=?minp && ?value!=0) && !(?value<=?maxp && ?value>=?minp && ?value=0)) .
}
  • Messages: ["Active power is outside defined active power limits."]

ssh456n:RotatingMachine.q-limits

Path: cim:RotatingMachine.q
In case there is no ReactiveCapabilityCurve associated with the SynchronousMachine, the negated value (necessary due to sign convention) of RotatingMachine.q shall be less than or equal to SynchronousMachine.maxQ and shall be greater than or equal to SynchronousMachine.minQ.

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:Equipment.inService true .
$this $PATH ?value .
BIND(EXISTS{$this cim:SynchronousMachine.InitialReactiveCapabilityCurve ?curve} AS ?hascurve).
#OPTIONAL {$this cim:SynchronousMachine.maxQ ?maxq}.
#OPTIONAL {$this cim:SynchronousMachine.minQ ?minq}.
$this cim:SynchronousMachine.maxQ ?maxq.
$this cim:SynchronousMachine.minQ ?minq.
#FILTER (?hascurve=false && bound(?maxq) && bound(?minq) && !(-?value<=?maxq && -?value>=?minq && ?value!=0) && !(?value<=?maxq && ?value>=?minq && ?value=0)) .
FILTER (?hascurve=false && !(-?value<=?maxq && -?value>=?minq && ?value!=0) && !(?value<=?maxq && ?value>=?minq && ?value=0)) .
}
  • Messages: ["Reactive power is outside defined reactive power limits."]

ssh456n:ShuntCompensator

Severity: sh:Violation

Targets:

  • targetClass: cim:LinearShuntCompensator
  • targetClass: cim:NonlinearShuntCompensator

Nested Properties:

ssh456n:ShuntCompensator.sections-value

Path: cim:ShuntCompensator.sections
In cases where RegulatingControl.discrete is true and RegulatingControl.enabled is true, ShuntCompensator.sections shall be integer.

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:RegulatingCondEq.RegulatingControl ?contr}.
#?contr cim:RegulatingControl.discrete ?discrete .
#?contr cim:RegulatingControl.enabled ?enabled .
$this cim:RegulatingCondEq.RegulatingControl ?contr.
?contr cim:RegulatingControl.discrete true .
?contr cim:RegulatingControl.enabled true .
#FILTER (STRENDS(str(?value), ".") && !REGEX(STRAFTER(str(?value), "."), "^[0]$", "i") && bound(?contr) && ?discrete=true && ?enabled=true) .
FILTER (STRENDS(str(?value), ".") && !REGEX(STRAFTER(str(?value), "."), "^[0]$", "i") ) .
}
  • Messages: ["The value is not integer for an active discrete regulating control."]

ssh456n:SynchronousMachine

Severity: sh:Violation

Targets:

  • targetClass: cim:SynchronousMachine

Nested Properties:

ssh456n:SynchronousMachine.operatingMode-matchType

Path: cim:SynchronousMachine.operatingMode
The SynchronousMachine.operatingMode shall be consistent with the SynchronousMachine.type. SynchronousMachine.operatingMode = motor shall be provided for SynchronousMachine.type in (motor, generatorOrMotor, motorOrCondenser, generatorOrCondenserOrMotor), SynchronousMachine.operatingMode = condenser shall be provided for SynchronousMachine.type in (condenser, generatorOrCondenser, motorOrCondenser, generatorOrCondenserOrMotor), and SynchronousMachine.operatingMode = generator shall be provided for SynchronousMachine.type in (generator, generatorOrMotor, generatorOrCondenser, generatorOrCondenserOrMotor).

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 .
$this cim:SynchronousMachine.type ?type .

FILTER ((?value=cim:SynchronousMachineOperatingMode.motor && ?type NOT IN (cim:SynchronousMachineKind.motor , cim:SynchronousMachineKind.generatorOrMotor , cim:SynchronousMachineKind.motorOrCondenser , cim:SynchronousMachineKind.generatorOrCondenserOrMotor)) ||
(?value=cim:SynchronousMachineOperatingMode.condenser && ?type NOT IN (cim:SynchronousMachineKind.condenser , cim:SynchronousMachineKind.generatorOrCondenser , cim:SynchronousMachineKind.motorOrCondenser , cim:SynchronousMachineKind.generatorOrCondenserOrMotor)) ||
(?value=cim:SynchronousMachineOperatingMode.generator && ?type NOT IN (cim:SynchronousMachineKind.generator , cim:SynchronousMachineKind.generatorOrMotor , cim:SynchronousMachineKind.generatorOrCondenser , cim:SynchronousMachineKind.generatorOrCondenserOrMotor))) .
}
  • Messages: ["The value of SynchronousMachine.operatingMode is not consistent with the value of SynchronousMachine.type."]

ssh456n:RotatingMachine-pAndQcapabilityCurveQ

Path: rdf:type
In cases where a ReactiveCapabilityCurve is associated, the RotatingMachine.p shall be less than or equal to the maximum active power value defined by the curve and it shall be greater than or equal to the minimum active power value defined by the curve. The RotatingMachine.q shall be less than or equal to the maximum reactive power value defined by the curve and it shall be greater than or equal to the minimum reactive power value defined by the curve.

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:RotatingMachine.q ?value .
OPTIONAL {$this cim:SynchronousMachine.InitialReactiveCapabilityCurve ?rcc } .

{
SELECT $this (MAX(?y2value) AS ?my2value) (MIN(?y1value) AS ?my1value)
WHERE {
OPTIONAL {?rcc1 ^cim:SynchronousMachine.InitialReactiveCapabilityCurve $this } .
?rcc1 ^cim:CurveData.Curve ?curvedata .
?curvedata rdf:type ?cdtype .
?curvedata cim:CurveData.y1value ?y1value .
?curvedata cim:CurveData.y2value ?y2value .
FILTER (bound(?rcc1) && ?cdtype=cim:CurveData ) .
}
GROUP BY $this ?cdtype
}

FILTER ( bound(?rcc) && !(-?value>=?my1value && -?value<=?my2value)).
}
  • Messages: ["The reactive power is not within the limits defined by the ReactiveCapabilityCurve."]

ssh456n:RotatingMachine-pAndQcapabilityCurveP

Path: rdf:type
In cases where a ReactiveCapabilityCurve is associated, the RotatingMachine.p shall be less than or equal to the maximum active power value defined by the curve and it shall be greater than or equal to the minimum active power value defined by the curve. The RotatingMachine.q shall be less than or equal to the maximum reactive power value defined by the curve and it shall be greater than or equal to the minimum reactive power value defined by the curve.

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:RotatingMachine.p ?value .
OPTIONAL {$this cim:SynchronousMachine.InitialReactiveCapabilityCurve ?rcc } .

{
SELECT $this (MAX(?xvalue) AS ?maxxvalue) (MIN(?xvalue) AS ?minxvalue)
WHERE {
OPTIONAL {?rcc1 ^cim:SynchronousMachine.InitialReactiveCapabilityCurve $this } .
?rcc1 ^cim:CurveData.Curve ?curvedata .
?curvedata rdf:type ?cdtype .
?curvedata cim:CurveData.xvalue ?xvalue .
FILTER (bound(?rcc1) && ?cdtype=cim:CurveData ) .
}
GROUP BY $this ?cdtype
}

FILTER ( bound(?rcc) && !(-?value>=?minxvalue && -?value<=?maxxvalue)).
}
  • Messages: ["The active power is not within the limits defined by the ReactiveCapabilityCurve."]

ssh456n:TapChanger

Severity: sh:Violation

Targets:

  • targetClass: cim:RatioTapChanger
  • targetClass: cim:PhaseTapChangerLinear
  • targetClass: cim:PhaseTapChangerSymmetrical
  • targetClass: cim:PhaseTapChangerAsymmetrical
  • targetClass: cim:PhaseTapChangerTabular

Nested Properties:

ssh456n:TapChanger.step-value

Path: cim:TapChanger.step
In cases where RegulatingControl.discrete is true and RegulatingControl.enabled is true, TapChanger.step shall be integer.

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:TapChanger.TapChangerControl ?contr}.
#?contr cim:RegulatingControl.discrete ?discrete .
#?contr cim:RegulatingControl.enabled ?enabled .
$this cim:TapChanger.TapChangerControl ?contr.
?contr cim:RegulatingControl.discrete true .
?contr cim:RegulatingControl.enabled true .
#FILTER (STRENDS(str(?value), ".") && !REGEX(STRAFTER(str(?value), "."), "^[0]$", "i") && bound(?contr) && ?discrete=true && ?enabled=true) .
FILTER (STRENDS(str(?value), ".") && !REGEX(STRAFTER(str(?value), "."), "^[0]$", "i")) .
}
  • Messages: ["The value is not integer for an active discrete regulating control."]