Menu

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


Column
Link集
用語集


Coppell

Technologies

利用例-9 (Report)


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

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

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

Attribute 追加ルール 説明
id

dataSource

csvAttr csvの項目名として"報告番号"を指定します
prefix idを作成するために、"urn:ngsi-ld:Report:"を製造番号の前に付加します
timestamp

dataSource

csvAttr csvの項目名として"報告日"を指定します
category このAttributeはcsvAttrが無いので、省略されない様にrequiredにこのAttribute nameを追加します

const 即値として"不具合報告"を指定します
dateOperation

dataSource

csvAttr csvの項目名として"検査日"を指定します
refTarget

dataSource

dataSource

csvAttr csvの項目名として"施設番号"を指定します
entityType 施設番号からBuildingのidを求めるために、検索対象に"Building"を指定します
searchAttr 施設番号が格納されているAttributeである、"facilityID"を指定します
valueAttr idが格納されているAttributeである"id"を指定します
refComplaint

dataSource

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

dataSource

csvAttr csvから値を求めるために、csvの項目名として"簡易修繕"を指定します
request

dataSource

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

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=Reportjson.json schemafile=Report.exschema.json Buildingfile=Buildingjson.json logfile=Reportlog.txt
##### start ctoj converter #####
CSV translated to JSON successfully. output Entity number: 3

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


 [
   {
     "id": "urn:ngsi-ld:Report:2023-123-000010-001",
     "type": "Report",
     "timestamp": {
       "type": "Date",
       "value": "2023-07-25"
     },
     "category": {
       "type": "Text",
       "value": "不具合報告"
     },
     "dateOperation": {
       "type": "Date",
       "value": "2023-07-25"
     },
     "refTarget": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
     },
     "refComplaint": {
       "type": "Array",
       "value": [
         "urn:ngsi-ld:Complaint:2023-123-000010"
       ]
     },
     "damageControl": {
       "type": "Text",
       "value": "汚れ・つまりの清掃"
     },
     "request": {
       "type": "Text",
       "value": "図書館の雰囲気を維持する観点から早急な処置が望ましい"
     },
     "opinion": {
       "type": "Text",
       "value": "簡易修繕で汚損が解消されたことから、更なる修繕は不要と考える"
     }
   },
   {
     "id": "urn:ngsi-ld:Report:2023-123-000001-005",
     "type": "Report",
     "timestamp": {
       "type": "Date",
       "value": "2023-06-30"
     },
     "category": {
       "type": "Text",
       "value": "不具合報告"
     },
     "dateOperation": {
       "type": "Date",
       "value": "2023-06-30"
     },
     "refTarget": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
     },
     "refComplaint": {
       "type": "Array",
       "value": [
         "urn:ngsi-ld:Complaint:2023-155-000001"
       ]
     },
     "damageControl": {
       "type": "Text",
       "value": "汚れ・つまりの清掃"
     }
   },
   {
     "id": "urn:ngsi-ld:Report:2023-123-000002-009",
     "type": "Report",
     "timestamp": {
       "type": "Date",
       "value": "2023-07-03"
     },
     "category": {
       "type": "Text",
       "value": "不具合報告"
     },
     "dateOperation": {
       "type": "Date",
       "value": "2023-07-03"
     },
     "refTarget": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
     },
     "refComplaint": {
       "type": "Array",
       "value": [
         "urn:ngsi-ld:Complaint:2023-155-000002"
       ]
     }
   }
 ]

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

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