Context Broker GEがエクスポートするRESTオペレーションを使用してコンテキスト情報を更新するアプリケーションアーキテクチャの一部として実行されるプロセスは、コンテキスト・プロデューサの役割を果たします。例として、レストランをレビューするためのアプリケーション(NiceEatingと呼びます)を考えてみましょう。ユーザのスマートフォン上で動作するアプリケーションのクライアント部分はコンテキスト・プロデューサの役割を果たし、レストランの評価を可能にします。
一方、Context Broker GEがエクスポートするRESTオペレーションを使用してコンテキスト情報を照会するアプリケーションアーキテクチャの一部として実行されるプロセスは、コンテキスト・コンシューマの役割を果たします。NiceEatingアプリの場合、ユーザのスマートフォンで動作し、レストランの評価をクエリできるようにするモバイルアプリケーションがコンテキスト・コンシューマの役割を果たします。アプリケーションの特定の部分は、コンテキスト・プロデューサとコンテキスト・コンシューマの両方の役割を果たす可能性があることに注意してください。これは、NiceEatingアプリのモバイルクライアントの場合であり、エンドユーザはレストランの評価について、レビューとクエリすることができます。
NiceEatingアプリケーションに関連するエンティティは、Restaurant、ClientおよびReviewsのtypeです。このガイドでは、レストランElizaldeを例として使用しています。さまざまなリクエストを実行するためにidとdepartmentを取得するために、次のものを使用できます(追加ヘッダを使用してFiware-Service: tourguide
)。
GET <cb_host>:<cb_port>/v2/entities?type=Restaurant&q=name==Elizalde&attrs=name,department&options=keyValues
[
{
"id": "0115206c51f60b48b77e4c937835795c33bb953f",
"type": "Restaurant",
"name": "Elizalde"
"department": "Franchise1"
}
]
特定のユーザがレストランをレビューすると(例えば、0から5までのスケールで、”Client1234”はElizaldeレストランで”4”と評価され、「安くて食べやすい場所」として彼/彼女の体験が記述されます)、スマートフォンアプリケーションは、コンテキスト・プロデューサロールを果たし、次のHTTPリクエストを発行してレビュー・エンティティを作成します:
POST <cb_host>:<cb_port>/v2/entities?options=keyValues
Headers:
{
'Content-Type': 'application/json',
'Fiware-Service': 'tourguide'
}
Payload:
{
"type": "Review",
"id": "review-Elizalde-34",
"author": "Client1234",
"itemReviewed": "0115206c51f60b48b77e4c937835795c33bb953f",
"reviewBody": "Cheap and nice place to eat.",
"ratingValue": 4
}
新しいレビュー・エンティティが作成されるたびに、対応するレストランの平均レーティングがアプリケーションバックエンドによって再計算され(コンテキスト・プロデューサの役割も果たす)、レストラン・エンティティがそれに応じて更新されます:
PUT <cb_host>:<cb_port>/v2/entities/0115206c51f60b48b77e4c937835795c33bb953f/attrs/aggregateRating/value
Headers:
{
'Content-Type': 'application/json',
'Fiware-Service': 'tourguide'
'Fiware-ServicePath': '/Franchise1'
}
Payload:
{
"reviewCount": 2,
"ratingValue": 4
}
すべてのレストランが部門の範囲内に定義されているため、更新操作にFiware-ServicePath: /Franchise1
ヘッダが必要であることに注意してください。このオプションの詳細については、http://fiware-orion.readthedocs.io/en/master/user/service_path/ を参照してください。
また、スマートフォンアプリケーションを使用して、特定のレストランの情報を取得することもできます。その場合、アプリケーションはコンテキスト・コンシューマとして動作し、レストラン・エンティティのクエリを実行します。たとえば、aggregateRating属性を取得するには、クライアントアプリケーションは次の方法で(追加のヘッダFiware-Service: tourguide
を使用して)クエリを実行します:
GET <cb_host>:<cb_port>/v2/entities/0115206c51f60b48b77e4c937835795c33bb953f/attrs/aggregateRating/value
{
"reviewCount": 2,
"ratingValue": 4
}
"Elizalde"レストランのすべての属性の値を1回のリクエストで取得することもできます((追加のヘッダFiware-Service: tourguide
を使用して):
GET <cb_host>:<cb_port>/v2/entities/0115206c51f60b48b77e4c937835795c33bb953f
{
"id": "0115206c51f60b48b77e4c937835795c33bb953f",
"type": "Restaurant",
"address": {
"type": "PostalAddress",
"value": {
"streetAddress": "Cuesta de las Cabras Aldapa 2",
"addressRegion": "Araba",
"addressLocality": "Alegría-Dulantzi",
"postalCode": "01240"
},
"metadata": {}
},
"aggregateRating": {
"type": "StructuredValue",
"value": {
"reviewCount": 2,
"ratingValue": 4
},
"metadata": {}
},
"capacity": {
"type": "PropertyValue",
"value": 80,
"metadata": {}
},
"department": {
"type": "Text",
"value": "Franchise1",
"metadata": {}
},
"description": {
"type": "Text",
"value": "Restaurante de estilo sidrería ubicado en Alegria-Dulantzi. Además ...",
"metadata": {}
},
"location": {
"type": "geo:point",
"value": "42.8404625, -2.5123277",
"metadata": {}
},
"name": {
"type": "Text",
"value": "Elizalde",
"metadata": {}
},
"occupancyLevels": {
"type": "PropertyValue",
"value": 0,
"metadata": {
"timestamp": {
"type": "DateTime",
"value": "2016-04-20T18:15:15.434Z"
}
}
},
"priceRange": {
"type": "Number",
"value": 0,
"metadata": {}
},
"telephone": {
"type": "Text",
"value": "945 400 868",
"metadata": {}
}
}
また、属性値のみを取得する場合、次のように、keyValues
パラメータを使用できます(追加のヘッダFiware-Service: tourguide
を使用して):
GET <cb_host>:<cb_port>/v2/entities/0115206c51f60b48b77e4c937835795c33bb953f?options=keyValues
{
"id": "0115206c51f60b48b77e4c937835795c33bb953f",
"type": "Restaurant",
"address": {
"streetAddress": "Cuesta de las Cabras Aldapa 2",
"addressRegion": "Araba",
"addressLocality": "Alegría-Dulantzi",
"postalCode": "01240"
},
"aggregateRating": {
"reviewCount": 2,
"ratingValue": 4
},
"capacity": 80,
"department": "Franchise1",
"description": "Restaurante de estilo sidrería ubicado en Alegria-Dulantzi. Además ...",
"location": "42.8404625, -2.5123277",
"name": "Elizalde",
"occupancyLevels": 0,
"priceRange": 0,
"telephone": "945 400 868"
}
最後に、アプリケーションは属性の内容でエンティティをクエリできます。たとえば、座席数(capacity)が50以上のすべてのレストランを取得するには、次のリクエストを使用できます(追加のヘッダFiware-Service: tourguide
を使用して):
GET <cb_host>:<cb_port>/v2/entities?type=Restaurant&q=capacity>=50&options=keyValues
[
{
"id": "0115206c51f60b48b77e4c937835795c33bb953f",
"type": "Restaurant",
"address": {
"streetAddress": "Cuesta de las Cabras Aldapa 2",
"addressRegion": "Araba",
"addressLocality": "Alegría-Dulantzi",
"postalCode": "01240"
},
"aggregateRating": {
"reviewCount": 2,
"ratingValue": 4
},
"capacity": 80,
"department": "Franchise1",
"description": "Restaurante de estilo sidrería ubicado en Alegria-Dulantzi. Además ...",
"location": "42.8404625, -2.5123277",
"name": "Elizalde",
"occupancyLevels": 0,
"priceRange": 0,
"telephone": "945 400 868"
},
{
"id": "34f036f9eef1f403c0ea66c55b8cdbace4b5f7a6",
"type": "Restaurant",
"address": {
"streetAddress": "Avenida de Los Huetos 17",
"addressRegion": "Álava",
"addressLocality": "Vitoria-Gasteiz",
"postalCode": "01010"
},
"aggregateRating": {
"reviewCount": 1,
"ratingValue": 3
},
"capacity": 50,
"department": "Franchise4",
"description": "El restaurante Araba cuenta con amplios salones para todo tipo de celebraciones, ...",
"location": "42.8538811, -2.7006836",
"name": "Araba",
"occupancyLevels": 0,
"priceRange": 42,
"telephone": "945 222 669",
"url": "http://www.restaurantearaba.com/"
},
{
"id": "92e960de796a8cc48ed7c784119f7d5628e31a6f",
"type": "Restaurant",
"address": {
"streetAddress": "Maskuribai Kalea",
"addressRegion": "Araba",
"addressLocality": "Amurrio",
"postalCode": "01470"
},
"aggregateRating": {
"reviewCount": 4,
"ratingValue": 4
},
"capacity": 160,
"department": "Franchise1",
"description": "Bodega adscrita a la Denominación de Origen Arabako Txakolina y que elabora el 95% de la producción total ...",
"location": "43.047415, -3.0007716",
"name": "Arabako Txakolina, S.L.",
"occupancyLevels": 0,
"priceRange": 0,
"telephone": "645 713 355",
"url": "http://www.xarmant.net/"
}
]