The Schema Editor of OpenIoT for Semantic Sensor...

Preview:

Citation preview

The Schema Editor of OpenIoT for Semantic Sensor Networks

Prem P. Jayaraman, Jean-Paul Calbimonte and Hoan Nguyen Mau Quoc

RMIT University, LSIR EPFL, Insight – NUI Galway

SSN-TC 2015. International Semantic Web Conference ISWC 2015

Bethlehem, PA, October 2015

@jpcik

1

OpenIoT FP7Open Source Cloud solution for the Internet of Things

http://openiot.eu

Established Open-source platform for IoT

• Integrate sensors & things with cloud computing • Configure, deploy and use IoT services• Auditing/assessing privacy of IoT apps in the cloud• Semantic annotations of internet-connected objects• Energy-efficient data harvesting• Publish/subscribe for continuous processing and

sensor data filtering• Mobility of sensors and QoS aspects in IoT

https://github.com/OpenIotOrg/openiot

Use cases and validation scenarios

Smart Manufacturing Campus Guide

Air MonitoringAgriculture

Sensing

2

The OpenIoT Architecture

Sensor data management

Semantic data management

Applications

3

Security(CAS)

Ph

ysical Te

chn

olo

gyP

lane

Xively(Cosm - Pachube)

CoAP(Sensors)

MQTT

RequestDefinition (IDE) Service D

elivery&

Utility M

anager

RequestPresentation (IDE)

Sched

uler

Co

nfigu

ration

/M

on

itor

Co

nso

le (IDE)

Utility

Ap

plicatio

nP

lane

Cloud DataBase(LSM-Light)

DiscoveryServices

X-GSN X-GSN

Virtu

alized

Plan

e

User User

2

4

5

7

12

6

8

9

10

11

3

2

3

4

5

6

7

9

1

8

10

End User Request

Discovery Services

Query Content

Collect Content / Mobile

Sensor Configuration

Content Adaptation

Utility Service Feedback

Service Delivery

Service Visualisation

Get Visualisation

11 Data Presentation

12

InfoSphereStreams

1

OthersUtility Metrics /Service Report

X-GSN…

Cloud Pub/Sub

5’

Pub/Sub Enabled

MobileBroker

(Sensors)

0

0 Setup and Management

0’’

0’’

12

5’’

0’

0’

X-GSN

0’

OpenIoT Services and Components

Application Plane

4

Request Definition & Presentation

5

Everything nice if your data is also nice

QueryOperators

Data sources

Output Widgets

Find data streams

Request Definition & Presentation

Data at this level is already RDF-ized

GeneratedSPARQL queries

6

OpenIoT and the SSN Ontology

7

ssn:Sensor

ssn:Platform

ssn:FeatureOfInterest

ssn:Deployment

ssn:Property

cf-prop:air_temperature

ssn:observes

ssn:onPlatform

dul:Place

dul:hasLocation

ssn:SensingDevicessn:inDeployment

ssn:MeasurementCapability

ssn:MeasurementProperty

geo:lat, geo:lng

xsd:double

ssn:hasMeasurementProperty

ssn:Accuracy

ssn:ofFeature

aws:TemperatureSensor

aws:Thermistor

ssn:Latency

dim:Temperature

qu:QuantityKind

cf-prop:soil_temperature

cf-feat:Wind

cf-feat:Surface

cf-feat:Medium

cf-feat:aircf-feat:soil

dim:VelocityOrSpeedcf-prop:wind_speedcf-prop:rainfall_rate

aws:CapacitiveBead …

Where to look for vocabs?

When do we set up the onto?

Who sets it up?

http://lsm.deri.ie/resource/4039002668863045 http://lsm.deri.ie/ont/lsm.owl#unit "Percent"

Generated URIs? Vocabulary? Literals?

Register metadata

8

If ontologies change…

If we add new types of sensors?

Do I have control over my sensor metadata?

Virtual Sensor configuration

9

<virtual-sensor name="room-monitor" >

<addressing>

<predicate key="geographical">BC143</predicate>

<predicate key="usage">room monitoring</predicate>

</addressing>

<life-cycle pool-size="10" />

<output-structure>

<field name="image" type="binary:image/jpeg" />

<field name="temp" type="int" />

</output-structure>

<storage permanent="true" history-size="10h" />

<input-streams>

<input-stream name="cam">

<stream-source alias="cam" storage-size="1“ sampling-rate=“1”>

<address wrapper=“tinyos2.x">

<predicate key=“host">tinybox.epfl.ch

</predicate>

<predicate key=“port">9001</predicate>

</address>

select * from WRAPPER

</stream-source>

<stream-source alias="temperature1“

storage-size="1m“ sampling-rate=“1”>

<address wrapper="remote">

<predicate key="type">temperature</predicate>

<predicate key="geographical">BC143-N </predicate>

</address>

select AVG(temp1) as T1 from WRAPPER

</stream-source>

<stream-source alias="temperature2“

storage-size="1m“>

<address wrapper="remote">

<predicate key="type“>temperature</predicate>

<predicate key="geographical“>BC143-S </predicate>

</address>

select AVG(temp2) as T2 from WRAPPER

</stream-source>

<query>

select cam.picture as image, temperature.T1

as temp from cam, temperature1

where temperature1.T1 > 30 AND

temperature1.T1 = temperature2.T2

</query>

</input-stream>

</input-streams>

</virtual-sensor>

Some metadata is here

Sensor metadata configuration

Metadata properties

10

sensorID="http://lsm.deri.ie/resource/1099207032411018"sensorName=closedsensesource=“Some source"sourceType=lausannesensorType=lausanneinformation=Air Quality Sensors from Lausanne station 1author=opensensefeature="http://lsm.deri.ie/OpenIoT/opensensefeature"fields="humidity,temperature"field.temperature.propertyName="http://lsm.deri.ie/OpenIoT/Temperature"field.temperature.unit=Cfield.humidity.propertyName="http://lsm.deri.ie/OpenIoT/Humidity"field.humidity.unit=Percentfield.co.propertyName="http://lsm.deri.ie/OpenIoT/CO"field.co.unit=PPMlatitude=46.529838longitude=6.596818

Turtle RDF registration

11

<sensor/5010> rdf:type aws:CapacitiveBead,ssn:Sensor;rdfs:label "Sensor 5010";ssn:observes aws:air_temperature ;phenonet:hasSerialNumber

<sensor/5010/serial/serial2> ;ssn:onPlatform <site/narrabri/Pweather> ;ssn:ofFeature <site/narrabri/sf/sf_narrabri> ;ssn:hasMeasurementProperty

<sensor/5010/accuracy/acc_1> ;prov:wasGeneratedBy "AuthorName";DUL:hasLocation <place/location1>;lsm:hasSensorType <sensorType1>;lsm:hasSourceType "SourceType".

<sensorType1> rdfs:label "TypeName".

<sensor/5010/serial/serial2> rdf:type phenonet:SerialNumber; phenonet:hasId "5010" .

<sensor/5010> rdf:type aws:CapacitiveBead,ssn:Sensor;rdfs:label "Sensor 5010";ssn:observes aws:air_temperature ;phenonet:hasSerialNumber

<sensor/5010/serial/serial2> ;ssn:onPlatform <site/narrabri/Pweather> ;ssn:ofFeature <site/narrabri/sf/sf_narrabri> ;ssn:hasMeasurementProperty

<sensor/5010/accuracy/acc_1> ;prov:wasGeneratedBy "AuthorName";DUL:hasLocation <place/location1>;lsm:hasSensorType <sensorType1>;lsm:hasSourceType "SourceType".

<sensorType1> rdfs:label "TypeName".

<sensor/5010/serial/serial2> rdf:type phenonet:SerialNumber; phenonet:hasId "5010" .

A bit more of semantics

Need tools for this

Editing Ontologies?

12

Standard Tools

Better Suited for ontologists

Complex for small tasks

No integration with IoT platofrms

Generate RDF instances?

OpenIoT Schema Editor

13

Existing Sensor Types Observed

properties

Users exposed to URIs as identifiers

Sensor Types

14

Schema Editor: Sensor Types

15

Observed properties

New Type

Measurement Capabilities

Generated RDF

Sensor Instances

16

Schema Editor: New Instances

17

OpenIoT Schema Editor

18

Based on Standards

Schema Editor based on SSN Ontology

Facilitates Extensions

Integrated with OpenIoT

Sensor Types and Instances

Extensible Editor?

URI generation?

Link to Vocab Libraries?

Validation of content?

Beyond OpenIoT-only?Web User Interface

OpenIoT resources

19

OpenIoT Githubhttps://github.com/OpenIotOrg/openiot

OpenIoT VDK virtual Machinehttps://github.com/OpenIotOrg/openiot/wiki/VDKv2---OpenIoT-Release

Viedo Demos:http://www.youtube.com/user/OpenIoT

Muchas gracias!

Jean-Paul CalbimonteLSIR EPFL

@jpcik

20

Recommended