NGSI-LD

**NGSI-LD**は、コンテキスト情報 (*[[:en:Context_awareness#Relational_context_:_dynamic_and_non-user-centric_definitions|context information]]*) をパブリッシュ (publishing)、クエリ (querying)、およびサブスクライブ (subscribing) するための情報モデル (information model) およびAPIです。これは、さまざまなステークホルダー間での構造化された情報のオープンな交換と共有を促進することを目的としています。スマートシティ (Smart Cities)、 スマートインダストリー (Smart Industry)、スマートアグリカルチャー (Smart Agriculture)、 より一般的にはモノのインターネット (Internet of Things)、 サイバーフィジカルシステム (Cyber-Physical Systems)、システムのシステム (Systems of systems)  およびデジタルツイン (Digital Twins) などのアプリケーションドメイン全体で使用されます。

NGSI-LDは、欧州委員会 (European Commission) からの要求に従って、コンテキスト情報管理業界仕様グループ (Context Information Management Industry Specification Group) を通じて**[[ETSI]] (European Telecommunications Standardization Institute)** によって標準化されています。その採用とさらなる発展は、EUの "ICT標準化のためのローリングプラン" (Rolling plan for ICT standardization)で詳しく説明されています。NGSI-LDは、コンテキスト管理 (context management)フレームワークとコンテキストモデリングにおける数十年前の研究コーパスに基づいて構築されています。頭字語NGSIは、"Next Generation Service Interfaces" (次世代サービスインターフェイス) の略で、コンテキストインターフェイスを含むOMAによって最初に発行された一連の仕様 です。 これらは、FIWAREオープンソースコミュニティを生み出したEuropean Future Internet Public-Private-Partnership (PPP)によってNGSIv2として取り上げられ、進化しました。

NGSI-LD情報モデルは、コンテキスト情報を、プロパティと他のエンティティとのリレーションシップを持つエンティティとして表します。これは、RDFとセマンティックWeb (semantic web) フレームワークに基づいて正式に定義されたセマンティクスを使用して、プロパティグラフ (**property graphs**)から導出されます。 それはJSON-LDを使用してシリアル化できます。 すべてのエンティティとリレーションシップには、識別子として一意のIRI参照が与えられ、対応するデータをLinked dataデータセットとしてエクスポートできるようになります。-LDサフィックスは、Linked Dataユニバースへの所属を示します。

## デザイン

### 情報モデル
NGSI-LD情報モデルは、2000年代初頭からグラフデータベース (graph databases) の非公式の最小公分母モデルとして登場した、プロパティグラフモデルのデジュール標準化団体 (*[[de jure]]* standards organization) による最初の正式な仕様と見なすことができます。

コアコンセプトは次のとおりです:

* プロパティグラフは、有向リンクで接続されたノード (頂点, (vertices)) で構成される有向マルチグラフ (directed multigraph) であり、ノードとアークの両方に複数のオプションのアタッチされたプロパティ (つまり属性) があります。
* プロパティ (オブジェクトモデルの属性と同様) は、任意のキーとバリューのペアの形式を持ちます。キーは文字列であり、バリューは任意のデータ型です。RDFグラフとは対照的に、プロパティはグラフの弧では*ありません*。
* リレーションシップはグラフの円弧 (有向エッジ, directed edges) であり、常に識別子、開始ノード、および終了ノードがあります。

NGSI-LD メタモデル (meta-model)は、RDF/RDFS/OWLに基づいて、また部分的にJSON-LDに基づいて、これらの基本的な概念 (エンティティ、リレーションシップ、プロパティ) を正式に定義します。

* NGSI-LD**エンティティ**は、NGSI-LDを使用する計算プラットフォームの外部で、現実の世界に存在することになっている何か (指示対象, *[[:en:Referent|referent]]*) の情報代表です。この指示対象は、厳密に物理的なもの (法的または管理上のエンティティである可能性があります) である必要はなく、自己完結型 (分散システムレベルの構成である可能性もあります) である必要はありません。このようなエンティティのインスタンスは、IRIによって一意に識別され、1つ以上のNGSI-LDエンティティタイプへの参照によって特徴付けられると想定されています。プロパティグラフ言語では、ノードです。
* NGSI-LD**プロパティ**は、特性であるNGSI-LDバリューを、NGSI-LDエンティティ、NGSI-LDリレーションシップ、または別のNGSI-LDプロパティのいずれかに関連付けるインスタンスです。プロパティのプロパティは明示的に許可されており、たとえば特定の測定値の精度を表現することなどに使用することを推奨されています。
* NGSI-LD**リレーションシップ**は、NGSI-LDエンティティ、NGSI-LDプロパティ、または別のNGSI-LDリレーションシップである可能性のあるサブジェクト (開始点) と、NGSI-LDエンティティのオブジェクト (終了点) の間の有向リンクです。プロパティからエンティティへのNGSI-LDリレーションシップは、たとえば、プロパティがそのエンティティによって測定されたことを表すために使用できます (測定の来歴, Provenance) 。
* NGSI-LD**バリュー**は、JSON値 (つまり、文字列、数値、trueまたはfalse、オブジェクト、配列)、またはJSON-LD型の値 (つまり、値の字句形式としての文字列と型、XSD基本タイプまたはより一般的にはIRIによって定義されます)、またはJSON-LD構造化値 (つまり、セット、リスト、または言語タグ付き文字列)。
* NGSI-LD**タイプ**は、NGSI-LDエンティティ、NGSI-LDリレーションシップ、NGSI-LDプロパティ、またはNGSI-LDメタモデルで定義されたNGSI-LDバリュークラスのいずれかのサブクラスであるOWLクラスです。NGSI-LDは少数のタイプを事前定義しますが、それ以外の場合はユーザーが定義したすべてのタイプに開放されています。

このメタモデルを補完するNGSI-LD情報モデル仕様は、エンティティの空間的、時間的、またはシステム構成特性に関連する主要な構成を定義するクロスドメインオントロジー(**cross-domain [[ontology]]**)も提供します。

### アーキテクチャ
NGSI-LD仕様は、情報モデルとAPIで構成されています。APIは、以下で説明するアーキテクチャーの役割をサポートする機能を提供します。

* **コンテキストコンシューマー**：コンテキストコンシューマーは、NGSI-LD APIのコンテキスト情報消費機能を使用してコンテキストブローカーから (または場合によってはコンテキス トソースから直接) NGSI-LDエンティティを消費します。特定のNGSI-LDエンティティを取得したり、同期要求を使用して関連するNGSI-LDエンティティにクエリを実行したりできます。また、関連するNGSI-LDエンティティをサブスクライブし、要求されたNGSI-LDエンティティに変更があるたびに非同期通知を受信することもできます。
* **コンテキストプロデューサー**：コンテキストプロデューサーは、NGSI-LD APIのコンテキスト情報プロビジョニング機能を使用して、コンテキストブローカーでNGSI-LDエンティティ、NGSI-LDプロパティ、およびNGSI-LDリレーションシップを作成、更新、および削除します。
* **コンテキストソース**：コンテキストソースは、NGSI-LD APIのコンテキスト情報消費機能を通じてNGSI-LDエンティティを利用可能にします。コンテキストブローカーが情報を検出できるようにするために、NGSI-LD APIのコンテキストソース登録機能を使用して、レジストリサーバーに提供できるコンテキスト情報の種類を登録します。
* **コンテキストブローカー**：コンテキストブローカーは、コンテキストコンシューマーのコンテキスト情報へのプライマリアクセスポイントとして機能します。NGSI-LDエンティティ情報は、NGSI-LD APIのコンテキスト情報提供機能を使用してコンテキストプロデューサーによって提供されている場合、またはブローカーがNGSI-LD APIのコンテキスト情報消費機能を使用してコンテキストソースから要求できる場合は、コンテキストブローカー自体によって保存できます。コンテキストブローカーは、リクエストに関連するすべてのNGSI-LDエンティティ情報を集約し、集約された結果をコンテキストコンシューマーに返します。サブスクリプションの場合、コンテキストソースから通知を受信した結果として、関連する変更があるたびに通知を送信します。コンテキストコンシューマー要求に関連するNGSI-LDエンティティを持つ可能性のあるコンテキストソースを見つけるために、コンテキストブローカーはレジストリサーバーによって実装されたNGSI-LD APIのコンテキストソース検出機能を使用します。
* **レジストリサーバー**：レジストリサーバーは、NGSI-LD APIのコンテキストソース登録機能を使用して、コンテキストソースによって提供されるコンテキストソース登録を格納します 。コンテキストソース登録には、コンテキストソースが提供できるコンテキスト情報の種類に関する情報が含まれていますが、実際の値は含まれていません。コンテキスト情報の種類は、特定のNGSI-LDエンティティの特定のプロパティやリレーションシップなどの非常に詳細な情報から、特定のNGSI-LDエンティティの情報、または提供できるレベルまで、さまざまな粒度レベルで提供できます。NGSI-LDエンティティは、特定の地理的領域に対して、特定のエンティティタイプを持っている可能性があります。NGSI-LD APIのコンテキストソース検出機能により、コンテキストブローカー (または場合によってはコンテキストコンシューマー) は、関連するNGSI-LDエンティティを持つ可能性のあるコンテキストソースを見つけることができます。

アーキテクチャの役割により、さまざまな展開アーキテクチャを実装できます。一元化されたアーキテクチャには、コンテキストプロデューサーによって提供されたコンテキスト情報を格納する中央のコンテキストブローカーがあります。分散設定では、すべてのコンテキスト情報をコンテキストソースに保存できます。フェデレーションアーキテクチャでは、コンテキストソースは、下位の階層レベルから集約された情報を利用できるようにするコンテキストブローカーにすることができます。これらのアーキテクチャは相互に排他的ではありません。つまり、実際の展開では、さまざまな方法でそれらを組み合わせることができます。

### API
NGSI-LDコンテキスト情報管理APIを使用すると、ユ ーザーは、複数のシナリオで複数の利害リレーションシップ者が関与するコンテキスト情報を提供、消費、およびサブスクライブできます。これにより、コンテキストソースという名前のさまざまなソース (IoTデータソースだけでなく) からの情報にほぼリアルタイムでアクセスできるほか、相互運用可能なデータ公開プラットフォームを介してその情報を公開できます。

高度な地理時間クエリを提供し、サブスクリプションメカニズムが含まれているため、いくつかの制約に一致するコンテンツが利用可能になったときにコンテンツコンシューマーに通知されます。

APIは、アーキテクチャ (中央、分散、フェデレーション、またはそれらの組み合わせ) に依存しないように設計されているため、情報を生成および消費するアプリケーションは、コンテキスト情報を配布/ブローカーするシステムの詳細に合わせて調整する必要はありません。

API操作には次のものが含まれます:

* **コンテキスト情報**のオペレーションは、**プロビジョン** (NGSI-LDエンティティの作成とその属性の更新)、**消費** (NGSI-LDエンティティのクエリ)、**サブスクリプション** (一致するエンティティが出現したときに通知を受けるために、指定された制約の下で特定の情報をサブスクライブし、指定された情報を伝達します) に関係します。
* **コンテキストソース**のオペレーションは、**登録** (分散システム全体で利用可能なコンテキスト情報の新しいソースを登録することにより利用可能にします) および **ディスカバリー** (指定されたタイプの情報を提供するコンテキストソースが登録されているものについてシステムに照会します) に関係します。

## 利用状況
NGSI-LDは、FIWARE programmeのパートナーによって開始され、主にFIWAREオープンソースコミュニティによって使用され、FIWARE Foundationや、以下のような他のさまざまなプロジェクトやユーザーによってサポートされています。

* Connecting Europe Facilityは、NGSI-LDでのFIWARE context broker の使用を推奨しています。
* Open and Agile Smart Cities Organisationは、最小限の相互運用性メカニズム (Minimal Interoperability Mechanisms) の最初のものとしてNGSI-LD仕様を参照しています。
* Living-in.euプロジェクトは、共同宣言 (declaration) と技術的コミットメントでNGSI-LDを使用することを推奨しています。 この宣言は、EUの86の都市と行政によって承認および署名されており、さらに多くの企業や組織によってサ ポートされています。
* GSMA "IoT Big Data Framework Architecture"はNGSI-LDに基づいています。
* Fed4IoT EU projectでは、さまざまなIoTデータ表現間で変換するための中立的なデータ形式として使用されます。
* OrangeのThing'inグラフベースのdigital twinプラットフォームは、コア情報モデルとしてNGSI-LDを使用しています。

## [[オープンソースソフトウェア]] プロジェクトでの実装

* The FIWARE Foundation  によるOrion-LD実装
* NECによるScorpio実装
* EGMによるStellio実装
* Geonet によるCassiopeia実装

## 歴史
NGSI-LDは、2012年にOpen Mobile Alliance (OMA)によって公開された "Next Generation Service Interfaces" (NGSI) スイートの一部として開始されたコンテキストインターフェイスの進化の結果です。これは頭字語NGSIのソースでもあります。NGSIスイートには、コンテキストエンティティ検出インターフェイスとしてNGSI-9が含まれ、コンテキスト情報インターフェイスとしてNGSI-10が含まれていました。 OMAのNGSI標準とその中間の進化は、古典的なEntity–attribute–valueモデルとXMLベースの表現に依存し ていました。NGSIコンテキストインターフェイスは、European Future Internet Public-Private-Partnership (PPP) のプラットフォームを開発したFI-WAREプロジェクトによって採用されました。OMA NGSIコンテキストインターフェイスは、NGSI-9とNGSI-10の両方を含むNGSIv1と呼ばれるJSON表現を使用したHTTPバインディングとなりました。FI-PPPの過程で、インターフェースは さらにNGSIv2に進化し、FIWAREプラットフォームの主要なインターフェースになりました。2016年にFI-PPPが終了した後、FIWAREプラットフォームは、FIWARE Foundationが管理するFIWAREオープンソースコミュニティの中核になりました。2017年に、横断的コンテキスト情報管理に関するETSI Industry Specification Group on cross-cutting Context Information Management (ETSI ISG CIM) が作られ、コンテキスト情報インターフェイスが進化し、NGSI-LDが作成されました。元の情報モデルの制限により、エンティティ自体と同等のエンティティ間のリレーションシップを明示的に含むプロパティグラフから派生するより広範なモデルの仕様が導き出されました。

## 脚注

## 関連項目
* Linked data
* Context management
* Context awareness
* Graph database
* Graph Query Language

## 外部リンク
* ETSI CIM group home page
* NGSI-LD Primer (oriented towards the use of the API)
* NGSI-LD modelling guidelines White Paper