A bit of FIWARE history

Tell me something my friend. You ever dance with the devil in the pale moonlight?

Joker/Jack Napier – Batman (1990)
Image from https://comicbook.com


Actually, this is the article I should start with, but I didn’t. Before talking about the functionalities of the Orion context Broker, we should tell a few words about the whole initiative. 

FIWARE is an open source cloud platform with a collaborative and mature ecosystem of developers, innovation Hubs, accelerators, cities and more than 1000 Small and Medium Enterprises and startups. By 2020, businesses leveraging the FIWARE platform are expected to generate revenues of more than EUR 330 million [1].

FIWARE was born in Europe, from the Future Internet Public Private Partnership (FI-PPP) [1]. FI-PPP, the European programme for internet-enabled innovation, is going from strength to strength. FI-PPP has announced the imminent launch of phase 3 aimed at further accelerating the development and adoption of Future Internet technologies in Europe [2]. It’s goals are:

  • accelerating the development and adoption of Future Internet technologies in Europe
  • advancing the European market for smart infrastructures,
  • increasing the effectiveness of business processes through the Internet.

The European FIWARE Accelerator Programme of 16 accelerators, operating within the programme, has attracted over 8,000 submissions to their open calls. More than 1000 Small- and Medium-sized companies (SMEs) and startups have been part of the FIWARE business acceleration programme. They will be serving at least 1.5 million business customers and reaching a market of more than 20 million consumers [1].

The sectors that FIWARE is involved, are the following: Smart cities, AgriFood, eHealth,
Transport, Energy & Environment, Media & Content, Manufacturing & Logistics, Social & Learning. The European Commision has funded 2 projects to continue the FIWARE Accelerator Programme: IMPACT GROWTH and frontierCities² [1].

The Future Internet Public Private Partnership (FI-PPP)

The FI-PPP’s goal was to make infrastructures and business processes smarter (i.e. more intelligent, more efficient, more sustainable) through tighter integration with Internet networking and computing capabilities  It looked at different sectors such as transport, health, and energy. It defined possible innovative business models for these sectors [1].

The FI-PPP followed an industry-driven, user-oriented approach that combined R&D on network and communication technologies, devices, software, service and media technologies; and their experimentation and validation in real application contexts. It brings together the demand and supply sides, and it involves users early into the research lifecycle. The platform technologies is still used and validated by many actors, in particular by SMEs and public administrations [1].

The FIWARE Foundation

The FIWARE Foundation is the legal independent body providing shared resources to help achieve the FIWARE mission by promoting, augmenting, protecting, and validating the FIWARE technologies as well as the activities of the FIWARE community, empowering its members including end users, developers and rest of stakeholders in the entire ecosystem. The FIWARE Foundation is open: anybody can join contributing to a transparent governance of FIWARE activities and rising through the ranks, based on merit. Founded in 2016 by Atos, Engineering, Orange, and Telefónica, the Foundation is a non-profit organization that encourages the adoption of a common, collaborative and interoperable data sharing framework based on standards and open source technology [3].

Currently as we speak, the FIWARE foundation has 250+ members from 35 countries, 150+ open source projects, 140+ “Powered by FIWARE” solutions, 2,000+ Open source developers contributing code, 100+ Evangelists, 13 FIWARE iHubs, 13 FIWARE Lab Nodes, 10+ Strategic Partnerships [3].

The mission is to develop an open sustainable ecosystem around public, royalty-free and implementation-driven software platform standards that will ease the creation of Smart Applications in multiple sectors. Using FIWARE technologies, organizations can capture the opportunities that are emerging with the new wave of digitalisation brought by combining the Internet of Things with Context Information Management and Big Data services on the Cloud. On the other hand, developers can gather context information at large scale from many different sources. FIWARE also helps to easily process, analyse and visualize managed context information, easing the implementation of the smart behaviour and the enhanced user experience required by next-generation Smart Applications [3].

The FIWARE Community comprises all individuals and organizations contributing achieving the FIWARE Mission. The FIWARE Community is not only formed by contributors to the technology (the Open Source Community working on the FIWARE platform), but also those who contribute in building the FIWARE ecosystem and making it sustainable over time [3].

The FIWARE Technical Steering Committee governs the technical direction of the FIWARE platform and activities of the FIWARE Open Source Community. Governance of the rest of activities carried out by members of the FIWARE Community is organized through Mission Support Committees [3].

The Fiware accelerator program

The FIWARE Accelerator Programme promotes the take up of FIWARE technologies among solution integrators and application developers, with special focus on SMEs and start-ups. Linked to this Programme, the EU launched an ambitious campaign in September 2014 mobilizing up to 100M€, to support 1000 entrepreneurs, SMEs and startups to develop innovative applications based on FIWARE [4].

At this moment, the FIWARE Accelerator Programme is being assembled as a crucial part of the FIWARE Community collaborating with the FIWARE Open Source Community and the rest of FIWARE programmes. Altogether, they will continue their contribution to building the FIWARE ecosystem and make it sustainable over time. Coordination of activities linked to the FIWARE Accelerator Programme takes place in the FIWARE Accelerators Ecosystem Support Committee whose members are encouraged to work together in specific Working Groups [4].

Who is using FIWARE?

SELECT for Cities is based on the notion that cities across the globe are on a continuous search for new and innovative technologies, methods and tools to foster innovation, as well as to create value for both business and citizens, in order to transform into ‘Smart Cities’. The project brings together three cities (Antwerp, Copenhagen, Helsinki) that want to compare different Smart City solutions via an increasing competitive tendering approach. Following the first phase, which is based on the documentation of the architecture and, in some cases, early prototypes, five solutions were selected to participate in the second phase, out of which Engineering, Orchestra Cities, FIWOO, and the Snap4City Platform are using FIWARE components [5].

The IoF2020 project is dedicated to accelerate adoption of IoT for securing sufficient, safe and healthy food and to strengthen competitiveness of farming and food chains in Europe. The IoF2020 consortium of 73 partners, led by Wageningen UR and other core partners of previous key projects such as FIWARE and IoT-A, will leverage the ecosystem and architecture that was established in those projects. The heart of the project is formed by 19 use cases grouped in 5 trials with end users from the Arable, Dairy, Fruits, Vegetables and Meat verticals and IoT integrators that will demonstrate the business case of innovative IoT solutions for a large number of application areas [6].IoF2020 is part of Horizon 2020 Industrial Leadership and supported by the European Commission with a budget of EUR 30 million [7]. 

The Z-BRE4K architecture is designed and developed on the foundations of the AUTOWARE reference architecture and building blocks enabling the convergence of Information Technology (IT), perational Technology (OT), Engineering Technology (ET) and the leveraging of interoperability of Industrial Data Spaces (IDS), for the support of a factory ecosystem. The objective is to develop a highly adaptive real-time Machine (network of components) Simulation platform that wraps around the physical equipment for predicting uptimes and BRE4Kdowns – thus creating intuitive maintenance control and management systems. The AUTOWARE consortium has created a framework based on other existing frameworks (e.g. BEinCPPS, FIWARE, RAMI4.0) and taking into consideration the industrial requirements from several use cases, thereby aiming to be a solution-oriented framework [8].

On, July 9 2019 NEC Europe and its advanced Smart City solution, the CCOC, has recently been certified a “Powered by FIWARE Platform, becoming part of the FIWARE Marketplace of platforms. This certification complements the one received in 2017 as “Powered by FIWARE Solutions”. NEC CCOC manages information at large scale and gather Context Information coming from different and highly distributed sources such as end users, sensor networks and all kinds of information systems, including social networks, processing it in order to perform smart actions, including prediction and prescriptions. CCOC (Cloud City Operation Centre) solution collects both, real-time and long-term data, coming from all city sources, it automates city processes and allows for the swift provision of municipal services, which in turn reduces the workload at monitoring centers [9].

Read more

Please visit the FIWARE website. Here you will find all the necessary information about FIWARE progress.


[1]. https://ec.europa.eu/digital-single-market/en/future-internet-public-private-partnership

[2]. https://ec.europa.eu/digital-single-market/en/news/future-internet-%E2%80%93-public-private-partnership-fi-ppp-0

[3]. https://www.fiware.org/foundation/

[4]. https://www.fiware.org/community/fiware-accelerator-programme/

[5]. https://www.fiware.org/2018/06/04/4-solutions-using-fiware-are-in-phase-2-of-select-for-cities/

[6]. https://cordis.europa.eu/project/rcn/206761/factsheet/en

[7]. https://www.iof2020.eu/

[8]. https://www.z-bre4k.eu/wp-content/uploads/2019/09/Z-BRE4K_768869_Deliverable_D1.3.pdf

[9]. https://www.fiware.org/news/nec-smart-city-solution-is-now-certified-powered-by-fiware-platform/


The Fiware platform – episode 1 – Intro

Each generation is called upon to follow its own quest.

Etienne Navarre – Ladyhawke (1985)
Image from onebauer.media


FIWARE is an open source initiative defining a universal set of standards for context data management which facilitate the development of Smart Solutions for different domains such as Smart Cities, Smart Industry, Smart Agrifood, and Smart Energy [1].

In any smart solution there is a need to gather and manage context information, processing that information and informing external actors, enabling them to actuate and therefore alter or enrich the current context. The FIWARE Context Broker component is the core component. It enables the system to perform updates and access to the current state of context [1].

The Context Broker in turn is surrounded by a suite of additional platform components, which may be supplying context data (from diverse sources such as a CRM system, social networks, mobile apps or IoT sensors for example), supporting processing, analysis and visualization of data or bringing support to data access control, publication or monetization [1].

What is context information?

Initially we will describe at how researchers have attempted to define context in the past. While most people tacitly understand what context is, they find it hard to elucidate. Previous definitions of context are done by enumeration of examples or by choosing synonyms for context [2].

In the work that first introduces the term ‘context-aware,’ Schilit and Theimer refer to context as location, identities of nearby people and objects, and changes to those objects. These types of definitions that define context by example are difficult to apply. When we want to determine whether a type of information not listed in the definition is context or not, it is not clear how we can use the definition to solve the dilemma [2].

Other definitions have simply provided synonyms for context; for example, referring to context as the environment or situation. As with the definitions by example, definitions that simply use synonyms for context are extremely difficult to apply in practice [2].

The definitions by Schilit et al. and Pascoe are closest in spirit to the operational definition we desire. Schilit claims that the important aspects of context are: where you are, who you are with, and what resources are nearby.

Pascoe defines context to be the subset of physical and conceptual states of interest to a particular entity. These definitions are too specific. Context is all about the whole situation relevant to an application and its set of users. We cannot enumerate which aspects of all situations are important, as this will change from situation to situation [2].

Anind K. Dey provides the following definition:

Context is any information that can be used to characterize the situation of an entity. An entity is a person, place, or object that is considered relevant to the interaction between a user and an application, including the user and applications themselves [2].

Anind K. Dey

If a piece of information can be used to characterize the situation of a participant in an interaction, then that information is context [2].

Take the canonical context-aware application, an indoor mobile tour guide, as an example. The obvious entities in this example are the user, the application and the tour sites. We will look at two pieces of information – weather and the presence of other people – and use the definition to determine whether either one is context [2].

The weather does not affect the application because it is being used indoors. Therefore, it is not context. The presence of other people, however, can be used to characterize the user’s situation. If a user is traveling with other people, then the sites they visit may be of particular interest to her. Therefore, the presence of other people is context because it can be used to characterize the user’s situation [2].

Context aware computing

Context-aware computing was first discussed by Schilit and Theimer in 1994 to be software that adapts according to its location of use, the collection of nearby people and objects, as well as changes to those objects over time [2].

Anind K. Dey provides the following definition for context aware computing:

A system is context-aware if it uses context to provide relevant information and/or services to the user, where relevancy depends on the user’s task.

Anind K. Dey

Similar to the problem of defining context-aware, researchers have also tried to specify the important features of a context-aware application. Again, these features have tended to be too specific to particular applications [2].

The categorization combines the ideas from previous taxonomies and attempts to generalize them to satisfy all existing context-aware applications. There are three categories of features that a context-aware application can support [2]:

  1. presentation of information and services to a user
  2. automatic execution of a service for a user
  3. tagging of context to information to support later retrieval

Features of a context aware app

It encapsulates changes and the impact of changes, so applications do not need to be modified. A context related functionality is responsible for acquiring a certain type of context information and it makes that information available to the rest of the system in a generic manner, regardless of how it is actually sensed [2].

An example is interpreting context from all the devices in a conference room to determine that a meeting is occurring. For example, an indoor infrared positioning system may consist of many infrared emitters and detectors in a building. The sensors must be physically distributed and cannot all be directly connected to a single machine [2].

Context aggregators aggregate context. We defined context as information used to characterized the situation of an entity. A context aggregator, is responsible for all the context for a single entity. Aggregators gather the context about an entity (e.g., a person), behaving as a proxy for other applications [2].

What is NGSI?

The FIWARE NGSI (Next Generation Service Interface) API defines:

  • data model for context information, based on a simple information model using the notion of context entities [3]
  • context data interface for exchanging information by means of query, subscription, and update operations [3]
  • context availability interface for exchanging information on how to obtain context information (whether to separate the two interfaces is currently under discussion) [3]
https://raw.githubusercontent.com/telefonicaid/fiware-orion/master/doc/apiary/v2/Ngsi-data-model.png [3]

Context entities, are the center of gravity in the FIWARE NGSI information model. An entity represents a thing, i.e., any physical or logical object (e.g., a sensor, a person, a room, an issue in a ticketing system, etc.). Each entity has an entity id. Furthermore, the type system of FIWARE NGSI enables entities to have an entity type. Entity types are semantic types; they are intended to describe the type of thing represented by the entity. For example, a context entity with id sensor-365 could have the type temperatureSensor. Each entity is uniquely identified by the combination of its id and type [3].

Context attributes are properties of context entities. For example, the current speed of a car could be modeled as attribute current_speed of entity car-104. In the NGSI data model, attributes have an attribute name, an attribute type, an attribute value and metadata.

  • The attribute name describes what kind of property the attribute value represents of the entity, for example current_speed [3]
  • The attribute type represents the NGSI value type of the attribute value. Note that FIWARE NGSI has its own type system for attribute values, so NGSI value types are not the same as JSON types [3]
  • The attribute value finally contains
    • the actual data
    • optional metadata describing properties of the attribute value like e.g. accuracy, provider, or a timestamp [3]

The API response payloads in this specification are based on application/json and (for attribute value type operation) text/plain MIME types. Clients issuing HTTP requests with accept types different than those will get a 406 Not Acceptable error.

What is a (Orion context) broker?

A message broker is an architectural pattern for message validation, transformation, and routing. It mediates communication among applications, minimizing the mutual awareness that applications should have of each other in order to be able to exchange messages, effectively implementing decoupling.[4]

The primary purpose of a broker is to take incoming messages from applications and perform some action on them. Message brokers can decouple end-points, meet specific non-functional requirements, and facilitate reuse of intermediary functions. For example, a message broker may be used to manage a workload queue or message queue for multiple receivers, providing reliable storage, guaranteed message delivery and perhaps transaction management. The following represent other examples of actions that might be handled by the broker [4]:

  • Route messages to one or more destinations
  • Transform messages to an alternative representation
  • Perform message aggregation, decomposing messages into multiple messages and sending them to their destination, then recomposing the responses into one message to return to the user
  • Interact with an external repository to augment a message or store it
  • Invoke web services to retrieve data
  • Respond to events or errors
  • Provide content and topic-based message routing using the publish–subscribe pattern

Message brokers are generally based on one of two fundamental architectures: hub-and-spoke and message bus. In the first, a central server acts as the mechanism that provides integration services, whereas with the latter, the message broker is a communication backbone or distributed service that acts on the bus. Additionally, a more scalable multi-hub approach can be used to integrate multiple brokers [4] .

So, Orion is a C++ implementation of the NGSIv2 REST API binding developed as a part of the FIWARE platform. The Orion context broker allows us to manage the entire lifecycle of context information including updates, queries, registrations and subscriptions. Using the Orion Context Broker, you are able to create context elements and manage them through updates and queries. In addition, you can subscribe to context information so when some condition occurs (e.g. the context elements have changed) you receive a notification [5].

The next episode

We will provide detailed information about the Orion context broker, and how to communicate with it a C# client.


[1]. https://www.fiware.org/developers/

[2]. Understanding and Using Context, Anind K. Dey, Future Computing Environments Group, College of Computing & GVU Center, Georgia Institute of Technology, Atlanta, GA, 30332-0280, USA

[3]. https://fiware.github.io/specifications/ngsiv2/stable/

[4]. https://en.wikipedia.org/wiki/Message_broker

[5]. https://fiware-orion.readthedocs.io/en/latest/