Menu

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


Column
Link集
用語集


Coppell

Technologies

利用例-1 (重複Entityのマージ)


■利用例の概要
 ひとつのjsonファイル内にidとEntity typeが一致するEntityが複数登録されている際にidとtypeが一致するEntityを探し、それらのEntityを一つのEntityにまとめます。

■入力ファイル
 本利用例では、入力ファイルとしてctojの利用例-4で作成したJSONファイルを利用します。ctojの利用例-4では、施設一覧のcsvからLandのEntityを作成したのですが、複合施設があり、一つの建物内に複数の施設があったため、同じ建物に対するBuildingのEntityが複数出来てしまっていました。この例では最初の2件のidが一致しています。一方、最初のEntityには建物名(name)が欠落し、2つ目のEntityは建物名のカナ表記(nameKana)が欠落しています。


 [
   {
     "id": "urn:ngsi-ld:Building:JP9000020342025-01234567",
     "type": "Building",
     "nameKana": {
       "type": "Text",
       "value": "クレシヨシウラシミンセンター"
     },
     "facilityID": {
       "type": "Text",
       "value": "01234567"
     },
     "refLand": {
       "type": "Relationship",
       "value": [
         "urn:ngsi-ld:Land:JP0990123456001-01234567"
       ]
     },
     "totalFloorArea": {
       "type": "Number",
       "value": 2152
     },
     "completionYear": {
       "type": "Text",
       "value": "1996"
     },
     "refDepartment": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Department:JP9000020342025-0402004"
     }
   },
   {
     "id": "urn:ngsi-ld:Building:JP9000020342025-01234567",
     "type": "Building",
     "name": {
       "type": "Text",
       "value": "呉市吉浦市民センター"
     },
     "facilityID": {
       "type": "Text",
       "value": "01234567"
     },
     "refLand": {
       "type": "Relationship",
       "value": [
         "urn:ngsi-ld:Land:JP0990123456001-01234567"
       ]
     },
     "totalFloorArea": {
       "type": "Number",
       "value": 2152
     },
     "completionYear": {
       "type": "Text",
       "value": "1996"
     },
     "refDepartment": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Department:JP9000020342025-0402004"
     }
   },
   {
     "id": "urn:ngsi-ld:Building:JP9000020342025-03000012",
     "type": "Building",
     "name": {
       "type": "Text",
       "value": "呉市立吉浦小学校"
     },
     "nameKana": {
       "type": "Text",
       "value": "クレシリツヨシウラショウガツコウ"
     },
     "facilityID": {
       "type": "Text",
       "value": "03000012"
     },
     "refLand": {
       "type": "Relationship",
       "value": [
         "urn:ngsi-ld:Land:JP0990123456001-03000012"
       ]
     },
     "totalFloorArea": {
       "type": "Number",
       "value": 4000
     },
     "completionYear": {
       "type": "Text",
       "value": "1980"
     },
     "refDepartment": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Department:JP9000020342025-0602003"
     }
   },
   {
     "id": "urn:ngsi-ld:Building:JP9000020342025-04000008",
     "type": "Building",
     "name": {
       "type": "Text",
       "value": "呉市立吉浦中学校"
     },
     "nameKana": {
       "type": "Text",
       "value": "クレシリツヨシウラチュウガツコウ"
     },
     "facilityID": {
       "type": "Text",
       "value": "04000008"
     },
     "refLand": {
       "type": "Relationship",
       "value": [
         "urn:ngsi-ld:Land:JP0990123456001-04000008"
       ]
     },
     "totalFloorArea": {
       "type": "Number",
       "value": 3000
     },
     "completionYear": {
       "type": "Text",
       "value": "1990"
     },
     "refDepartment": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Department:JP9000020342025-0602003"
     }
   }
 ]


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


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

c:\Tools>Python jtoj.py dir=c:/Tools/data/ outputfile=BuildingMergedjson.jsoninputfile1=BuildingMainjson.json type=Building logfile=BuildingMergelog.txt
dir: c:/Tools/data/, file: BuildingMainjson.json
json merged successfully. Number of output Entities: 3

■変換結果
 ツール実行結果は以下の通りです。最初のENtityがひとつにまとめられ、nsmeとnameKanaの両方があることが分かります。


[
 {
   "id": "urn:ngsi-ld:Building:JP9000020342025-01234567",
   "type": "Building",
   "nameKana": {
     "type": "Text",
     "value": "クレシヨシウラシミンセンター"
   },
   "facilityID": {
     "type": "Text",
     "value": "01234567"
   },
   "refLand": {
     "type": "Relationship",
     "value": [
       "urn:ngsi-ld:Land:JP0990123456001-01234567"
     ]
   },
   "totalFloorArea": {
     "type": "Number",
     "value": 2152
   },
   "completionYear": {
     "type": "Text",
     "value": "1996"
   },
   "refDepartment": {
     "type": "Relationship",
     "value": "urn:ngsi-ld:Department:JP9000020342025-0402004"
   },
   "name": {
     "type": "Text",
     "value": "呉市吉浦市民センター"
   }
 },
 {
   "id": "urn:ngsi-ld:Building:JP9000020342025-03000012",
   "type": "Building",
   "name": {
     "type": "Text",
     "value": "呉市立吉浦小学校"
   },
   "nameKana": {
     "type": "Text",
     "value": "クレシリツヨシウラショウガツコウ"
   },
   "facilityID": {
     "type": "Text",
     "value": "03000012"
   },
   "refLand": {
     "type": "Relationship",
     "value": [
       "urn:ngsi-ld:Land:JP0990123456001-03000012"
     ]
   },
   "totalFloorArea": {
     "type": "Number",
     "value": 4000
   },
   "completionYear": {
     "type": "Text",
     "value": "1980"
   },
   "refDepartment": {
     "type": "Relationship",
     "value": "urn:ngsi-ld:Department:JP9000020342025-0602003"
   }
 },
 {
   "id": "urn:ngsi-ld:Building:JP9000020342025-04000008",
   "type": "Building",
   "name": {
     "type": "Text",
     "value": "呉市立吉浦中学校"
   },
   "nameKana": {
     "type": "Text",
     "value": "クレシリツヨシウラチュウガツコウ"
   },
   "facilityID": {
     "type": "Text",
     "value": "04000008"
   },
   "refLand": {
     "type": "Relationship",
     "value": [
       "urn:ngsi-ld:Land:JP0990123456001-04000008"
     ]
   },
   "totalFloorArea": {
     "type": "Number",
     "value": 3000
   },
   "completionYear": {
     "type": "Text",
     "value": "1990"
   },
   "refDepartment": {
     "type": "Relationship",
     "value": "urn:ngsi-ld:Department:JP9000020342025-0602003"
   }
 }
]

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

01: input1: directory: c:/Tools/data/, inputfile: BuildingMainjson.json
03: outputdir: c:/Tools/data/, outputfile: BuildingMergedjson.json
06: JSON merged successfully. Number of output Entities: 3