SPARQLStream: Ontology- based access to data...

31
Tutorial on RDF Stream Processing M. Balduini, J-P Calbimonte, O. Corcho, D. Dell'Aglio, E. Della Valle http://streamreasoning.org/rsp2014 SPARQLStream: Ontology- based access to data streams Jean-Paul Calbimonte, Oscar Corcho [email protected], [email protected] http://www.oeg-upm.net/

Transcript of SPARQLStream: Ontology- based access to data...

Page 1: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

Tutorial on RDF

Stream Processing M. Balduini, J-P Calbimonte, O. Corcho,

D. Dell'Aglio, E. Della Valle

http://streamreasoning.org/rsp2014

SPARQLStream: Ontology-

based access to data streams Jean-Paul Calbimonte, Oscar Corcho

[email protected], [email protected]

http://www.oeg-upm.net/

Page 2: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

Querying RDF Streams

4

Existing streaming data sources

RDF Stream

DSMS CEP Sensor middleware

RDF Stream Processor

users, applications

query processing

Where is the data coming from?

Wrap Import Load Continously

Page 5: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

Virtual RDF views over data streams

5

Virtual RDF Stream

DSMS CEP Sensor middleware

queries

users, applications

query processing

RDF Stream Processor

data layer

Page 6: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

Already seen somewhere…?

6

RDF

DBMS

Load, import

SPARQL Query Processor

R2RML Mappings

Page 7: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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 Hourglass

SStreamWare GSN

IBM InfoSphere

Sybase CEP

Microsoft StreamInsight

Oracle CEP

Esper

StreamBase

Diverse query languages

Different query capabilities

Different query models

Page 8: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

Morph-streams: Overview

8

Query rewriting

Query Processing C

lie

nt

SPARQLStream

[tuples] [triples/bindings]

Algebra expression

R2RML Mappings

Morph-streams procesing SPARQLStream queries

SELECT ?proximity

FROM 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

Cosm pull/push

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

Other

Page 9: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

SPARQLStream Language

9

FROM NAMED STREAM

ISTREAM DSTREAM RSTREAM

WINDOW

Underlying data source restrictions

Page 10: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

Morph-streams: Overview

12

Query rewriting

Query Processing C

lie

nt

SPARQLStream

[tuples] [triples/bindings]

Algebra expression

R2RML Mappings

Morph-streams procesing SPARQLStream queries

SELECT ?proximity

FROM 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

Cosm pull/push

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

Other

Page 13: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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]=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://api.cosm.com/v2/feeds/14321/datastreams/

4?start=2012-05-15T05:00:00Z&end=2012-05-

15T10:00:00Z

Page 15: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

Underlying Query Processors

15

SELECT ?proximity

FROM 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]=proximi

ty_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: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

Configuring Morph-streams

Main ingredients:

17

1. Data streams

2. Ontology (network)

3. R2RML mappings

Link both models

Page 18: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

SSN Ontology with other ontologies

18

W3C SSN Ontology

modeling our streaming data

combine with domain ontologies

Page 19: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

Our simpler ontology…

19

Observation

Sensor

Person

Post

Room where

discusses

who

observes

subClassOf

subClassOf

authorOf

subPropOf

We can use different ontologies for the same data

Page 20: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

Our simpler ontology…

20

Observation

Sensor

Person

Room where

who

observes

subClassOf

(person, room,…)

detections

Define mappings

Page 21: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

R2RML - Overview

21

Page 22: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

R2RML - Overview

22

Page 23: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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 attributes

the object (a URI in this case)

Page 24: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

Code examples

Parse SPARQLStream

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

val syntax= StreamQueryFactory.create(query);

Execute One-off query

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)

25

Mapping

Bindings

Page 26: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

Code examples

Register and Pull

val queryid= adapter.registerQuery(query,mapping)

val results1=adapter.pull(queryid)

val results2=adapter.pull(queryid)

Register and Push

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)

26

Query identifier

Implement receiver

Page 27: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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]

29

Page 30: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

Tutorial on RDF

Stream Processing M. Balduini, J-P Calbimonte, O. Corcho,

D. Dell'Aglio, E. Della Valle

http://streamreasoning.org/rsp2014

SPARQLStream: Ontology-

based access to data streams Jean Paul Calbimonte, Oscar Corcho

[email protected], [email protected]

http://www.oeg-upm.net/

Page 31: SPARQLStream: Ontology- based access to data streamsstreamreasoning.org/slides/2014/05/rsp2014-03-sparql... · 2014-06-04 · SPARQLStream: Ontology-based access to data streams Jean-Paul

http://streamreasoning.org/rsp2014

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