Stream Reasoning
For Linked Data
M. Balduini, J-P Calbimonte, O. Corcho,
D. Dell'Aglio, E. Della Valle, and J.Z. Pan
http:...
Share, Remix, Reuse — Legally
 This work is licensed under the Creative Commons
Attribution 3.0 Unported License.
 You a...
SPARQLStream
 Virtual RDF views over data streams
 Ontology-based access to data streams
•
•
•

Examples
Architecture
Un...
Querying RDF Streams
users, applications

RDF Stream
query processing

RDF Stream Processor

Where is the data coming from...
Virtual RDF views over data streams
users, applications

Virtual RDF Stream
query processing

RDF Stream Processor
queries...
Already seen somewhere…?

RDF

SPARQL Query Processor
Load,
import

R2RML
Mappings

DBMS
http://streamreasoning.org/sr4ld2...
Stream Processor Implementations
Data Stream Management Systems (DSMS)

CQL/Stream

Borealis

StreamMill NiagaraCQ
Telegra...
Morph-streams: Overview
SELECT ?proximity
FROM STREAM

π timed,prox

<http://streamreasoning.org/SensorReadings.srdf> [NOW...
SPARQLStream Language

ISTREAM
DSTREAM
RSTREAM

FROM NAMED STREAM

WINDOW

Underlying
data source
restrictions
http://stre...
SPARQLStream: examples
SPARQLStream
PREFIX sr4ld: <http://www.streamreasoning.org/ontologies/socialsensor,owl#>
SELECT ?ro...
SPARQLStream Language


NamedStream

 „FROM‟ [„NAMED‟] „STREAM‟ StreamIRI „[‟ Window „]‟



Window

 „NOW-‟ Integer Ti...
Morph-streams: Overview
SELECT ?proximity
FROM STREAM

π timed,prox

<http://streamreasoning.org/SensorReadings.srdf> [NOW...
Now, where is the data?
...
sensor

(bob,room2) τi

(alice,room3) τi+1

(carl,room1) τi

(luke,room1) τi+1

(alice,room1) ...
Underlying Query Processors
Esper
• CEP/DSMS
• EPL language
SELECT prox FROM sensors.win:time(5 minute)
WHERE prox >10

GS...
Underlying Query Processors

SPARQLStream

SELECT ?proximity
FROM STREAM <http://streamreasoning.org/SensorReadings.srdf>
...
Underlying query processors
Features

Esper

SNEE

GSN

Cosm/Xively

Projection

✔

✔

✔

Fixed

Proj expression

✔

✔

✖
...
Configuring Morph-streams
 Main ingredients:
1. Data streams
2. Ontology (network)

Link both
models

3. R2RML mappings

...
SSN Ontology with other ontologies
W3C SSN Ontology

modeling our streaming data
combine with domain ontologies
http://str...
Our simpler ontology…
subClassOf

Observation

where

Room

observes
subPropOf

who

Post

Sensor

discusses
subClassOf

a...
Our simpler ontology…
Observation

where

Room

observes

detections
(person, room,…)

Sensor

subClassOf

who

Define map...
R2RML - Overview

http://streamreasoning.org/sr4ld2013

21
R2RML - Overview

http://streamreasoning.org/sr4ld2013

22
Encoding in R2RML

the stream
name

Mapping definition
:triplesMap a rr:TriplesMap;
rr:logicalTable [ rr:tableName ”sensor...
Now some code
Morph-streams:
 Coded in Scala
 JAR bundle, use it from Scala or Java code

 Maven, Sbt
 Examples
•
•
•
...
Code examples
 Parse SPARQLStream
val query= “PREFIX sr4ld: <…>. SELECT ?a …”
val syntax= StreamQueryFactory.create(query...
Code examples
 Register and Pull
val queryid= adapter.registerQuery(query,mapping)
val results1=adapter.pull(queryid)
val...
SPARQLStream from command line
•

encoded_value=$(python -c "import urllib; print urllib.quote('''SELECT
DISTINCT ?timeto ...
Sample result
{
"head": {
"vars": [ "timeto" , "obs" ]
},
"results": {
"bindings": [

Bindings in JSON

{
"timeto": { "dat...
Resources
 Morph-Streams
•

https://github.com/jpcik/morph-streams

 See demos
•
•

http://transporte.linkeddata.es/ (SP...
Stream Reasoning
For Linked Data
M. Balduini, J-P Calbimonte, O. Corcho,
D. Dell'Aglio, E. Della Valle, and J.Z. Pan
http:...
RDF Streams

〈s,p,o
〉
<aemet:observation1, ssn:observedBy, aemet:Sensor3>
<aemet:observation1, qudt:hasNumericValue, “15.5...
Upcoming SlideShare
Loading in …5
×

Tutorial Stream Reasoning SPARQLstream and Morph-streams

990 views

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
990
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
26
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Tutorial Stream Reasoning SPARQLstream and Morph-streams

  1. 1. Stream Reasoning For Linked Data M. Balduini, J-P Calbimonte, O. Corcho, D. Dell'Aglio, E. Della Valle, and J.Z. Pan http://streamreasoning.org/sr4ld2013 SPARQLStream: Ontologybased access to data streams Jean-Paul Calbimonte, Oscar Corcho jp.calbimonte@upm.es, ocorcho@fi.upm.es http://www.oeg-upm.net/
  2. 2. Share, Remix, Reuse — Legally  This work is licensed under the Creative Commons Attribution 3.0 Unported License.  You are free: • to Share — to copy, distribute and transmit the work • to Remix — to adapt the work  Under the following conditions • Attribution — You must attribute the work by inserting – “[source http://streamreasoning.org/sr4ld2013]” at the end of each reused slide – a credits slide stating - These slides are partially based on “Streaming Reasoning for Linked Data 2013” by M. Balduini, J-P Calbimonte, O. Corcho, D. Dell'Aglio, E. Della Valle, and J.Z. Pan http://streamreasoning.org/sr4ld2013  To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ http://streamreasoning.org/sr4ld2013 2
  3. 3. SPARQLStream  Virtual RDF views over data streams  Ontology-based access to data streams • • • Examples Architecture Underlying query processors  SPARQLStream language  Query rewriting • R2RML mappings  Resources http://streamreasoning.org/sr4ld2013 3
  4. 4. Querying RDF Streams users, applications RDF Stream query processing RDF Stream Processor Where is the data coming from? Existing streaming data sources DSMS CEP http://streamreasoning.org/sr4ld2013 Sensor middleware Wrap Import Load Contino usly … 4
  5. 5. Virtual RDF views over data streams users, applications Virtual RDF Stream query processing RDF Stream Processor queries data layer DSMS CEP http://streamreasoning.org/sr4ld2013 Sensor middleware … 5
  6. 6. Already seen somewhere…? RDF SPARQL Query Processor Load, import R2RML Mappings DBMS http://streamreasoning.org/sr4ld2013 6
  7. 7. Stream Processor Implementations Data Stream Management Systems (DSMS) CQL/Stream Borealis StreamMill NiagaraCQ TelegraphCQ Complex Event Processors (CEP) GEM Rapide Cayuga Stream Data Middleware CEDR GSN Oracle CEP IBM InfoSphere Microsoft StreamInsight Hourglass Cosm SStreamWare Esper Sybase CEP StreamBase Diverse query languages Different query capabilities Different query models http://streamreasoning.org/sr4ld2013 7
  8. 8. Morph-streams: Overview SELECT ?proximity FROM STREAM π timed,prox <http://streamreasoning.org/SensorReadings.srdf> [NOW–5 S] WHERE { ?obs a ssn:ObservationValue; qudt:numericalValue ?proximity; FILTER (?proximity>10) } Client SPARQLStream ω5 Seconds sens Query rewriting R2RML Mappings [triples/bin dings] σprox>10 Data translation Algebra expression SELECT prox FROM sens.win:time(5 sec) WHERE prox >10 SNEE Esper Query Processing [tuples] GSN pull/push Cosm Other Morph-streams procesing SPARQLStream queries https://github.com/jpcik/morph-streams http://streamreasoning.org/sr4ld2013 8
  9. 9. SPARQLStream Language ISTREAM DSTREAM RSTREAM FROM NAMED STREAM WINDOW Underlying data source restrictions http://streamreasoning.org/sr4ld2013 9
  10. 10. SPARQLStream: examples SPARQLStream PREFIX sr4ld: <http://www.streamreasoning.org/ontologies/socialsensor,owl#> SELECT ?room FROM NAMED STREAM <http://www.streamreasoning.org/streams/socialsensor.srdf> [NOW-10 S] WHERE { ?obs sr4ld:observedBy ?sensor. ?obs sr4ld:where ?room. } All rooms where something was observed in the last 10s PREFIX sr4ld: <http://www.streamreasoning.org/ontologies/socialsensor,owl#> SELECT (COUNT(?person) AS ?nmb) ?room FROM NAMED STREAM <http://www.streamreasoning.org/streams/socialsensor.srdf> [NOW-10 S] WHERE { ?obs sr4ld:who ?pers. ?obs sr4ld:where ?room. } GROUP BY ?room Number of persons observed in each room in the last 10s http://streamreasoning.org/sr4ld2013 10
  11. 11. SPARQLStream Language  NamedStream  „FROM‟ [„NAMED‟] „STREAM‟ StreamIRI „[‟ Window „]‟  Window  „NOW-‟ Integer TimeUnit [UpperBound] [Slide]  UpperBound  „TO NOW-‟ Integer TimeUnit  Slide  „SLIDE‟ Integer TimeUnit  TimeUnit  „MS‟ | „S‟ | „MINUTES‟| „HOURS‟ | „DAY‟ SELECT ISTREAM ?room FROM NAMED STREAM <http://www.streamreasoning.org/streams/socialsensor.srdf> [NOW-10 S] WHERE {…  Select  „SELECT‟ [Xstream] [Distinct | Reduced] …  Xstream  „RSTREAM‟ | „ISTREAM‟ | „DSTREAM‟ http://streamreasoning.org/sr4ld2013 11
  12. 12. Morph-streams: Overview SELECT ?proximity FROM STREAM π timed,prox <http://streamreasoning.org/SensorReadings.srdf> [NOW–5 S] WHERE { ?obs a ssn:ObservationValue; qudt:numericalValue ?proximity; FILTER (?proximity>10) } Client SPARQLStream ω5 Seconds sens Query rewriting R2RML Mappings [triples/bin dings] σprox>10 Data translation Algebra expression SELECT prox FROM sens.win:time(5 sec) WHERE prox >10 SNEE Esper Query Processing [tuples] GSN pull/push Cosm Other Morph-streams procesing SPARQLStream queries https://github.com/jpcik/morph-streams http://streamreasoning.org/sr4ld2013 12
  13. 13. Now, where is the data? ... sensor (bob,room2) τi (alice,room3) τi+1 (carl,room1) τi (luke,room1) τi+1 (alice,room1) τi-1 ... ... stream tuples (person,room,…) τi Stream Schema DSMS, CEP, middleware can evaluate queries over this model http://streamreasoning.org/sr4ld2013 13
  14. 14. Underlying Query Processors Esper • CEP/DSMS • EPL language SELECT prox FROM sensors.win:time(5 minute) WHERE prox >10 GSN • Sensor middleware • REST API http://montblanc.slf.ch:22001/multidata?vs[0]=sens ors& field[0]=proximity_field&c_min[0]=10& from=15/05/2012+05:00:00&to=15/05/2012+10:00: 00 http://streamreasoning.org/sr4ld2013 SNEE • DSMS/Sensor Network Query Evaluator • Compile queries to sensor code SELECT prox FROM sensors [FROM NOW-5 MINUTES TO NOW] WHERE prox >10 Cosm/Xively • Sensor middleware • Open platform • REST API http://api.cosm.com/v2/feeds/14321/datastreams/ 4?start=2012-05-15T05:00:00Z&end=2012-0515T10:00:00Z 14
  15. 15. Underlying Query Processors SPARQLStream SELECT ?proximity FROM STREAM <http://streamreasoning.org/SensorReadings.srdf> [NOW–5 S] WHERE { ?obs a ssn:ObservationValue; qudt:numericalValue ?proximity; FILTER (?proximity>10) } R2RML prox Query rewriting SELECT prox FROM sensors [FROM NOW-5 MINUTES TO NOW] WHERE prox >10 SNEE (DSMS) SELECT prox FROM sensors.win:time(5 minute) WHERE prox >10 Esper (CEP) http://montblanc.slf.ch:22001/multidata?vs[0]=sensors&field[0]=proximi ty_field&c_min[0]=10& from=15/05/2012+05:00:00&to=15/05/2012+10:00:00 GSN (middlwr) http://api.cosm.com/v2/feeds/14321/datastreams/4?start=2012-0515T05:00:00Z&end=2012-05-15T10:00:00Z Cosm Xively http://streamreasoning.org/sr4ld201315 πtimed, σprox>10 ω 5 Seconds sensors
  16. 16. Underlying query processors Features Esper SNEE GSN Cosm/Xively Projection ✔ ✔ ✔ Fixed Proj expression ✔ ✔ ✖ ✖ Joins ✔ ✔✖ only window ✖ ✖ Union ✖ ✔✖ not windows ✔ ✖ Selection ✔ ✔ ✔ ✖✔ limited Aggregates ✔ ✔ ✔✖ ✖ Time window ✔ ✔ ✔ ✔ Tuple window ✔ ✔ ✔ ✖ R2S ✔ ✔ ✖ ✖ Conjunction, Disj ✔ ✖ ✖ ✖ Repetition pattern ✔ ✖ ✖ ✖ Sequence ✔ ✖ ✖ ✖ http://streamreasoning.org/sr4ld2013 16
  17. 17. Configuring Morph-streams  Main ingredients: 1. Data streams 2. Ontology (network) Link both models 3. R2RML mappings http://streamreasoning.org/sr4ld2013 17
  18. 18. SSN Ontology with other ontologies W3C SSN Ontology modeling our streaming data combine with domain ontologies http://streamreasoning.org/sr4ld2013 18
  19. 19. Our simpler ontology… subClassOf Observation where Room observes subPropOf who Post Sensor discusses subClassOf authorOf Person We can use different ontologies for the same data http://streamreasoning.org/sr4ld2013 19
  20. 20. Our simpler ontology… Observation where Room observes detections (person, room,…) Sensor subClassOf who Define mappings Person http://streamreasoning.org/sr4ld2013 20
  21. 21. R2RML - Overview http://streamreasoning.org/sr4ld2013 21
  22. 22. R2RML - Overview http://streamreasoning.org/sr4ld2013 22
  23. 23. Encoding in R2RML the stream name Mapping definition :triplesMap a rr:TriplesMap; rr:logicalTable [ rr:tableName ”sensors"; ] stream attributes subject URI rr:subjectMap [ rr:template "http://streamreasoning.org/data/Observation/{person}{timed}"; rr:class sr4ld:Observation; rr:graph sr4ld:socialstream.srdf ]; triple predicate + object rr:predicateObjectMap [ rr:predicate sr4ld:who ; rr:objectMap [ rr:template “http://streamreasoning.org/data/Person/{person}” ]];. the object (a URI in this case) http://streamreasoning.org/sr4ld2013 23
  24. 24. Now some code Morph-streams:  Coded in Scala  JAR bundle, use it from Scala or Java code  Maven, Sbt  Examples • • • • • One off query Register continuous query Pull data Push Basic REST  https://github.com/jpcik/morph-streams http://streamreasoning.org/sr4ld2013 24
  25. 25. Code examples  Parse SPARQLStream val query= “PREFIX sr4ld: <…>. SELECT ?a …” val syntax= StreamQueryFactory.create(query);  Execute One-off query Mapping val query= “PREFIX sr4ld: <…>. SELECT ?a …” mapping=Mapping(new URI(mappings/social.ttl)) val adapter:QueryEvaluator=Application.adapter(system) val results= adapter.executeQuery(query,mapping) Bindings http://streamreasoning.org/sr4ld2013 25
  26. 26. Code examples  Register and Pull val queryid= adapter.registerQuery(query,mapping) val results1=adapter.pull(queryid) val results2=adapter.pull(queryid) Query identifier  Register and Push Implement receiver class ExampleReceiver extends StreamReceiver{ override def receiveData(s:SparqlResults):Unit= Logger.debug("got: "+res) } val receiver=new ExampleReceiver val queryid= adapter.listenToQuery(query,mapping,receiver) http://streamreasoning.org/sr4ld2013 26
  27. 27. SPARQLStream from command line • encoded_value=$(python -c "import urllib; print urllib.quote('''SELECT DISTINCT ?timeto ?obs FROM NAMED STREAM <http://emt.linkeddata.es/data#busstops.srdf> [NOW - 30 S] WHERE { ?obs a <http://emt.linkeddata.es/data#BusObservation>. ?obs <http://purl.oclc.org/NET/ssnx/ssn#observedBy><http://transporte.li nkeddata.es/emt/busstop/id/2018>. ?obs <http://purl.oclc.org/NET/ssnx/ssn#observationResult> ?output. ?output <http://emt.linkeddata.es/data#timeToBusValue> ?av. ?av <http://data.nasa.gov/qudt/owl/qudt#numericValue> ?timeto. }''')") Just encoding query • curl "http://streams.linkeddata.es/emt/sparqlstream?query=$encoded_val ue” Disclaimer: Simplistic, not implementing all of the SPARQL protocol http://streamreasoning.org/sr4ld2013 27
  28. 28. Sample result { "head": { "vars": [ "timeto" , "obs" ] }, "results": { "bindings": [ Bindings in JSON { "timeto": { "datatype": "http://www.w3.org/2001/XMLSchema#string" , "type": "typedliteral" , "value": "0" } , "obs": { "type": "uri" , "value": "http://transporte.linkeddata.es/emt/busstop/id/2018/busline/9/observation/20/09/2013%2010:2 8:19%20%2B0200" } } ] } } http://streamreasoning.org/sr4ld2013 28
  29. 29. Resources  Morph-Streams • https://github.com/jpcik/morph-streams  See demos • • http://transporte.linkeddata.es/ (SPARQL-Stream tab) Check our Madrid buses demo at SSN2013 workshop tomorrow  Read out more • Enabling Query Technologies for the Semantic Sensor Web. J.-P. Calbimonte, H. Jeung, O. Corcho and K. Aberer. International Journal on Semantic Web and Information Systems IJSWIS, Volume 8(1)., 2012  Contact point • • jp.calbimonte@upm.es ocorcho@fi.upm.es http://streamreasoning.org/sr4ld2013 29
  30. 30. Stream Reasoning For Linked Data M. Balduini, J-P Calbimonte, O. Corcho, D. Dell'Aglio, E. Della Valle, and J.Z. Pan http://streamreasoning.org/sr4ld2013 SPARQLStream: Ontologybased access to data streams Jean Paul Calbimonte, Oscar Corcho jp.calbimonte@upm.es, ocorcho@fi.upm.es http://www.oeg-upm.net/
  31. 31. RDF Streams 〈s,p,o 〉 <aemet:observation1, ssn:observedBy, aemet:Sensor3> <aemet:observation1, qudt:hasNumericValue, “15.5”> For streams? (〈s,p,o〉,τ) (<aemet:observation1, qudt:hasNumericValue, “15.5”>,34532) timestamped triples • Gutierrez et al. (2007) Introducing time into RDF. IEEE TKDE • Rodríguez et al. (2009) Semantic management of streaming data. SSN http://streamreasoning.org/sr4ld2013 31

×