Scorpio は、NEC Laboratories Europe と NEC Technologies India によって開発された NGSI-LD 準拠のコンテキストブローカー です。クロスカッティングコンテキスト情報管理 (ETSI ISG CIM) に関する ETSI Industry Specification Group (ETSI ISG) によって指定された完全な NGSI-LD API を実装します。
NGSI-LD API は、コンテキスト情報の管理、アクセス、およびディスカバリーを可能にします。コンテキスト情報は、エンティティ (建物など) とそのプロパティ (住所や地理的位置など) およびリレーションシップ (所有者など) で構成されます。したがって、 Scorpio を使用すると、アプリケーションとサービスはコンテキスト情報をリクエストできます。つまり、必要なもの、必要な時期、 必要な方法などです。
NGSI-LD API の機能は次のとおりです:
- コンテキスト情報を作成、更新、追加、および削除します。
- フィルタリング、地理的スコープ、ページングなどのコンテキスト情報をクエリします。
- コンテキスト情報の変更をサブスクライブし、非同期ノーティフィケーションを受信します。
- コンテキスト情報のソースをレジストレーションおよびディスカバリーします。これにより、 分散展開およびフェデレーション展開を構築できます。
Scorpio は FIWARE Generic Enabler です。したがって、"Powered by FIWARE " のプラットフォームの一部として統合できます。 FIWARE は、オープンソースプラットフォームコンポーネントの精選されたフレームワークであり、他のサードパーティ プラットフォームコンポーネントと一緒に組み立てて、スマートソリューションの開発を加速することができます。この FIWARE GE のロードマップはこちらに記述されています。
詳細については、FIWARE developers の Web サイトおよび FIWARE Web サイトを参照してください。FIWARE GEs および Incubated FIWARE GEs の完全なリストは、 FIWARE Catalogue にあります。
📚 ドキュメンテーション | 🎓 アカデミー | 🐳 Docker Hub | 🎯 ロードマップ |
---|
Scorpio は、コンテキスト情報の管理とリクエストを可能にする NGSI-LD broker です。次の機能をサポートします:
- コンテキストプロデューサーは、コンテキスト情報の作成、更新、追加、削除など、コンテキストを管理できます。
- コンテキストコンシューマーは、エンティティを識別するか、エンティティタイプを提供することで関連するエンティティを 検出し、GeoJSON 機能として提供されるプロパティ値、既存のリレーションシップ、地理的範囲に従ってフィルタリングする ことで、必要なコンテキスト情報を要求できます。
- 同期クエリ応答と非同期サブスクライブ/ノーティフィケーションの2つの対話スタイルがサポートされており、 ノーティフィケーションはプロパティやリレーションシップの変更、または固定時間間隔に基づくことができます。
- Scorpio は、指定された時間間隔内に測定されたプロパティ値などの履歴情報を要求するための NGSI-LD のオプションの 時間インターフェイス (Temporal interface) を実装します。
- Scorpio は、集中型、分散型、および統合型を含む複数の展開構成をサポートします。上記のコンテキストプロデューサーに 加えて、それ自体が NGSI-LD インターフェイスを実装するコンテキストソースが存在する可能性があります。これらの コンテキストソースは、要求に応じて提供できる情報 (情報 (値) 自体ではない) に自分自身をレジストレーションできます。 分散設定の Scorpio Broker は、レジストレーションに基づいて要求に応答するための情報を持つ可能性のあるコンテキスト ソースを検出し、さまざまなコンテキストソースからの情報を要求および集約して、要求しているコンテキストコンシューマーに 提供できます。
- フェデレーション設定では、コンテキストソース自体を NGSI-LD broker にすることができます。フェデレーションを使用して、 情報を (部分的に) 共有したい複数のプロバイダーからの情報を組み合わせることができます。重要な違いは、通常、 レジストレーションの粒度にあります。たとえば、"建物 A に関する情報がある" ではなく、"地理的領域内の エンティティタイプの建物のエンティティに関する情報がある" などです。
- Scorpio は、前述のすべてのデプロイメント構成をサポートします。したがって、スケーラビリティと、進化的な方法で シナリオを拡張する可能性を提供します。たとえば、2つの別々のデプロイメントを組み合わせたり、スケーラビリティの 理由から、異なるブローカーを使用したりできます。これは、単一のアクセスポイントを引き続き使用できるコンテキスト コンシューマーに対して完全に透過的です。
Scorpio は、マイクロサービスフレームワークとして Spring Cloud を使用し、ビルドツールとして Apache Maven を使用して Java で開発されています。メッセージバスとして Apache Kafka が必要であり、データベースとして PostGIS 拡張機能を備えた Postgres が必要です。
Scorpio に必要なソフトウェアコンポーネントのインストール方法に関する情報は、 インストールガイド に記載されています。Scorpio の構築と実行については、 Scorpio の構築と実行ガイドを参照してください。
デフォルトでは、ブローカーはポート 9090 で実行され、ブローカーとの対話のベース URL は http://localhost:9090/ngsi-ld/v1/ になります。
一般的に、次のようなペイロードを使用して HTTP POST リクエストを http://localhost:9090/ngsi-ld/v1/entities/ に送信する ことでエンティティを作成できます:
{
"id": "urn:ngsi-ld:testunit:123",
"type": "AirQualityObserved",
"dateObserved": {
"type": "Property",
"value": {
"@type": "DateTime",
"@value": "2018-08-07T12:00:00Z"
}
},
"NO2": {
"type": "Property",
"value": 22,
"unitCode": "GP",
"accuracy": {
"type": "Property",
"value": 0.95
}
},
"refPointOfInterest": {
"type": "Relationship",
"object": "urn:ngsi-ld:PointOfInterest:RZ:MainSquare"
},
"@context": [
"https://schema.lab.fiware.org/ld/context",
"https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld"
]
}
この例では、@context
がペイロードにあるため、Content-Type
ヘッダーを application/ld+json
に設定する必要があります。
エンティティを受信するには、次のような HTTP GET を送信します:
http://localhost:9090/ngsi-ld/v1/entities/<entityId>
または、次のような GET を送信してクエリを実行します:
http://localhost:9090/ngsi-ld/v1/entities/?type=Vehicle&limit=2
Accept: application/ld+json
Link: <http://<HOSTNAME_OF_WHERE_YOU_HAVE_AN_ATCONTEXT>/aggregatedContext.jsonld>; rel="http://www.w3.org/ns/json-ld#context";type="application/ld+json"
Scorpio が提供する NGSI-LD API を使用して実行できることの詳細な例は、 API ウォークスルー にあります。
Scorpio には2セットのテストがあります。ユニットテストには JUnit を使用し、システムテストには npm テストベースの FIWARE NGSI-LD テストスイートを使用します。テストの詳細については、テストガイドを ご覧ください。
NGSI-L Dまたは JSON-LD の詳細については、次を参照ください:
一連のサンプル呼び出しは、Postman コレクションとして Examples フォルダーにあります。これらの例では2つの変数を使用して います:
- gatewayServer は
<brokerIP>:<brokerPort>
である必要があります。ローカルでデフォルト設定を使用する場合は、 localhost:9090 になります。 - link, Link header を介して @context を提供する例です。例では、Example @context をホストします。 https://raw.githubusercontent.com/ScorpioBroker/ScorpioBroker/master/Examples/index.json へのリンクを設定します。
この活動は、助成金契約 No. 731993 (Autopilot), No. 814918 (Fed4IoT)、および No. 767498 (MIDIH, Open Call (MoLe)) に基づく欧州連合の Horizon 2020 研究およびイノベーションプログラムから資金提供を受けています。
- AUTOPILOT project: Automated driving Progressed by Internet Of Things
- Fed4IoT project
- MIDIH Project, Open Call (MoLe)
Scorpio に貢献してくれたすべての人に感謝します。これは、Scorpio 開発チーム全体とすべての外部貢献者に当てはまります。 完全なリストについては、CREDITS ファイルをご覧ください。
FIWARE コミュニティの一部として、私たちは FIWARE 行動規範 を 遵守するために最善を尽くし、貢献者にも同じことを期待しています。
これには、プルリクエスト、イシュー、コメント、コード、およびコード内コメントが含まれます。
このリポジトリの所有者として、ここでのコミュニケーションは純粋に Scorpio と NGSI-LD 関連のトピックに限定します。
私たちは皆、異なる文化的背景から来た人間です。私たちは皆、さまざまな癖、習慣、マナーを持っています。そのため、誤解が 生じる可能性があります。Scorpio と NGSI-LD を前進させるために、コミュニケーションが善意で行われていることに疑いの余地は ありません。寄稿者にも同じことを期待しています。しかし、誰かが繰り返し挑発したり、攻撃したり、議論を変えたり、誰かを 嘲笑したりしようとしている場合、私たちは自分の家を正しく利用し、これに終止符を打ちます。
解決すべき論争がある場合、このリポジトリの所有者としての私たちが最後の言葉を持っています。
Scorpio は BSD-4-Clause の下でライセンスされています。貢献には、この Contribution license が適用されます。
© 2020 NEC Laboratories Europe, NEC Technologies India