Menu

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


Column
Link集
用語集


Coppell

Technologies

利用例-1 (Organization)


■利用例の概要
 法人を表現するデータモデルである、Organizationをcsvファイルから生成します。

■csvファイル
 ここでは、3種類の法人に関するデータを登録します。一つ目は公共施設を所有する自治体。二つ目は公共施設の管理を委託される事業者。最後は施設に設置されている設備のメーカです。メーカは2社分登録します。メーカは法人番号だけが分かれば良いので、csv上は法人番号とメーカ名しか登録しません。このメーカの情報は「利用例-6 (DeviceModel)」で使用します。
 尚、本利用例では自治体の行は本来呉市の1行だけで良いのですが、住所のバリエーションを示すために東広島市、府中町、府中市も登録しています。
 サンプルのcsvファイルのファイル名は"Organizationcsv.csv"であり、data配下に格納してあります。

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

Attribute 追加ルール 説明
id

dataSource

csvAttr csvの項目名として、"法人番号"を指定します。
prefix 法人番号の前に付加する文字列として、"urn:ngsi-ld:Organization:JP"を指定します。これにより、idの文字列が"urn:ngsi-ld:Organization:JP"と法人番号を結合した文字列になります
identificationGroup 法人番号と自治体コードの二つのデータを登録したいので、arrayのitemをリスト構造とし、要素を二つ並べます
0 identificationType

const 最初の要素に格納すべき文字列として、"自治体コード"を指定します
identification

dataSource

csvAttr 最初の要素に、csvの項目名として"自治体コード"を指定します
1 identificationType

const 二つ目の要素に格納すべき文字列として、"法人番号"を指定します
identification

dataSource

csvAttr 二つ目の要素に、csvの項目名として"法人番号"を指定します
name

dataSource

csvAttr csvの項目名として、"法人名"を指定します。
containedInPlace 市区町村名は県名と組み合わせないと一意にならないため、自治体の場合は都道府県名を登録しています

dataSource

csvAttr csvの項目名として、"都道府県"を指定します。
nameKana

dataSource

csvAttr csvの項目名として、"法人名カナ"を指定します
nameEn

dataSource

csvAttr csvの項目名として、"法人名英語"を指定します
category

dataSource

csvAttr csvの項目名として、"組織種別"を指定します
description

dataSource

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

dataSource

csvAttr csvの項目名として、"url"を指定します
registeredAddress


format "PostalAddress"を指定します。これにより、住所の文字列内に県名や自治体名が記載されていても、項目を分割して登録したり、番地などの番号を半角数字に置き換えるなどにより形式を統一します
addressRegion 都道府県名

const 都道府県名は所在地に含まれていない場合もあるので、format処理の参考情報として"広島県"を指定します。これにより、所在地に都道府県名が含まれていないと、広島県が格納されます
addressLocality 市区町村名。但し区名は東京の特別区だけです。指定都市の区はstreetAddressに格納します

const 市区町村名は所在地に含まれていない場合もあるので、format処理の参考情報として"呉市"を指定します。これにより、所在地に市区町村名が含まれていないと、呉市が格納されます
streetAddress 自治体名以下の住所です

dataSource

csvAttr csvの項目名として、"所在地"を指定します
contactPoint
0 telephone 自治体名以下の住所です
0 dataSource

csvAttr csvの項目名として、"電話番号"を指定します

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

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


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

c:\Tools>Python ctoj.py dir=c:/Tools/data/ inputfile=Organizationcsv.csvoutputfile=Organizationjson.json schemafile=Organization.exschema.json logfile=Organizationlog.txt
##### start ctoj converter #####
CSV translated to JSON successfully. Number of output Entities: 7

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


 [
   {
     "id": "urn:ngsi-ld:Organization:JP9000020342025",
     "type": "Organization",
     "identificationGroup": {
       "type": "IdentificationGroup",
       "value": [
         {
           "identification": "342025",
           "identificationType": "自治体コード"
         },
         {
           "identification": "9000020342025",
           "identificationType": "法人番号"
         }
       ]
     },
     "name": {
       "type": "Text",
       "value": "呉市"
     },
     "containedInPlace": {
       "type": "Text",
       "value": "広島県"
     },
     "nameKana": {
       "type": "Text",
       "value": "クレシ"
     },
     "nameEn": {
       "type": "Text",
       "value": "Kure City"
     },
     "category": {
       "type": "Text",
       "value": "市区町村"
     },
     "registeredAddress": {
       "type": "PostalAddress",
       "value": {
         "addressRegion": "広島県",
         "addressLocality": "呉市",
         "streetAddress": "中央4-1-6"
       }
     }
   },
   {
     "id": "urn:ngsi-ld:Organization:JP2000020342122",
     "type": "Organization",
     "identificationGroup": {
       "type": "IdentificationGroup",
       "value": [
         {
           "identification": "342122",
           "identificationType": "自治体コード"
         },
         {
           "identification": "2000020342122",
           "identificationType": "法人番号"
         }
       ]
     },
     "name": {
       "type": "Text",
       "value": "東広島市"
     },
     "containedInPlace": {
       "type": "Text",
       "value": "広島県"
     },
     "nameKana": {
       "type": "Text",
       "value": "ヒギシヒロシマシ"
     },
     "nameEn": {
       "type": "Text",
       "value": "Higashihiroshima City"
     },
     "category": {
       "type": "Text",
       "value": "市区町村"
     },
     "registeredAddress": {
       "type": "PostalAddress",
       "value": {
         "addressRegion": "広島県",
         "addressLocality": "東広島市",
         "streetAddress": "西条栄町8-29"
       }
     }
   },
   {
     "id": "urn:ngsi-ld:Organization:JP7000020342084",
     "type": "Organization",
     "identificationGroup": {
       "type": "IdentificationGroup",
       "value": [
         {
           "identification": "342084",
           "identificationType": "自治体コード"
         },
         {
           "identification": "7000020342084",
           "identificationType": "法人番号"
         }
       ]
     },
     "name": {
       "type": "Text",
       "value": "府中市"
     },
     "containedInPlace": {
       "type": "Text",
       "value": "広島県"
     },
     "nameKana": {
       "type": "Text",
       "value": "フチュウシ"
     },
     "nameEn": {
       "type": "Text",
       "value": "Fuchu City"
     },
     "category": {
       "type": "Text",
       "value": "市区町村"
     },
     "registeredAddress": {
       "type": "PostalAddress",
       "value": {
         "addressRegion": "広島県",
         "addressLocality": "府中市",
         "streetAddress": "府川町315"
       }
     }
   },
   {
     "id": "urn:ngsi-ld:Organization:JP2000020343021",
     "type": "Organization",
     "identificationGroup": {
       "type": "IdentificationGroup",
       "value": [
         {
           "identification": "343021",
           "identificationType": "自治体コード"
         },
         {
           "identification": "2000020343021",
           "identificationType": "法人番号"
         }
       ]
     },
     "name": {
       "type": "Text",
       "value": "府中町"
     },
     "containedInPlace": {
       "type": "Text",
       "value": "広島県"
     },
     "nameKana": {
       "type": "Text",
       "value": "フチュウチョウ"
     },
     "nameEn": {
       "type": "Text",
       "value": "Fuchu Town"
     },
     "category": {
       "type": "Text",
       "value": "市区町村"
     },
     "registeredAddress": {
       "type": "PostalAddress",
       "value": {
         "addressRegion": "広島県",
         "addressLocality": "安芸郡府中町",
         "streetAddress": "大通3-5-1"
       }
     }
   },
   {
     "id": "urn:ngsi-ld:Organization:JP0990123456789",
     "type": "Organization",
     "identificationGroup": {
       "type": "IdentificationGroup",
       "value": [
         {
           "identification": "0990123456789",
           "identificationType": "法人番号"
         }
       ]
     },
     "name": {
       "type": "Text",
       "value": "ハリー株式会社"
     },
     "nameKana": {
       "type": "Text",
       "value": "ハリーカブシキガイシャ"
     },
     "nameEn": {
       "type": "Text",
       "value": "Harry Corporation"
     },
     "category": {
       "type": "Text",
       "value": "株式会社"
     },
     "registeredAddress": {
       "type": "PostalAddress",
       "value": {
         "addressRegion": "広島県",
         "addressLocality": "呉市",
         "streetAddress": "吉浦潭鼓町14-1"
       }
     }
   },
   {
     "id": "urn:ngsi-ld:Organization:JP7010001008844",
     "type": "Organization",
     "identificationGroup": {
       "type": "IdentificationGroup",
       "value": [
         {
           "identification": "7010001008844",
           "identificationType": "法人番号"
         }
       ]
     },
     "name": {
       "type": "Text",
       "value": "日立製作所"
     },
     "containedInPlace": {
       "type": "Text",
       "value": "Hitachi Ltd."
     },
     "category": {
       "type": "Text",
       "value": "株式会社"
     }
   },
   {
     "id": "urn:ngsi-ld:Organization:JP3120001236504",
     "type": "Organization",
     "identificationGroup": {
       "type": "IdentificationGroup",
       "value": [
         {
           "identification": "3120001236504",
           "identificationType": "法人番号"
         }
       ]
     },
     "name": {
       "type": "Text",
       "value": "パナソニック"
     },
     "containedInPlace": {
       "type": "Text",
       "value": "Panasonic Corporation"
     },
     "category": {
       "type": "Text",
       "value": "株式会社"
     }
   }
 ]

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

02: inputdir: c:/Tools/Data/, inputfile: Organizationcsv.csv
09: outputdir: c:/Tools/Data/, outputfile: Organizationjson.json
10: CSV Line# 2
10: CSV Line# 3
10: CSV Line# 4
10: CSV Line# 5
10: CSV Line# 6
10: CSV Line# 7
10: CSV Line# 8
12: CSV translated to JSON successfully. Enities number: 7