the schema editor of openiot for semantic sensor networks · 2015-10-11 · the schema editor of...
TRANSCRIPT
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