Skip to content

Commit

Permalink
Add content for JNSM 2023 paper (paper folder + DIVIDE source code wi…
Browse files Browse the repository at this point in the history
…th example) & further improve content for SWJ 2022 paper
  • Loading branch information
mrdbrouw committed Jun 1, 2023
1 parent fcb0e07 commit cc688a0
Show file tree
Hide file tree
Showing 258 changed files with 148,671 additions and 22,781 deletions.
Binary file added DIVIDE-cascading-architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 29 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,38 @@
# DIVIDE: Context-aware query derivation for IoT data streams enabling privacy by design
# DIVIDE: adaptive configuration & distribution of semantic stream processing queries across an IoT network, based on dynamically changing environmental context

This repository contains code and data related to DIVIDE. DIVIDE can serve as a component of a semantic IoT platform. The main goal of DIVIDE is to automatically derive queries for an IoT platform's stream processing components, which filter the IoT data streams. This happens in a context-aware, adaptive way. Whenever the application context changes, DIVIDE derives the queries that filter the observations of interest for the use case, based on this new or changed context. By performing the reasoning upon context changes, relevant sensors and their observations can be filtered in real-time without the need to perform any more reasoning.
This repository contains code and data related to DIVIDE. DIVIDE can serve as a component of a semantic IoT platform. The main goal of DIVIDE is to automatically configure and distribute queries for an IoT platform's stream processing components, which filter the IoT data streams. This happens in an adaptive and context-aware and way: DIVIDE automatically adapts the query configuration and distribution according to changing environmental context. Environmental context consists of two main parts: use case (application-specific) context, and situational context in which queries are deployed.

This research is executed at the [IDLab](http://idlab.technology) research group, by people from [Ghent University](https://www.ugent.be/en)[imec](https://www.imec-int.com/en/home).
- Whenever the use case context changes, DIVIDE derives the queries that filter the observations of interest for the use case, based on this new or changed context. By performing the reasoning upon context changes, relevant sensors and their observations can be filtered in real-time without the need to perform any more reasoning.
- By continuously monitoring the situational context (networking conditions, stream characteristics, local query performance, device resource usage), the configuration of the query's window parameters (window size and execution frequency) and the distribution of the queries in the network (choosing its evaluation location on either a local or central stream processing engine) can be intelligently updated according to use case specific requirements.

This research is executed at the [IDLab](http://idlab.technology) research group, by researchers from [Ghent University](https://www.ugent.be/en)[imec](https://www.imec-int.com/en/home).

## Cascading reasoning architecture with DIVIDE

The figure below presents the overall architecture of a typical cascading reasoning set-up in an IoT network, in which DIVIDE should be deployed. More details about this architecture are presented in the papers referenced in this repository. Details about the contents of the repository are given below.

![Cascading reasoning architecture with DIVIDE](DIVIDE-cascading-architecture.png)

## Contents

This repository contains the following folders:
This repository contains a folder related to every publication (paper) about DIVIDE:

- [`saw2019`](saw2019): This folder contains supporting material for the first paper presenting the DIVIDE system. This paper has been presented at the 1st International Workshop on Sensors and Actuators on the Web ([SAW2019](http://saw.gitlab.emse.fr/2019/)) at [ISWC 2019](https://iswc2019.semanticweb.org/), and has been published in its proceedings. This paper can be found [here](http://ceur-ws.org/Vol-2549/article-01.pdf).
- [`swj2022`](swj2022): This folder contains supporting material for a first journal paper about DIVIDE. This paper has been published in the Special Issue on Semantic Web Meets Health Data Management of the [Semantic Web Journal](https://www.semantic-web-journal.net/) in 2023. This paper can be found [here](http://dx.doi.org/10.3233/SW-223281).
- [`jnsm2023`](jnsm2023): This folder contains supporting material for a second journal paper about DIVIDE. This paper has been submitted to the [Journal of Network and Systems Management](https://www.springer.com/journal/10922) in 2023 and is currently under review.

Referring back to the architecture figure, the first two papers (`saw2019` and `swj2022` folders) discuss the DIVIDE Core component. The third publication (`jnsm2023` folder) discusses the updated design of DIVIDE, which extends DIVIDE Core with the other subcomponents of DIVIDE Central and also includes the DIVIDE Local Monitor.

In addition, this repository contains details about a first implementation of DIVIDE:

- The implementation of DIVIDE Central is available in the [`src/divide-central`](src/divide-central) folder.
- The implementation of the DIVIDE Local Monitor is available in the [`src/divide-local-monitor`](src/divide-local-monitor) folder.
- The DIVIDE Meta Model ontology is available in the [`meta-model`](meta-model) folder.

## Citation

- [`saw2019`](saw2019): This folder contains supporting material for the first paper presenting the DIVIDE system. This paper has been published through the 1st International Workshop on Sensors and Actuators on the Web ([SAW2019](http://saw.gitlab.emse.fr/2019/)) at [ISWC 2019](https://iswc2019.semanticweb.org/). This paper can be found [here](http://ceur-ws.org/Vol-2549/article-01.pdf).
- [`swj2022`](swj2022): This folder contains supporting material for a journal paper about DIVIDE, submitted to the Special Issue on Semantic Web Meets Health Data Management of the [Semantic Web Journal](https://www.semantic-web-journal.net/). This paper is currently under review. The most recently submitted version for this paper can be found [here](https://www.semantic-web-journal.net/content/context-aware-query-derivation-iot-data-streams-divide-enabling-privacy-design).
- [`src/divide-central`](src/divide-central): This folder contains the source code of the DIVIDE central services.
When referring to DIVIDE, we currently ask you to include a citation to the publication about DIVIDE in the Semantic Web Journal. Details on how to cite are given in the [`swj2022`](swj2022) folder.

## Contact

The main contact person directly involved with this research is [Mathias De Brouwer](https://www.linkedin.com/in/mathiasdebrouwer/). In case of any remarks or questions, you can send an email to [[email protected]](mailto:[email protected]) or [create a GitHub issue](../../issues/new).
The main contact person directly involved with this research is [Mathias De Brouwer](https://www.linkedin.com/in/mathiasdebrouwer/). In case of any remarks or questions, you can email [[email protected]](mailto:[email protected]) or [create a GitHub issue](../../issues/new).
23 changes: 22 additions & 1 deletion jnsm2023/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,22 @@
More details to be added in May 2023.
# Enabling efficient semantic stream processing across the IoT network through adaptive distribution with DIVIDE

This folder contains all supportive material related to the paper "Enabling efficient semantic stream processing across the IoT network through adaptive distribution with DIVIDE", which is submitted for review to the [Journal of Network and Systems Management](https://www.springer.com/journal/10922).

## Contents

This folder mainly contains supportive material related to the evaluations performed in this paper. For clarity purposes, this information is added in the dedicated [`evaluations`](evaluations) folder.

Moreover, we would like to refer to some other information relevant to this paper:

- A first implementation of the methodological design of DIVIDE can be found in the [`src`](../src) folder of this repository. This folder refers to the implementation of both DIVIDE Central and the DIVIDE Local Monitor.
- The DIVIDE Meta Model ontology is available in the [`meta-model`](../meta-model) folder of this repository.

A dedicated tag of this repository is created with label [`jnsm-2023`](../../../releases/tag/jnsm-2023). This tag represents the version of implementation ([`src`](../src) folder) and Meta Model ontology ([`meta-model`](../meta-model) folder) resulting from the given paper.

## Citation

Since this paper is still under review, we would like to ask you to cite our first journal publication about DIVIDE when referring to DIVIDE. Information on how to cite is available on [the page dedicated to this paper](../swj2022).

## Contact

The main contact person directly involved with this research is [Mathias De Brouwer](https://www.linkedin.com/in/mathiasdebrouwer/). In case of any remarks or questions, you can email [[email protected]](mailto:[email protected]) or [create a GitHub issue](../../../issues/new).
23 changes: 23 additions & 0 deletions jnsm2023/evaluations/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Enabling efficient semantic stream processing across the IoT network through adaptive distribution with DIVIDE

This folder contains supportive material for the evaluations in the paper "Enabling efficient semantic stream processing across the IoT network through adaptive distribution with DIVIDE", which is submitted for review to the [Journal of Network and Systems Management](https://www.springer.com/journal/10922).

## Contents

The folder contains supportive material for the evaluations performed in the paper. More specifically, it contains the following files and folders:

- [`ontology`](ontology): This folder contains the ontology used for the paper's evaluations. This ontology consists of a snapshot of the [Data Analytics for Health and Connected Care (DAHCC) ontology](https://github.com/predict-idlab/DAHCC-Sources), complemented with an additional module ([`KBActivityRecognition.ttl`](ontology/KBActivityRecognition.ttl)) that represents all extra definitions related to the health parameter calculator system (which includes the definitions related to the calculation of a person's activity index).
- [`context.ttl`](context.ttl): This file represents the context used for the evaluations. This file contains all context triples in RDF/Turtle syntax.
- [`divide-query`](divide-query): This folder contains the internal representation of the DIVIDE query that can be instantiated to an RSP query that calculates a patient's activity index. This DIVIDE query is registered to the DIVIDE engine for all evaluation scenarios of the paper.
- [`global-monitor-queries`](global-monitor-queries): This folder contains the different SPARQL queries that are configured as Global Monitor queries in the evaluation scenarios of this paper.
- [`configuration`](configuration): This folder contains the configuration files to run the different evaluation scenarios. Note that these configuration files expect the ontology & query files to be in the correct subdirectories, relative to the location of the directory that contains these configuration files & the DIVIDE Central executable JAR. The configuration files are provided for the two evaluation scenarios:
- [`scenario-1-window-parameters`](configuration/scenario-1-window-parameters): This folder contains the configuration files for evaluation scenario 1 (updating the RSP query window parameters based on RSP monitoring).
- [`scenario-2-query-location`](configuration/scenario-2-query-location): This folder contains the configuration files for evaluation scenario 2 (updating the RSP query location based on network monitoring). The paper also reports additional results for this second evaluation scenario, specifically for the DIVIDE Monitoring set-up. The only difference to the configuration files is updating the network round trip time thresholds in the global monitor queries. In the configuration, this means that the suffixes of the query paths in the `monitor.task_queries` property of the `divide-baseline.properties.json` file are updated from `_medium` to either `_low` and `_high`.

The [`divide-server-1.0-jar-with-dependencies.jar`](divide-server-1.0-jar-with-dependencies.jar) file represents the compiled Java JAR of the DIVIDE server module (of DIVIDE Central) used for the evaluations in the paper. The version of the Local Monitor used in the evaluations is represented by the [`divide-local-monitor-1.0-jar-with-dependencies.jar`](divide-local-monitor-1.0-jar-with-dependencies.jar) file. The corresponding source code can be found in the [`src`](../../src) folder of this repository. The README file of this folder contains detailed information and an example on how to run the DIVIDE Central (server) JAR and the DIVIDE Local Monitor JAR. The version of the source code to build the given Java JAR files (and thus the version used for the evaluations) is tagged with the 'jnsm-2023' tag (see [tag page](../../../../tags)).

The realistic dataset, collected in the imec-UGent HomeLab and used in the paper to create the simulation dataset, is publicly available on the DAHCC ontology website via [this link](https://dahcc.idlab.ugent.be/dataset.html).

## Contact

The main contact person directly involved with this research is [Mathias De Brouwer](https://www.linkedin.com/in/mathiasdebrouwer/). In case of any remarks or questions, you can email [[email protected]](mailto:[email protected]) or [create a GitHub issue](../../../../issues/new).
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
10.42.0.35;10.42.0.35_patient;[];csparql;8100
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{
"device": {
"network_ip": "10.42.0.112"
},
"server": {
"host": "localhost",
"port":{
"divide": 8342,
"kb": 8343
}
},
"divide": {
"kb": {
"type": "Jena",
"base_iri": "http://protego.ilabt.imec.be/idlab.homelab/"
},
"ontology": {
"dir": "../../ontology/",
"files": [
"KBActivityRecognition.ttl",
"ActivityRecognition.ttl",
"MonitoredPerson.ttl",
"Sensors.ttl",
"SensorsAndActuators.ttl",
"SensorsAndWearables.ttl",
"_Homelab_tbox.ttl",
"_HomelabWearable_tbox.ttl",
"imports/eep.ttl",
"imports/affectedBy.ttl",
"imports/cpannotationschema.ttl",
"imports/saref.ttl",
"imports/saref4bldg.ttl",
"imports/saref4ehaw.ttl",
"imports/saref4wear.ttl"
]
},
"queries": {
"divide": [
"../../divide-query/activity-index.json"
]
}
},
"reasoner": {
"handleTboxDefinitionsInContext": false
},
"engine": {
"parser": {
"processUnmappedVariableMatches": true,
"validateUnboundVariablesInRspQlQueryBody": true
},
"stopRspEngineStreamsOnContextChanges": true
},
"monitor": {
"active": true,
"task_queries": [
"../../global-monitor-queries/execution_time_monitor.sparql"
],
"local_monitor_jar": "../../divide-local-monitor-1.0-jar-with-dependencies.jar"
},
"central_rsp_engine": {
"active": true,
"query_language": "csparql",
"server": {
"protocol": "http",
"port": 8100,
"ws_stream_port": 8101
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
10.42.0.35;10.42.0.35_patient;[];csparql;8100
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"device": {
"network_ip": "10.42.0.112"
},
"server": {
"host": "localhost",
"port":{
"divide": 8342,
"kb": 8343
}
},
"divide": {
"kb": {
"type": "Jena",
"base_iri": "http://protego.ilabt.imec.be/idlab.homelab/"
},
"ontology": {
"dir": "../../ontology/",
"files": [
"KBActivityRecognition.ttl",
"ActivityRecognition.ttl",
"MonitoredPerson.ttl",
"Sensors.ttl",
"SensorsAndActuators.ttl",
"SensorsAndWearables.ttl",
"_Homelab_tbox.ttl",
"_HomelabWearable_tbox.ttl",
"imports/eep.ttl",
"imports/affectedBy.ttl",
"imports/cpannotationschema.ttl",
"imports/saref.ttl",
"imports/saref4bldg.ttl",
"imports/saref4ehaw.ttl",
"imports/saref4wear.ttl"
]
},
"queries": {
"divide": [
"../../divide-query/activity-index.json"
]
}
},
"reasoner": {
"handleTboxDefinitionsInContext": false
},
"engine": {
"parser": {
"processUnmappedVariableMatches": true,
"validateUnboundVariablesInRspQlQueryBody": true
},
"stopRspEngineStreamsOnContextChanges": true
},
"monitor": {
"active": false
},
"central_rsp_engine": {
"active": false
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
192.168.0.1;192.168.0.1_patient;[];csparql;8100
192.168.0.2;192.168.0.2_patient;[];csparql;8100
192.168.0.3;192.168.0.3_patient;[];csparql;8100
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
{
"device": {
"network_ip": "192.168.0.4"
},
"server": {
"host": "localhost",
"port":{
"divide": 8342,
"kb": 8343
}
},
"divide": {
"kb": {
"type": "Jena",
"base_iri": "http://protego.ilabt.imec.be/idlab.homelab/"
},
"ontology": {
"dir": "../../ontology/",
"files": [
"KBActivityRecognition.ttl",
"ActivityRecognition.ttl",
"MonitoredPerson.ttl",
"Sensors.ttl",
"SensorsAndActuators.ttl",
"SensorsAndWearables.ttl",
"_Homelab_tbox.ttl",
"_HomelabWearable_tbox.ttl",
"imports/eep.ttl",
"imports/affectedBy.ttl",
"imports/cpannotationschema.ttl",
"imports/saref.ttl",
"imports/saref4bldg.ttl",
"imports/saref4ehaw.ttl",
"imports/saref4wear.ttl"
]
},
"queries": {
"divide": [
"../../divide-query/activity-index.json"
]
}
},
"reasoner": {
"handleTboxDefinitionsInContext": false
},
"engine": {
"parser": {
"processUnmappedVariableMatches": true,
"validateUnboundVariablesInRspQlQueryBody": true
},
"stopRspEngineStreamsOnContextChanges": true
},
"monitor": {
"active": true,
"task_queries": [
"../../global-monitor-queries/network_rtt_monitor_to_central_medium.sparql",
"../../global-monitor-queries/network_rtt_monitor_to_local_medium.sparql"
],
"local_monitor_jar": "../../divide-local-monitor-1.0-jar-with-dependencies.jar"
},
"central_rsp_engine": {
"active": true,
"query_language": "csparql",
"server": {
"protocol": "http",
"port": 8100,
"ws_stream_port": 8101
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
192.168.0.1;192.168.0.1_patient;[];csparql;8100
192.168.0.2;192.168.0.2_patient;[];csparql;8100
192.168.0.3;192.168.0.3_patient;[];csparql;8100
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{
"device": {
"network_ip": "192.168.0.4"
},
"server": {
"host": "localhost",
"port":{
"divide": 8342,
"kb": 8343
}
},
"divide": {
"kb": {
"type": "Jena",
"base_iri": "http://protego.ilabt.imec.be/idlab.homelab/"
},
"ontology": {
"dir": "../../ontology/",
"files": [
"KBActivityRecognition.ttl",
"ActivityRecognition.ttl",
"MonitoredPerson.ttl",
"Sensors.ttl",
"SensorsAndActuators.ttl",
"SensorsAndWearables.ttl",
"_Homelab_tbox.ttl",
"_HomelabWearable_tbox.ttl",
"imports/eep.ttl",
"imports/affectedBy.ttl",
"imports/cpannotationschema.ttl",
"imports/saref.ttl",
"imports/saref4bldg.ttl",
"imports/saref4ehaw.ttl",
"imports/saref4wear.ttl"
]
},
"queries": {
"divide": [
"../../divide-query/activity-index.json"
]
}
},
"reasoner": {
"handleTboxDefinitionsInContext": false
},
"engine": {
"parser": {
"processUnmappedVariableMatches": true,
"validateUnboundVariablesInRspQlQueryBody": true
},
"stopRspEngineStreamsOnContextChanges": true
},
"monitor": {
"active": false
},
"central_rsp_engine": {
"active": true,
"query_language": "csparql",
"server": {
"protocol": "http",
"port": 8100,
"ws_stream_port": 8101
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
192.168.0.1;192.168.0.1_patient;[];csparql;8100
192.168.0.2;192.168.0.2_patient;[];csparql;8100
192.168.0.3;192.168.0.3_patient;[];csparql;8100
Loading

0 comments on commit cc688a0

Please sign in to comment.