Skip to main content

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

ssh301n:BatteryUnit

Severity: sh:Violation

Targets:

  • targetClass: cim:BatteryUnit

ssh301n:ControlArea

Severity: sh:Violation

Targets:

  • targetClass: cim:ControlArea

Nested Properties:

ssh301n:ControlArea-netInterchangeCalculation

Path: rdf:type
Control area constraints in power flow are represented as a set of area control equality constraints of the form: Control Area Net Interchange = SUM (control area flow into the area on each tie)

Severity: sh:Warning

Constraints:

  • sh:SPARQLConstraintComponent (Severity: sh:Warning)
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 ?sump
WHERE {
$this cim:ControlArea.type cim:ControlAreaTypeKind.Interchange .
$this cim:ControlArea.netInterchange ?value .
{
SELECT $this (SUM(?p) AS ?sump)
WHERE {
?term ^cim:TieFlow.Terminal/cim:TieFlow.ControlArea $this .
?term cim:Terminal.ConnectivityNode/^eu:BoundaryPoint.ConnectivityNode/rdf:type eu:BoundaryPoint .
?term cim:Terminal.ConductingEquipment/rdf:type cim:EquivalentInjection .
?term rdf:type ?termtype.
?term cim:Terminal.ConductingEquipment/cim:EquivalentInjection.p ?p .
}
GROUP BY $this ?termtype
}
FILTER (?value!=?sump) .
}
  • Messages: ["The sum of the EquivalentInjections which are connected to the BoundaryPoint-s differes from the ControlArea.netInterchange. ControlArea.netInterchange= {?value}. Sum of the EquivalentInjections= {?sump}."]

ssh301n:CsConverter

Severity: sh:Violation

Targets:

  • targetClass: cim:CsConverter

Nested Properties:

ssh301n:CsConverter.targetAlpha-applicability

Path: cim:CsConverter.targetAlpha
It is only applicable for rectifier if continuous tap changer control is used.

Severity: sh:Warning

Constraints:

  • sh:SPARQLConstraintComponent (Severity: sh:Warning)
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 {
#OPTIONAL {$this $PATH ?value}.
$this $PATH ?value.
$this cim:CsConverter.operatingMode ?opermode .
#OPTIONAL {$this cim:ACDCConverter.PccTerminal ?pccterminal}.
#OPTIONAL {?pccterminal cim:Terminal.ConductingEquipment ?condeq}.
#OPTIONAL {?condeq rdf:type ?condeqtype}.
#OPTIONAL {?pccterminal cim:RegulatingControl.Terminal ?regcontrol}.
#OPTIONAL {?regcontrol cim:RegulatingControl.discrete ?discrete}.

OPTIONAL {$this cim:ACDCConverter.PccTerminal ?pccterminal .
?pccterminal cim:Terminal.ConductingEquipment/rdf:type cim:PowerTransformer .
?pccterminal ^cim:RegulatingControl.Terminal/cim:RegulatingControl.discrete ?discrete .
} .


#?regcontrol cim:RegulatingControl.Terminal ?pccterm .
#FILTER (bound(?value) && (?opermode=cim:CsOperatingModeKind.inverter || (bound(?pccterminal) && ?condeqtype=cim:PowerTransformer && ?discrete=true && ?pccterm=?pccterminal))) .
FILTER ((?opermode=cim:CsOperatingModeKind.inverter || (bound(?pccterminal) && ?discrete=true) || !bound(?discrete) )) .
}
  • Messages: ["CsConverter.targetAlpha is provided for an inverter or discrete tap changer control is used or RegulatingControl is not provided."]

ssh301n:CsConverter.targetGamma-applicability

Path: cim:CsConverter.targetGamma
It is only applicable for inverter if continuous tap changer control is used.

Severity: sh:Warning

Constraints:

  • sh:SPARQLConstraintComponent (Severity: sh:Warning)
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 {
#OPTIONAL {$this $PATH ?value}.
$this $PATH ?value.
$this cim:CsConverter.operatingMode ?opermode .
#OPTIONAL {$this cim:ACDCConverter.PccTerminal ?pccterminal}.
#OPTIONAL {?pccterminal cim:Terminal.ConductingEquipment ?condeq}.
#OPTIONAL {?condeq rdf:type ?condeqtype}.
#OPTIONAL {?pccterminal cim:RegulatingControl.Terminal ?regcontrol}.
#OPTIONAL {?regcontrol cim:RegulatingControl.discrete ?discrete}.

OPTIONAL {$this cim:ACDCConverter.PccTerminal ?pccterminal .
?pccterminal cim:Terminal.ConductingEquipment/rdf:type cim:PowerTransformer .
?pccterminal ^cim:RegulatingControl.Terminal/cim:RegulatingControl.discrete ?discrete .
} .

#?regcontrol cim:RegulatingControl.Terminal ?pccterm .
#FILTER (bound(?value) && (?opermode=cim:CsOperatingModeKind.rectifier || (bound(?pccterminal) && ?condeqtype=cim:PowerTransformer && ?discrete=true && ?pccterm=?pccterminal))) .
FILTER ((?opermode=cim:CsOperatingModeKind.rectifier || (bound(?pccterminal) && ?discrete=true ) || !bound(?discrete))) .
}
  • Messages: ["CsConverter.targetGamma is provided for a rectifier or discrete tap changer control is used."]

ssh301n:LinearShuntCompensator

Severity: sh:Violation

Targets:

  • targetClass: cim:LinearShuntCompensator

Nested Properties:

ssh301n:ShuntCompensator.sections-valueLinear

Path: cim:ShuntCompensator.sections
Non integer values are allowed to support continuous variables. For LinearShuntCompensator the value shall be between zero and ShuntCompensator.maximumSections. At value zero the shunt compensator conductance and admittance is zero.

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:ShuntCompensator.maximumSections ?maxsections .
#OPTIONAL {$this cim:RegulatingCondEq.RegulatingControl ?contr}.
#$this cim:RegulatingCondEq.controlEnabled ?contrenabled .

#FILTER (bound(?contr) && ?contrenabled=true && !(?value>=0 && ?value<=?maxsections)) .
FILTER ( !(?value>=0 && ?value<=?maxsections)) .
}
  • Messages: ["The value is not between zero and ShuntCompensator.maximumSections."]

ssh301n:NonlinearShuntCompensator

Severity: sh:Violation

Targets:

  • targetClass: cim:NonlinearShuntCompensator

Nested Properties:

ssh301n:ShuntCompensator.sections-valueNonLinear

Path: cim:ShuntCompensator.sections
For NonlinearShuntCompensator-s shall only be set to one of the NonlinearShuntCompenstorPoint.sectionNumber.

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 (COUNT(?type) AS ?types) ?typesall
WHERE {
{
SELECT $this (COUNT(?typeall) AS ?typesall)
WHERE {
?nscpointsall cim:NonlinearShuntCompensatorPoint.NonlinearShuntCompensator $this .
?nscpointsall rdf:type ?typeall .
}
GROUP BY $this ?typesall
}
$this $PATH ?value .
#OPTIONAL {$this cim:RegulatingCondEq.RegulatingControl ?contr}.
#$this cim:RegulatingCondEq.controlEnabled ?contrenabled .
?nscpoints cim:NonlinearShuntCompensatorPoint.NonlinearShuntCompensator $this .
?nscpoints rdf:type ?type .
?nscpoints cim:NonlinearShuntCompensatorPoint.sectionNumber ?sectionnumber .
#FILTER (bound(?contr) && ?contrenabled=true && ?value!=?sectionnumber) .
FILTER (?value!=?sectionnumber) .
}
GROUP BY $this ?value ?types ?typesall
HAVING(?types=?typesall)

  • Messages: ["The value does not equal one of the NonlinearShuntCompenstorPoint.sectionNumber."]

ssh301n:PhaseTapChangerAsymmetrical

Severity: sh:Violation

Targets:

  • targetClass: cim:PhaseTapChangerAsymmetrical

ssh301n:PhaseTapChangerLinear

Severity: sh:Violation

Targets:

  • targetClass: cim:PhaseTapChangerLinear

ssh301n:PhaseTapChangerSymmetrical

Severity: sh:Violation

Targets:

  • targetClass: cim:PhaseTapChangerSymmetrical

ssh301n:PhaseTapChangerTabular

Severity: sh:Violation

Targets:

  • targetClass: cim:PhaseTapChangerTabular

ssh301n:RatioTapChanger

Severity: sh:Violation

Targets:

  • targetClass: cim:RatioTapChanger

ssh301n:RegulatingControl

Severity: sh:Violation

Targets:

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

Nested Properties:

ssh301n:RegulatingControl-requiredAttributes

Path: cim:RegulatingControl.mode
The attribute minAllowedTargetValue and maxAllowedTargetValue are required in the following cases: - For a power generating module operated in power factor control mode to specify maximum and minimum power factor values; - ....

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
WHERE {
#$this $PATH ?value .
$this $PATH cim:RegulatingControlModeKind.powerFactor .
OPTIONAL {$this cim:RegulatingControl.minAllowedTargetValue ?minvalue}.
OPTIONAL {$this cim:RegulatingControl.maxAllowedTargetValue ?maxvalue}.
#FILTER (?value=cim:RegulatingControlModeKind.powerFactor && (!bound(?minvalue) || !bound(?maxvalue))) .
FILTER (!bound(?minvalue) || !bound(?maxvalue)) .
}
  • Messages: ["Both minAllowedTargetValue and maxAllowedTargetValue are not provided for RegulatingControl in mode powerFactor."]

ssh301n:TapChanger

Severity: sh:Violation

Targets:

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

Nested Properties:

ssh301n:TapChanger.step-valueType

Path: cim:TapChanger.step
Non integer values are allowed to support continuous tap variables.

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:TapChanger.TapChangerControl/cim:RegulatingControl.discrete true.
#OPTIONAL {$this cim:TapChanger.TapChangerControl ?contr}.
#?contr cim:RegulatingControl.discrete ?discrete .
#FILTER (STRENDS(str(?value), ".") && !REGEX(STRAFTER(str(?value), "."), "^[0]$", "i") && bound(?contr) && ?discrete=true) .
FILTER (STRENDS(str(?value), ".") && !REGEX(STRAFTER(str(?value), "."), "^[0]$", "i")) .
}
  • Messages: ["Non-integer value for a discrete TapChangerControl."]