Skip to content
This repository has been archived by the owner on Jul 27, 2020. It is now read-only.

ShivakumarSwamy/common-vocabulary-for-iot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Common Vocabulary for the Internet of Things

NOT IN DEVELOPMENT ANYMORE

Table of Contents

Abstract

The vision of Internet of Things (IoT) is to enable a global network of devices, intelligent enough to interact with one another, over the Internet. These devices are embedded with a myriad of entities (sensors and actuators), which can be remotely monitored and controlled using an IoT application. To receive data from a sensor or send data to the actuator and to further provide the data to IoT applications, many IoT platforms have been developed in the past using different protocols (MQTT, HTTP). Examples for such platforms are Mosquitto, OpenMTC, and FIWARE. Application developers who build these IoT applications, priorly are aware of the entities they host, how to access them and the structure of the message exchanged. As IoT environments are huge and dynamic, the addition of entities or change in the properties of the message or data, happen regularly. This leads to changes in the IoT application frequently, which increases the cost of the application. Besides, the application developer is coupled with only the knowledge of entities they host in that IoT environment. Moreover, if there are any other entities in the same environment, with better coverage or with any other additional information, the IoT application will not be able to make use of it as it will not be aware of how to access it. In order to adapt IoT applications to the dynamic nature of IoT, we need to define how the data can be retrieved from these IoT platforms, i.e., describe the properties of the entities, the structure of the data and its location. Then, IoT applications can use these properties to search for the required entities, in large IoT environments, and later access them without knowing in advance. In this thesis, we introduce a common vocabulary for the Internet of Things, based on semantic technologies, that enables us to describe the properties of entities. Furthermore, we show how to describe the entities using the terms in the vocabulary and how to search for the entities based on common terms. Our approach is demonstrated with an example scenario from the domain of smart cities.

Application requirements

  • Bash Terminal
  • Docker
  • Git (Optional)

Setup

  1. Clone the project using git clone <PROJECT_LINK>.git or download the project and unzip it

  2. Download RDF/Triple Store GraphDB Free Version

  3. Build all service images

  4. Run all services

  5. At localhost web app is available

Download RDF/Triple Store GraphDB Free Version

  1. Register here and follow the steps guided after registration

  2. Download the GraphDB free distribution zip file

  3. Place the downloaded zip file in the project root directory

NOTE: Image based on Ontotext-AD Dockerfile

Build all services image

  1. Navigate to project root directory

  2. Build all the images using the script
    bash build-all-images.sh

Run all services

  • After building all images, spin up containers using docker-compose.yml file
    docker-compose up or docker-compose up -d (detached)

  • docker-compose.yml file has following configuration

    • Configuration - image name: container name: port forwarding
      • graph-db-free: users: 7200 -> 7205
      • graph-db-free: cvi: 7200 -> 7210
      • users-management: app.users: 8080 -> 8005
        • API Documentation: http://localhost:8005/swagger-ui.html
      • entities-management: app.entities: 8080 -> 8010
        • API Documentation: http://localhost:8010/swagger-ui.html
      • cvi-web: web.cvi: 80 -> 80