Menu

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


Column
Link集
用語集


Coppell

Technologies

利用例-10 (Complaint)


■利用例の概要
 不具合を表現するデータモデルである、Complaintをcsvファイルから生成します。i利用例-4のBuildingとidは共通化してあり、名寄せする事で完全なEntityとなります。尚、Fiware/Orionでは、ひとつのEntityを複数回に分けて登録する事が可能です。

■csvファイル
 本利用例は、利用例-9の報告の一覧には不具合情報も含まれている事を想定しています。本利用例のcsvはこちら

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

Attribute 追加ルール 説明
id

dataSource

csvAttr csvから値を求めるために、csvの項目名として"案件番号"を指定します
prefix idを作成するために、"urn:ngsi-ld:Complaint:"を案件番号の前に付加します
phenomenon

category

dataSource

csvAttr csvの項目名として"現象"を指定します
remarks

dataSource

csvAttr csvの項目名として"現象補足"を指定します
name

dataSource

csvAttr csvから値を求めるために、csvの項目名として"案件名"を指定します
status

dataSource

csvAttr csvから値を求めるために、csvの項目名として"ステータス"を指定します
timestamps 複数の日付を設定するため、itemsをリスト構造にします

timestamp

dataSource

csvAttr csvから値を求めるために、timestampに対し、csvの項目名として"検査日"と"報告日"をそれぞれ指定します
step

const timestampが何の日時がを示すために、即値で"検査"と"報告"をそれぞれ指定します
refBuilding

dataSource

dataSource

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

0 dataSource

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

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

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

category

dataSource

csvAttr csvの項目名として"部位"と"部位補足"をそれぞれ指定します
remarks

dataSource

csvAttr csvの項目名として"部位"と"部位補足"をそれぞれ指定します
cause

category

dataSource

csvAttr csvの項目名として"原因"を指定します
remarks

dataSource

csvAttr csvの項目名として"原因補足"を指定します
name

dataSource

csvAttr csvから値を求めるために、csvの項目名として"緊急度"を指定します

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

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


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

c:\Tools>Python ctoj.py dir=c:/Tools/data/ inputfile=Reportcsv.csv outputfile=Complaintjson.json schemafile=Complaint.exschema.json Buildingfile=Buildingjson.jsonDevicefile=Devicejson.json logfile=Complaintlog.txt
##### start ctoj converter #####
CSV translated to JSON successfully. output Entity number: 3

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


 [
   {
     "id": "urn:ngsi-ld:Complaint:2023-123-000010",
     "type": "Complaint",
     "phenomenon": {
       "type": "StructuredValue",
       "value": {
         "category": [
           "汚損"
         ],
         "remarks": "ペンキ様の赤色塗料の文字"
       }
     },
     "name": {
       "type": "Text",
       "value": "吉浦まちづくりセンター図書室汚損"
     },
     "timestamps": {
       "type": "Array",
       "value": [
         {
           "step": "検査",
           "timestamp": "2023-07-25"
         },
         {
           "step": "報告",
           "timestamp": "2023-07-25"
         }
       ]
     },
     "refBuilding": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
     },
     "zones": {
       "type": "StructuredValue",
       "value": {
         "abstracts": [
           "建物内部",
           "2F",
           "図書室"
         ],
         "remarks": "北側の内壁に設置"
       }
     },
     "parts": {
       "type": "StructuredValue",
       "value": {
         "abstracts": [
           "空調機"
         ]
       }
     },
     "cause": {
       "type": "StructuredValue",
       "value": {
         "abstracts": "盗難・いたづら(故意)",
         "remarks": "現象から推定"
       }
     },
     "severityMark": {
       "type": "Text",
       "value": "C"
     }
   },
   {
     "id": "urn:ngsi-ld:Complaint:2023-155-000001",
     "type": "Complaint",
     "phenomenon": {
       "type": "StructuredValue",
       "value": {
         "category": [
           "雨漏り"
         ],
         "remarks": "窓側天井から雨漏り"
       }
     },
     "name": {
       "type": "Text",
       "value": "吉浦まちづくりセンター休憩室雨漏り"
     },
     "timestamps": {
       "type": "Array",
       "value": [
         {
           "step": "検査",
           "timestamp": "2023-06-30"
         },
         {
           "step": "報告",
           "timestamp": "2023-06-30"
         }
       ]
     },
     "refBuilding": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
     },
     "zones": {
       "type": "StructuredValue",
       "value": {
         "abstracts": [
           "建物内部",
           "1F",
           "休憩室"
         ]
       }
     },
     "parts": {
       "type": "StructuredValue",
       "value": {
         "abstracts": [
           "天井"
         ],
         "remarks": "窓側"
       }
     },
     "cause": {
       "type": "StructuredValue",
       "value": {
         "abstracts": "その他",
         "remarks": "屋上ドレインホールのつまり"
       }
     },
     "severityMark": {
       "type": "Text",
       "value": "A"
     }
   },
   {
     "id": "urn:ngsi-ld:Complaint:2023-155-000002",
     "type": "Complaint",
     "phenomenon": {
       "type": "StructuredValue",
       "value": {
         "category": [
           "汚損 "
         ],
         "remarks": "シミが発生"
       }
     },
     "name": {
       "type": "Text",
       "value": "吉浦まちづくりセンター休憩室汚損"
     },
     "timestamps": {
       "type": "Array",
       "value": [
         {
           "step": "検査",
           "timestamp": "2023-07-03"
         },
         {
           "step": "報告",
           "timestamp": "2023-07-03"
         }
       ]
     },
     "refBuilding": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
     },
     "zones": {
       "type": "StructuredValue",
       "value": {
         "abstracts": [
           "建物内部",
           "1F",
           "休憩室"
         ]
       }
     },
     "parts": {
       "type": "StructuredValue",
       "value": {
         "abstracts": [
           "天井"
         ]
       }
     },
     "cause": {
       "type": "StructuredValue",
       "value": {
         "abstracts": "その他",
         "remarks": "雨漏りの乾燥"
       }
     },
     "severityMark": {
       "type": "Text",
       "value": "C"
     }
   }
 ]

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

02: inputdir: c:/Tools/Data/, inputfile: Reportcsv.csv
04: directory: Buildingdir, Buildingfile: Buildingfile
09: outputdir: c:/Tools/Data/, outputfile: Complaintjson.json
10: CSV Line# 2
10: CSV Line# 3
10: CSV Line# 4
12: CSV translated to JSON successfully. Enity number: 3