Menu

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


Column
Link集
用語集


Coppell

Technologies

利用例-10 (Report)


■利用例の概要
 報告の一つひとつを表現するデータモデルである、Reportをcsvファイルから生成します。尚、。この例ではComplaintの実行結果を参照するので、「利用例-11 (Complaint)」を先に実行しておく必要があります。

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

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

Attribute 追加ルール 説明
id この例では案件コードと枝番を組み合わせることで、一意な文字列を生成しています

dataSource

0 csvAttr csvの項目名として"案件コード"を指定します
prefix idの先頭部分を作成するために、"urn:ngsi-ld:Report:JP9000020342025-"を案件コードの前に付加します。JP以降はこの例では呉市の法人番号です。
1 csvAttr csvの項目名として"枝番"を指定します
prefix idの残りを作成するために、"-:"を枝番の前に付加してつなげます
timestamp

dataSource

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

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

dataSource

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

dataSource

dataSource この例ではComplaintのidを作ります。

csvAttr csvの項目名として"案件コード"を指定します
prefix Complaintのidの先頭部分を作成するために、"urn:ngsi-ld:Complaint:JP9000020342025-"を案件コードの前に付加します。JP以降はこの例では呉市の法人番号です。
entityType 案件コードからBuildingのidを求めるために、検索対象に"Complaint"を指定します
searchAttr 検索キーとして"id"を指定します
valueAttr Buildingのidが格納されているAttributeである"refBuilding"を指定します
refComplaint

dataSource

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

dataSource

csvAttr csvの項目名として"簡易修繕"を指定します
remarks

dataSource

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

dataSource

csvAttr csvの項目名として"要望"を指定します
opinion

dataSource

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

0 title

dataSource

csvAttr csvの項目名として"報告書タイトル1"を指定します
fileName

dataSource

csvAttr csvの項目名として"報告書ファイル名1"を指定します
filePath

dataSource

csvAttr csvの項目名として"報告書パス1"を指定します
1 title

dataSource

csvAttr csvの項目名として"報告書タイトル2"を指定します
fileName

dataSource

csvAttr csvの項目名として"報告書ファイル名2"を指定します
filePath

dataSource

csvAttr csvの項目名として"報告書パス2"を指定します
2 title

dataSource

csvAttr csvの項目名として"報告書タイトル3"を指定します
fileName

dataSource

csvAttr csvの項目名として"報告書ファイル名3"を指定します
filePath

dataSource

csvAttr csvの項目名として"報告書パス3"を指定します
3 title

dataSource

csvAttr csvの項目名として"報告書タイトル4"を指定します
fileName

dataSource

csvAttr csvの項目名として"報告書ファイル名4"を指定します
filePath

dataSource

csvAttr csvの項目名として"報告書パス4"を指定します

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

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


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.jsonComplaintfile=Complaintjson.json logfile=Reportlog.txt
##### start ctoj converter #####
CSV translated to JSON successfully. Number of output Entities: 3

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


 [
   {
     "id": "urn:ngsi-ld:Report:JP9000020342025-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:JP9000020342025-2023-123-000010"
       ]
     },
     "damageControl": {
       "type": "Text",
       "value": "汚れ・つまりの清掃"
     },
     "request": {
       "type": "Text",
       "value": "図書館の雰囲気を維持する観点から早急な処置が望ましい"
     },
     "opinion": {
       "type": "Text",
       "value": "簡易修繕で汚損が解消されたことから、更なる修繕は不要と考える"
     },
     "document": {
       "type": "Array",
       "value": [
         {
           "title": "2023-123-000010-001",
           "fileName": "2023-123-000010-001",
           "filePath": "a/b/report"
         }
       ]
     }
   },
   {
     "id": "urn:ngsi-ld:Report:JP9000020342025-2023-155-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:JP9000020342025-2023-155-000001"
       ]
     },
     "damageControl": {
       "type": "Text",
       "value": "屋上ドレインホールのつまり"
     },
     "request": {
       "type": "Text",
       "value": "天井シミ等は別案件として管理"
     },
     "document": {
       "type": "Array",
       "value": [
         {
           "fileName": "2023-155-000001-005",
           "filePath": "2023-155-000001-005"
         },
         {
           "title": "a/b/report"
         }
       ]
     }
   },
   {
     "id": "urn:ngsi-ld:Report:JP9000020342025-2023-155-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:JP9000020342025-2023-155-000002"
       ]
     },
     "document": {
       "type": "Array",
       "value": [
         {
           "title": "2023-155-000002-009",
           "fileName": "2023-155-000002-009",
           "filePath": "a/b/report"
         }
       ]
     }
   }
 ]

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

08: inputdir: c:/Tools/data/, inputfile: Reportcsv.csv
09: referenced entities. directory: c:/Tools/data/, Buildingfile: Buildingjson.json
09: referenced entities. directory: c:/Tools/data/, Complaintfile: Complaintjson.json
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. Entities number: 3