This document describes the novelties in NGSIv2 for people already familiar with NGSIv1. Thus, you would learn how to do the things you are familiar with NGSIv1 now in NGSIv2 as long as new and powerfull capabilities of the new version of the API. Some knowledge in NGSIv1 API is required.
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project. The core part of this virtual training camp (21-24 June 2021) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using linked data concepts - JSON-LD and NGSI-LD and combines these with common smart data models for the sharing and augmentation of context data.
In addition, it covers the supplementary FIWARE technologies used to implement the common functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historical big data.
This 12-hour online training course can be used to obtain a good understanding of FIWARE and NGSI Interfaces and form the basis of studying for the FIWARE expert certification.
Extending this core part, the virtual training camp adds introductory and deep-dive sessions on how FIWARE and iSHARE technologies, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for the creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the creation of innovative services based on data sharing. In addition, SMEs and Digital Innovation Hubs (DIHs) that go through this complete training and are located in countries eligible under Horizon 2020 will be equipped with the necessary know-how to apply to the recently launched i4Trust Open Call.
FIWARE: Managing Context Information at large scaleFermin Galan
This presentation describes how context management is implemented in FIWARE platform, base don Orion Context Broker GEri. Both basic usage of Context Broker and advanced topics are included.
Session 8 - Creating Data Processing Services | Train the Trainers ProgramFIWARE
This technical session for Local Experts in Data Sharing (LEBDs), this session will explain how to create data processing services that are key to i4Trust.
FIWARE Wednesday Webinars - How to Secure FIWARE ArchitecturesFIWARE
How to Secure FIWARE Architectures - 10th April 2019
Corresponding webinar recording: http://bit.ly/2UsvtzZ
Introduction to basic Identity Management and Security within the FIWARE Catalogue. How to secure your microservices within a Smart Solution.
Chapter: Security
Difficulty: 1
Audience: Any Technical
Presenter: Jason Fox (Senior Technical Evangelist, FIWARE Foundation)
Core Context Management Webinar - 20th March 2019
Corresponding webinar recording: https://youtu.be/pK4GgYjlmdY
Introduction to Core Context Management. Learn about the NGSI DataModel and the NSGI interface, registrations, subscription etc.
Chapter: Core
Difficulty: 1
Audience: Anyone
Presenter: Jason Fox (Senior Technical Evangelist, FIWARE Foundation)
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project. The core part of this virtual training camp (21-24 June 2021) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using linked data concepts - JSON-LD and NGSI-LD and combines these with common smart data models for the sharing and augmentation of context data.
In addition, it covers the supplementary FIWARE technologies used to implement the common functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historical big data.
This 12-hour online training course can be used to obtain a good understanding of FIWARE and NGSI Interfaces and form the basis of studying for the FIWARE expert certification.
Extending this core part, the virtual training camp adds introductory and deep-dive sessions on how FIWARE and iSHARE technologies, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for the creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the creation of innovative services based on data sharing. In addition, SMEs and Digital Innovation Hubs (DIHs) that go through this complete training and are located in countries eligible under Horizon 2020 will be equipped with the necessary know-how to apply to the recently launched i4Trust Open Call.
FIWARE: Managing Context Information at large scaleFermin Galan
This presentation describes how context management is implemented in FIWARE platform, base don Orion Context Broker GEri. Both basic usage of Context Broker and advanced topics are included.
Session 8 - Creating Data Processing Services | Train the Trainers ProgramFIWARE
This technical session for Local Experts in Data Sharing (LEBDs), this session will explain how to create data processing services that are key to i4Trust.
FIWARE Wednesday Webinars - How to Secure FIWARE ArchitecturesFIWARE
How to Secure FIWARE Architectures - 10th April 2019
Corresponding webinar recording: http://bit.ly/2UsvtzZ
Introduction to basic Identity Management and Security within the FIWARE Catalogue. How to secure your microservices within a Smart Solution.
Chapter: Security
Difficulty: 1
Audience: Any Technical
Presenter: Jason Fox (Senior Technical Evangelist, FIWARE Foundation)
Core Context Management Webinar - 20th March 2019
Corresponding webinar recording: https://youtu.be/pK4GgYjlmdY
Introduction to Core Context Management. Learn about the NGSI DataModel and the NSGI interface, registrations, subscription etc.
Chapter: Core
Difficulty: 1
Audience: Anyone
Presenter: Jason Fox (Senior Technical Evangelist, FIWARE Foundation)
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project. The core part of this virtual training camp (21-24 June 2021) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using linked data concepts - JSON-LD and NGSI-LD and combines these with common smart data models for the sharing and augmentation of context data.
In addition, it covers the supplementary FIWARE technologies used to implement the common functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historical big data.
This 12-hour online training course can be used to obtain a good understanding of FIWARE and NGSI Interfaces and form the basis of studying for the FIWARE expert certification.
Extending this core part, the virtual training camp adds introductory and deep-dive sessions on how FIWARE and iSHARE technologies, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for the creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the creation of innovative services based on data sharing. In addition, SMEs and Digital Innovation Hubs (DIHs) that go through this complete training and are located in countries eligible under Horizon 2020 will be equipped with the necessary know-how to apply to the recently launched i4Trust Open Call.
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project and IShare Foundation. The core part of this virtual training camp (27 Jun - 01 Jul 2022) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using NGSI-LD (the simple yet powerful open standard API enabling to publish and access digital twin data) combined with common smart data models
In addition, it covers the supplementary FIWARE technologies used to implement the rest of functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data, and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historic big data.
Extending this core part, the training camp also cover how you can easily integrate FIWARE systems with blockchain networks to create audit-proof logs of processes and ensure transparency.
Session 4 - Bringing the pieces together - Detailed review of a reference ex...FIWARE
This session will explain how everything comes together under i4Trust using a reference example and then explain that example in detail. It will bringing the pieces together: Detailed technical review of a reference example: the prerequisites, creating an offering, acquiring rights / activation , & consumption. And setup of components of the i4Trust experimentation framework. Technical session for Local Experts in Data Sharing (LEBDs)
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project and IShare Foundation. The core part of this virtual training camp (27 Jun - 01 Jul 2022) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using NGSI-LD (the simple yet powerful open standard API enabling to publish and access digital twin data) combined with common smart data models
In addition, it covers the supplementary FIWARE technologies used to implement the rest of functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data, and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historic big data.
Extending this core part, the training camp also cover how you can easily integrate FIWARE systems with blockchain networks to create audit-proof logs of processes and ensure transparency.
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project. The core part of this virtual training camp (21-24 June 2021) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using linked data concepts - JSON-LD and NGSI-LD and combines these with common smart data models for the sharing and augmentation of context data.
In addition, it covers the supplementary FIWARE technologies used to implement the common functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historical big data.
This 12-hour online training course can be used to obtain a good understanding of FIWARE and NGSI Interfaces and form the basis of studying for the FIWARE expert certification.
Extending this core part, the virtual training camp adds introductory and deep-dive sessions on how FIWARE and iSHARE technologies, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for the creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the creation of innovative services based on data sharing. In addition, SMEs and Digital Innovation Hubs (DIHs) that go through this complete training and are located in countries eligible under Horizon 2020 will be equipped with the necessary know-how to apply to the recently launched i4Trust Open Call.
This training camp teaches you how FIWARE technologies and iSHARE, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the development of innovative services based on data sharing and creating value out of the data they share. SMEs and Digital Innovation Hubs (DIHs) will be equipped with the necessary know-how to use the i4Trust framework for creating data spaces!
Session 1 - Introduction to i4Trust Data Spaces, building blocks, and roles |...FIWARE
This session will elaborate on the i4Trust overall mission and vision and introduce you to data spaces: how they enable the development of innovative services and what building blocks are required to build data spaces. It will elaborate on what i4Trust is aiming at beyond building blocks which is the creation of a vibrant community. In addition, there will be an introduction to the role of DIHs and to i4Trust open calls. The session for Local Experts in Data Sharing (LEBDs) & Ambassadors
Introduction to the management of data persistency in FIWARE with the different approach adopted by the FIWARE Community. What is a Time Series Database. What are the different between the different solutions adopted.
FIWARE Overview Webinar - 27th March 2019
Corresponding webinar recording: https://youtu.be/97JsnnpPLrA
Chapter: Fundamentals
Difficulty: 0
Audience: Anyone
Basic introduction describing what FIWARE is, why you need it and how the elements of the FIWARE Catalogue can help accelerate the development of your Smart Solution.
Session 3 - i4Trust components for Identity Management and Access Control i4T...FIWARE
This session consists of two parts. The first part of the session will introduce you to i4Trust IAM components in detail while the second will introduce i4Trust Marketplace Services. Technical session for Local Experts in Data Sharing (LEBDs)
FIWARE Wednesday Webinars - How to Design DataModelsFIWARE
How to Design DataModels - 8th May 2019
Corresponding webinar recording: https://youtu.be/T_1DpKf6C_c
Understanding and applying Standard Data Models.
Chapter: Core
Difficulty: 3
Audience: Technical Domain Specific
Presenter: José Manuel Cantera (Senior Standardization Expert, FIWARE Foundation)
Tutorial describing how to protect Fiware Orion Context Broker with Fiware Keyrock IdM and Wilma PEP Proxy. The Keyrock is used to manage the identities and to provide OAuth2 tokens. The Wilma is used to intercept the requests to Orion and verify the user credentials through the sent token. With this token is possible to verify the authenticity of the user, checking her identity, and verify if the user is authorized to access Orion.
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project. The core part of this virtual training camp (21-24 June 2021) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using linked data concepts - JSON-LD and NGSI-LD and combines these with common smart data models for the sharing and augmentation of context data.
In addition, it covers the supplementary FIWARE technologies used to implement the common functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historical big data.
This 12-hour online training course can be used to obtain a good understanding of FIWARE and NGSI Interfaces and form the basis of studying for the FIWARE expert certification.
Extending this core part, the virtual training camp adds introductory and deep-dive sessions on how FIWARE and iSHARE technologies, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for the creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the creation of innovative services based on data sharing. In addition, SMEs and Digital Innovation Hubs (DIHs) that go through this complete training and are located in countries eligible under Horizon 2020 will be equipped with the necessary know-how to apply to the recently launched i4Trust Open Call.
Actuation, Federation and Interoperability of Context BrokersFIWARE
This training camp teaches you how FIWARE technologies and iSHARE, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the development of innovative services based on data sharing and creating value out of the data they share. SMEs and Digital Innovation Hubs (DIHs) will be equipped with the necessary know-how to use the i4Trust framework for creating data spaces!
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project. The core part of this virtual training camp (21-24 June 2021) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using linked data concepts - JSON-LD and NGSI-LD and combines these with common smart data models for the sharing and augmentation of context data.
In addition, it covers the supplementary FIWARE technologies used to implement the common functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historical big data.
This 12-hour online training course can be used to obtain a good understanding of FIWARE and NGSI Interfaces and form the basis of studying for the FIWARE expert certification.
Extending this core part, the virtual training camp adds introductory and deep-dive sessions on how FIWARE and iSHARE technologies, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for the creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the creation of innovative services based on data sharing. In addition, SMEs and Digital Innovation Hubs (DIHs) that go through this complete training and are located in countries eligible under Horizon 2020 will be equipped with the necessary know-how to apply to the recently launched i4Trust Open Call.
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project and IShare Foundation. The core part of this virtual training camp (27 Jun - 01 Jul 2022) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using NGSI-LD (the simple yet powerful open standard API enabling to publish and access digital twin data) combined with common smart data models
In addition, it covers the supplementary FIWARE technologies used to implement the rest of functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data, and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historic big data.
Extending this core part, the training camp also cover how you can easily integrate FIWARE systems with blockchain networks to create audit-proof logs of processes and ensure transparency.
Session 4 - Bringing the pieces together - Detailed review of a reference ex...FIWARE
This session will explain how everything comes together under i4Trust using a reference example and then explain that example in detail. It will bringing the pieces together: Detailed technical review of a reference example: the prerequisites, creating an offering, acquiring rights / activation , & consumption. And setup of components of the i4Trust experimentation framework. Technical session for Local Experts in Data Sharing (LEBDs)
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project and IShare Foundation. The core part of this virtual training camp (27 Jun - 01 Jul 2022) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using NGSI-LD (the simple yet powerful open standard API enabling to publish and access digital twin data) combined with common smart data models
In addition, it covers the supplementary FIWARE technologies used to implement the rest of functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data, and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historic big data.
Extending this core part, the training camp also cover how you can easily integrate FIWARE systems with blockchain networks to create audit-proof logs of processes and ensure transparency.
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project. The core part of this virtual training camp (21-24 June 2021) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using linked data concepts - JSON-LD and NGSI-LD and combines these with common smart data models for the sharing and augmentation of context data.
In addition, it covers the supplementary FIWARE technologies used to implement the common functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historical big data.
This 12-hour online training course can be used to obtain a good understanding of FIWARE and NGSI Interfaces and form the basis of studying for the FIWARE expert certification.
Extending this core part, the virtual training camp adds introductory and deep-dive sessions on how FIWARE and iSHARE technologies, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for the creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the creation of innovative services based on data sharing. In addition, SMEs and Digital Innovation Hubs (DIHs) that go through this complete training and are located in countries eligible under Horizon 2020 will be equipped with the necessary know-how to apply to the recently launched i4Trust Open Call.
This training camp teaches you how FIWARE technologies and iSHARE, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the development of innovative services based on data sharing and creating value out of the data they share. SMEs and Digital Innovation Hubs (DIHs) will be equipped with the necessary know-how to use the i4Trust framework for creating data spaces!
Session 1 - Introduction to i4Trust Data Spaces, building blocks, and roles |...FIWARE
This session will elaborate on the i4Trust overall mission and vision and introduce you to data spaces: how they enable the development of innovative services and what building blocks are required to build data spaces. It will elaborate on what i4Trust is aiming at beyond building blocks which is the creation of a vibrant community. In addition, there will be an introduction to the role of DIHs and to i4Trust open calls. The session for Local Experts in Data Sharing (LEBDs) & Ambassadors
Introduction to the management of data persistency in FIWARE with the different approach adopted by the FIWARE Community. What is a Time Series Database. What are the different between the different solutions adopted.
FIWARE Overview Webinar - 27th March 2019
Corresponding webinar recording: https://youtu.be/97JsnnpPLrA
Chapter: Fundamentals
Difficulty: 0
Audience: Anyone
Basic introduction describing what FIWARE is, why you need it and how the elements of the FIWARE Catalogue can help accelerate the development of your Smart Solution.
Session 3 - i4Trust components for Identity Management and Access Control i4T...FIWARE
This session consists of two parts. The first part of the session will introduce you to i4Trust IAM components in detail while the second will introduce i4Trust Marketplace Services. Technical session for Local Experts in Data Sharing (LEBDs)
FIWARE Wednesday Webinars - How to Design DataModelsFIWARE
How to Design DataModels - 8th May 2019
Corresponding webinar recording: https://youtu.be/T_1DpKf6C_c
Understanding and applying Standard Data Models.
Chapter: Core
Difficulty: 3
Audience: Technical Domain Specific
Presenter: José Manuel Cantera (Senior Standardization Expert, FIWARE Foundation)
Tutorial describing how to protect Fiware Orion Context Broker with Fiware Keyrock IdM and Wilma PEP Proxy. The Keyrock is used to manage the identities and to provide OAuth2 tokens. The Wilma is used to intercept the requests to Orion and verify the user credentials through the sent token. With this token is possible to verify the authenticity of the user, checking her identity, and verify if the user is authorized to access Orion.
An online training course run by the FIWARE Foundation in conjunction with the i4Trust project. The core part of this virtual training camp (21-24 June 2021) covered all the necessary skills to develop smart solutions powered by FIWARE. It introduces the basis of Digital Twin programming using linked data concepts - JSON-LD and NGSI-LD and combines these with common smart data models for the sharing and augmentation of context data.
In addition, it covers the supplementary FIWARE technologies used to implement the common functions typically required when architecting a complete smart solution: Identity and Access Management (IAM) functions to secure access to digital twin data and functions enabling the interface with IoT and 3rd systems, or the connection with different tools for processing and monitoring current and historical big data.
This 12-hour online training course can be used to obtain a good understanding of FIWARE and NGSI Interfaces and form the basis of studying for the FIWARE expert certification.
Extending this core part, the virtual training camp adds introductory and deep-dive sessions on how FIWARE and iSHARE technologies, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for the creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the creation of innovative services based on data sharing. In addition, SMEs and Digital Innovation Hubs (DIHs) that go through this complete training and are located in countries eligible under Horizon 2020 will be equipped with the necessary know-how to apply to the recently launched i4Trust Open Call.
Actuation, Federation and Interoperability of Context BrokersFIWARE
This training camp teaches you how FIWARE technologies and iSHARE, brought together under the umbrella of the i4Trust initiative, can be combined to provide the means for creation of data spaces in which multiple organizations can exchange digital twin data in a trusted and efficient manner, collaborating in the development of innovative services based on data sharing and creating value out of the data they share. SMEs and Digital Innovation Hubs (DIHs) will be equipped with the necessary know-how to use the i4Trust framework for creating data spaces!
A basic guide to FI-WARE, the open platform for the Future Internet. Read what FI-WARE is about and find the links to the best resources to quickly start using the technology!
Single Page Applications (SPA) 2.0
- Push the limits of what’s possible on the web
AngularJS, RequireJS , Polymer, AMD, ES6 , Gulp, Dependency Injection, JavaScript Patterns, Functional Reactive Programming, OAuth, Promises ,Generators
FIWARE NGSI: Managing Context Information at Large ScaleFIWARE
FIWARE NGSI: Managing Context Information at Large Scale, by Fermín Galán.
Orion Context Broker developing team. 1st FIWARE Summit, Málaga, Dec. 13-15, 2016.
Welcome to TechSoup New Member Orientation and Q&A (May 2024).pdfTechSoup
In this webinar you will learn how your organization can access TechSoup's wide variety of product discount and donation programs. From hardware to software, we'll give you a tour of the tools available to help your nonprofit with productivity, collaboration, financial management, donor tracking, security, and more.
Model Attribute Check Company Auto PropertyCeline George
In Odoo, the multi-company feature allows you to manage multiple companies within a single Odoo database instance. Each company can have its own configurations while still sharing common resources such as products, customers, and suppliers.
The French Revolution, which began in 1789, was a period of radical social and political upheaval in France. It marked the decline of absolute monarchies, the rise of secular and democratic republics, and the eventual rise of Napoleon Bonaparte. This revolutionary period is crucial in understanding the transition from feudalism to modernity in Europe.
For more information, visit-www.vavaclasses.com
Introduction to AI for Nonprofits with Tapp NetworkTechSoup
Dive into the world of AI! Experts Jon Hill and Tareq Monaur will guide you through AI's role in enhancing nonprofit websites and basic marketing strategies, making it easy to understand and apply.
The Roman Empire A Historical Colossus.pdfkaushalkr1407
The Roman Empire, a vast and enduring power, stands as one of history's most remarkable civilizations, leaving an indelible imprint on the world. It emerged from the Roman Republic, transitioning into an imperial powerhouse under the leadership of Augustus Caesar in 27 BCE. This transformation marked the beginning of an era defined by unprecedented territorial expansion, architectural marvels, and profound cultural influence.
The empire's roots lie in the city of Rome, founded, according to legend, by Romulus in 753 BCE. Over centuries, Rome evolved from a small settlement to a formidable republic, characterized by a complex political system with elected officials and checks on power. However, internal strife, class conflicts, and military ambitions paved the way for the end of the Republic. Julius Caesar’s dictatorship and subsequent assassination in 44 BCE created a power vacuum, leading to a civil war. Octavian, later Augustus, emerged victorious, heralding the Roman Empire’s birth.
Under Augustus, the empire experienced the Pax Romana, a 200-year period of relative peace and stability. Augustus reformed the military, established efficient administrative systems, and initiated grand construction projects. The empire's borders expanded, encompassing territories from Britain to Egypt and from Spain to the Euphrates. Roman legions, renowned for their discipline and engineering prowess, secured and maintained these vast territories, building roads, fortifications, and cities that facilitated control and integration.
The Roman Empire’s society was hierarchical, with a rigid class system. At the top were the patricians, wealthy elites who held significant political power. Below them were the plebeians, free citizens with limited political influence, and the vast numbers of slaves who formed the backbone of the economy. The family unit was central, governed by the paterfamilias, the male head who held absolute authority.
Culturally, the Romans were eclectic, absorbing and adapting elements from the civilizations they encountered, particularly the Greeks. Roman art, literature, and philosophy reflected this synthesis, creating a rich cultural tapestry. Latin, the Roman language, became the lingua franca of the Western world, influencing numerous modern languages.
Roman architecture and engineering achievements were monumental. They perfected the arch, vault, and dome, constructing enduring structures like the Colosseum, Pantheon, and aqueducts. These engineering marvels not only showcased Roman ingenuity but also served practical purposes, from public entertainment to water supply.
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Palestine last event orientationfvgnh .pptxRaedMohamed3
An EFL lesson about the current events in Palestine. It is intended to be for intermediate students who wish to increase their listening skills through a short lesson in power point.
Macroeconomics- Movie Location
This will be used as part of your Personal Professional Portfolio once graded.
Objective:
Prepare a presentation or a paper using research, basic comparative analysis, data organization and application of economic information. You will make an informed assessment of an economic climate outside of the United States to accomplish an entertainment industry objective.
Francesca Gottschalk - How can education support child empowerment.pptxEduSkills OECD
Francesca Gottschalk from the OECD’s Centre for Educational Research and Innovation presents at the Ask an Expert Webinar: How can education support child empowerment?
Acetabularia Information For Class 9 .docxvaibhavrinwa19
Acetabularia acetabulum is a single-celled green alga that in its vegetative state is morphologically differentiated into a basal rhizoid and an axially elongated stalk, which bears whorls of branching hairs. The single diploid nucleus resides in the rhizoid.
2. Outline • Introduction to NGSIv2
• RESTful-ness
• URL & payload simplification
• Native JSON datatypes
• Text-based attribute value set/get
• Geolocation capabilities
• Datetime support
• Filtering
• Subscription improvements
• Batch operations
• Working with IDs
• Pagination
• Next things to come
2
3. Two “flavors” of NGSI API
• NGSIv1 (the one you already know )
– Original NGSI RESTful binding of OMA-NGSI
– Implemented in 2013
– Uses the /v1 prefix in resource URL
• NGSIv2
– A revamped, simplified binding of OMA-NGSI
• Simple things must be easy
• Complex things should be possible
• Agile, implementation-driven approach
• Make it as developer-friendly as possible (RESTful, JSON, …)
– Enhanced functionality compared to NGSIv1 (e.g. filtering)
– Stable, ready for production, version already available
• Current NGSIv2 version is Release Candidate 2016.10 http://telefonicaid.github.io/fiware-
orion/api/v2/stable
• New features coming (see last part of this presentation)
– Uses the /v2 prefix in resource URL
• Introduction to NGSIv2
– https://docs.google.com/presentation/d/1_fv9dB5joCsOCHlb4Ld6A-
QmeIYhDzHgFHUWreGmvKU/edit#slide=id.g53c31d7074fd7bc7_0
3
4. The NGSI model is kept as it is in NGSIv2
Attributes
• Name
• Type
• Value
Entity
• EntityId
• EntityType
1 n
“has”
Metadata
• Name
• Type
• Value1 n
“has”
4
5. NGSIv2 status (AKA the “NGSIv2 disclaimer”)
• NGSIv2 is in “release candidate” status
– By "release candidate" we mean that the specification is quite stable,
but changes may occur with regard to new release candidates or the
final version. In particular, changes may be of two types:
• Extensions to the functionality currently specified by this
document. Note that in this case there isn't any risk of breaking
backward compatibility on existing software implementations.
• Slight modifications in the functionality currently specified by this
document, as a consequence of ongoing discussions. Backward
compatibility will be taken into account in this case, trying to
minimize the impact on existing software implementations. In
particular, only completely justified changes impacting backward
compatibility will be allowed and "matter of taste" changes will not
be allowed.
5
6. So… when should I use NGSIv1 or NGSIv2?
• In general, it is always preferable to use NGSIv2
• However, you would need to use NGSIv1 if
– You need register/discovery operations (context management
availability functionality)
• Not yet implemented in NGSIv2 (in roadmap)
– Zero tolerance to changes in software interacting with Orion
• Even if you use NGSIv1, you can still use NGSIv2
functionality and requests
– See “Considerations on NGSIv1 and NGSIv2 coexistence”
section in the Orion manual
6
7. RESTful-ness
• In NGSIv1
– Originally based on OMA-NGSI standard operations, not really
RESTful
• The URL doesn’t identify a resource, but an operation type
• The verb is always POST
• Actually, NGSIv1 is closer to HTTP-based RPC than to RESTful
– An extended set of operations (convenience operations) were
added in a later stage but with “legacy” from standard
operations that make it hard to apply full RESTful principles
• E.g. dual response code
• NGSIv2 has been designed from scratch with RESTful
principles in mind
– Batch operations (similar to standard operations in NGSIv1)
are also provided, but without impacting the RESTful
operations in the API
7
8. RESTful-ness
8
200 OK
...
{
"contextElement" : {
"type" : "",
"isPattern" : "false",
"id" : "Car1"
},
"statusCode" : {
"code" : "404",
"reasonPhrase" : "No context element found",
"details" : "Entity id: /Car1/"
}
}
GET /v1/contextEntities/Car1
404 Not Found
...
{
"error": "NotFound",
"description": "The requested entity has not
been found. Check type and id“
}
GET /v2/entities/Car1
NGSIv1
NGSIv2
both status codes have to be taken into account by
the client in order to detect error conditions,
which increases complexity
only HTTP response code,
following RESTful principles -
simpler to process
Example: get Car1 entity
9. URL & payload simplification
• In NGSIv1 the strict alignment with OMA NGSI involves
complexity and ineffectiveness
– Message payloads include a lot of structural overhead elements not
actually needed
– Response payload in methods that don’t really need a payload from a
semantic point of view (e.g. update operation)
– Unnecessarily long structural elements in URLs
• NGSIv2 simplifies URLs and payload, leading to a much
more lean and less verbose API
9
10. URL & payload simplification
10
POST /v1/contextEntities
...
{
"id": "Car1",
"type": "Car",
"attributes": [
{
"name": "colour",
"type": "Text",
"value": "red"
}
]
}
200 OK
Location: /v2/entities?type=Car
POST /v2/entities
…
{
"id": "Car1",
"type": "Car",
"colour": {
"value": "red",
"type": "Text",
}
}
NGSIv1
NGSIv2
Most of the NGSIv1 response payload is
useless: clients only need to know the
status code. In NGSIv2 the response has
no payload at all
shorter URLs in
NGSIv2
200 OK
...
{
"contextResponses": [
{
"attributes": [
{
"name": "colour",
"type": "float",
"value": ""
}
],
"statusCode": {
"code": "200",
"reasonPhrase": "OK"
}
}
],
"id": "Car1",
"isPattern": "false",
"type": “Car"
}
structural
overhead
Example: create Car1
entity (type Car) with
attribute colour set to
“Red”
11. URL & payload simplification
11
GET /v1/contextEntities/type/Car/id/Car1/attributes/colour GET /v2/entities/Car1/attrs/colour?type=Car
NGSIv1 NGSIv2
redundant (already part of the request URL)
200 OK
...
{
"attributes": [
{
"name": "colour",
"type": "Text",
"value": " red"
}
],
"statusCode": {
"code": "200",
"reasonPhrase": "OK"
}
}
mostly useless
200 OK
...
{
"value": "red",
"type": "Text",
"metadata": {}
}
shorter URL in
NGSIv2
structural
overhead
Example: get attribute
colour at Car1 entity
(type Car)
12. URL & payload simplification
• Moreover, NGSIv2 provides simplified data representations
– keyValues: exclude attribute type and metadata
– values: only attribute values (attrs is used to order the values in the
resulting vector)
– unique: like values which in addition removes duplicate values
• Not only for retrieval operations, also for creation/update
operations
– Default attribute types are used in that case
12
GET /v2/entities/Car1/attrs?options=keyValues
200 OK
...
{
"model": "Ford",
"colour": "red",
"temp": 22
}
GET /v2/entities/Car1/attrs?options=values&attrs=model,colour,temp
200 OK
...
["Ford", "red", 22]
Example: get attribute
colour at Car1 entity (type
Car)
13. Native JSON datatypes
• In NGSIv1
– All attribute values are string based to align with XML encoding
• At the end, XML support was removed (in Orion 1.0.0), but it left
an awful legacy
– Although creation/update operations can use numbers, bool,
etc. at the end they are transformed to strings and stored in
that way internally
– Retrieve operation always provides string encoded values (*)
• NGSIv2 fully supports all the types described in the JSON
specification (string, number, boolean, object, array and
null)
13
(*) Exception: entities created/updated with NGSIv2 (which support native types) and retrieved
with NGSIv1 will render without stringification.
14. Native JSON datatypes
1414
POST /v1/contextEntities
...
{
"id": "Car1",
"type": "Car",
"attributes": [
{
"name": "speed",
"type": "Number",
"value": 98
}
]
}
POST /v2/entities?options=keyValues
…
{
"id": "Car1",
"type": "Car",
"speed": 98,
"isActive": true
}
NGSIv1
NGSIv2
created as
number but
retrieved as
string… weird!
GET /v1/contextEntities/Car1/attributes/speed
...
{
"attributes": [
{
"name": "speed",
"type": "Number",
"value": "98"
}
],
"statusCode": { … }
}
GET /v2/entities/Car1/attrs?options=keyValues
…
{
"speed": 98,
"isActive": true
}
coherent result
Example: create Car1
entity (type Car) with
attribute speed set to 98
15. Text-based attribute value set/get
• In NGSIv1
– There is no similar functionality
• NGSIv2 offers set/get attribute access directly without
anything else than the attribute value itself in the
request/response payload
– In the set operation, attribute type and metadata are kept as they are
15
PUT /v2/entities/Car1/attrs/speed/value
Content-Type: text/plain
…
86
GET /v2/entities/Car1/attrs/speed/value
200 OK
Content-Type: text/plain
…
86200 OK
…
Example: set speed attribute
value at Car1 entity
Example: get speed attribute
value at Car1 entity
16. Geolocation capabilities
• In NGSIv1
– Entity location must be a point
– Queries are based on an area specification (circle or polygon, inner or
outer area)
– Query as part of queryContext payload scope
• In NGSIv2
– In addition to point, entity location can be a line, box, polygon or
arbitrary GeoJSON
– Queries are based on a spatial relationship and a geometry
• Spatial relationships: near (max and min distance), coveredBy, intersect,
equal and disjoint
• Geometries: point, line, box, polygon
– Query as part of URL (more user-friendly than payload-based
approach)
16
17. Geolocation capabilities
17
NGSIv1
NGSIv2
Much easier and more compact in NGSIv2
POST /v1/queryContext
…
{
"entities": [
{
"type": "City",
"isPattern": "true",
"id": ".*"
}
],
"restriction": {
"scopes": [
{
"type" : "FIWARE::Location",
"value" : {
"circle": {
"centerLatitude": "40.418889",
"centerLongitude": "-3.691944",
"radius": "13500"
}
}
}
]
}
}
GET /v2/entities?
idPattern=.*&
type=City&
georel=near;maxDistance:13500&
geometry=point&
coords=40.418889,-3.691944
Example: retrieve all entities of type
“City” (no matter the id) whose
distance to Madrid city center (GPS
coordinates 40.418889,-3691944) is
less than 13.5 km
18. Geolocation capabilities
18
Point location
(the only one supported by NGSIv1)
POST /v2/entities
{
"id": "E",
"type": "T",
"location": {
"type": "geo:json",
"value": {
"type": "Polygon",
"coordinates": [ [ [2, 1], [4, 3], [5, -1], [2, 1] ] ]
} } }
POST /v2/entities
{
"id": "E",
"type": "T",
"location": {
"type": "geo:polygon",
"value": [ "2, 2", "8, 7", "-1, 4", "2, 2"]
}
}
POST /v2/entities
{
"id": "E",
"type": "T",
"location": {
"type": "geo:box",
"value": [ "2, 2", "8, 7" ]
}
}
POST /v2/entities
{
"id": "E",
"type": "T",
"location": {
"type": "geo:point",
"value": "40.41,-3.69"
}
}
POST /v2/entities
{
"id": "E",
"type": "T",
"location": {
"type": "geo:line",
"value": [ "2, 2", "8, 7" ]
}
}
Line location (e.g. a street) Box location (e.g. a squared building)
Polygon location (e.g. a city district) GeoJSON geometry (full flexibility)
19. Datetime support
• In NGSIv1
– There is no support for attributes meaning dates, they
are treated as conventional strings
• NGSIv2 implements date support
– Based on ISO ISO8601 format, including partial
representations and timezones
• See https://fiware-
orion.readthedocs.io/en/master/user/ngsiv2_implementati
on_notes/index.html#datetime-support for syntax details
– Use reserved attribute type DateTime to express a date
– Date-based filters are supported
19
20. Datetime support
• Attribute value arithmetic filters can be used with dates as if they
were numbers
• Entity dateModified and dateCreated special attributes, to get
entity creation and last modification timestamps
– They are shown in query responses using
attrs=dateModified,dateCreated
• Entity dateModified and dateCreated special metadata, to get
attribute creation and last modification timestamps
– They are shown in query responses using
metadata=dateModified,dateCreated
20
POST /v2/entities
…
{
"id": "John",
"birthDate": {
"type": "DateTime",
"value": "1979-10-14T07:21:24.238Z"
}
}
GET /v2/entities?q=birthDate<1985-01-01T00:00:00
Example: create entity John,
with birthDate attribute using
type DateTime
21. Filtering
• In NGSIv1
– Limited filtering functionality, much of it based on queryContext
complex scopes
– Filters are not supported in subscriptions
• In NGSIv2 the mechanism
– Is simpler (see next slide)
– Can be applied to both queries and subscriptions (described in a later
topic of this presentation)
21
POST /v1/queryContext
…
{
"restriction": {
"scopes": [
{
"type" : "FIWARE::StringFilter",
"value" : "temp<24"
…
}
This is the only interesting
part, all the rest is
structural overhead
Example: filtering entities
which temperature is less
than 24
22. • For the GET /v2/entities operation, retrieve all entities…
– … of a given entity type
– … whose entity id is in a list
– ... whose entity id match a regex pattern
• Example: the id starts with “Room” followed by a digit from 2 to 5
– … with an attribute that matches a given expression
• Example: attribute temp is greater than 25
• Filters can be used simultaneously (i.e. like AND condition)
22
GET /v2/entities?type=Room
GET /v2/entities?id=Room1,Room2
GET /v2/entities?idPattern=^Room[2-5]
Filtering
GET /v2/entities?q=temp>25
supported operators:
• == (or :), equal
• !=, unequal
• >, greater than
• <, less than
• >=, greater than or
equal
• <=, less than or equal
• A..B, range
• ^=, pattern (regex)
• Existence/inexistence
23. • For the GET /v2/entities operation, retrieve all entities…
– ... whose entity type match a regex pattern
– … with an attribute which sub-key matches a given expression
– … with an attribute metadata that matches a given expression
– … with an attribute metadata which sub-key matches a given
expression
23
GET /v2/entities?q=tirePressure.frontRight >130
attribute name attribute sub-key (for compound
attribute values only)
GET /v2/entities?mq=temperature.avg>25
GET /v2/entities?mq=tirePressure.accuracy.frontRight >90
metadata sub-key (for compound
metadata values only)
metadata name
Filtering
GET /v2/entities?typePattern=T[ABC]
24. • By default all attribute are included in query responses or notifications
• The attrs field (as parameter in GET operations and as notification sub-field in
subscriptions) can be used to specify a filtering list
• The attrs field can be also used to explicitly include some special attributes (not
included by default)
– dateCreated: entity creation date
– dateModified: entity last modification date
• The “*” can be used as an alias of “all the (regular) attributes”
• Examples
– Include only attributes temp and lum
• In queries: GET /v2/entities?attrs=temp,lum
• In subscriptions: "attrs": [ "temp", "lum" ]
– Include dateCreated and not any other attribute
• In queries: GET /v2/entities?attrs=dateCreated
• In subscriptions: "attrs": [ "dateCreated" ]
– Include dateModified and all the other (regular) attributes
• In queries: GET /v2/entities?attrs=dateModified,*
• In subscriptions: "attrs": [ "actionType", "*" ]
– Include all attributes (same effect that not using attrs, not very interesting)
• In queries: GET /v2/entities?attrs=*
• In subscriptions: "attrs": [ "*" ]
24
Attributes filtering and special attributes
25. • By default all attribute metadata are included in query responses and notifications
• The metadata field (as parameter in GET operations and as notification sub-field in subscriptions) can be
used to specify a filtering list
• The metadata field can be also used to explicitly include some special metadata (not included by default)
– dateCreated, dateModified: attribute creation or last modification date
– actionType: which value is the action type corresponding to the update triggering the notification:
“update”, “append” or “delete” (*)
– previousValue: which provides the value of the attribute previous to processing the update that triggers
the notification
• The “*” can be used as an alias of “all the (regular) metadata”
• Examples
– Include only metadata MD1 and MD2
• In queries: GET /v2/entities?metadata=MD1,MD2
• In subscriptions: "metadata": [ "MD1", "MD2" ]
– Include previousValue and not any other metadata
• In queries: GET /v2/entities?metadata=previousValue
• In subscriptions: "attrs": [ "previousValue" ]
– Include actionType and all the other (regular) metadata
• In queries: GET /v2/entities?metadata=actionType,*
• In subscriptions: "attrs": [ "actionType", "*" ]
– Include all metadatata (same effect that not using metadata, not very interesting)
• In queries: GET /v2/entities?metadata=*
• In subscriptions: "metadata": [ "*" ]
25
(*) actionType “delete” not yet supported by Orion in 1.6.0.
Metadata filtering and special metadata
26. Subscription improvements
• NGSIv1 context subscription API is very limited
– There is no operation to list existing subscriptions
• If a client loses the ID of created subscriptions, there is no way to retrieve
them through the API
– No support for permanent subscriptions
• Creating absurdly long subscriptions (e.g. 100 years) is a dirty workaround
– Fix notification structure
• Difficult to integrate to arbitrary endpoints (e.g. public REST services)
– No support for filters
• NGSIv2 subscription API solves all these limitations and
introduces some additional enhancements
– Notification attributes based on “blacklist” (in addition to the
“whitelist” approach in NGSIv1)
– Ability to pause/resume subscriptions
– Extra fields: times sent, last notification and description
26
27. Anatomy of a NGSIv2 subscription
27
POST /v2/subscriptions
…
{
"subject": {
"entities": [
{
"id": "Room1",
"type": "Room"
}
]
},
"condition": {
"attrs": [ "temp" ]
},
"notification": {
"http": {
"url": "http://<host>:<port>/publish"
},
"attrs": [ "temp" ]
},
"expires": "2026-04-05T14:00:00.00Z",
"throttling": 5
}
201 Created
Location: /v2/subscriptions/51c0ac9ed714fb3b37d7d5a8
...
POST /v1/subscribeContext
…
{
"entities": [
{
"type": "Room",
"isPattern": "false",
"id": "Room1"
}
],
"attributes": [ "temp“ ],
"reference": "http://<host>:<port>/publish",
"duration": "P1M",
"notifyConditions": [
{
"type": "ONCHANGE",
"condValues": [ "temp" ]
}
],
"throttling": "PT5S"
}
200 OK
...
{ "subscribeResponse": {
"duration": "P1M",
"subscriptionId": "51c0ac9ed714fb3b37d7d5a8",
"throttling": "PT5S"
} }
NGSIv1 NGSIv2
Simpler response
(no payload)
Simpler way of specifying
expiration and throttling
in NGSIv2
Redundant Example: subscribe to
Room1 entity, so
whenever a change
occurs in the temp
attribute a notification
including only temp is
sent
28. List subscriptions and special fields in NGSIv2
• List operations (not available in NGSIv1)
– GET /v2/subscriptions lists all subscriptions
– GET /v2/subscriptions/<id> retrieves information of a particular
subscription
• Whitelist vs. blacklist (in the notification field)
– Use "attrs": [ "A", "B" ] to “include A and B in the notification”
(whitelist)
– Use "exceptAttrs": [ "A", "B" ] to “include all the attributes except
A and B” (blacklist)
– Use "attrs": [ ] to include “all the attributes” (special case)
• Other informative fields (in the notification field)
– timesSent: the number of times that the subscription has been
triggered and a notification has been sent
– lastNotification: datetime corresponding to the last notification
• Other informative fields (at root level)
– description, free text descriptive text for user convenience
28
29. Permanent and paused subscriptions in NGSIv2
• The status attribute can be used to pause/resume
subscriptions
• In GET operations, the status field can be
– active: subscription is active (notifications will be sent)
– inactive: subscription is inactive (notifications will not be sent)
– expired: subscription is expired (notifications will not be sent)
29
PATCH /v2/subscriptions/<id>
…
{
"status": "active"
}
PATCH /v2/subscriptions/<id>
…
{
"status": "inactive"
}
To pause To resume
30. Notification formats in NGSIv2
• The optional attrsFormat field can be used to choose between different notification
flavors, aligned with the representation modes
• Notifications include the NGSIv2-AttrsFormat header to help the receiver identify
the format
• legacy can be used as value for attrsFormat in order to send notifications in
NGSIv1 format
– Very useful when integrating legacy notification endpoints
30
{
"subscriptionId": "12345",
"data": [
{
"id": "Room1",
"type": "Room",
"temperature": {
"value": 23,
"type": "Number",
"metadata": {}
}
}
]
}
{
"subscriptionId": "12345",
"data": [
{
"id": "Room1",
"type": "Room",
"temperature": 23
}
]
}
{
"subscriptionId": "12345",
"data": [ [ 23 ] ]
}
normalized (default) keyValues values
Outer vector represent the list of
entities, inner vector the values of
the attribute of each entity (not too
interesting in this single-entity
single-attribute example)
31. Custom notifications in NGSIv2
• Apart from the standard formats defined in the
previous slide, NGSIv2 allows to re-define all the
notification aspects
• httpCustom is used (instead of http) with the
following subfields
– URL query parameters
– HTTP method
– HTTP headers
– Payload (not necessarily JSON!)
• A simple macro substitution language based on ${..}
syntax can be used to “fill the gaps” with entity data (id,
type or attribute values)
31
32. Custom notifications in NGSIv2
32
…
"httpCustom": {
"url": "http://foo.com/entity/${id}",
"headers": {
"Content-Type": "text/plain"
},
"method": "PUT",
"qs": {
"type": "${type}"
},
"payload": "The temperature is ${temp} degrees"
}
…
PUT http://foo.com/entity/DC_S1-D41?type=Room
Content-Type: text/plain
Content-Length: 31
The temperature is 23.4 degrees
PUT /v2/entities/DC_S1-D41/attrs/temp/value?type=Room
…
23.4
Custom notification configuration
update
notification
Example: send a text
notification (i.e. not
JSON) with temperature
value, using the entity id
and type as part of the
URL
33. 33
POST /v2/subscriptions
…
{
"subject": {
"entities": [
{
"id": "Truck11",
"type": "RoadVehicle"
},
{
"idPattern": "^Car[2-5]",
"type": "RoadVehicle"
}
],
"condition": {
"attrs": [ "speed" ],
"expression": {
"q": "speed>90",
"georel": "near;maxDistance:100000",
"geometry": "point",
"coords": "40.418889,-3.691944"
}
}
},
…
}
• Filters (described in previous
slides) can be also used in
subscriptions
– id
– type
– id pattern
– attribute values
– geographical location
Subscription filters in NGSIv2
Example: subscribe to speed changes in
entities with id Truck11 or Car2 to Car5 (both
case of type RoadVehicle) whenever speed is
greater than 90 and the vehicle distance to
Madrid city center is less than 100 km
34. 34
POST /v2/subscriptions
…
{
"subject": {
"entities": [
{
"idPattern": ".*",
"typePattern": ".*Vehicle"
},
],
"condition": {
"attrs": [ "speed" ],
"expression": {
"q": "speed>90",
"mq": "speed.average==80..100",
"georel": "near;maxDistance:100000",
"geometry": "point",
"coords": "40.418889,-3.691944"
}
}
},
…
}
• They can be used also in
subscriptions
– type pattern
– metadata value
Subscription filters in NGSIv2
Example: subscribe to speed changes in any
entities of any type ending with Vehicle (such
as RoadVehicle, AirVehicle, etc.) whenever
speed is greater than 90 its average metadata
is between 80 and 90 and the vehicle distance
to Madrid city center is less than 100 km
35. Batch operations
• In NGSIv1 we have standard operations
– POST /v1/updateContext
– POST /v1/queryContext
• Similar but more user-friendly operations have
been included in NGSIv2
– POST /v2/op/update
– POST /v2/op/query
35
36. Batch operations
36
POST /v1/updateContext
…
{
"updateAction": "APPEND“,
"contextElements": [
{
"type": "Room",
"isPattern": "false",
"id": "Room1",
"attributes": [
{
"name": "temp",
"type": "float",
"value": "29"
}
]
}
]
}
POST /v2/op/update
{
"actionType": "APPEND",
"entities": [
{
"type": "Room",
"id": "Room1",
"temperature":
{
"type": "Number",
"value": 29
}
}
]
}
201 Created
NGSIv1 NGSIv2
structural
overhead
200 OK
...
{
"contextResponses" : [ … ],
"statusCode" : {
"code" : "200",
"details" : "OK"
}
}
NGSIv2 response doesn’t
have any payload at all
lots of useless
stuff here
Example: create
Room1 entity (type
Room) with attribute
temp set to 29
37. Batch operations
37
POST /v1/queryContext
…
{
"entities": [
{
"type": "Room",
"isPattern": "true",
"id": ".*"
} ,
"attributes": [ "temp" ]
]
}
POST /v2/op/query
…
{
"entities": [
{
"idPattern": ".*",
"type": "T"
}
],
"attributes": [ "temp" ]
}
NGSIv1
NGSIv2
Requests are more or
less the same, but the
simplicity of NGSIv2
becomes evident
when comparing
responses
200 OK
...
{
"contextResponses": [
{
"contextElement": {
"attributes": [
{
"name": "temp",
"type": "Number",
"value": "25"
}
],
"id": "Room1",
"isPattern": "false",
"type": "Room"
},
"statusCode": { … }}
]
}
200 OK
...
[
{
"id": "Room1",
"type": "Room",
"temp": {
"type": "Number",
"value": 25
}
}
]
Example: get
temp attribute of
all entities with
type Room
38. Pagination
• In NGSIv1
– based on limit, offset and details
– Dirty workaround to fit count into NGSIv1
payloads, using an errorCode for something
that actually is not an error and forcing to
text based processing of the details field
– Fixed order: always by creation date
• In NGSIv2
– based on limit, offset and options=count
• This part doesn’t change too much
– Cleaner and easier way of returning count,
with the Fiware-Total-Count HTTP header
in the response
– Configurable ordering based on orderBy
parameter
• See details in the NGSIv2 specification
38
"errorCode": {
"code": "200",
"details": "Count: 322",
"reasonPhrase": "OK"
}
Fiware-Total-Count: 322
39. Working with IDs
• In NGSIv1
– Fields such as entity id, attribute name, etc. may have any value (*)
– This could cause a lot of problems as these fields use to act as IDs in
many places when propagated through notifications
• E.g. Cygnus MySQL sink may have problems when these fields are mapped
to tables names, whose allowed charset is very strict
– In addition, NGSIv1 allows ids or attribute names as "" (empty string)
which is weird and typically an error condition in the client
• NGSIv2 establishes a set of restrictions to ensure sanity in the
usage of ID fields. In particular:
– Allowed characters are those in the plain ASCII set, except the following ones:
control characters, whitespace, &, ?, / and #.
– Maximum field length is 256 characters.
– Minimum field length is 1 character.
– The rules above apply to the following six fields (identified as ID fields): entity
id, entity type, attribute name, attribute type, metadata name, metadata type
39
(*) Excluding the forbidden characters described in the Orion manual, which are general for all the fields in both
NGSIv1 and NGSIv2 APIs
40. Next things to come
• Up to now, all the slides have described the stable version of the
API corresponding to Release Candidate 2016.10
(http://fiware.github.io/specifications/ngsiv2/stable)
• There is also a work in progress (WIP) version, describing future
functionally (http://fiware.github.io/specifications/ngsiv2/latest)
• Warning: the future functionality of the WIP version is subject to
change and it may change before to be consolidated in a next
Release Candidate stable version
40
41. • Status failed means that last
attempt to notify failed
– E.g. the endpoint is not reachable
• Detailed information in the
notifications element
– timesSent: total number of
notifications attempts (both
successful and failed)
– lastSuccess: last time that
notification was successfully sent
– lastFailure: last time that
notification was tried and failed
– lastNotification: last time the
notification was sent (either success
or failure)
• Corollary: lastNotification value is the
same than either lastFailure or
lastSuccess
41
Notification status
200 OK
Content-Type: application/json
…
[{
"id": " 51c0ac9ed714fb3b37d7d5a8 ",
"expires": "2026-04-05T14:00:00.00Z",
"status": "failed",
"subject": { … },
"notification": {
"timesSent": 3,
"lastNotification": "2016-05-31T11:19:32.00Z",
"lastSuccess": "2016-05-31T10:07:32.00Z",
"lastFailure": "2016-05-31T11:19:32.00Z",
…
}
}]
42. Useful references
• Introduction to NGSI and Orion
– http://bit.ly/fiware-orion
• Orion Manual
– https://fiware-orion.readthedocs.io
• Orion page at FIWARE Catalogue
– http://catalogue.fiware.org/enablers/publishsubscribe-
context-broker-orion-context-broker
• NGSIv2 specs
– http://fiware.github.io/specifications/ngsiv2/stable
– http://fiware.github.io/specifications/ngsiv2/latest
• Orion support at StackOverflow
– Look for existing questions at
http://stackoverflow.com/questions/tagged/fiware-orion
– Ask your questions using the “fiware-orion” tag
• FIWARE Tour Guide Application
– https://github.com/fiware/tutorials.TourGuide-App
42
44. Batch query scope
• This is the way of including q,
mq and geo filters (typically
used as URL param of a GET
operation) in a batch query
• Like NGSIv1 scopes but much
simpler (without the restriction
structural overhead)
44
POST /v2/op/query
…
{
"entities": [
{
"idPattern": ".*",
"type": "T"
}
],
"attributes": [ "temp" ],
"scopes": [
{
"type": "FIWARE::StringQuery",
"value": "temp"
},
{
"type" : "FIWARE::Location::NGSIv2",
"value" : {
"georel": [ "near", "maxDistance:20000" ],
"geometry": "point",
"coords": [ [40.31,-3.75] ]
}
}
]
}
Example: get all entities of type T
with the attribute temp as long as
that attribute is greater than 40 and
the entity distance to coordinates
(40.31, -3.75) is less than 20 km