In this demonstration presentation we describe a web application that allows visualisation of current and historical readings of smart meters and monitoring their current states using CQELS for an integration of static and streaming RDF sources.
Paper: http://knoesis.org/ssn2014/paper_3.pdf
5. /30ZDQWVWR
3
❏ reduce electricity losses
❏ identify misconfigurations of smart meters and
network earlier
❏ monitor smart meter readings in real-time
6. 6WUHDPVRXUFHV
4
❏ Custom JSON model
❏ Not integrated with background knowledge
❏ Identifiers not globally unique
7. 6WDWLFGDWD
Currently at: http://lpmanalytics.tk/sparql
❏ graph: http://192.168.134.114/SmartMetersDB/
All smart meters:
PREFIX em: http://purl.org/NET/ssnext/electricmeters# .
SELECT * { ?meter a em:ElectricMeter . }
Example URI: http://purl.org/daafse/meters/mercury230_13534128
5
8. 6WUHDPLQJGDWD
Published via a message bus (RabbitMQ) that implements AMQP protocol:
❏ a continuous stream of RDF triples in Turtle format
❏ amqp://lpmstreams.tk:15674
Stream URI:
❏ amqp://lpmstreams.tk:15674?
exchangeName=meter_exchangeroutingKey=meter.location.
mercury230_13534128
6
13. ([DPSOHToo high voltage value
Notify when the voltage value on one of the phases on
one of smart meters are higher than 220V + 5% = 231V
11
14. ([DPSOHToo high voltage value
CONSTRUCT {
?alert a http://purl.org/daafse/alerts#TooHighVoltageValue ; dul:hasEventDate ?time ; dul:
involvesAgent ?meter .
} FROM NAMED http://lpmanalytics.tk/sparql-graph-crud WHERE {
GRAPH http://192.168.134.114/SmartMetersDB/ {
?meter em:hasStream ?stream; em:complyWith ?requirement .
?requirement em:maxVoltageValue ?maxvvalue .}
STREAM ?stream [NOW] {
?observation a em:PolyphaseVoltageObservation ; ssn:observationResultTime ?time ; ssn:
observationResult ?output .
?output a em:PolyphaseVoltageSensorOutput ; ssn:isProducedBy ?meter ; ssn:hasValue ?value .
?value em:hasQuantityValue ?qvalue .
}
FILTER(?qvalue ?maxvvalue)
BIND(IRI(CONCAT(STR(?meter), '/alerts/', STR(?time))) AS ?alert)
12 }
15. ([DPSOHPower values is below zero
Notify when the power value on one of the phases is
below zero
13
16. ([DPSOHPower values is below zero
CONSTRUCT {
?alert a http://purl.org/daafse/alerts#PowerValueBelowZero; dul:hasEventDate ?time; dul:
involvesAgent ?meter .
} FROM NAMED http://lpmanalytics.tk/sparql-graph-crud WHERE {
GRAPH http://192.168.134.114/SmartMetersDB/ {
?meter em:hasStream ?stream; em:complyWith ?requirement .
?requirement em:minPowerValue ?minpvalue .
}
STREAM ?stream [NOW] {
?observation a em:PolyphaseVoltageObservation; ssn:observationResultTime ?time; ssn:
observationResult ?output .
?output ssn:isProducedBy ?meter; ssn:hasValue ?value . ?value em:hasQuantityValue ?qvalue .
}
FILTER(?qvalue ?minPowerValue)
BIND(IRI(CONCAT(STR(?meter), '/alerts/', STR(?time))) AS ?alert)
14 }
17. ([DPSOHDifferent voltages
Voltage values measured by the meters at the same
substation should be “almost the same”, e.g. ± 3%.
15
Unfortunately, it’s not possible to do with CQELS now.
18. RQFOXVLRQV
❏ Web app that monitors and visualizes smart meter readings
❏ Extensions for CQELS engine: BIND and remote SPARQL endpoint
❏ RDF streams published via RabbitMQ
Future work:
❏ Implement missing aggregation functions in CQELS
❏ Use one of binary RDF representations for the streams
16
The app is a very simple but practical example of applying RSP in Smart Grid
domain
19. 7KDQNRX
Source code:
❏ The web app: http://github.com/ailabitmo/DAAFSE
❏ CQELS with extensions: http://github.com/KMax/cqels
17