61970-452_Equipment-AP-Con-Complex-SHACL
eq452c:ACDCConverter
Severity: sh:Violation
Targets:
- targetClass: cim:CsConverter
- targetClass: cim:VsConverter
eq452c:ACLineSegment
Severity: sh:Violation
Targets:
- targetClass: cim:ACLineSegment
eq452c:AuxiliaryEquipment
Severity: sh:Violation
Targets:
- targetClass: cim:CurrentTransformer
- targetClass: cim:PotentialTransformer
- targetClass: cim:PostLineSensor
- targetClass: cim:SurgeArrester
- targetClass: cim:WaveTrap
- targetClass: cim:FaultIndicator
eq452c:Breaker
Severity: sh:Violation
Targets:
- targetClass: cim:Breaker
Nested Properties:
eq452c:Switch-connection
Path: rdf:type
Switch and its subclasses shall only connect to ConnectivityNode-s that are contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage.
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 {
{
SELECT $this ?cnc2 ?cnc1
WHERE {
?term1 cim:Terminal.ConductingEquipment $this .
?term2 cim:Terminal.ConductingEquipment $this .
?term1 cim:ACDCTerminal.sequenceNumber 1 .
?term2 cim:ACDCTerminal.sequenceNumber 2 .
#OPTIONAL {?term1 cim:Terminal.ConnectivityNode ?cn1 } .
#OPTIONAL {?cn1 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 } .
?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 .
#BIND(EXISTS{?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1a} AS ?hascnc1).
#OPTIONAL {?term2 cim:Terminal.ConnectivityNode ?cn2 } .
#OPTIONAL {?cn2 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 } .
?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 .
#BIND(EXISTS{?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2a} AS ?hascnc2).
#FILTER (?hascnc1=true && ?hascnc2=true).
}
}
OPTIONAL {?cnc1 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc2 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
#FILTER (bound(?cn1) && bound(?cn2) && bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
FILTER (bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
}
- Messages:
["Switch (or its subclasses) connects ConnectivityNode-s that are not contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage."]
eq452c:BusbarSection
Severity: sh:Violation
Targets:
- targetClass: cim:BusbarSection
eq452c:Clamp
Severity: sh:Violation
Targets:
- targetClass: cim:Clamp
eq452c:ConductingEquipment-twoTerminalsShape
Severity: sh:Violation
Targets:
- targetClass: cim:ACLineSegment
- targetClass: cim:DCSeriesDevice
- targetClass: cim:DCBreaker
- targetClass: cim:EquivalentBranch
- targetClass: cim:Breaker
- targetClass: cim:Cut
- targetClass: cim:SeriesCompensator
- targetClass: cim:DCLineSegment
- targetClass: cim:DCSwitch
- targetClass: cim:DCChopper
- targetClass: cim:Disconnector
- targetClass: cim:LoadBreakSwitch
- targetClass: cim:DCDisconnector
- targetClass: cim:Switch
- targetClass: cim:Fuse
- targetClass: cim:GroundDisconnector
- targetClass: cim:Jumper
- targetClass: cim:DisconnectingCircuitBreaker
Nested Properties:
eq452c:Terminal-connection
Path: rdf:type
Terminal-s of the two sides of a two-terminal ConductingEquipment (or any of its subclasses) shall not be connected to the same ConnectivityNode.
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 {
?term1 cim:Terminal.ConductingEquipment $this .
?term2 cim:Terminal.ConductingEquipment $this .
?term1 cim:ACDCTerminal.sequenceNumber 1 .
?term2 cim:ACDCTerminal.sequenceNumber 2 .
?term1 cim:Terminal.ConnectivityNode ?cn1 .
?term2 cim:Terminal.ConnectivityNode ?cn2 .
FILTER (?cn1=?cn2).
}
- Messages:
["Terminal-s of a two-terminal ConductingEquipment (or any of its subclasses) connect to the same ConnectivityNode."]
eq452c:Conductor
Severity: sh:Violation
Targets:
- targetClass: cim:ACLineSegment
eq452c:CurveData
Severity: sh:Violation
Targets:
- targetClass: cim:CurveData
Nested Properties:
eq452c:CurveData-equationY2
Path: cim:CurveData.Curve
If CurveData.Curve is a ReactiveCapabilityCurve, each CurveData shall satisfy the following relation: CurveData.xvalue^2+CurveData.y2value^2 shall be less than or equal to RotatingMachine.ratedS^2.
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 .
?value rdf:type cim:ReactiveCapabilityCurve .
$this cim:CurveData.xvalue ?xvalue .
$this cim:CurveData.y2value ?y2value.
#OPTIONAL {$this cim:CurveData.y2value ?y2value } .
#BIND (EXISTS{?value ^cim:SynchronousMachine.InitialReactiveCapabilityCurve/cim:RotatingMachine.ratedS ?rateds} AS ?smrateds).
?value ^cim:SynchronousMachine.InitialReactiveCapabilityCurve/cim:RotatingMachine.ratedS ?rateds .
#FILTER (?smrateds=true && bound(?y2value) && (?xvalue*?xvalue+?y2value*?y2value)>?rateds*?rateds) .
FILTER ((?xvalue*?xvalue+?y2value*?y2value)>?rateds*?rateds) .
}
- Messages:
["The following is not fulfilled: CurveData.xvalue^2+CurveData.y2value^2 shall be less than or equal to RotatingMachine.ratedS^2."]
eq452c:CurveData-equationY1
Path: cim:CurveData.Curve
If CurveData.Curve is a ReactiveCapabilityCurve, each CurveData shall satisfy the following relation: CurveData.xvalue^2+CurveData.y1value^2 shall be less than or equal to RotatingMachine.ratedS^2.
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 .
?value rdf:type cim:ReactiveCapabilityCurve .
$this cim:CurveData.xvalue ?xvalue .
$this cim:CurveData.y1value ?y1value .
#BIND (EXISTS{?value ^cim:SynchronousMachine.InitialReactiveCapabilityCurve/cim:RotatingMachine.ratedS ?rateds} AS ?smrateds).
?value ^cim:SynchronousMachine.InitialReactiveCapabilityCurve/cim:RotatingMachine.ratedS ?rateds .
#FILTER ( ?smrateds=true && (?xvalue*?xvalue+?y1value*?y1value)>?rateds*?rateds) .
FILTER ( (?xvalue*?xvalue+?y1value*?y1value)>?rateds*?rateds) .
}
- Messages:
["The following is not fulfilled: CurveData.xvalue^2+CurveData.y1value^2 shall be less than or equal to RotatingMachine.ratedS^2."]
eq452c:CurveData-reactive
Path: rdf:type
If CurveData.Curve is a ReactiveCapabilityCurve, the CurveData.y2value shall be greater than or equal to CurveData.y1value.It is not allowed that all CurveData.y2value values are equal to CurveData.y1value 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 ?value ?countcd ?sumy1v ?sumy2v
WHERE {
{
SELECT $this (COUNT(?curvedtype) AS ?countcd) (SUM(?y1v) AS ?sumy1v) (SUM(?y2v) AS ?sumy2v)
WHERE {
$this cim:CurveData.Curve/rdf:type cim:ReactiveCapabilityCurve .
$this cim:CurveData.Curve/^cim:CurveData.Curve ?curved .
#$this cim:CurveData.Curve ?rcc .
#?rcc rdf:type ?curvetype .
#?rcc ^cim:CurveData.Curve ?curved .
?curved rdf:type ?curvedtype .
?curved cim:CurveData.y1value ?y1v.
?curved cim:CurveData.y2value ?y2v.
#OPTIONAL {?curved cim:CurveData.y2value ?y2v }.
#FILTER(bound(?y2v)).
}
GROUP BY $this ?curvedtype
}
$this cim:CurveData.Curve ?value .
#?value rdf:type ?curvetype .
?value rdf:type cim:ReactiveCapabilityCurve .
$this cim:CurveData.y1value ?y1value .
$this cim:CurveData.y2value ?y2value.
#OPTIONAL {$this cim:CurveData.y2value ?y2value }.
#FILTER (?curvetype=cim:ReactiveCapabilityCurve && bound(?y2value) && (?y2value<?y1value || (?y2value=?sumy1v/?countcd && ?y1value=?sumy2v/?countcd ))) .
FILTER ((?y2value<?y1value || (?y2value=?sumy1v/?countcd && ?y1value=?sumy2v/?countcd ))) .
}
- Messages:
["Either CurveData.y2value is not >= CurveData.y1value or CurveData.y2value = CurveData.y1value for all curve points."]
eq452c:Cut
Severity: sh:Violation
Targets:
- targetClass: cim:Cut
Nested Properties:
eq452c:Switch-connection
Path: rdf:type
Switch and its subclasses shall only connect to ConnectivityNode-s that are contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage.
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 {
{
SELECT $this ?cnc2 ?cnc1
WHERE {
?term1 cim:Terminal.ConductingEquipment $this .
?term2 cim:Terminal.ConductingEquipment $this .
?term1 cim:ACDCTerminal.sequenceNumber 1 .
?term2 cim:ACDCTerminal.sequenceNumber 2 .
#OPTIONAL {?term1 cim:Terminal.ConnectivityNode ?cn1 } .
#OPTIONAL {?cn1 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 } .
?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 .
#BIND(EXISTS{?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1a} AS ?hascnc1).
#OPTIONAL {?term2 cim:Terminal.ConnectivityNode ?cn2 } .
#OPTIONAL {?cn2 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 } .
?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 .
#BIND(EXISTS{?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2a} AS ?hascnc2).
#FILTER (?hascnc1=true && ?hascnc2=true).
}
}
OPTIONAL {?cnc1 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc2 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
#FILTER (bound(?cn1) && bound(?cn2) && bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
FILTER (bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
}
- Messages:
["Switch (or its subclasses) connects ConnectivityNode-s that are not contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage."]
eq452c:DCBusbar
Severity: sh:Violation
Targets:
- targetClass: cim:DCBusbar
eq452c:DCChopper
Severity: sh:Violation
Targets:
- targetClass: cim:DCChopper
eq452c:DCGround
Severity: sh:Violation
Targets:
- targetClass: cim:DCGround
eq452c:DCLineSegment
Severity: sh:Violation
Targets:
- targetClass: cim:DCLineSegment
eq452c:DCSeriesDevice
Severity: sh:Violation
Targets:
- targetClass: cim:DCSeriesDevice
eq452c:DCShunt
Severity: sh:Violation
Targets:
- targetClass: cim:DCShunt
eq452c:DCSwitch
Severity: sh:Violation
Targets:
- targetClass: cim:DCDisconnector
- targetClass: cim:DCBreaker
eq452c:DayType
Severity: sh:Violation
Targets:
- targetClass: cim:DayType
eq452c:DisconnectingCircuitBreaker
Severity: sh:Violation
Targets:
- targetClass: cim:DisconnectingCircuitBreaker
Nested Properties:
eq452c:Switch-connection
Path: rdf:type
Switch and its subclasses shall only connect to ConnectivityNode-s that are contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage.
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 {
{
SELECT $this ?cnc2 ?cnc1
WHERE {
?term1 cim:Terminal.ConductingEquipment $this .
?term2 cim:Terminal.ConductingEquipment $this .
?term1 cim:ACDCTerminal.sequenceNumber 1 .
?term2 cim:ACDCTerminal.sequenceNumber 2 .
#OPTIONAL {?term1 cim:Terminal.ConnectivityNode ?cn1 } .
#OPTIONAL {?cn1 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 } .
?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 .
#BIND(EXISTS{?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1a} AS ?hascnc1).
#OPTIONAL {?term2 cim:Terminal.ConnectivityNode ?cn2 } .
#OPTIONAL {?cn2 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 } .
?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 .
#BIND(EXISTS{?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2a} AS ?hascnc2).
#FILTER (?hascnc1=true && ?hascnc2=true).
}
}
OPTIONAL {?cnc1 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc2 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
#FILTER (bound(?cn1) && bound(?cn2) && bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
FILTER (bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
}
- Messages:
["Switch (or its subclasses) connects ConnectivityNode-s that are not contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage."]
eq452c:Disconnector
Severity: sh:Violation
Targets:
- targetClass: cim:Disconnector
Nested Properties:
eq452c:Switch-connection
Path: rdf:type
Switch and its subclasses shall only connect to ConnectivityNode-s that are contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage.
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 {
{
SELECT $this ?cnc2 ?cnc1
WHERE {
?term1 cim:Terminal.ConductingEquipment $this .
?term2 cim:Terminal.ConductingEquipment $this .
?term1 cim:ACDCTerminal.sequenceNumber 1 .
?term2 cim:ACDCTerminal.sequenceNumber 2 .
#OPTIONAL {?term1 cim:Terminal.ConnectivityNode ?cn1 } .
#OPTIONAL {?cn1 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 } .
?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 .
#BIND(EXISTS{?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1a} AS ?hascnc1).
#OPTIONAL {?term2 cim:Terminal.ConnectivityNode ?cn2 } .
#OPTIONAL {?cn2 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 } .
?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 .
#BIND(EXISTS{?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2a} AS ?hascnc2).
#FILTER (?hascnc1=true && ?hascnc2=true).
}
}
OPTIONAL {?cnc1 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc2 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
#FILTER (bound(?cn1) && bound(?cn2) && bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
FILTER (bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
}
- Messages:
["Switch (or its subclasses) connects ConnectivityNode-s that are not contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage."]
eq452c:EarthFaultCompensator
Severity: sh:Violation
Targets:
- targetClass: cim:GroundingImpedance
- targetClass: cim:PetersenCoil
eq452c:EnergyConnection
Severity: sh:Violation
Targets:
- targetClass: cim:NonConformLoad
- targetClass: cim:StaticVarCompensator
- targetClass: cim:AsynchronousMachine
- targetClass: cim:EnergyConsumer
- targetClass: cim:ConformLoad
- targetClass: cim:LinearShuntCompensator
- targetClass: cim:NonlinearShuntCompensator
- targetClass: cim:ExternalNetworkInjection
- targetClass: cim:SynchronousMachine
- targetClass: cim:EnergySource
eq452c:EquivalentBranch
Severity: sh:Violation
Targets:
- targetClass: cim:EquivalentBranch
eq452c:EquivalentInjection
Severity: sh:Violation
Targets:
- targetClass: cim:EquivalentInjection
eq452c:EquivalentShunt
Severity: sh:Violation
Targets:
- targetClass: cim:EquivalentShunt
eq452c:Fuse
Severity: sh:Violation
Targets:
- targetClass: cim:Fuse
Nested Properties:
eq452c:Switch-connection
Path: rdf:type
Switch and its subclasses shall only connect to ConnectivityNode-s that are contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage.
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 {
{
SELECT $this ?cnc2 ?cnc1
WHERE {
?term1 cim:Terminal.ConductingEquipment $this .
?term2 cim:Terminal.ConductingEquipment $this .
?term1 cim:ACDCTerminal.sequenceNumber 1 .
?term2 cim:ACDCTerminal.sequenceNumber 2 .
#OPTIONAL {?term1 cim:Terminal.ConnectivityNode ?cn1 } .
#OPTIONAL {?cn1 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 } .
?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 .
#BIND(EXISTS{?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1a} AS ?hascnc1).
#OPTIONAL {?term2 cim:Terminal.ConnectivityNode ?cn2 } .
#OPTIONAL {?cn2 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 } .
?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 .
#BIND(EXISTS{?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2a} AS ?hascnc2).
#FILTER (?hascnc1=true && ?hascnc2=true).
}
}
OPTIONAL {?cnc1 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc2 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
#FILTER (bound(?cn1) && bound(?cn2) && bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
FILTER (bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
}
- Messages:
["Switch (or its subclasses) connects ConnectivityNode-s that are not contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage."]
eq452c:GeneratingUnit
Severity: sh:Violation
Targets:
- targetClass: cim:GeneratingUnit
Nested Properties:
eq452c:GeneratingUnit.maxOperatingP-ratedS
Path: rdf:type
GeneratingUnit.maxOperatingP shall be less than or equal to the sum of RotatingMachine.ratedS for RotatingMachine-s associated to the 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:GeneratingUnit.maxOperatingP ?value .
{
SELECT $this (SUM(?rmrateds) AS ?sumrs)
WHERE {
$this ^cim:RotatingMachine.GeneratingUnit/cim:RotatingMachine.ratedS ?rmrateds .
#?rm cim:RotatingMachine.GeneratingUnit $this .
#?rm rdf:type ?rmtype .
#?rm cim:RotatingMachine.ratedS ?rmrateds.
}
#GROUP BY $this ?rmtype
GROUP BY $this
}
FILTER (?value>?sumrs).
}
- Messages:
["GeneratingUnit.maxOperatingP is greater than the sum of RotatingMachine.ratedS for RotatingMachine-s associated to GeneratingUnit."]
eq452c:GeneratingUnit-containmentNodeShape
Severity: sh:Violation
Targets:
- targetClass: cim:NuclearGeneratingUnit
- targetClass: cim:ThermalGeneratingUnit
- targetClass: cim:HydroGeneratingUnit
- targetClass: cim:WindGeneratingUnit
- targetClass: cim:GeneratingUnit
- targetClass: cim:SolarGeneratingUnit
eq452c:GeneratingUnit.aggregate
Severity: sh:Violation
Targets:
- targetClass: cim:GeneratingUnit
- targetClass: cim:SolarGeneratingUnit
- targetClass: cim:HydroGeneratingUnit
- targetClass: cim:WindGeneratingUnit
- targetClass: cim:ThermalGeneratingUnit
- targetClass: cim:NuclearGeneratingUnit
Nested Properties:
eq452c:SynchronousMachine-aggregate
Path: cim:Equipment.aggregate
If only one SynchronousMachine is associated with the GeneratingUnit then the Equipment.aggregate flag shall be consistent between the SynchronousMachine and GeneratingUnit if it exists in both.
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 ?sms ?value
WHERE {
{
SELECT $this (COUNT(?typesm) AS ?sms)
WHERE {
#BIND(EXISTS{$this ^cim:RotatingMachine.GeneratingUnit/rdf:type cim:SynchronousMachine} AS ?hasam).
$this ^cim:RotatingMachine.GeneratingUnit/rdf:type ?typesm.
#OPTIONAL {?sm cim:RotatingMachine.GeneratingUnit $this }.
#OPTIONAL {?sm rdf:type ?typesm }.
FILTER(?typesm=cim:SynchronousMachine ).
}
GROUP BY $this ?typesm
}
$this $PATH ?value.
#OPTIONAL {$this $PATH ?value }.
#OPTIONAL {?sm cim:RotatingMachine.GeneratingUnit $this }.
#OPTIONAL {?sm cim:Equipment.aggregate ?smaggregate }.
$this ^cim:RotatingMachine.GeneratingUnit/cim:Equipment.aggregate ?smaggregate .
#BIND(EXISTS{$this ^cim:RotatingMachine.GeneratingUnit/cim:Equipment.aggregate ?smaggregatea} AS ?hasaggr).
#FILTER (?sms=1 && bound(?value) && ?hasaggr=true && ?value!=?smaggregate ) .
FILTER (?sms=1 && ?value!=?smaggregate ) .
}
- Messages:
["The value is not consistent with .aggregate for the associated GeneratingUnit."]
eq452c:AsynchronousMachine-aggregate
Path: cim:Equipment.aggregate
If one AsynchronousMachine is associated with one GeneratingUnit the flag Equipment.aggregate shall be consistent in case it is provided at both AsynchronousMachine and 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 ?sms ?value
WHERE {
{
SELECT $this (COUNT(?typesm) AS ?sms)
WHERE {
#BIND(EXISTS{$this ^cim:RotatingMachine.GeneratingUnit/rdf:type cim:AsynchronousMachine} AS ?hasam).
$this ^cim:RotatingMachine.GeneratingUnit/rdf:type ?typesm.
#OPTIONAL {?sm cim:RotatingMachine.GeneratingUnit $this }.
#OPTIONAL {?sm rdf:type ?typesm }.
#FILTER(?typesm=cim:AsynchronousMachine && ?hasam=true).
FILTER(?typesm=cim:AsynchronousMachine).
}
GROUP BY $this ?typesm
}
$this $PATH ?value.
#OPTIONAL {$this $PATH ?value }.
#OPTIONAL {?sm cim:RotatingMachine.GeneratingUnit $this }.
#OPTIONAL {?sm cim:Equipment.aggregate ?smaggregate }.
$this ^cim:RotatingMachine.GeneratingUnit/cim:Equipment.aggregate ?smaggregate .
#BIND(EXISTS{$this ^cim:RotatingMachine.GeneratingUnit/cim:Equipment.aggregate ?smaggregatea} AS ?hasaggr).
#FILTER (?sms=1 && bound(?value) && ?hasaggr=true && ?value!=?smaggregate ) .
FILTER (?sms=1 && ?value!=?smaggregate ) .
}
- Messages:
["The value is not consistent with .aggregate for the associated GeneratingUnit."]
eq452c:Ground
Severity: sh:Violation
Targets:
- targetClass: cim:Ground
eq452c:GroundDisconnector
Severity: sh:Violation
Targets:
- targetClass: cim:GroundDisconnector
Nested Properties:
eq452c:Switch-connection
Path: rdf:type
Switch and its subclasses shall only connect to ConnectivityNode-s that are contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage.
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 {
{
SELECT $this ?cnc2 ?cnc1
WHERE {
?term1 cim:Terminal.ConductingEquipment $this .
?term2 cim:Terminal.ConductingEquipment $this .
?term1 cim:ACDCTerminal.sequenceNumber 1 .
?term2 cim:ACDCTerminal.sequenceNumber 2 .
#OPTIONAL {?term1 cim:Terminal.ConnectivityNode ?cn1 } .
#OPTIONAL {?cn1 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 } .
?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 .
#BIND(EXISTS{?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1a} AS ?hascnc1).
#OPTIONAL {?term2 cim:Terminal.ConnectivityNode ?cn2 } .
#OPTIONAL {?cn2 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 } .
?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 .
#BIND(EXISTS{?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2a} AS ?hascnc2).
#FILTER (?hascnc1=true && ?hascnc2=true).
}
}
OPTIONAL {?cnc1 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc2 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
#FILTER (bound(?cn1) && bound(?cn2) && bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
FILTER (bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
}
- Messages:
["Switch (or its subclasses) connects ConnectivityNode-s that are not contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage."]
eq452c:HydroGeneratingUnit
Severity: sh:Violation
Targets:
- targetClass: cim:HydroGeneratingUnit
Nested Properties:
eq452c:GeneratingUnit.maxOperatingP-ratedS
Path: rdf:type
GeneratingUnit.maxOperatingP shall be less than or equal to the sum of RotatingMachine.ratedS for RotatingMachine-s associated to the 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:GeneratingUnit.maxOperatingP ?value .
{
SELECT $this (SUM(?rmrateds) AS ?sumrs)
WHERE {
$this ^cim:RotatingMachine.GeneratingUnit/cim:RotatingMachine.ratedS ?rmrateds .
#?rm cim:RotatingMachine.GeneratingUnit $this .
#?rm rdf:type ?rmtype .
#?rm cim:RotatingMachine.ratedS ?rmrateds.
}
#GROUP BY $this ?rmtype
GROUP BY $this
}
FILTER (?value>?sumrs).
}
- Messages:
["GeneratingUnit.maxOperatingP is greater than the sum of RotatingMachine.ratedS for RotatingMachine-s associated to GeneratingUnit."]
eq452c:HydroGeneratingUnit.energyConversionCapability-typeConsistency
Path: rdf:type
If HydroGeneratingUnit.energyConversionCapability is generator the associated SynchronousMachine shall have SynchronousMachine.type set to generator or generatorOrCondenser. If HydroGeneratingUnit.energyConversionCapability is pumpAndGenerator the associated SynchronousMachine shall have SynchronousMachine.type set to motor, generatorOrMotor or 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 cim:HydroGeneratingUnit.energyConversionCapability ?value .
#OPTIONAL {$this cim:HydroGeneratingUnit.energyConversionCapability ?value }.
$this ^cim:RotatingMachine.GeneratingUnit/cim:SynchronousMachine.type ?type.
#FILTER ((bound(?value) && ?value=cim:HydroEnergyConversionKind.generator && ?type NOT IN (cim:SynchronousMachineKind.generator, cim:SynchronousMachineKind.generatorOrCondenser ) ) || (bound(?value) && ?value=cim:HydroEnergyConversionKind.pumpAndGenerator && ?type NOT IN (cim:SynchronousMachineKind.motor, cim:SynchronousMachineKind.generatorOrMotor, cim:SynchronousMachineKind.generatorOrCondenserOrMotor) )).
FILTER ((?value=cim:HydroEnergyConversionKind.generator && ?type NOT IN (cim:SynchronousMachineKind.generator, cim:SynchronousMachineKind.generatorOrCondenser ) ) || (?value=cim:HydroEnergyConversionKind.pumpAndGenerator && ?type NOT IN (cim:SynchronousMachineKind.motor, cim:SynchronousMachineKind.generatorOrMotor, cim:SynchronousMachineKind.generatorOrCondenserOrMotor) )).
}
- Messages:
["The HydroGeneratingUnit.energyConversionCapability of the associated SynchronousMachine is not consistent with SynchronousMachine.type."]
eq452c:HydroPump
Severity: sh:Violation
Targets:
- targetClass: cim:HydroPump
eq452c:Jumper
Severity: sh:Violation
Targets:
- targetClass: cim:Jumper
Nested Properties:
eq452c:Switch-connection
Path: rdf:type
Switch and its subclasses shall only connect to ConnectivityNode-s that are contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage.
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 {
{
SELECT $this ?cnc2 ?cnc1
WHERE {
?term1 cim:Terminal.ConductingEquipment $this .
?term2 cim:Terminal.ConductingEquipment $this .
?term1 cim:ACDCTerminal.sequenceNumber 1 .
?term2 cim:ACDCTerminal.sequenceNumber 2 .
#OPTIONAL {?term1 cim:Terminal.ConnectivityNode ?cn1 } .
#OPTIONAL {?cn1 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 } .
?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 .
#BIND(EXISTS{?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1a} AS ?hascnc1).
#OPTIONAL {?term2 cim:Terminal.ConnectivityNode ?cn2 } .
#OPTIONAL {?cn2 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 } .
?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 .
#BIND(EXISTS{?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2a} AS ?hascnc2).
#FILTER (?hascnc1=true && ?hascnc2=true).
}
}
OPTIONAL {?cnc1 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc2 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
#FILTER (bound(?cn1) && bound(?cn2) && bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
FILTER (bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
}
- Messages:
["Switch (or its subclasses) connects ConnectivityNode-s that are not contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage."]
eq452c:Junction
Severity: sh:Violation
Targets:
- targetClass: cim:Junction
eq452c:LinearShuntCompensator
Severity: sh:Violation
Targets:
- targetClass: cim:LinearShuntCompensator
Nested Properties:
eq452c:ShuntCompensator-controlMode
Path: rdf:type
For ShuntCompensator, the association RegulatingCondEq.RequlatingControl shall only point to a RequlatingControl that has the following control modes for RegulatingControl.mode: voltage, reactivePower and powerFactor.
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 {
#?rcontrol ^cim:RegulatingCondEq.RegulatingControl $this .
#?rcontrol cim:RegulatingControl.mode ?value .
$this cim:RegulatingCondEq.RegulatingControl/cim:RegulatingControl.mode ?value .
FILTER (?value!=cim:RegulatingControlModeKind.reactivePower && ?value!=cim:RegulatingControlModeKind.voltage && ?value!=cim:RegulatingControlModeKind.powerFactor).
}
- Messages:
["Unallowed regulating control mode for a ShuntCompensator."]
eq452c:LoadBreakSwitch
Severity: sh:Violation
Targets:
- targetClass: cim:LoadBreakSwitch
Nested Properties:
eq452c:Switch-connection
Path: rdf:type
Switch and its subclasses shall only connect to ConnectivityNode-s that are contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage.
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 {
{
SELECT $this ?cnc2 ?cnc1
WHERE {
?term1 cim:Terminal.ConductingEquipment $this .
?term2 cim:Terminal.ConductingEquipment $this .
?term1 cim:ACDCTerminal.sequenceNumber 1 .
?term2 cim:ACDCTerminal.sequenceNumber 2 .
#OPTIONAL {?term1 cim:Terminal.ConnectivityNode ?cn1 } .
#OPTIONAL {?cn1 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 } .
?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 .
#BIND(EXISTS{?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1a} AS ?hascnc1).
#OPTIONAL {?term2 cim:Terminal.ConnectivityNode ?cn2 } .
#OPTIONAL {?cn2 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 } .
?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 .
#BIND(EXISTS{?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2a} AS ?hascnc2).
#FILTER (?hascnc1=true && ?hascnc2=true).
}
}
OPTIONAL {?cnc1 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc2 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
#FILTER (bound(?cn1) && bound(?cn2) && bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
FILTER (bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
}
- Messages:
["Switch (or its subclasses) connects ConnectivityNode-s that are not contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage."]
eq452c:NonlinearShuntCompensator
Severity: sh:Violation
Targets:
- targetClass: cim:NonlinearShuntCompensator
Nested Properties:
eq452c:ShuntCompensator-controlMode
Path: rdf:type
For ShuntCompensator, the association RegulatingCondEq.RequlatingControl shall only point to a RequlatingControl that has the following control modes for RegulatingControl.mode: voltage, reactivePower and powerFactor.
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 {
#?rcontrol ^cim:RegulatingCondEq.RegulatingControl $this .
#?rcontrol cim:RegulatingControl.mode ?value .
$this cim:RegulatingCondEq.RegulatingControl/cim:RegulatingControl.mode ?value .
FILTER (?value!=cim:RegulatingControlModeKind.reactivePower && ?value!=cim:RegulatingControlModeKind.voltage && ?value!=cim:RegulatingControlModeKind.powerFactor).
}
- Messages:
["Unallowed regulating control mode for a ShuntCompensator."]
eq452c:NonlinearShuntCompensatorPoint
Severity: sh:Violation
Targets:
- targetClass: cim:NonlinearShuntCompensatorPoint
eq452c:NuclearGeneratingUnit
Severity: sh:Violation
Targets:
- targetClass: cim:NuclearGeneratingUnit
Nested Properties:
eq452c:GeneratingUnit.maxOperatingP-ratedS
Path: rdf:type
GeneratingUnit.maxOperatingP shall be less than or equal to the sum of RotatingMachine.ratedS for RotatingMachine-s associated to the 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:GeneratingUnit.maxOperatingP ?value .
{
SELECT $this (SUM(?rmrateds) AS ?sumrs)
WHERE {
$this ^cim:RotatingMachine.GeneratingUnit/cim:RotatingMachine.ratedS ?rmrateds .
#?rm cim:RotatingMachine.GeneratingUnit $this .
#?rm rdf:type ?rmtype .
#?rm cim:RotatingMachine.ratedS ?rmrateds.
}
#GROUP BY $this ?rmtype
GROUP BY $this
}
FILTER (?value>?sumrs).
}
- Messages:
["GeneratingUnit.maxOperatingP is greater than the sum of RotatingMachine.ratedS for RotatingMachine-s associated to GeneratingUnit."]
eq452c:OperationalLimitSet
Severity: sh:Violation
Targets:
- targetClass: cim:OperationalLimitSet
Nested Properties:
eq452c:OperationalLimitSet-limits
Path: rdf:type
In case the OperationalLimitSet is the operational limit of the AuxiliaryEquipment, then the association end OperationalLimitSet.Equipment is also required. In the case where OperationalLimitSet.Equipment is associated with an instance of ConductingEquipment, OperationalLimitSet.Terminal shall be one of the ConductingEquipment’s Terminal-s.
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 DISTINCT $this ?value
WHERE {
$this cim:OperationalLimitSet.Terminal ?olsterm .
OPTIONAL{$this cim:OperationalLimitSet.Terminal/^cim:AuxiliaryEquipment.Terminal ?auxeq } .
OPTIONAL{$this cim:OperationalLimitSet.Equipment ?equipment .
?equipment rdf:type ?value .
BIND(EXISTS{?equipment ^cim:Terminal.ConductingEquipment ?olsterm} AS ?termmatch).
}.
FILTER ((!bound(?equipment) && bound(?auxeq)) ||
(bound(?equipment) && ?termmatch=false && ?value NOT IN (cim:CurrentTransformer, cim:PotentialTransformer, cim:PostLineSensor, cim:SurgeArrester, cim:WaveTrap, cim:FaultIndicator, cim:PowerElectronicsWindUnit, cim:PhotoVoltaicUnit, cim:BatteryUnit, cim:HydroPump, cim:GeneratingUnit, cim:HydroGeneratingUnit, cim:NuclearGeneratingUnit, cim:SolarGeneratingUnit, cim:ThermalGeneratingUnit, cim:WindGeneratingUnit, cim:Equipment) )
).
}
- Messages:
["Either OperationalLimitSet.Equipment is not provided for a Terminal that is associated with AuxiliaryEquipment or in case of ConductingEquipment the OperationalLimitSet.Terminal is not one of the the ConductingEquipment’s Terminal-s."]
eq452c:PhaseTapChangerAsymmetrical
Severity: sh:Violation
Targets:
- targetClass: cim:PhaseTapChangerAsymmetrical
Nested Properties:
eq452c:PhaseTapChanger-controlModeP
Path: rdf:type
The association TapChanger.TapChangerControl for PhaseTapChanger-s shall only point to a TapChangerControl that has the following control modes for RegulatingControl.mode: activePower or voltage.
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 {
#?rcontrol ^cim:TapChanger.TapChangerControl $this .
#?rcontrol cim:RegulatingControl.mode ?value .
$this cim:TapChanger.TapChangerControl/cim:RegulatingControl.mode ?value .
FILTER (?value!=cim:RegulatingControlModeKind.activePower && ?value!=cim:RegulatingControlModeKind.voltage).
}
- Messages:
["Unallowed regulating control mode for a PhaseTapChanger."]
eq452c:PhaseTapChangerLinear
Severity: sh:Violation
Targets:
- targetClass: cim:PhaseTapChangerLinear
Nested Properties:
eq452c:PhaseTapChanger-controlModeP
Path: rdf:type
The association TapChanger.TapChangerControl for PhaseTapChanger-s shall only point to a TapChangerControl that has the following control modes for RegulatingControl.mode: activePower or voltage.
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 {
#?rcontrol ^cim:TapChanger.TapChangerControl $this .
#?rcontrol cim:RegulatingControl.mode ?value .
$this cim:TapChanger.TapChangerControl/cim:RegulatingControl.mode ?value .
FILTER (?value!=cim:RegulatingControlModeKind.activePower && ?value!=cim:RegulatingControlModeKind.voltage).
}
- Messages:
["Unallowed regulating control mode for a PhaseTapChanger."]
eq452c:PhaseTapChangerSymmetrical
Severity: sh:Violation
Targets:
- targetClass: cim:PhaseTapChangerSymmetrical
Nested Properties:
eq452c:PhaseTapChanger-controlModeP
Path: rdf:type
The association TapChanger.TapChangerControl for PhaseTapChanger-s shall only point to a TapChangerControl that has the following control modes for RegulatingControl.mode: activePower or voltage.
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 {
#?rcontrol ^cim:TapChanger.TapChangerControl $this .
#?rcontrol cim:RegulatingControl.mode ?value .
$this cim:TapChanger.TapChangerControl/cim:RegulatingControl.mode ?value .
FILTER (?value!=cim:RegulatingControlModeKind.activePower && ?value!=cim:RegulatingControlModeKind.voltage).
}
- Messages:
["Unallowed regulating control mode for a PhaseTapChanger."]
eq452c:PhaseTapChangerTabular
Severity: sh:Violation
Targets:
- targetClass: cim:PhaseTapChangerTabular
Nested Properties:
eq452c:PhaseTapChanger-controlModeP
Path: rdf:type
The association TapChanger.TapChangerControl for PhaseTapChanger-s shall only point to a TapChangerControl that has the following control modes for RegulatingControl.mode: activePower or voltage.
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 {
#?rcontrol ^cim:TapChanger.TapChangerControl $this .
#?rcontrol cim:RegulatingControl.mode ?value .
$this cim:TapChanger.TapChangerControl/cim:RegulatingControl.mode ?value .
FILTER (?value!=cim:RegulatingControlModeKind.activePower && ?value!=cim:RegulatingControlModeKind.voltage).
}
- Messages:
["Unallowed regulating control mode for a PhaseTapChanger."]
eq452c:PowerTransformer
Severity: sh:Violation
Targets:
- targetClass: cim:PowerTransformer
Nested Properties:
eq452c:PowerTransformerEnd.x-value
Path: rdf:type
Transformers with zero series reactance do not exist. PowerTransformerEnd.x of high voltage end in case of a two winding transformer shall be a positive value. In case of a three winding transformer the PowerTransformerEnd.x shall not be 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 DISTINCT $this
WHERE {
$this ^cim:PowerTransformerEnd.PowerTransformer ?end1 ;
^cim:PowerTransformerEnd.PowerTransformer ?end2 ;
^cim:PowerTransformerEnd.PowerTransformer ?end3 .
#?end1 cim:PowerTransformerEnd.PowerTransformer $this .
#?end2 cim:PowerTransformerEnd.PowerTransformer $this .
#?end3 cim:PowerTransformerEnd.PowerTransformer $this .
?end1 cim:TransformerEnd.endNumber 1.
?end2 cim:TransformerEnd.endNumber 2.
?end1 cim:PowerTransformerEnd.x ?x1 .
?end2 cim:PowerTransformerEnd.x ?x2 .
#?end3 cim:TransformerEnd.endNumber 3 .
#?end3 cim:PowerTransformerEnd.x ?x3 .
OPTIONAL{?end3 cim:TransformerEnd.endNumber 3 .
?end3 cim:PowerTransformerEnd.x ?x3 } .
BIND(EXISTS{$this ^cim:PowerTransformerEnd.PowerTransformer/cim:TransformerEnd.endNumber 3 } AS ?threewin) .
#FILTER ((!(?x1>0 && ?x2=0) && ?threewin=false )|| (?threewin=true && !(?x1!=0 && ?x2!=0 && ?x3!=0)) ).
FILTER ((!(?x1>0 && ?x2=0) && ?threewin=false )|| (?threewin=true && !(?x1!=0 && ?x2!=0 && ?x3!=0)) ).
}
- Messages:
["One of of the following occurs: 1) The value is negative or zero for winding one a two-winding transformer. 2) The value is zero for a three-winding transformer."]
eq452c:PowerTransformerEnd
Severity: sh:Violation
Targets:
- targetClass: cim:PowerTransformerEnd
eq452c:ProtectedSwitch
Severity: sh:Violation
Targets:
- targetClass: cim:Breaker
- targetClass: cim:DisconnectingCircuitBreaker
- targetClass: cim:LoadBreakSwitch
eq452c:RatioTapChanger
Severity: sh:Violation
Targets:
- targetClass: cim:RatioTapChanger
Nested Properties:
eq452c:RatioTapChanger-controlMode
Path: rdf:type
The association TapChanger.TapChangerControl for RatioTapChanger-s shall only point to a TapChangerControl the has the following control modes for RegulatingControl.mode: voltage, reactivePower and powerFactor.
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 {
#?rcontrol ^cim:TapChanger.TapChangerControl $this .
#?rcontrol cim:RegulatingControl.mode ?value .
$this cim:TapChanger.TapChangerControl/cim:RegulatingControl.mode ?value .
FILTER (?value!=cim:RegulatingControlModeKind.reactivePower && ?value!=cim:RegulatingControlModeKind.voltage && ?value!=cim:RegulatingControlModeKind.powerFactor).
}
- Messages:
["Unallowed regulating control mode for a RatioTapChanger."]
eq452c:ReactiveCapabilityCurve
Severity: sh:Violation
Targets:
- targetClass: cim:ReactiveCapabilityCurve
Nested Properties:
eq452c:ReactiveCapabilityCurve-reactiveCountP
Path: rdf:type
For a SynchronousMachine with a ReactiveCapabilityCurve the number of CurveData instances depends on the attribute SynchronousMachine.type as follows: - condenser, ReactiveCapabilityCurve is given by SynchronousMachine.maxQ and SynchronousMachine.minQ. There shall not be any association to ReactiveCapabilityCurve. - generator or generatorOrCondenser, at least two CurveData instances with CurveData.xvalue greater than or equal to 0. - motor or motorOrCondenser, at least two CurveData instances with CurveData.xvalue less than or equal to 0. - generatorOrMotor or generatorOrCondenserOrMotor, at least three CurveData instances with at least one having CurveData.xvalue greater than or equal to 0 and one having CurveData.xvalue less than or equal to 0. In general, it is required that the points defined by the ReactiveCapabilityCurve form an area of reactive capability different than 0.
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 ?curvedatas ?value
WHERE {
{
SELECT $this (COUNT(?typecd) AS ?curvedatas) (MAX(?xvalue) AS ?maxxvalue) (MIN(?xvalue) AS ?minxvalue)
WHERE {
$this ^cim:CurveData.Curve/rdf:type ?typecd .
$this ^cim:CurveData.Curve/cim:CurveData.xvalue ?xvalue .
#?curvedata cim:CurveData.Curve $this .
#?curvedata rdf:type ?typecd .
#?curvedata cim:CurveData.xvalue ?xvalue .
}
GROUP BY $this ?typecd
}
$this ^cim:SynchronousMachine.InitialReactiveCapabilityCurve/cim:SynchronousMachine.type ?type .
#BIND(EXISTS{$this ^cim:SynchronousMachine.InitialReactiveCapabilityCurve/cim:SynchronousMachine.type ?a} AS ?hasrcc).
#OPTIONAL {?sm cim:SynchronousMachine.InitialReactiveCapabilityCurve $this }.
#OPTIONAL {?sm cim:SynchronousMachine.type ?type }.
#OPTIONAL {$this ^cim:SynchronousMachine.InitialReactiveCapabilityCurve ?mach }.
$this ^cim:CurveData.Curve/cim:CurveData.xvalue ?xvalue1 .
#?curvedata1 cim:CurveData.Curve $this .
#?curvedata1 cim:CurveData.xvalue ?xvalue1 .
BIND("" as ?value).
#FILTER (?hasrcc=true && ((?type=cim:SynchronousMachineKind.condenser ) ||
#((?type=cim:SynchronousMachineKind.generator || ?type=cim:SynchronousMachineKind.generatorOrCondenser) && (?curvedatas<2 || ?xvalue1<0)) ||
#((?type=cim:SynchronousMachineKind.motor || ?type=cim:SynchronousMachineKind.motorOrCondenser) && (?curvedatas<2 || ?xvalue1>0)) ||
#((?type=cim:SynchronousMachineKind.generatorOrMotor || ?type=cim:SynchronousMachineKind.generatorOrCondenserOrMotor) && (?curvedatas<3 || !(?maxxvalue>=0 && ?minxvalue<=0))))
#) .
FILTER (((?type=cim:SynchronousMachineKind.condenser ) ||
((?type=cim:SynchronousMachineKind.generator || ?type=cim:SynchronousMachineKind.generatorOrCondenser) && (?curvedatas<2 || ?xvalue1<0)) ||
((?type=cim:SynchronousMachineKind.motor || ?type=cim:SynchronousMachineKind.motorOrCondenser) && (?curvedatas<2 || ?xvalue1>0)) ||
((?type=cim:SynchronousMachineKind.generatorOrMotor || ?type=cim:SynchronousMachineKind.generatorOrCondenserOrMotor) && (?curvedatas<3 || !(?maxxvalue>=0 && ?minxvalue<=0))))
) .
}
- Messages:
["Reactive capability curve does not have the required number of points or the CurveData.xvalue is not in the defined range."]
eq452c:ReactiveCapabilityCurve-xvalue
Path: rdf:type
All CurveData.xvalue for a given ReactiveCapabilityCurve shall be unique, e.g. it is not allowed for two or more .xvalue to have the same float value for a given ReactiveCapabilityCurve.
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 {
{
SELECT $this (COUNT(?xvalue1) AS ?c1)
WHERE {
$this ^cim:CurveData.Curve/cim:CurveData.xvalue ?xvalue1.
}
GROUP BY $this ?xvalue1
}
{
SELECT DISTINCT $this (COUNT(?xvalue2) AS ?c2)
WHERE {
$this ^cim:CurveData.Curve/cim:CurveData.xvalue ?xvalue2.
}
GROUP BY $this ?xvalue2
}
FILTER (?c1!=?c2).
}
LIMIT 1
- Messages:
["CurveData.xvalue for a given ReactiveCapabilityCurve are not unique."]
eq452c:RegulatingControl
Severity: sh:Violation
Targets:
- targetClass: cim:RegulatingControl
eq452c:SeriesCompensator
Severity: sh:Violation
Targets:
- targetClass: cim:SeriesCompensator
eq452c:SolarGeneratingUnit
Severity: sh:Violation
Targets:
- targetClass: cim:SolarGeneratingUnit
Nested Properties:
eq452c:GeneratingUnit.maxOperatingP-ratedS
Path: rdf:type
GeneratingUnit.maxOperatingP shall be less than or equal to the sum of RotatingMachine.ratedS for RotatingMachine-s associated to the 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:GeneratingUnit.maxOperatingP ?value .
{
SELECT $this (SUM(?rmrateds) AS ?sumrs)
WHERE {
$this ^cim:RotatingMachine.GeneratingUnit/cim:RotatingMachine.ratedS ?rmrateds .
#?rm cim:RotatingMachine.GeneratingUnit $this .
#?rm rdf:type ?rmtype .
#?rm cim:RotatingMachine.ratedS ?rmrateds.
}
#GROUP BY $this ?rmtype
GROUP BY $this
}
FILTER (?value>?sumrs).
}
- Messages:
["GeneratingUnit.maxOperatingP is greater than the sum of RotatingMachine.ratedS for RotatingMachine-s associated to GeneratingUnit."]
eq452c:StaticVarCompensator
Severity: sh:Violation
Targets:
- targetClass: cim:StaticVarCompensator
Nested Properties:
eq452c:StaticVarCompensator-controlMode
Path: rdf:type
For StaticVarCompensator, the association RegulatingCondEq.RequlatingControl is required and shall only point to a RequlatingControl that has the following control modes for RegulatingControl.mode: voltage and reactivePower.
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 {
#?rcontrol ^cim:RegulatingCondEq.RegulatingControl $this .
#?rcontrol cim:RegulatingControl.mode ?value .
$this cim:RegulatingCondEq.RegulatingControl/cim:RegulatingControl.mode ?value .
BIND(EXISTS{$this cim:StaticVarCompensator.sVCControlMode ?a} AS ?hassvcmode).
BIND(EXISTS{$this cim:StaticVarCompensator.voltageSetPoint ?b} AS ?hasvsetpoint).
#OPTIONAL {$this cim:StaticVarCompensator.sVCControlMode ?svcmode }.
#OPTIONAL {$this cim:StaticVarCompensator.voltageSetPoint ?vsetpoint }.
FILTER ((?value!=cim:RegulatingControlModeKind.reactivePower && ?value!=cim:RegulatingControlModeKind.voltage) || ?hassvcmode=true || ?hasvsetpoint=true).
}
- Messages:
["Unallowed regulating control mode for a StaticVarCompensator or not allowed usage of StaticVarCompensator.sVCControlMode or StaticVarCompensator.voltageSetPoint."]
eq452c:Switch
Severity: sh:Violation
Targets:
- targetClass: cim:Switch
Nested Properties:
eq452c:Switch-connection
Path: rdf:type
Switch and its subclasses shall only connect to ConnectivityNode-s that are contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage.
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 {
{
SELECT $this ?cnc2 ?cnc1
WHERE {
?term1 cim:Terminal.ConductingEquipment $this .
?term2 cim:Terminal.ConductingEquipment $this .
?term1 cim:ACDCTerminal.sequenceNumber 1 .
?term2 cim:ACDCTerminal.sequenceNumber 2 .
#OPTIONAL {?term1 cim:Terminal.ConnectivityNode ?cn1 } .
#OPTIONAL {?cn1 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 } .
?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1 .
#BIND(EXISTS{?term1 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc1a} AS ?hascnc1).
#OPTIONAL {?term2 cim:Terminal.ConnectivityNode ?cn2 } .
#OPTIONAL {?cn2 cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 } .
?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2 .
#BIND(EXISTS{?term2 cim:Terminal.ConnectivityNode/cim:ConnectivityNode.ConnectivityNodeContainer ?cnc2a} AS ?hascnc2).
#FILTER (?hascnc1=true && ?hascnc2=true).
}
}
OPTIONAL {?cnc1 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc1 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn1nv } .
OPTIONAL {?cnc2 cim:Bay.VoltageLevel/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 ^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
OPTIONAL {?cnc2 cim:DCConverterUnit.Substation/^cim:VoltageLevel.Substation/cim:VoltageLevel.BaseVoltage/cim:BaseVoltage.nominalVoltage ?cn2nv } .
#FILTER (bound(?cn1) && bound(?cn2) && bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
FILTER (bound(?cn1nv) && bound(?cn2nv) && ?cn1nv!=?cn2nv).
}
- Messages:
["Switch (or its subclasses) connects ConnectivityNode-s that are not contained in either the same VoltageLevel or in different VoltageLevel-s which have the same BaseVoltage."]
eq452c:SynchronousMachine
Severity: sh:Violation
Targets:
- targetClass: cim:SynchronousMachine
Nested Properties:
eq452c:GeneratingUnit-typeDependency
Path: cim:SynchronousMachine.type
GeneratingUnit.maxOperatingP and GeneratingUnit.minOperatingP shall depend on the SynchronousMachine.type of the associated SynchronousMachine as follows:- condenser: GeneratingUnit.minOperatingP and GeneratingUnit.maxOperatingP shall equal zero.- generator or generatorOrCondenser: GeneratingUnit.minOperatingP shall be greater than or equal to zero and GeneratingUnit.maxOperatingP shall be greater than zero.- motor or motorOrCondenser: GeneratingUnit.minOperatingP shall be a negative value and GeneratingUnit.maxOperatingP shall be a negative value or zero.- generatorOrMotor or generatorOrCondenserOrMotor: GeneratingUnit.minOperatingP shall be a negative value and GeneratingUnit.maxOperatingP shall be greater than 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:RotatingMachine.GeneratingUnit/cim:GeneratingUnit.maxOperatingP ?maxp .
$this cim:RotatingMachine.GeneratingUnit/cim:GeneratingUnit.minOperatingP ?minp .
#OPTIONAL {$this cim:RotatingMachine.GeneratingUnit ?genunit } .
#OPTIONAL {?genunit cim:GeneratingUnit.maxOperatingP ?maxp } .
#OPTIONAL {?genunit cim:GeneratingUnit.minOperatingP ?minp } .
#BIND(EXISTS{$this cim:RotatingMachine.GeneratingUnit ?a} AS ?hasgenunit).
#BIND(EXISTS{$this cim:RotatingMachine.GeneratingUnit/cim:GeneratingUnit.maxOperatingP ?b} AS ?hasmaxp).
#BIND(EXISTS{$this cim:RotatingMachine.GeneratingUnit/cim:GeneratingUnit.minOperatingP ?c} AS ?hasminp).
#FILTER ((?hasgenunit=true && ?hasmaxp=true && ?hasminp=true && ?value=cim:SynchronousMachineKind.condenser && (?maxp!=0 || ?minp!=0)) ||
#(?hasgenunit=true && ?hasmaxp=true && ?hasminp=true && (?value=cim:SynchronousMachineKind.generator || ?value=cim:SynchronousMachineKind.generatorOrCondenser) && (?maxp<=0 || ?minp<0)) ||
#(?hasgenunit=true && ?hasmaxp=true && ?hasminp=true && (?value=cim:SynchronousMachineKind.motor || ?value=cim:SynchronousMachineKind.motorOrCondenser) && (?maxp>0 || ?minp>=0)) ||
#(?hasgenunit=true && ?hasmaxp=true && ?hasminp=true && (?value=cim:SynchronousMachineKind.generatorOrMotor || ?value=cim:SynchronousMachineKind.generatorOrCondenserOrMotor) && (?maxp<=0 || ?minp>=0))
#).
FILTER ((?value=cim:SynchronousMachineKind.condenser && (?maxp!=0 || ?minp!=0)) ||
((?value=cim:SynchronousMachineKind.generator || ?value=cim:SynchronousMachineKind.generatorOrCondenser) && (?maxp<=0 || ?minp<0)) ||
((?value=cim:SynchronousMachineKind.motor || ?value=cim:SynchronousMachineKind.motorOrCondenser) && (?maxp>0 || ?minp>=0)) ||
((?value=cim:SynchronousMachineKind.generatorOrMotor || ?value=cim:SynchronousMachineKind.generatorOrCondenserOrMotor) && (?maxp<=0 || ?minp>=0))
).
}
- Messages:
["Inconsistancy between GeneratingUnit.maxOperatingP and GeneratingUnit.minOperatingP and SynchronousMachine.type."]
eq452c:SynchronousMachine.type-condenser
Path: cim:SynchronousMachine.type
The SynchronousMachine is not required to be associated with a GeneratingUnit via the association RotatingMachine.GeneratingUnit in cases where a synchronous condenser is being modelled as there is no capability for real power output. In this case, the SynchronousMachine.type shall be set to condenser. The following SynchronousMachine.type-s: motorOrCondenser, generatorOrCondenser, and generatorOrCondenserOrMotor are not allowed to use.
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 $PATH ?value .
$this $PATH cim:SynchronousMachineKind.condenser .
OPTIONAL {$this cim:RotatingMachine.GeneratingUnit ?genunit } .
#BIND(EXISTS{$this cim:RotatingMachine.GeneratingUnit ?genunit} AS ?opt).
#FILTER (?opt=true && ?value=cim:SynchronousMachineKind.condenser ).
FILTER (bound(?genunit) ).
}
- Messages:
["SynchronousMachine of type condenser with associated GeneratingUnit."]
eq452c:SynchronousMachine-controlMode
Path: rdf:type
For SynchronousMachine, the association RegulatingCondEq.RequlatingControl shall only point to a RequlatingControl that has the following control modes for RegulatingControl.mode: voltage, reactivePower and powerFactor.
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 {
#?rcontrol ^cim:RegulatingCondEq.RegulatingControl $this .
#?rcontrol cim:RegulatingControl.mode ?value .
$this cim:RegulatingCondEq.RegulatingControl/cim:RegulatingControl.mode ?value .
FILTER (?value!=cim:RegulatingControlModeKind.reactivePower && ?value!=cim:RegulatingControlModeKind.voltage && ?value!=cim:RegulatingControlModeKind.powerFactor).
}
- Messages:
["Unallowed regulating control mode for a SynchronousMachine."]
eq452c:SynchronousMachine-reactiveLimits
Path: rdf:type
ReactiveCapabilityCurve-s are not required if the reactive power limits of the SynchronousMachine do not vary with real power output. SynchronousMachine.minQ and SynchronousMachine.maxQ are required if SynchronousMachine.InitialReactiveCapabilityCurve is missing. If the association SynchronousMachine.InitialReactiveCapabilityCurve is provided it takes precedence to the information provided by the attributes SynchronousMachine.minQ and SynchronousMachine.maxQ. However, if both SynchronousMachine.minQ, SynchronousMachine.maxQ and ReactiveCapabilityCurve are present, the SynchronousMachine.minQ shall be equal to min of CurveData.y1value-s and SynchronousMachine.maxQ shall be equal to max CurveData.y2value-s.
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 {
OPTIONAL {$this cim:SynchronousMachine.minQ ?minq } .
OPTIONAL {$this cim:SynchronousMachine.maxQ ?maxq } .
#OPTIONAL {$this cim:SynchronousMachine.InitialReactiveCapabilityCurve ?rcc } .
BIND(EXISTS{$this cim:SynchronousMachine.InitialReactiveCapabilityCurve ?rcca} AS ?hasrcc).
{
SELECT $this (MAX(?y2value) AS ?my2value) (MIN(?y1value) AS ?my1value)
WHERE {
#OPTIONAL {?rcc1 ^cim:SynchronousMachine.InitialReactiveCapabilityCurve $this } .
#?rcc1 ^cim:CurveData.Curve ?curvedata .
$this cim:SynchronousMachine.InitialReactiveCapabilityCurve/^cim:CurveData.Curve ?curvedata .
#BIND(EXISTS{$this cim:SynchronousMachine.InitialReactiveCapabilityCurve/^cim:CurveData.Curve ?curvedataa} AS ?hascurvedata).
?curvedata rdf:type ?cdtype .
?curvedata cim:CurveData.y1value ?y1value .
?curvedata cim:CurveData.y2value ?y2value .
#FILTER (?hascurvedata=true && ?cdtype=cim:CurveData ) .
FILTER (?cdtype=cim:CurveData ) .
}
GROUP BY $this ?cdtype
}
FILTER ((?hasrcc=false && !(bound(?minq) && bound(?maxq))) || (?hasrcc=true && bound(?minq) && bound(?maxq) && !(?maxq=?my2value && ?minq=?my1value))) .
}
- Messages:
["One of the following is not fulfilled: 1)Neither SynchronousMachine.minQ, SynchronousMachine.maxQ nor SynchronousMachine.InitialReactiveCapabilityCurve are provided 2) Either SynchronousMachine.minQ is not equal to min of CurveData.y1value-s or SynchronousMachine.maxQ is not equal to max CurveData.y2value-s."]
eq452c:CurveData.xvalue-value
Path: rdf:type
The GeneratingUnit.minOperatingP shall be equal of the minimum of the CurveData.xvalue among all points defined for a ReactveCapabilityCurve. The GeneratingUnit.maxOperatingP shall be equal of the maximum of the CurveData.xvalue among all points defined for a ReactveCapabilityCurve.
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.GeneratingUnit/cim:GeneratingUnit.minOperatingP ?minp.
$this cim:RotatingMachine.GeneratingUnit/cim:GeneratingUnit.maxOperatingP ?maxp.
#OPTIONAL {$this cim:RotatingMachine.GeneratingUnit/cim:GeneratingUnit.minOperatingP ?minp } .
#OPTIONAL {$this cim:RotatingMachine.GeneratingUnit/cim:GeneratingUnit.maxOperatingP ?maxp } .
#OPTIONAL {$this cim:SynchronousMachine.InitialReactiveCapabilityCurve ?rcc } .
BIND(EXISTS{$this cim:SynchronousMachine.InitialReactiveCapabilityCurve ?rcca} AS ?hasrcc).
{
SELECT $this (MAX(?xvalue) AS ?maxxvalue) (MIN(?xvalue) AS ?minxvalue)
WHERE {
#OPTIONAL {?rcc1 ^cim:SynchronousMachine.InitialReactiveCapabilityCurve $this } .
#?rcc1 ^cim:CurveData.Curve ?curvedata .
$this cim:SynchronousMachine.InitialReactiveCapabilityCurve/^cim:CurveData.Curve ?curvedata .
#BIND(EXISTS{$this cim:SynchronousMachine.InitialReactiveCapabilityCurve/^cim:CurveData.Curve ?curvedataa} AS ?hascurvedata).
?curvedata rdf:type ?cdtype .
?curvedata cim:CurveData.xvalue ?xvalue .
#FILTER (?hascurvedata=true && ?cdtype=cim:CurveData ) .
FILTER (?cdtype=cim:CurveData ) .
}
GROUP BY $this ?cdtype
}
#FILTER ((?hasrcc=true && bound(?minp) && bound(?maxp) && ?maxp!=?maxxvalue && ?minp!=?minxvalue)) .
FILTER (?hasrcc=true && !(?maxp=?maxxvalue && ?minp=?minxvalue)) .
}
- Messages:
["The CurveData.xvalue for ReactveCapabilityCurve are not consistent with GeneratingUnit.minOperatingP and GeneratingUnit.maxOperatingP."]
eq452c:TapChangerControl
Severity: sh:Violation
Targets:
- targetClass: cim:TapChangerControl
Nested Properties:
eq452c:TapChangerControl-remoteQcontrol
Path: rdf:type
A power transformer cannot efficiently control reactive power flow on remote terminals. Therefore, a TapChangerControl controlling reactive power flow shall only control the flow at one of the Terminal-s associated with PowerTransformerEnd-s of the PowerTransformer where the TapChanger is located. Control of a remote Terminal not associated with the PowerTransformer that has the TapChanger is not allowed. This constraint defines that multiple TapChanger-s cannot be controlled by the same TapChangerControl.
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 cim:RegulatingControl.mode ?mode .
$this cim:RegulatingControl.Terminal ?rcterm .
OPTIONAL {$this ^cim:TapChanger.TapChangerControl/cim:RatioTapChanger.TransformerEnd/cim:TransformerEnd.Terminal ?tcterm1 }.
OPTIONAL {$this ^cim:TapChanger.TapChangerControl/cim:PhaseTapChanger.TransformerEnd/cim:TransformerEnd.Terminal ?tcterm2 }.
FILTER (?mode=cim:RegulatingControlModeKind.reactivePower && ((?rcterm!=?tcterm1 && !bound(?tcterm2) && bound(?tcterm1)) || (?rcterm!=?tcterm2 && !bound(?tcterm1) && bound(?tcterm2)))).
}
- Messages:
["TapChangerControl with RegulatingControl.mode equals reactivePower controls a Terminal which is not associated with PowerTransformerEnd-s of the PowerTransformer where the TapChanger is located."]
eq452c:ThermalGeneratingUnit
Severity: sh:Violation
Targets:
- targetClass: cim:ThermalGeneratingUnit
Nested Properties:
eq452c:GeneratingUnit.maxOperatingP-ratedS
Path: rdf:type
GeneratingUnit.maxOperatingP shall be less than or equal to the sum of RotatingMachine.ratedS for RotatingMachine-s associated to the 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:GeneratingUnit.maxOperatingP ?value .
{
SELECT $this (SUM(?rmrateds) AS ?sumrs)
WHERE {
$this ^cim:RotatingMachine.GeneratingUnit/cim:RotatingMachine.ratedS ?rmrateds .
#?rm cim:RotatingMachine.GeneratingUnit $this .
#?rm rdf:type ?rmtype .
#?rm cim:RotatingMachine.ratedS ?rmrateds.
}
#GROUP BY $this ?rmtype
GROUP BY $this
}
FILTER (?value>?sumrs).
}
- Messages:
["GeneratingUnit.maxOperatingP is greater than the sum of RotatingMachine.ratedS for RotatingMachine-s associated to GeneratingUnit."]
eq452c:VsCapabilityCurve
Severity: sh:Violation
Targets:
- targetClass: cim:VsCapabilityCurve
Nested Properties:
eq452c:VsCapabilityCurve-VsCapabilityCurveCount
Path: rdf:type
If CurveData.Curve is a VsCapabilityCurve at least two CurveData shall be 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 (COUNT(?typecd) AS ?curvedatas)
WHERE {
?curvedata cim:CurveData.Curve $this .
?curvedata rdf:type ?typecd .
}
GROUP BY $this ?typecd
HAVING(?curvedatas<2)
- Messages:
["Less than two instances of CurveData are associated."]
eq452c:VsCapabilityCurve-yvalues
Path: rdf:type
If CurveData.Curve is a VsCapabilityCurve, the CurveData.y2value shall be greater than CurveData.y1value.
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 {
?curvedata cim:CurveData.Curve $this .
?curvedata cim:CurveData.y1value ?y1value .
?curvedata cim:CurveData.y2value ?y2value .
FILTER (?y2value<=?y1value).
}
- Messages:
["CurveData.y2value is not greater than CurveData.y1value"]
eq452c:WindGeneratingUnit
Severity: sh:Violation
Targets:
- targetClass: cim:WindGeneratingUnit
Nested Properties:
eq452c:GeneratingUnit.maxOperatingP-ratedS
Path: rdf:type
GeneratingUnit.maxOperatingP shall be less than or equal to the sum of RotatingMachine.ratedS for RotatingMachine-s associated to the 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:GeneratingUnit.maxOperatingP ?value .
{
SELECT $this (SUM(?rmrateds) AS ?sumrs)
WHERE {
$this ^cim:RotatingMachine.GeneratingUnit/cim:RotatingMachine.ratedS ?rmrateds .
#?rm cim:RotatingMachine.GeneratingUnit $this .
#?rm rdf:type ?rmtype .
#?rm cim:RotatingMachine.ratedS ?rmrateds.
}
#GROUP BY $this ?rmtype
GROUP BY $this
}
FILTER (?value>?sumrs).
}
- Messages:
["GeneratingUnit.maxOperatingP is greater than the sum of RotatingMachine.ratedS for RotatingMachine-s associated to GeneratingUnit."]