tutorial stream reasoning sparqlstream and morph-streams

31
Stream Reasoning For Linked Data M. Balduini, J-P Calbimonte, O. Corcho, D. Dell'Aglio, E. Della Valle, and J.Z. http://streamreasoning.org/sr4ld2013 SPARQLStream: Ontology- based access to data streams Jean-Paul Calbimonte, Oscar Corcho [email protected] , [email protected] http://www.oeg-upm.net/

Upload: jean-paul-calbimonte

Post on 08-May-2015

492 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Tutorial Stream Reasoning SPARQLstream and Morph-streams

Stream Reasoning For Linked Data M. Balduini, J-P Calbimonte, O. Corcho, D. Dell'Aglio, E. Della Valle, and J.Z. Panhttp://streamreasoning.org/sr4ld2013

SPARQLStream: Ontology-based access to data streams

Jean-Paul Calbimonte, Oscar [email protected], [email protected]://www.oeg-upm.net/

Page 2: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

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/

2

Page 3: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

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

3

Page 4: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Querying RDF Streams

4

+stream

s

Existing streaming data

sources

RDF Stream

DSMS CEP Sensor middleware

RDF Stream Processor

users, applications

query processing

Where is the data coming from?

WrapImportLoadContinously

+stream

s

Page 5: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

+stream

s

Virtual RDF views over data streams

5

SPARQLStream

Virtual RDF Stream

DSMS CEP Sensor middleware

queries

users, applications

query processing

RDF Stream Processor

Morph-streams

data layer

Page 6: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Already seen somewhere…?

6

RDF

DBMS

Load, import

SPARQL Query Processor

R2RML Mappings

Page 7: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Stream Processor Implementations

7

Data Stream Management Systems (DSMS)

Complex Event Processors (CEP)

Stream Data Middleware

CQL/Stream

Borealis

TelegraphCQ

StreamMill

Cayuga

GEM

CEDR

NiagaraCQ

Rapide

Cosm

HourglassSStreamWar

eGSN

IBM InfoSphere

Sybase CEP

Microsoft StreamInsight

Oracle CEP

Esper

StreamBase

Diverse query languagesDifferent query capabilitiesDifferent query models

Page 8: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013 8

Morph-streams: Overview

Query rewriting

Query Processin

gClien

t

SPARQLStream

[tuples][triples/

bindings]

Algebra expression

R2RML Mappings

Morph-streams procesing SPARQLStream queries

SELECT ?proximityFROM STREAM <http://streamreasoning.org/SensorReadings.srdf> [NOW–5 S]WHERE { ?obs a ssn:ObservationValue; qudt:numericalValue ?proximity; FILTER (?proximity>10) }

SELECT prox FROM sens.win:time(5 sec) WHERE prox >10

π timed,prox

ω

σprox>10

5 Seconds

sens

Data translation

SNEE

Esper

GSN

Cosmpull/push

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

Other

Page 9: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

SPARQLStream Language

9

FROM NAMED STREAM

ISTREAMDSTREA

MRSTREA

M

WINDOW

Underlying data source restrictions

Page 10: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

SPARQLStream: examples

10

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.}

SPARQLStream

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

Page 11: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

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 ‘SELECT’ [Xstream] [Distinct | Reduced] …

Xstream ‘RSTREAM’ | ‘ISTREAM’ | ‘DSTREAM’

11

SELECT ISTREAM ?room FROM NAMED STREAM <http://www.streamreasoning.org/streams/socialsensor.srdf> [NOW-10 S] WHERE {…

Page 12: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013 12

Morph-streams: Overview

Query rewriting

Query Processin

gClien

t

SPARQLStream

[tuples][triples/

bindings]

Algebra expression

R2RML Mappings

Morph-streams procesing SPARQLStream queries

SELECT ?proximityFROM STREAM <http://streamreasoning.org/SensorReadings.srdf> [NOW–5 S]WHERE { ?obs a ssn:ObservationValue; qudt:numericalValue ?proximity; FILTER (?proximity>10) }

SELECT prox FROM sens.win:time(5 sec) WHERE prox >10

π timed,prox

ω

σprox>10

5 Seconds

sens

Data translation

SNEE

Esper

GSN

Cosmpull/push

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

Other

Page 13: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Now, where is the data?

13

(person,room,…) τi

(bob,room2) τi

(alice,room1) τi-1

(alice,room3) τi+1

sensor

. . .

(carl,room1) τi (luke,room1) τi+1. . .

. . .

stream tuples

DSMS, CEP, middleware can evaluate queries over this

model

Stream Schema

Page 14: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Underlying Query Processors

Esper• CEP/DSMS• EPL language

SNEE• DSMS/Sensor Network Query Evaluator• Compile queries to sensor code

GSN• Sensor middleware• REST API

Cosm/Xively• Sensor middleware• Open platform• REST API

14

SELECT prox FROM sensors [FROM NOW-5 MINUTES TO NOW] WHERE prox >10

SELECT prox FROM sensors.win:time(5 minute) WHERE prox >10

http://montblanc.slf.ch:22001/multidata?vs[0]=sensors& field[0]=proximity_field&c_min[0]=10& from=15/05/2012+05:00:00&to=15/05/2012+10:00:00

http://api.cosm.com/v2/feeds/14321/datastreams/4?start=2012-05-15T05:00:00Z&end=2012-05-15T10:00:00Z

Page 15: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Underlying Query Processors

15

SELECT ?proximityFROM STREAM <http://streamreasoning.org/SensorReadings.srdf> [NOW–5 S]WHERE { ?obs a ssn:ObservationValue; qudt:numericalValue ?proximity; FILTER (?proximity>10) }

SELECT prox FROM sensors [FROM NOW-5 MINUTES TO NOW] WHERE prox >10

timed,prox

π

ω

σprox>10

5 Seconds

sensors

SELECT prox FROM sensors.win:time(5 minute) WHERE prox >10

http://montblanc.slf.ch:22001/multidata?vs[0]=sensors&field[0]=proximity_field&c_min[0]=10& from=15/05/2012+05:00:00&to=15/05/2012+10:00:00

http://api.cosm.com/v2/feeds/14321/datastreams/4?start=2012-05-15T05:00:00Z&end=2012-05-15T10:00:00Z

Query rewriting

R2RML

SNEE (DSMS)

Esper (CEP)

GSN (middlwr)

Cosm Xively

SPARQLStream

Page 16: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

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 ✔ ✖ ✖ ✖

16

Page 17: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Configuring Morph-streams

Main ingredients:

17

1. Data streams

2. Ontology (network)

3. R2RML mappings

Link both models

Page 18: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

SSN Ontology with other ontologies

18

W3C SSN Ontology

modeling our streaming data

combine with domain ontologies

Page 19: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Our simpler ontology…

19

Observation

Sensor

Person

Post

Roomwhere

discusses

who

observes

subClassOf

subClassOf

authorOf

subPropOf

We can use different ontologies for the same data

Page 20: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Our simpler ontology…

20

Observation

Sensor

Person

Roomwhere

who

observes

subClassOf

(person, room,…)detections

Define mappings

Page 21: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

R2RML - Overview

21

Page 22: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

R2RML - Overview

22

Page 23: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Encoding in R2RML

23

:triplesMap a rr:TriplesMap; rr:logicalTable [ rr:tableName ”sensors"; ] rr:subjectMap [ rr:template "http://streamreasoning.org/data/Observation/{person}{timed}"; rr:class sr4ld:Observation; rr:graph sr4ld:socialstream.srdf ];

rr:predicateObjectMap [ rr:predicate sr4ld:who ; rr:objectMap [ rr:template “http://streamreasoning.org/data/Person/{person}” ]];.

the stream name

subject URI

triple predicate + object

Mapping definition

stream attribute

s

the object (a URI in this case)

Page 24: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Now some code

24

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

Page 25: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Code examples

Parse SPARQLStream

val query= “PREFIX sr4ld: <…>. SELECT ?a …”

val syntax= StreamQueryFactory.create(query);

Execute One-off queryval query= “PREFIX sr4ld: <…>. SELECT ?a …”

mapping=Mapping(new URI(mappings/social.ttl))

val adapter:QueryEvaluator=Application.adapter(system)

val results= adapter.executeQuery(query,mapping)

25

Mapping

Bindings

Page 26: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Code examples

Register and Pullval queryid= adapter.registerQuery(query,mapping)

val results1=adapter.pull(queryid)

val results2=adapter.pull(queryid)

Register and Pushclass ExampleReceiver extends StreamReceiver{

override def receiveData(s:SparqlResults):Unit=

Logger.debug("got: "+res)

}

val receiver=new ExampleReceiver

val queryid= adapter.listenToQuery(query,mapping,receiver)

26

Query identifier

Implement receiver

Page 27: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

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.linkeddata.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. }''')")

• curl "http://streams.linkeddata.es/emt/sparqlstream?query=$encoded_value”

27

Disclaimer: Simplistic, not implementing all of the SPARQL protocol

Just encoding query

Page 28: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

Sample result

{

"head": {

"vars": [ "timeto" , "obs" ]

} ,

"results": {

"bindings": [

{

"timeto": { "datatype": "http://www.w3.org/2001/XMLSchema#string" , "type": "typed-literal" , "value": "0" } ,

"obs": { "type": "uri" , "value": "http://transporte.linkeddata.es/emt/busstop/id/2018/busline/9/observation/20/09/2013%2010:28:19%20%2B0200" }

}

]

}

}

28

Bindings in JSON

Page 29: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013 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• [email protected][email protected]

Page 30: Tutorial Stream Reasoning SPARQLstream and Morph-streams

Stream Reasoning For Linked Data M. Balduini, J-P Calbimonte, O. Corcho, D. Dell'Aglio, E. Della Valle, and J.Z. Panhttp://streamreasoning.org/sr4ld2013

SPARQLStream: Ontology-based access to data streams

Jean Paul Calbimonte, Oscar [email protected], [email protected]://www.oeg-upm.net/

Page 31: Tutorial Stream Reasoning SPARQLstream and Morph-streams

http://streamreasoning.org/sr4ld2013

RDF Streams

31

〈 s,p,o〉

<aemet:observation1, qudt:hasNumericValue, “15.5”>

<aemet:observation1, ssn:observedBy, aemet:Sensor3>

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