SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
0
NGSI-LD Introduction
Jason Fox
Senior Technical Evangelist
FIWARE Foundation
Useful links
What is JSON-LD:
https://www.youtube.com/watch?v=vioCbTo3C-4
JSON-LD Core Markup:
https://www.youtube.com/watch?v=UmvWk_TQ30A
Compaction and Expansion:
https://www.youtube.com/watch?v=Tm3fD89dqRE
JSON-LD Playground & examples
https://json-ld.org/playground/
1
Linked Context Data: NGSI v2 to NGSI-LD
From: https://fiware-datamodels.readthedocs.io/en/latest/ngsi-ld_faq/index.html
â–Ș NGSI-LD is an evolution of the FIWARE NGSI v2 information model, and has been updated/improved to
support linked data (entity relationships), property graphs and semantics (exploiting the capabilities
offered by JSON-LD). This work has been conducted under the ETSI ISG Context Information
Management initiative.
â–Ș Creating proper machine-readable Linked Data is fundamental to NGSI-LD.
â–Ș NGSI-LD Payloads are valid JSON-LD
2
{
"@context": [
"https://fiware.github.io/data-models/context.jsonld",
"https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld"
],
"id": "http://dbpedia.org/resource/John_Lennon",
"type": "Person",
"name": {"type": "Property", "value": "John Lennon"},
"born": {"type": "Property", "value": "1940-10-09"},
"spouse": {"type": "Relationship", "object": "http://dbpedia.org/resource/Cynthia_Lennon" }
}
What is Core @context?
"ngsi-ld": "https://uri.etsi.org/ngsi-ld/",
"geojson": "https://purl.org/geojson/vocab#",
"id": "@id",
"type": "@type",
"Date": "ngsi-ld:Date",
"DateTime": "ngsi-ld:DateTime",
"Feature": "geojson:Feature",
"FeatureCollection": "geojson:FeatureCollection",
"GeometryCollection": "geojson:GeometryCollection",
"LineString": "geojson:LineString",
"MultiLineString": "geojson:MultiLineString",
"MultiPoint": "geojson:MultiPoint",
"MultiPolygon": "geojson:MultiPolygon",
"Point": "geojson:Point",
"Polygon": "geojson:Polygon",
"GeoProperty": "ngsi-ld:GeoProperty",
"Property": "ngsi-ld:Property",
"Relationship": "ngsi-ld:Relationship",
"ContextSourceNotification":"ngsi-ld:ContextSourceNotification",
"ContextSourceRegistration":"ngsi-ld:ContextSourceRegistration",
"Notification": "ngsi-ld:Notification",
"Subscription": "ngsi-ld:Subscription",

 etc
3
"coordinates": {
"@container": "@list",
"@id": "geojson:coordinates"
},
"temporalQ": "ngsi-ld:temporalQ",
"throttling": "ngsi-ld:throttling",
"observedAt": {
"@id": "ngsi-ld:observedAt",
"@type": "DateTime"
},
"timeInterval": "ngsi-ld:timeInterval",
"unitCode": "ngsi-ld:unitCode",
"value": "ngsi-ld:hasValue",
"values": {
"@id": "ngsi-ld:hasValues",
"@container": "@list"
},

 etc
"@vocab": "https://uri.etsi.org/ngsi-ld/default-
context/"
NGSI-LD: Evolution not Revolution
NGSI v2
â–Ș Well defined REST API for context data
using JSON payloads.
GET, POST and other HTTP verbs do
the things you expect
â–Ș CRUD operations -
/v2/entities endpoint
â–Ș Augment your context data -
/v2/registrations endpoint
â–Ș Push context data to other services -
/v2/subscriptions endpoint
4
NGSI-LD
â–Ș Well defined REST API for context data
using JSON and JSON-LD payloads.
GET, POST and other HTTP verbs do the
things you expect
â–Ș CRUD operations - /ngsi-
ld/v1/entities endpoint
â–Ș Augment your context data - /ngsi-
ld/v1/registrations endpoint
â–Ș Push context data to other services - /ngsi-
ld/v1/subscriptions endpoint
5
Demo: NGSI-LD - Properties
NGSI-LD Properties: Creating an Entity
NGSI v2
6
NGSI-LD
curl -iX POST 'http://localhost:1026/v2/entities' 
-H 'Content-Type: application/json' 
-d '{
"type": "Store", "id": "store001",
"category": { "type": "Array", "value": ["commercial"]},
"address": { "type": "PostalAddress", "value": {
"streetAddress": "Bornholmer Straße 65",
"addressRegion": "Berlin",
"addressLocality": "Prenzlauer Berg",
"postalCode": "10439"
},
"metadata": {
"verified": { "type": "Boolean","value": true}
}
},
"location": {"type": "geo:json",
"value": {"type": "Point", "coordinates": [13.3986, 52.5547]}
},
"name": {"type": "Text", "value": "BösebrĂŒcke Einkauf"}
}'
curl -iX POST http://localhost:1026/ngsi-ld/v1/entities 
-H 'Content-Type: application/ld+json' 
-d '{
"type": "Building", "id": "urn:ngsi-ld:Building:store001",
"category": { "type": "Property", "value": ["commercial"]},
"address": { "type": "Property"," value": {
"streetAddress": "Bornholmer Straße 65",
"addressRegion": "Berlin",
"addressLocality": "Prenzlauer Berg",
"postalCode": "10439"
},
"verified": { "type": "Property", "value": true }
},
"location": { "type": "GeoProperty",
"value": { "type": "Point", "coordinates": [13.3986, 52.5547]}
},
"name": { "type": "Property", "value": "BösebrĂŒcke Einkauf" },
"@context": [
"https://fiware.github.io/data-models/context.jsonld",
"https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld"
]
}'
NGSI-LD Properties: Data Model
NGSI v2
â–Ș Entities
â–Ș Attributes
â–Ș MetaData
7
NGSI-LD
â–Ș Entities
â–Ș Properties
â–Ș Relationships
â–Ș Values
plus 

plus 

etc...
The NGSI LD data model is more
complex; the definitions of use are
more rigid which lead to a
navigable knowledge graph.
â–Ș Properties of Properties
â–Ș Properties of Relationships
â–Ș Relationships of Properties
â–Ș Relationships of Relationships
. â–Ș Properties of Properties of Properties
â–Ș Relationships of Properties of Properties
â–Ș Properties of Properties of Relationships
â–Ș Relationships of Properties of Relationships
â–Ș Properties of Relationships of Properties
â–Ș Relationships of Relationships of Properties
â–Ș Properties of Relationships of Relationships
â–Ș Relationships of Relationships of Relationships
NGSI-LD Properties: Data Model
8
The Entity Example Notes
Has an id urn:ngsi-ld:Building:store001 URI/URN. id must be unique.
Has a type. https://uri.fiware.org/ns/
data-models#Building
● Fully qualified URI of a well defined data model
● Short-hand strings for types, mapped to fully qualified URIs through the JSON-LD
@context.
Has a series of properties name, address, category etc. This can be expanded into http://schema.org/address, which is
known as a fully qualified name (FQN).
Has a series of
properties-of-properties
a verified field for the address This is the equivalent of NGSI v2 metadata
Has a series of relationships managedBy The object corresponds to the URI/URN of another data entity.
Equivalent of NGSI v2 refXXX
Has a series of
properties-of-relationships
managedBy.since Holds additional information about a relationship.
This is the equivalent of metadata about a refXXX property
Has a series of
relationships-of-relationships
managedBy.subordinateTo holds the URI/URN of another relationship.
NGSI-LD Properties: Reading Entity Data as JSON-LD
NGSI-LD
â–Ș Response is just a JSON payload plus an @context
â–Ș @context can be passed either in the Link header
or the payload body:
â–Ș Accept: application/ld+json to include
the @context as a JSON attribute
â–Ș Accept: application/json returns plain old
JSON objects - @context is passed as a Link header
9
curl -G -X GET 
'http://localhost:1026/ngsi-ld/v1/entities' 
-H 'Link: <https://fiware.github.io/data-models/context.jsonld>;
rel="http://www.w3.org/ns/json-ld#context";
type="application/ld+json"' 
-H 'Accept: application/ld+json' 
-d 'type=Building' 
-d 'options=keyValues'
[
{
"@context": "https://fiware.github.io/data-models/context.jsonld",
"id": "urn:ngsi-ld:Building:store001", "type": "Building",
"address": {
"streetAddress": "Bornholmer Straße 65",
"addressRegion": "Berlin",
"addressLocality": "Prenzlauer Berg",
"postalCode": "10439"
},
"name": "BösebrĂŒcke Einkauf",
"category": “commercial",
"location": {
"type": "Point", "coordinates": [13.3986, 52.5547]
}
}
]
NGSI-LD Properties: What to call a location?
â–Ș place ?
â–Ș locatedAt ?
â–Ș geocoordinate ?
â–Ș geocoordinates ?
10
With NGSI-LD core @context a location is always https://uri.etsi.org/ngsi-ld/location
Thereafter, with JSON-LD you may map your preferred short name if necessary
NGSI-LD core @context
"@context": {
"ngsi-ld": "https://uri.etsi.org/ngsi-ld/",
"geojson": "https://purl.org/geojson/vocab#",
"id": "@id",
"type": "@type",
"value": "ngsi-ld:hasValue",
... etc.
"GeoProperty": "ngsi-ld:GeoProperty",
"Point": "geojson:Point",
"coordinates": {
"@container": "@list",
"@id": "geojson:coordinates"
},
"location": "https://uri.etsi.org/ngsi-ld/location",
... etc.
}
â–Ș ubicaciĂłn ?
â–Ș standort ?
â–Ș çœźăć Žæ‰€ ?
â–Ș location ✓
"location": {
"type": "GeoProperty",
"value": {
"type": "Point",
"coordinates": [13.3986, 52.5547]}
}
}
NGSI-LD Relationships: Traversing Edge Nodes
From: https://www.w3.org/TR/json-ld/#dfn-graph
A JSON-LD document serializes a dataset which is a collection of graphs
A graph is a labeled directed graph, i.e., a set of nodes connected by edges.
In NGSI-LD:
â–Ș Node = NGSI Entity
â–Ș Edge = A relationship attribute linking two NGSI Entities
Therefore NGSI Linked Data relies on three separate definitions:
1. A definition that a particular attribute within an NGSI entity really represents a link
2. A machine readable definition of that link in the Data Model (i.e. the @context)
3. A machine readable definition of the set of all types of links available (the @graph)
11
Creating proper machine-readable Linked Data is fundamental to NGSI-LD.
NGSI-LD Relationships: 1. Creating Entities
Relationship Links within an NGSI Entity are formally defined using:
"type": "Relationship" OR "@type": "https://uri.etsi.org/ngsi-ld/Relationship"
The attribute of the linked entity is an object rather than a value
12
curl -X POST 
http://localhost:1026/ngsi-ld/v1/entities/urn:ngsi-ld:Shelf:unit001/attrs 
-H 'Content-Type: application/ld+json' 
-H 'fiware-servicepath: /' 
-d '{
"stocks": { "type": "Relationship","object": "urn:ngsi-ld:Product:001"},
"numberOfItems": {"type": "Property","value": 50},
"locatedIn" : {
"type": "Relationship", "object": "urn:ngsi-ld:Building:store001",
"requestedBy": {"type": "Relationship","object": "urn:ngsi-ld:Person:bob-the-manager"},
"installedBy": {"type": "Relationship","object": "urn:ngsi-ld:Person:employee001"},
"statusOfWork": {"type": "Property","value": "completed"}
},
"@context": "https://fiware.github.io/tutorials.Step-by-Step/tutorials-context.jsonld"
}'
NGSI-LD Relationships: 2. Machine Readable Data Models
Relationship links within the @context are formally defined using: "@type": "@id"
13
FIWARE Data Models @context
"@context": {
"tutorial": "https://fiware.github.io/tutorials.Step-by-Step/schema/",
"Product": "tutorial:Product",
"Shelf": "tutorial:Shelf",
...etc
"installedBy": {
"@id": "tutorial:installedBy",
"@type": "@id"
},
"requestedBy": {
"@id": "tutorial:requestedBy",
"@type": "@id"
},
...etc
NGSI-LD Relationships: 3. Machine Readable Links
14
FIWARE Data Models @graph
"@graph": [
{
"@id": "tutorial:Product",
"@type": "rdfs:Class",
"rdfs:comment": [
{"@language": "en", "@value": "Product is sold in a Store."},
{"@language": "ja", "@value": "èŁœć“ăŻă‚čトケでèČ©ćŁČă•ă‚ŒăŠă„ă‚‹ç‰©"}],
"rdfs:label": [{"@language": "en", "@value": "Product"}, {"@language": "ja", "@value": "èŁœć“"}],
"rdfs:subClassOf": {"@id": "http://schema.org/Thing"}
},

 etc
{
"@id": "tutorial:requestedBy",
"@type": "https://uri.etsi.org/ngsi-ld/Relationship",
"schema:domainIncludes": [{"@id": "tutorial:Shelf"}, {"@id": "tutorial:StockOrder"}],
"schema:rangeIncludes": [{"@id": "schema:Person"}],
"rdfs:comment": [
{"@language": "en","@value": "Object requested by person."},
{"@language": "ja","@value": "äșșăŒèŠæ±‚ă—ăŸă‚Șブゾェクト"}],
"rdfs:label": [{"@language": "en", "@value": "requested by"},{"@language": "ja", "@value": "芁求者"}]
},
]
15
Demo: NGSI-LD - Relationships
Sample Key-Values Payload
NGSI-LD Subscriptions: Creating a Subscription
16
NGSI-LD
{
"id": "urn:ngsi-ld:Notification:60812d06f2ebd727e1c425a8",
"type": "Notification",
"subscriptionId": "urn:ngsi-
ld:Subscription:60812c7bf2ebd727e1c425a4",
"notifiedAt": "2021-04-22T08:00:06.741Z",
"data": [
{
"id": "urn:ngsi-ld:Shelf:unit001",
"type": "Shelf",
"locatedIn": "urn:ngsi-ld:Building:store001",
"numberOfItems": 8,
"stocks": "urn:ngsi-ld:Product:001"
}
]
}
curl -L -X POST 'http://localhost:1026/ngsi-ld/v1/subscriptions/' 
-H 'Content-Type: application/ld+json' 
--data-raw '{
"description": "Notify me of low stock in Store 001",
"type": "Subscription",
"entities": [{"type": "Shelf"}],
"watchedAttributes": ["numberOfItems"],
"q": "numberOfItems<10;locatedIn==urn:ngsi-ld:Building:store001",
"notification": {
"attributes": [ "numberOfItems", "stocks","locatedIn"],
"format": "keyValues",
"endpoint": {
"uri": "http://tutorial:3000/subscription/low-stock-store001",
"accept": "application/json"
}
},
"@context": "https://fiware.github.io/tutorials.Step-by-Step/tutorials-
context.jsonld"
}'
NGSI-LD Registrations: Creating a Registration
NGSI LD
17
curl -L -X POST 'http://localhost:1026/ngsi-ld/v1/csourceRegistrations/' 
-H 'Content-Type: application/json' 
-H 'Link: <https://fiware.github.io/tutorials.Step-by-Step/tutorials-context.jsonld>;
rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"' 
--data-raw ' {
"type": "ContextSourceRegistration",
"information": [
{
"entities": [
{
"type": "Building",
"id": "urn:ngsi-ld:Building:store001"
}
],
"properties": [
"tweets"
]
}
],
"endpoint": "http://context-provider:3000/static/tweets"
}'
Note that properties is defined in the
1.1.1 NGSI-LD core context
In 1.3.1, it is due to be replaced with two
separate attributes - propertyNames
and relationshipNames - this change
has been made in order to offer full
GeoJSON-LD support.
Your context broker may or may not
support the updated core context
18
Demo: NGSI-LD - Subscriptions and Registrations
19
Context Data as Linked Data - How does it help?
Rich Text Snippets
Standard schema.org/Product data model
marked up as JSON-LD on the web. Interpreted by
third parties. Search Engine can display product
rating on screen. System “knows” if a product is out
of stock.
NGSI-LD Supermarket Tutorial
Third party ARV could “know” when a shelf needs filling and
retrieve goods from the warehouse
No need to reprogram for new customers if data follows the
fiware.org/ns/data-models, or the JSON-LD can be
converted to do so.
Thank you!
http://fiware.org
Follow @FIWARE on Twitter

Weitere Àhnliche Inhalte

Was ist angesagt?

FIWARE Training: IoT and Legacy
FIWARE Training: IoT and LegacyFIWARE Training: IoT and Legacy
FIWARE Training: IoT and Legacy
FIWARE
 
FIWARE Training: JSON-LD and NGSI-LD
FIWARE Training: JSON-LD and NGSI-LDFIWARE Training: JSON-LD and NGSI-LD
FIWARE Training: JSON-LD and NGSI-LD
FIWARE
 

Was ist angesagt? (20)

FIWARE Training: IoT and Legacy
FIWARE Training: IoT and LegacyFIWARE Training: IoT and Legacy
FIWARE Training: IoT and Legacy
 
FIWARE Training: Introduction to Smart Data Models
FIWARE Training: Introduction to Smart Data ModelsFIWARE Training: Introduction to Smart Data Models
FIWARE Training: Introduction to Smart Data Models
 
FIWARE Training: JSON-LD and NGSI-LD
FIWARE Training: JSON-LD and NGSI-LDFIWARE Training: JSON-LD and NGSI-LD
FIWARE Training: JSON-LD and NGSI-LD
 
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
 
FIWARE Global Summit - The Scorpio NGSI-LD Broker: Features and Supported Arc...
FIWARE Global Summit - The Scorpio NGSI-LD Broker: Features and Supported Arc...FIWARE Global Summit - The Scorpio NGSI-LD Broker: Features and Supported Arc...
FIWARE Global Summit - The Scorpio NGSI-LD Broker: Features and Supported Arc...
 
LODAC 2017 Linked Open Data Workshop
LODAC 2017 Linked Open Data WorkshopLODAC 2017 Linked Open Data Workshop
LODAC 2017 Linked Open Data Workshop
 
NGSI-LD IoT Agents
NGSI-LD IoT AgentsNGSI-LD IoT Agents
NGSI-LD IoT Agents
 
FIWARE Orion Context Broker コンテキă‚čăƒˆæƒ…ć ±çźĄç† (Orion 2.2.0ćŻŸćżœ)
FIWARE Orion Context Broker コンテキă‚čăƒˆæƒ…ć ±çźĄç† (Orion 2.2.0ćŻŸćżœ)FIWARE Orion Context Broker コンテキă‚čăƒˆæƒ…ć ±çźĄç† (Orion 2.2.0ćŻŸćżœ)
FIWARE Orion Context Broker コンテキă‚čăƒˆæƒ…ć ±çźĄç† (Orion 2.2.0ćŻŸćżœ)
 
Session 1 - Introduction to i4Trust Data Spaces, building blocks, and roles |...
Session 1 - Introduction to i4Trust Data Spaces, building blocks, and roles |...Session 1 - Introduction to i4Trust Data Spaces, building blocks, and roles |...
Session 1 - Introduction to i4Trust Data Spaces, building blocks, and roles |...
 
FIWARE Wednesday Webinars - FIWARE Overview
FIWARE Wednesday Webinars - FIWARE OverviewFIWARE Wednesday Webinars - FIWARE Overview
FIWARE Wednesday Webinars - FIWARE Overview
 
Fiware overview
Fiware overviewFiware overview
Fiware overview
 
What is the best full text search engine for Python?
What is the best full text search engine for Python?What is the best full text search engine for Python?
What is the best full text search engine for Python?
 
LinkML Intro July 2022.pptx PLEASE VIEW THIS ON ZENODO
LinkML Intro July 2022.pptx PLEASE VIEW THIS ON ZENODOLinkML Intro July 2022.pptx PLEASE VIEW THIS ON ZENODO
LinkML Intro July 2022.pptx PLEASE VIEW THIS ON ZENODO
 
Fiware IoT_IDAS_intro_ul20_v2
Fiware IoT_IDAS_intro_ul20_v2Fiware IoT_IDAS_intro_ul20_v2
Fiware IoT_IDAS_intro_ul20_v2
 
Getting Started with Geospatial Data in MongoDB
Getting Started with Geospatial Data in MongoDBGetting Started with Geospatial Data in MongoDB
Getting Started with Geospatial Data in MongoDB
 
Reporting with Oracle Application Express (APEX)
Reporting with Oracle Application Express (APEX)Reporting with Oracle Application Express (APEX)
Reporting with Oracle Application Express (APEX)
 
KeyRock and Wilma - Openstack-based Identity Management in FIWARE
KeyRock and Wilma - Openstack-based Identity Management in FIWAREKeyRock and Wilma - Openstack-based Identity Management in FIWARE
KeyRock and Wilma - Openstack-based Identity Management in FIWARE
 
SPARQL Cheat Sheet
SPARQL Cheat SheetSPARQL Cheat Sheet
SPARQL Cheat Sheet
 
FIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWARE
FIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWAREFIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWARE
FIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWARE
 
Querying Linked Data with SPARQL
Querying Linked Data with SPARQLQuerying Linked Data with SPARQL
Querying Linked Data with SPARQL
 

Ähnlich wie NGSI-LD Introduction

Ähnlich wie NGSI-LD Introduction (20)

FIWARE Global Summit - Hands-On NGSI-LD
FIWARE Global Summit - Hands-On NGSI-LDFIWARE Global Summit - Hands-On NGSI-LD
FIWARE Global Summit - Hands-On NGSI-LD
 
JSON-LD and NGSI-LD
JSON-LD and NGSI-LDJSON-LD and NGSI-LD
JSON-LD and NGSI-LD
 
Orion contextbroker ngs-iv2-overview-for-developers-that-already-know-ngsiv1-...
Orion contextbroker ngs-iv2-overview-for-developers-that-already-know-ngsiv1-...Orion contextbroker ngs-iv2-overview-for-developers-that-already-know-ngsiv1-...
Orion contextbroker ngs-iv2-overview-for-developers-that-already-know-ngsiv1-...
 
NGSIv2 Overview for Developers That Already Know NGSIv1 20180928
NGSIv2 Overview for Developers That Already Know NGSIv1 20180928NGSIv2 Overview for Developers That Already Know NGSIv1 20180928
NGSIv2 Overview for Developers That Already Know NGSIv1 20180928
 
ngsiv2-overview-for-developers-that-already-know-ngsiv1-20190214
ngsiv2-overview-for-developers-that-already-know-ngsiv1-20190214ngsiv2-overview-for-developers-that-already-know-ngsiv1-20190214
ngsiv2-overview-for-developers-that-already-know-ngsiv1-20190214
 
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
 
NGSIv2 Overview for Developers That Already Know NGSIv1 20181218
NGSIv2 Overview for Developers That Already Know NGSIv1 20181218NGSIv2 Overview for Developers That Already Know NGSIv1 20181218
NGSIv2 Overview for Developers That Already Know NGSIv1 20181218
 
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
 
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
 
Orion Context Broker NGSIv2 Overview for Developers That Already Know NGSIv1 ...
Orion Context Broker NGSIv2 Overview for Developers That Already Know NGSIv1 ...Orion Context Broker NGSIv2 Overview for Developers That Already Know NGSIv1 ...
Orion Context Broker NGSIv2 Overview for Developers That Already Know NGSIv1 ...
 
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
 
Orion Context Broker NGSIv2 Overview for Developers That Already Know NGSIv1 ...
Orion Context Broker NGSIv2 Overview for Developers That Already Know NGSIv1 ...Orion Context Broker NGSIv2 Overview for Developers That Already Know NGSIv1 ...
Orion Context Broker NGSIv2 Overview for Developers That Already Know NGSIv1 ...
 
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
 
Orion Context Broker NGSI-v2 Overview for Developers That Already Know Ngsi-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know Ngsi-v...Orion Context Broker NGSI-v2 Overview for Developers That Already Know Ngsi-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know Ngsi-v...
 
Orion Context Broker NGSI-v2 Overview for Developers That Already Know Ngsi-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know Ngsi-v...Orion Context Broker NGSI-v2 Overview for Developers That Already Know Ngsi-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know Ngsi-v...
 
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
Orion Context Broker NGSI-v2 Overview for Developers That Already Know NGSI-v...
 
Your Database Cannot Do this (well)
Your Database Cannot Do this (well)Your Database Cannot Do this (well)
Your Database Cannot Do this (well)
 
FIWARE Global Summit - NGSI-LD: Modelling, Linking and Utilizing Context Info...
FIWARE Global Summit - NGSI-LD: Modelling, Linking and Utilizing Context Info...FIWARE Global Summit - NGSI-LD: Modelling, Linking and Utilizing Context Info...
FIWARE Global Summit - NGSI-LD: Modelling, Linking and Utilizing Context Info...
 
Session 5 - NGSI-LD Advanced Operations | Train the Trainers Program
Session 5 -  NGSI-LD Advanced Operations | Train the Trainers ProgramSession 5 -  NGSI-LD Advanced Operations | Train the Trainers Program
Session 5 - NGSI-LD Advanced Operations | Train the Trainers Program
 
Advanced Json
Advanced JsonAdvanced Json
Advanced Json
 

Mehr von FIWARE

Cameron Brooks_FGS23_FIWARE Summit_Keynote_Cameron.pptx
Cameron Brooks_FGS23_FIWARE Summit_Keynote_Cameron.pptxCameron Brooks_FGS23_FIWARE Summit_Keynote_Cameron.pptx
Cameron Brooks_FGS23_FIWARE Summit_Keynote_Cameron.pptx
FIWARE
 
FiWareSummit.msGIS-Data-to-Value.2023.06.12.pptx
FiWareSummit.msGIS-Data-to-Value.2023.06.12.pptxFiWareSummit.msGIS-Data-to-Value.2023.06.12.pptx
FiWareSummit.msGIS-Data-to-Value.2023.06.12.pptx
FIWARE
 
Boris Otto_FGS2023_Opening- EU Innovations from Data_PUB_V1_BOt.pptx
Boris Otto_FGS2023_Opening- EU Innovations from Data_PUB_V1_BOt.pptxBoris Otto_FGS2023_Opening- EU Innovations from Data_PUB_V1_BOt.pptx
Boris Otto_FGS2023_Opening- EU Innovations from Data_PUB_V1_BOt.pptx
FIWARE
 
Bjoern de Vidts_FGS23_Opening_athumi - bjord de vidts - personal data spaces....
Bjoern de Vidts_FGS23_Opening_athumi - bjord de vidts - personal data spaces....Bjoern de Vidts_FGS23_Opening_athumi - bjord de vidts - personal data spaces....
Bjoern de Vidts_FGS23_Opening_athumi - bjord de vidts - personal data spaces....
FIWARE
 
Abdulrahman Ibrahim_FGS23 Opening - Abdulrahman Ibrahim.pdf
Abdulrahman Ibrahim_FGS23 Opening - Abdulrahman Ibrahim.pdfAbdulrahman Ibrahim_FGS23 Opening - Abdulrahman Ibrahim.pdf
Abdulrahman Ibrahim_FGS23 Opening - Abdulrahman Ibrahim.pdf
FIWARE
 
FGS2023_Opening_Red Hat Keynote Andrea Battaglia.pdf
FGS2023_Opening_Red Hat Keynote Andrea Battaglia.pdfFGS2023_Opening_Red Hat Keynote Andrea Battaglia.pdf
FGS2023_Opening_Red Hat Keynote Andrea Battaglia.pdf
FIWARE
 

Mehr von FIWARE (20)

Behm_Herne_NeMo_akt.pptx
Behm_Herne_NeMo_akt.pptxBehm_Herne_NeMo_akt.pptx
Behm_Herne_NeMo_akt.pptx
 
Katharina Hogrebe Herne Digital Days.pdf
 Katharina Hogrebe Herne Digital Days.pdf Katharina Hogrebe Herne Digital Days.pdf
Katharina Hogrebe Herne Digital Days.pdf
 
Christoph Mertens_IDSA_Introduction to Data Spaces.pptx
Christoph Mertens_IDSA_Introduction to Data Spaces.pptxChristoph Mertens_IDSA_Introduction to Data Spaces.pptx
Christoph Mertens_IDSA_Introduction to Data Spaces.pptx
 
Behm_Herne_NeMo.pptx
Behm_Herne_NeMo.pptxBehm_Herne_NeMo.pptx
Behm_Herne_NeMo.pptx
 
Evangelists + iHubs Promo Slides.pptx
Evangelists + iHubs Promo Slides.pptxEvangelists + iHubs Promo Slides.pptx
Evangelists + iHubs Promo Slides.pptx
 
Lukas KĂŒnzel Smart City Operating System.pptx
Lukas KĂŒnzel Smart City Operating System.pptxLukas KĂŒnzel Smart City Operating System.pptx
Lukas KĂŒnzel Smart City Operating System.pptx
 
Pierre Golz Der Transformationsprozess im Konzern Stadt.pptx
Pierre Golz Der Transformationsprozess im Konzern Stadt.pptxPierre Golz Der Transformationsprozess im Konzern Stadt.pptx
Pierre Golz Der Transformationsprozess im Konzern Stadt.pptx
 
Dennis Wendland_The i4Trust Collaboration Programme.pptx
Dennis Wendland_The i4Trust Collaboration Programme.pptxDennis Wendland_The i4Trust Collaboration Programme.pptx
Dennis Wendland_The i4Trust Collaboration Programme.pptx
 
Ulrich Ahle_FIWARE.pptx
Ulrich Ahle_FIWARE.pptxUlrich Ahle_FIWARE.pptx
Ulrich Ahle_FIWARE.pptx
 
Aleksandar Vrglevski _FIWARE DACH_OSIH.pptx
Aleksandar Vrglevski _FIWARE DACH_OSIH.pptxAleksandar Vrglevski _FIWARE DACH_OSIH.pptx
Aleksandar Vrglevski _FIWARE DACH_OSIH.pptx
 
Water Quality - Lukas Kuenzel.pdf
Water Quality - Lukas Kuenzel.pdfWater Quality - Lukas Kuenzel.pdf
Water Quality - Lukas Kuenzel.pdf
 
Cameron Brooks_FGS23_FIWARE Summit_Keynote_Cameron.pptx
Cameron Brooks_FGS23_FIWARE Summit_Keynote_Cameron.pptxCameron Brooks_FGS23_FIWARE Summit_Keynote_Cameron.pptx
Cameron Brooks_FGS23_FIWARE Summit_Keynote_Cameron.pptx
 
FiWareSummit.msGIS-Data-to-Value.2023.06.12.pptx
FiWareSummit.msGIS-Data-to-Value.2023.06.12.pptxFiWareSummit.msGIS-Data-to-Value.2023.06.12.pptx
FiWareSummit.msGIS-Data-to-Value.2023.06.12.pptx
 
Boris Otto_FGS2023_Opening- EU Innovations from Data_PUB_V1_BOt.pptx
Boris Otto_FGS2023_Opening- EU Innovations from Data_PUB_V1_BOt.pptxBoris Otto_FGS2023_Opening- EU Innovations from Data_PUB_V1_BOt.pptx
Boris Otto_FGS2023_Opening- EU Innovations from Data_PUB_V1_BOt.pptx
 
Bjoern de Vidts_FGS23_Opening_athumi - bjord de vidts - personal data spaces....
Bjoern de Vidts_FGS23_Opening_athumi - bjord de vidts - personal data spaces....Bjoern de Vidts_FGS23_Opening_athumi - bjord de vidts - personal data spaces....
Bjoern de Vidts_FGS23_Opening_athumi - bjord de vidts - personal data spaces....
 
Abdulrahman Ibrahim_FGS23 Opening - Abdulrahman Ibrahim.pdf
Abdulrahman Ibrahim_FGS23 Opening - Abdulrahman Ibrahim.pdfAbdulrahman Ibrahim_FGS23 Opening - Abdulrahman Ibrahim.pdf
Abdulrahman Ibrahim_FGS23 Opening - Abdulrahman Ibrahim.pdf
 
FGS2023_Opening_Red Hat Keynote Andrea Battaglia.pdf
FGS2023_Opening_Red Hat Keynote Andrea Battaglia.pdfFGS2023_Opening_Red Hat Keynote Andrea Battaglia.pdf
FGS2023_Opening_Red Hat Keynote Andrea Battaglia.pdf
 
HTAG_Skalierung_Plattform_lokal_final_versand.pptx
HTAG_Skalierung_Plattform_lokal_final_versand.pptxHTAG_Skalierung_Plattform_lokal_final_versand.pptx
HTAG_Skalierung_Plattform_lokal_final_versand.pptx
 
WE_LoRaWAN _ IoT.pptx
WE_LoRaWAN  _ IoT.pptxWE_LoRaWAN  _ IoT.pptx
WE_LoRaWAN _ IoT.pptx
 
EU Opp_Clara Pezuela - German chapter.pptx
EU Opp_Clara Pezuela - German chapter.pptxEU Opp_Clara Pezuela - German chapter.pptx
EU Opp_Clara Pezuela - German chapter.pptx
 

KĂŒrzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

KĂŒrzlich hochgeladen (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

NGSI-LD Introduction

  • 1. 0 NGSI-LD Introduction Jason Fox Senior Technical Evangelist FIWARE Foundation
  • 2. Useful links What is JSON-LD: https://www.youtube.com/watch?v=vioCbTo3C-4 JSON-LD Core Markup: https://www.youtube.com/watch?v=UmvWk_TQ30A Compaction and Expansion: https://www.youtube.com/watch?v=Tm3fD89dqRE JSON-LD Playground & examples https://json-ld.org/playground/ 1
  • 3. Linked Context Data: NGSI v2 to NGSI-LD From: https://fiware-datamodels.readthedocs.io/en/latest/ngsi-ld_faq/index.html â–Ș NGSI-LD is an evolution of the FIWARE NGSI v2 information model, and has been updated/improved to support linked data (entity relationships), property graphs and semantics (exploiting the capabilities offered by JSON-LD). This work has been conducted under the ETSI ISG Context Information Management initiative. â–Ș Creating proper machine-readable Linked Data is fundamental to NGSI-LD. â–Ș NGSI-LD Payloads are valid JSON-LD 2 { "@context": [ "https://fiware.github.io/data-models/context.jsonld", "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" ], "id": "http://dbpedia.org/resource/John_Lennon", "type": "Person", "name": {"type": "Property", "value": "John Lennon"}, "born": {"type": "Property", "value": "1940-10-09"}, "spouse": {"type": "Relationship", "object": "http://dbpedia.org/resource/Cynthia_Lennon" } }
  • 4. What is Core @context? "ngsi-ld": "https://uri.etsi.org/ngsi-ld/", "geojson": "https://purl.org/geojson/vocab#", "id": "@id", "type": "@type", "Date": "ngsi-ld:Date", "DateTime": "ngsi-ld:DateTime", "Feature": "geojson:Feature", "FeatureCollection": "geojson:FeatureCollection", "GeometryCollection": "geojson:GeometryCollection", "LineString": "geojson:LineString", "MultiLineString": "geojson:MultiLineString", "MultiPoint": "geojson:MultiPoint", "MultiPolygon": "geojson:MultiPolygon", "Point": "geojson:Point", "Polygon": "geojson:Polygon", "GeoProperty": "ngsi-ld:GeoProperty", "Property": "ngsi-ld:Property", "Relationship": "ngsi-ld:Relationship", "ContextSourceNotification":"ngsi-ld:ContextSourceNotification", "ContextSourceRegistration":"ngsi-ld:ContextSourceRegistration", "Notification": "ngsi-ld:Notification", "Subscription": "ngsi-ld:Subscription", 
 etc 3 "coordinates": { "@container": "@list", "@id": "geojson:coordinates" }, "temporalQ": "ngsi-ld:temporalQ", "throttling": "ngsi-ld:throttling", "observedAt": { "@id": "ngsi-ld:observedAt", "@type": "DateTime" }, "timeInterval": "ngsi-ld:timeInterval", "unitCode": "ngsi-ld:unitCode", "value": "ngsi-ld:hasValue", "values": { "@id": "ngsi-ld:hasValues", "@container": "@list" }, 
 etc "@vocab": "https://uri.etsi.org/ngsi-ld/default- context/"
  • 5. NGSI-LD: Evolution not Revolution NGSI v2 â–Ș Well defined REST API for context data using JSON payloads. GET, POST and other HTTP verbs do the things you expect â–Ș CRUD operations - /v2/entities endpoint â–Ș Augment your context data - /v2/registrations endpoint â–Ș Push context data to other services - /v2/subscriptions endpoint 4 NGSI-LD â–Ș Well defined REST API for context data using JSON and JSON-LD payloads. GET, POST and other HTTP verbs do the things you expect â–Ș CRUD operations - /ngsi- ld/v1/entities endpoint â–Ș Augment your context data - /ngsi- ld/v1/registrations endpoint â–Ș Push context data to other services - /ngsi- ld/v1/subscriptions endpoint
  • 6. 5 Demo: NGSI-LD - Properties
  • 7. NGSI-LD Properties: Creating an Entity NGSI v2 6 NGSI-LD curl -iX POST 'http://localhost:1026/v2/entities' -H 'Content-Type: application/json' -d '{ "type": "Store", "id": "store001", "category": { "type": "Array", "value": ["commercial"]}, "address": { "type": "PostalAddress", "value": { "streetAddress": "Bornholmer Straße 65", "addressRegion": "Berlin", "addressLocality": "Prenzlauer Berg", "postalCode": "10439" }, "metadata": { "verified": { "type": "Boolean","value": true} } }, "location": {"type": "geo:json", "value": {"type": "Point", "coordinates": [13.3986, 52.5547]} }, "name": {"type": "Text", "value": "BösebrĂŒcke Einkauf"} }' curl -iX POST http://localhost:1026/ngsi-ld/v1/entities -H 'Content-Type: application/ld+json' -d '{ "type": "Building", "id": "urn:ngsi-ld:Building:store001", "category": { "type": "Property", "value": ["commercial"]}, "address": { "type": "Property"," value": { "streetAddress": "Bornholmer Straße 65", "addressRegion": "Berlin", "addressLocality": "Prenzlauer Berg", "postalCode": "10439" }, "verified": { "type": "Property", "value": true } }, "location": { "type": "GeoProperty", "value": { "type": "Point", "coordinates": [13.3986, 52.5547]} }, "name": { "type": "Property", "value": "BösebrĂŒcke Einkauf" }, "@context": [ "https://fiware.github.io/data-models/context.jsonld", "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" ] }'
  • 8. NGSI-LD Properties: Data Model NGSI v2 â–Ș Entities â–Ș Attributes â–Ș MetaData 7 NGSI-LD â–Ș Entities â–Ș Properties â–Ș Relationships â–Ș Values plus 
 plus 
 etc... The NGSI LD data model is more complex; the definitions of use are more rigid which lead to a navigable knowledge graph. â–Ș Properties of Properties â–Ș Properties of Relationships â–Ș Relationships of Properties â–Ș Relationships of Relationships . â–Ș Properties of Properties of Properties â–Ș Relationships of Properties of Properties â–Ș Properties of Properties of Relationships â–Ș Relationships of Properties of Relationships â–Ș Properties of Relationships of Properties â–Ș Relationships of Relationships of Properties â–Ș Properties of Relationships of Relationships â–Ș Relationships of Relationships of Relationships
  • 9. NGSI-LD Properties: Data Model 8 The Entity Example Notes Has an id urn:ngsi-ld:Building:store001 URI/URN. id must be unique. Has a type. https://uri.fiware.org/ns/ data-models#Building ● Fully qualified URI of a well defined data model ● Short-hand strings for types, mapped to fully qualified URIs through the JSON-LD @context. Has a series of properties name, address, category etc. This can be expanded into http://schema.org/address, which is known as a fully qualified name (FQN). Has a series of properties-of-properties a verified field for the address This is the equivalent of NGSI v2 metadata Has a series of relationships managedBy The object corresponds to the URI/URN of another data entity. Equivalent of NGSI v2 refXXX Has a series of properties-of-relationships managedBy.since Holds additional information about a relationship. This is the equivalent of metadata about a refXXX property Has a series of relationships-of-relationships managedBy.subordinateTo holds the URI/URN of another relationship.
  • 10. NGSI-LD Properties: Reading Entity Data as JSON-LD NGSI-LD â–Ș Response is just a JSON payload plus an @context â–Ș @context can be passed either in the Link header or the payload body: â–Ș Accept: application/ld+json to include the @context as a JSON attribute â–Ș Accept: application/json returns plain old JSON objects - @context is passed as a Link header 9 curl -G -X GET 'http://localhost:1026/ngsi-ld/v1/entities' -H 'Link: <https://fiware.github.io/data-models/context.jsonld>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"' -H 'Accept: application/ld+json' -d 'type=Building' -d 'options=keyValues' [ { "@context": "https://fiware.github.io/data-models/context.jsonld", "id": "urn:ngsi-ld:Building:store001", "type": "Building", "address": { "streetAddress": "Bornholmer Straße 65", "addressRegion": "Berlin", "addressLocality": "Prenzlauer Berg", "postalCode": "10439" }, "name": "BösebrĂŒcke Einkauf", "category": “commercial", "location": { "type": "Point", "coordinates": [13.3986, 52.5547] } } ]
  • 11. NGSI-LD Properties: What to call a location? â–Ș place ? â–Ș locatedAt ? â–Ș geocoordinate ? â–Ș geocoordinates ? 10 With NGSI-LD core @context a location is always https://uri.etsi.org/ngsi-ld/location Thereafter, with JSON-LD you may map your preferred short name if necessary NGSI-LD core @context "@context": { "ngsi-ld": "https://uri.etsi.org/ngsi-ld/", "geojson": "https://purl.org/geojson/vocab#", "id": "@id", "type": "@type", "value": "ngsi-ld:hasValue", ... etc. "GeoProperty": "ngsi-ld:GeoProperty", "Point": "geojson:Point", "coordinates": { "@container": "@list", "@id": "geojson:coordinates" }, "location": "https://uri.etsi.org/ngsi-ld/location", ... etc. } â–Ș ubicaciĂłn ? â–Ș standort ? â–Ș çœźăć Žæ‰€ ? â–Ș location ✓ "location": { "type": "GeoProperty", "value": { "type": "Point", "coordinates": [13.3986, 52.5547]} } }
  • 12. NGSI-LD Relationships: Traversing Edge Nodes From: https://www.w3.org/TR/json-ld/#dfn-graph A JSON-LD document serializes a dataset which is a collection of graphs A graph is a labeled directed graph, i.e., a set of nodes connected by edges. In NGSI-LD: â–Ș Node = NGSI Entity â–Ș Edge = A relationship attribute linking two NGSI Entities Therefore NGSI Linked Data relies on three separate definitions: 1. A definition that a particular attribute within an NGSI entity really represents a link 2. A machine readable definition of that link in the Data Model (i.e. the @context) 3. A machine readable definition of the set of all types of links available (the @graph) 11 Creating proper machine-readable Linked Data is fundamental to NGSI-LD.
  • 13. NGSI-LD Relationships: 1. Creating Entities Relationship Links within an NGSI Entity are formally defined using: "type": "Relationship" OR "@type": "https://uri.etsi.org/ngsi-ld/Relationship" The attribute of the linked entity is an object rather than a value 12 curl -X POST http://localhost:1026/ngsi-ld/v1/entities/urn:ngsi-ld:Shelf:unit001/attrs -H 'Content-Type: application/ld+json' -H 'fiware-servicepath: /' -d '{ "stocks": { "type": "Relationship","object": "urn:ngsi-ld:Product:001"}, "numberOfItems": {"type": "Property","value": 50}, "locatedIn" : { "type": "Relationship", "object": "urn:ngsi-ld:Building:store001", "requestedBy": {"type": "Relationship","object": "urn:ngsi-ld:Person:bob-the-manager"}, "installedBy": {"type": "Relationship","object": "urn:ngsi-ld:Person:employee001"}, "statusOfWork": {"type": "Property","value": "completed"} }, "@context": "https://fiware.github.io/tutorials.Step-by-Step/tutorials-context.jsonld" }'
  • 14. NGSI-LD Relationships: 2. Machine Readable Data Models Relationship links within the @context are formally defined using: "@type": "@id" 13 FIWARE Data Models @context "@context": { "tutorial": "https://fiware.github.io/tutorials.Step-by-Step/schema/", "Product": "tutorial:Product", "Shelf": "tutorial:Shelf", ...etc "installedBy": { "@id": "tutorial:installedBy", "@type": "@id" }, "requestedBy": { "@id": "tutorial:requestedBy", "@type": "@id" }, ...etc
  • 15. NGSI-LD Relationships: 3. Machine Readable Links 14 FIWARE Data Models @graph "@graph": [ { "@id": "tutorial:Product", "@type": "rdfs:Class", "rdfs:comment": [ {"@language": "en", "@value": "Product is sold in a Store."}, {"@language": "ja", "@value": "èŁœć“ăŻă‚čトケでèČ©ćŁČă•ă‚ŒăŠă„ă‚‹ç‰©"}], "rdfs:label": [{"@language": "en", "@value": "Product"}, {"@language": "ja", "@value": "èŁœć“"}], "rdfs:subClassOf": {"@id": "http://schema.org/Thing"} }, 
 etc { "@id": "tutorial:requestedBy", "@type": "https://uri.etsi.org/ngsi-ld/Relationship", "schema:domainIncludes": [{"@id": "tutorial:Shelf"}, {"@id": "tutorial:StockOrder"}], "schema:rangeIncludes": [{"@id": "schema:Person"}], "rdfs:comment": [ {"@language": "en","@value": "Object requested by person."}, {"@language": "ja","@value": "äșșăŒèŠæ±‚ă—ăŸă‚Șブゾェクト"}], "rdfs:label": [{"@language": "en", "@value": "requested by"},{"@language": "ja", "@value": "芁求者"}] }, ]
  • 16. 15 Demo: NGSI-LD - Relationships
  • 17. Sample Key-Values Payload NGSI-LD Subscriptions: Creating a Subscription 16 NGSI-LD { "id": "urn:ngsi-ld:Notification:60812d06f2ebd727e1c425a8", "type": "Notification", "subscriptionId": "urn:ngsi- ld:Subscription:60812c7bf2ebd727e1c425a4", "notifiedAt": "2021-04-22T08:00:06.741Z", "data": [ { "id": "urn:ngsi-ld:Shelf:unit001", "type": "Shelf", "locatedIn": "urn:ngsi-ld:Building:store001", "numberOfItems": 8, "stocks": "urn:ngsi-ld:Product:001" } ] } curl -L -X POST 'http://localhost:1026/ngsi-ld/v1/subscriptions/' -H 'Content-Type: application/ld+json' --data-raw '{ "description": "Notify me of low stock in Store 001", "type": "Subscription", "entities": [{"type": "Shelf"}], "watchedAttributes": ["numberOfItems"], "q": "numberOfItems<10;locatedIn==urn:ngsi-ld:Building:store001", "notification": { "attributes": [ "numberOfItems", "stocks","locatedIn"], "format": "keyValues", "endpoint": { "uri": "http://tutorial:3000/subscription/low-stock-store001", "accept": "application/json" } }, "@context": "https://fiware.github.io/tutorials.Step-by-Step/tutorials- context.jsonld" }'
  • 18. NGSI-LD Registrations: Creating a Registration NGSI LD 17 curl -L -X POST 'http://localhost:1026/ngsi-ld/v1/csourceRegistrations/' -H 'Content-Type: application/json' -H 'Link: <https://fiware.github.io/tutorials.Step-by-Step/tutorials-context.jsonld>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"' --data-raw ' { "type": "ContextSourceRegistration", "information": [ { "entities": [ { "type": "Building", "id": "urn:ngsi-ld:Building:store001" } ], "properties": [ "tweets" ] } ], "endpoint": "http://context-provider:3000/static/tweets" }' Note that properties is defined in the 1.1.1 NGSI-LD core context In 1.3.1, it is due to be replaced with two separate attributes - propertyNames and relationshipNames - this change has been made in order to offer full GeoJSON-LD support. Your context broker may or may not support the updated core context
  • 19. 18 Demo: NGSI-LD - Subscriptions and Registrations
  • 20. 19 Context Data as Linked Data - How does it help? Rich Text Snippets Standard schema.org/Product data model marked up as JSON-LD on the web. Interpreted by third parties. Search Engine can display product rating on screen. System “knows” if a product is out of stock. NGSI-LD Supermarket Tutorial Third party ARV could “know” when a shelf needs filling and retrieve goods from the warehouse No need to reprogram for new customers if data follows the fiware.org/ns/data-models, or the JSON-LD can be converted to do so.