Upload
jean-paul-calbimonte
View
821
Download
1
Embed Size (px)
Citation preview
1
The Schema Editor of OpenIoT for Semantic
Sensor NetworksPrem 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
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/openiotUse cases and validation scenarios
Smart Manufacturing Campus Guide
Air Monitoring Agriculture Sensing
2
The OpenIoT Architecture
Sensor data management
Semantic data management
Applications
3
Security(CAS)
Physical Technology
Plane
Xively (Cosm - Pachube)
CoAP(Sensors)
MQTT
RequestDefinition (IDE) Service Delivery
& U
tility Manager
RequestPresentation (IDE)
Scheduler
Configuration/M
onitorConsole (IDE)
Utility Application
Plane
Cloud DataBase(LSM-Light)
DiscoveryServices
X-GSN X-GSN
Virtualized Plane
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:Placedul: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?
http:
//pu
rl.oc
lc.o
rg/N
ET/s
snx/
cf/c
f-pro
pert
y
http:
//w
ww
.w3.
org/
2005
/Inc
ubat
or/s
sn/X
GR-s
sn/
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-0.6.1---Virtual-Box-Setup-Guide
Viedo Demos:http://www.youtube.com/user/OpenIoT
20
Muchas gracias!
Jean-Paul CalbimonteLSIR EPFL
@jpcik