Menu

Coppell Technologies
Fiwareで都市OSを動かしてみよう
NGSI-LDにも挑戦
データ仕様の現状と課題
スマートシティの標準規定(案)
データモデルのユースケース


Column
Link集
用語集


Coppell

Technologies

利用例-9 (BuildingComponent)


■利用例の概要
 設備の一つひとつを表現するデータモデルである、BuildingComponentをcsvファイルから生成します。

■csvファイル
 本利用例は、設備の一覧をcsvファイルで入手できる事を想定しています。サンプルのcsvファイルのファイル名は"BuildingComponentcsv.csv"であり、data配下に格納してあります。

■拡張JSON Schema
 元となるJSON Schemaは、このリンクから入手します。
 csvからJSONに変換するルールとして、以下の情報を追加します。追加した拡張JSON Schemaはdata配下にBuildingComponent.exschema.jsonというファイル名で格納してありります

Attribute 追加ルール 説明
id

dataSource

dataSource ランダムな文字列である"uuid"を指定します。
prefix idを生成するために、"urn:ngsi-ld:BuildingComponent:"をuuidの前に付加します
category

dataSource

csvAttr csvの項目名として"部位の種別"を指定します
name

dataSource

csvAttr csvの項目名として"部位名称"を指定します
description

dataSource

csvAttr csvの項目名として"説明"を指定します
refBuilding

dataSource

csvAttr csvから値を求めるために、csvの項目名として"管理通番"を指定します
entityType 検索対象に"Building"を指定します
searchAttr 管理通番が格納されているAttributeである、"facilityID"を指定します
valueAttr idが格納されているAttributeである"id"を指定します
zoneInstalled リスト構造の中に値を最大3っつ登録したいので、itemsの中をリスト構造とし、3っつの指定ができる様にします

0 dataSource

csvAttr csvの項目名として"場所大分類"を指定します
1 dataSource

csvAttr csvの項目名として"場所中分類"を指定します
2 dataSource

csvAttr csvの項目名として"場所小分類"を指定します
zoneRemarks

dataSource

csvAttr csvの項目名として"場所備考"を指定します

これら以外のAttrributeはそのまま残します。消しても残しても無視されます。但し、typeはrequiredに指定してあるので、JSONに変換されます。

■実行
 cドライブ直下にToolsというフォルダを作成して、全てのファイルをここに格納して実行しています。


C:\Users\owner>chdir c:/Tools/

c:\Tools>Python ctoj.py dir=c:/Tools/data/ inputfile=BuildingComponentcsv.csvoutputfile=BuildingComponentjson.json schemafile=BuildingComponent.exschema.jsonOrganizationfile=Organizationjson.json Buildingfile=Buildingjson.json logfile=BuildingComponentlog.txt
##### start ctoj converter #####
CSV translated to JSON successfully. Number of output Entities: 2

■変換結果
 ツール実行結果は以下の通りです。


 [
   {
     "id": "urn:ngsi-ld:BuildingComponent:85171489-5fc2-46a1-af22-080f53300cb6",
     "type": "BuildingComponent",
     "category": {
       "type": "Text",
       "value": "天井"
     },
     "name": {
       "type": "Text",
       "value": "天井-1F-支所-001"
     },
     "refBuilding": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
     },
     "zoneInstalled": {
       "type": "Array",
       "value": [
         "建物内部",
         "1F",
         "休憩室"
       ]
     }
   },
   {
     "id": "urn:ngsi-ld:BuildingComponent:225421c1-04f8-40d3-9234-972a87f0684f",
     "type": "BuildingComponent",
     "category": {
       "type": "Text",
       "value": "ロールスクリーン・ブラインド"
     },
     "name": {
       "type": "Text",
       "value": "ロブ-1F-支所-002"
     },
     "refBuilding": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
     },
     "zoneInstalled": {
       "type": "Array",
       "value": [
         "建物内部",
         "2F",
         "図書室"
       ]
     }
   }
 ]

ログファイルは以下の通りです。全ての行でエラーは発生していません。

08: inputdir: c:/Tools/data/, inputfile: BuildingComponentcsv.csv
09: referenced entities. directory: c:/Tools/data/, Organizationfile: Organizationjson.json
09: referenced entities. directory: c:/Tools/data/, Buildingfile: Buildingjson.json
09: outputdir: c:/Tools/data/, outputfile: BuildingComponentjson.json
10: CSV Line# 2
10: CSV Line# 3
12: CSV translated to JSON successfully. Entities number: 2