I. Introduction
The developments in the design of intelligent sensor node platforms, effective web development frameworks, cloud computing systems and services, and communication and networking technologies, opened wide doors for the creation of interesting systems in which objects, or things, gained the ability to be active parts of the Internet. These things can collect a massive amount of data about a certain phenomenon from the surrounding environment or context. That data is then processed either locally or by a resourceful cloud server to produce an action. For the action to be appropriate, it should be based on the knowledge that the collected data reflects. This knowledge can be produced through intensive operations of filtering, processing, categorizing, condensing, and contextualizing of the data [1]. The paradigm in which smart things become connected to the Internet to inject data into it and perform actions based on the processing of that data is referred to as the Internet of Things (IoT). Diverse disciplines of research contributed to the emergence of the concept of IoT like embedded systems, cloud computing, communication protocols, big data analytics, and wireless sensor networks [2].