Menu

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


Column
Link集
用語集


Coppell

Technologies

利用例-7 (DeviceModel)


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

■csvファイル
 本利用例は、設備の機種の一覧をcsvファイルで入手できる事を想定しています。本利用例のcsvはこちら

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

Attribute 追加ルール 説明
id

dataSource メーカの法人番号と型番を組み合わせてidの文字列を作成するために、データソースをリスト構造にします

0 dataSource

csvAttr メーカの法人番号を求めるために、ここでは"メーカ名"を指定します
entityType メーカ名から法人番号を求めるために、"Organization"を指定します。利用例-1でメーカも登録しておいたのは、ここで使用するためですした
searchAttr Organizationをメーカ名で検索するため、法人名が格納されている"name"を指定します
valueAttrr 法人番号を取り出すために"identificationGroup"の"identification"を指定します
identificationType identificationGroupは複数の値を通録可能なため、どの値なのかを区別するために、"法人番号"を指定します
prefix idを作成するために、"urn:ngsi-ld:DeviceModel:JP"をメーカの法人番号の前に付加します
1 dataSource

csvAttr 型番を求めるために、csvの項目名として"型番"を指定します
prefix 法人番号と型番の間に"-"を挟むために"-"を指定します
brandName

dataSource

csvAttr csvの項目名として"ブランド名"を指定します
category

dataSource

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

dataSource

csvAttr csvの項目名として"色"を指定します
documentation

dataSource

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

dataSource

csvAttr csvの項目名として"メーカ名"を指定します
modelName

dataSource

csvAttr csvの項目名として"型番"を指定します
serviceLife

dataSource

csvAttr csvの項目名として"耐用年数"を指定します

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

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


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

c:\Tools>Python ctoj.py dir=c:/Tools/data/ inputfile=DeviceModelcsv.csv outputfile=DeviceModeljson.json schemafile=DeviceModel.exschema.json Organizationfile=Organizationjson.json logfile=DeviceModellog.txt
##### start ctoj converter #####
CSV translated to JSON successfully. output Entity number: 2

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


 [
   {
     "id": "urn:ngsi-ld:DeviceModel:JP7010001008844-RAS-DM28KE8",
     "type": "DeviceModel",
     "brandName": {
       "type": "Text",
       "value": "しろくまくん"
     },
     "category": {
       "type": "Text",
       "value": "空調機"
     },
     "color": {
       "type": "Text",
       "value": "白"
     },
     "documentation": {
       "type": "URL",
       "value": "https://kadenfan.hitachi.co.jp/support/raj/item/docs/ras_dm22ke8_b_tori.pdf"
     },
     "manufacturerName": {
       "type": "Text",
       "value": "日立製作所"
     },
     "modelName": {
       "type": "Text",
       "value": "RAS-DM28KE8"
     },
     "serviceLife": {
       "type": "Number",
       "value": "10"
     }
   },
   {
     "id": "urn:ngsi-ld:DeviceModel:JP3120001236504-HH-CG2033A",
     "type": "DeviceModel",
     "brandName": {
       "type": "Text",
       "value": "パルック"
     },
     "category": {
       "type": "Text",
       "value": "照明器具"
     },
     "color": {
       "type": "Text",
       "value": "白"
     },
     "documentation": {
       "type": "URL",
       "value": "https://panasonic.jp/p-db/contents/manualdl/1428434781041.pdf"
     },
     "manufacturerName": {
       "type": "Text",
       "value": "パナソニック"
     },
     "modelName": {
       "type": "Text",
       "value": "HH-CG2033A"
     },
     "serviceLife": {
       "type": "Number",
       "value": "10"
     }
   }
 ]

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

02: inputdir: c:/Tools/Data/, inputfile: DeviceModelcsv.csv
04: directory: Organizationdir, Organizationfile: Organizationfile
09: outputdir: c:/Tools/Data/, outputfile: DeviceModeljson.json
10: CSV Line# 2
10: CSV Line# 3
12: CSV translated to JSON successfully. Enity number: 2