Fiwareを使って都市OSを動かしてみよう

Munu


データ仕様の現状と課題
スマートシティの標準規格(案)
データモデルのユースケース
ツール


Column
Link
用語集

Coppell

Technologies

 3.3節



3.3.KeyValue形式
2022年4月11日
前説で、Store002のデータを読み出しました。

curl -X GET http://localhost:1026/v2/entities/urn:ngsi-ld:Store:002
そうすると、以下の様な応答がありました。
PS C:\Users\owner> curl -X GET http://localhost:1026/v2/entities/urn:ngsi-ld:Store:002
{"id":"urn:ngsi-ld:Store:002","type":"Store","address":{"type":"PostalAddress","value":{"streetAddress":"吉浦潭鼓町1-1","addressLocality":"呉市","addressRegion":"広島県","postalCode":"7370843"},"metadata":{}},"category":{"type":"Text","value":"ConvenienceStore","metadata":{}},"description":{"type":"Text","value":"呉市吉浦の国道31号線沿いのコンビニエンススト ア","metadata":{}},"location":{"type":"geo:json","value":{"type":"Point","coordinates":[132.5304138,34.2567817]},"metadata":{}},"name":{"type":"Text","value":"セブンイレブン呉市吉浦店","metadata":{}},"openingHoursSpecification":{"type":"StructuredValue","value":{"opens":"00:00:00","closes":"23:59:00"},"metadata":{}},"refOffStreetParking":{"type":"Relationship","value":"urn:ngsi-ld:OffStreetParking:002","metadata":{}},"telephone":{"type":"Text","value":"+81823311458","metadata":{}}}
PS C:\Users\owner>

Metadataが何も値がない状態で多数表示されていますが、これでは読みにくいので、以下の様にKeyVluesのオプションを追加してGETします。

curl -X GET http://localhost:1026/v2/entities/urn:ngsi-ld:Store:002?options=keyValues

"?"はそこから後ろはオプション文字列である事を示します。そうすると、以下の様に大分シンプルになります。
PS C:\Users\owner> curl -X GET http://localhost:1026/v2/entities/urn:ngsi-ld:Store:002?options=keyValues
{"id":"urn:ngsi-ld:Store:002","type":"Store","address":{"streetAddress":"吉浦潭鼓町1-1","addressLocality":"呉市","addressRegion":"広島県","postalCode":"7370843"},"category":"ConvenienceStore","description":"呉市吉浦の国道31号線沿いのコンビ ニエンスストア","location":{"type":"Point","coordinates":[132.5304138,34.2567817]},"name":"セブンイレブン呉市吉浦店","openingHoursSpecification":{"opens":"00:00:00","closes":"23:59:00"},"refOffStreetParking":"urn:ngsi-ld:OffStreetParking:002","telephone":"+81823311458"}
PS C:\Users\owner>

見やすく整形すると、以下の様になります。

{
   "id": "urn:ngsi-ld:Store:002",
   "type": "Store",
   "address": {
       "streetAddress": "吉浦潭鼓町1-1",
       "addressLocality": "呉市",
       "addressRegion": "広島県",
       "postalCode": "7370843"
   },
   "category": "ConvenienceStore",
   "description": "呉市吉浦の国道31号線沿いのコンビニエンスストア",
   "location": {
       "type": "Point",
       "coordinates": [
           132.5304138,
           34.2567817
       ]
   },
   "name": "セブンイレブン呉市吉浦店",
   "openingHoursSpecification": {
       "opens": "00:00:00",
       "closes": "23:59:00"
   },
   "refOffStreetParking": "urn:ngsi-ld:OffStreetParking:002",
   "telephone": "+81823311458"
}

こうすると、Metadataだけでなく、POST時にイチイチ指定していた"{type":"text", "value":"…."}などのtype要素が消えてシンプルになっている事が判ります。前章で作ったjson形式は標準の形式(Normalized形式)であり、今回見ている形式はkeyValues形式と言います。どちらも使うことができます。

 余談ですが、options=valuesと指定すると、idとtype以外のvalueだけが返ってきます。

curl -X GET http://localhost:1026/v2/entities/urn:ngsi-ld:Store:002?options=values

に対する応答は、
PS C:\Users\owner> curl -X GET http://localhost:1026/v2/entities/urn:ngsi-ld:Store:002?options=values
[{"streetAddress":"吉浦潭鼓町1-1","addressLocality":"呉市","addressRegion":"広島県","postalCode":"7370843"},"ConvenienceStore","呉市吉浦の国道31号線沿いのコンビニエンスストア",{"type":"Point","coordinates":[132.5304138,34.2567817]},"セブン イレブン呉市吉浦店",{"opens":"00:00:00","closes":"23:59:00"},"urn:ngsi-ld:OffStreetParking:002","+81823311458"]
PS C:\Users\owner>

となります。整形すると以下の様になります。まあ、どのattributeが欲しいか指定しないでこの問い合わせをすると、よくわからない結果が返ってきますね。

[
   {
       "streetAddress": "吉浦潭鼓町1-1",
       "addressLocality": "呉市",
       "addressRegion": "広島県",
       "postalCode": "7370843"
   },
   "ConvenienceStore",
   "呉市吉浦の国道31号線沿いのコンビニエンスストア",
   {
       "type": "Point",
       "coordinates": [
           132.5304138,
           34.2567817
       ]
   },
   "セブン イレブン呉市吉浦店",
   {
       "opens": "00:00:00",
       "closes": "23:59:00"
   },
   "urn:ngsi-ld:OffStreetParking:002",
   "+81823311458"
]