Menu

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


Column
Link集
用語集


Coppell

Technologies

利用例-5 (Facility)


■利用例の概要
 建物を表現するデータモデルである、Facilityをcsvファイルから生成します。但し、BuildingのsattributeであるZonesについては、利用例-6で別に生成します。これは、建物内の場所を表すcsvと建物そのものを表すcsvは別のファイルになるであろうと考えているためです。但し、idは共通化されており、名寄せは可能となっています。

■csvファイル
 利用例-3と同じcsvファイルから項目を選んで変換します。
 本利用例は、施設管理を想定しているため、csvのデータは建物単位作成されています。 サンプルのcsvファイルのファイル名は"Facilitycsv.csv"であり、data配下に格納してあります。

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

Attribute 追加ルール 説明
id

dataSource

csvAttr csvの項目名として、"施設コード"を指定します。
prefix 施設IDの前に付加する文字列として、"urn:ngsi-ld:Facility:JP9000020342025-"を指定します。これにより、idの文字列が"urn:ngsi-ld:Facility:JP"と法人番号と施設IDを結合した文字列になります
name

dataSource

csvAttr identifivationに、csvの項目名として"施設名"を指定します。
nameKana

dataSource

csvAttr identifivationに、csvの項目名として"施設名カナ"を指定します。
nameEn

dataSource

csvAttr identifivationに、csvの項目名として"施設名英語"を指定します。
originalCategory

dataSource

csvAttr identifivationに、csvの項目名として"用途"を指定します。
refBuilding

dataSource

csvAttr csvの項目名として、"建物不動産ID"を指定します。
prefix 建物の不動産IDの前に付加する文字列として、"urn:ngsi-ld:Building:"を指定します。これにより、idの文字列が"urn:ngsi-ld:Building:"と建物の不動産IDを結合した文字列になります
alternate 自治体が保有する土地は登記しなくても良いという例外の規定があり、実際に殆どの不動産は登記されていません。このため、不動産IDも割り振られていないのが現状です。そこで、不動産IDがなかった場合に備えてalternateの指定もします。この指定はcsvAttrで指定したcsvファイルの項目に値が無かった場合に使用されます。内容はcsvAttrとprefixの指定であり、不動産IDもどきの文字列を生成します。この例では、法人番号と管理通番を組み合わせて文字列を生成しました

dataSource

csvAttr csvの項目名として、"管理通番"を指定します。
prefix 管理通番の前に付加する文字列として、"urn:ngsi-ld:Building:JP9000020342025-"を指定します。これにより、idの文字列が"urn:ngsi-ld:Building:JP"と呉市の法人番号と管理通番を結合した文字列になります
contactPoint

telephone

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=Facilitycsv.csv outputfile=Facilityjson.json schemafile=Facility.exschema.json logfile=Facilitylog.txtOrganizationfile=Organizationjson.json
##### start ctoj converter #####
CSV translated to JSON successfully. Number of output Entities: 4

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


 [
   {
     "id": "urn:ngsi-ld:Facility:JP9000020342025-0402004",
     "type": "Facility",
     "name": {
       "type": "Text",
       "value": "呉市吉浦支所"
     },
     "nameKana": {
       "type": "Text",
       "value": "クレシヨシウラシショ"
     },
     "nameEn": {
       "type": "Text",
       "value": "Kure City Yoshiura Branch"
     },
     "originalCategory": {
       "type": "Array",
       "value": [
         "市民文科系施設"
       ]
     },
     "refBuilding": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
     },
     "floor": {
       "type": "Text",
       "value": "1F"
     },
     "contactPoint": {
       "type": "ContactPoint",
       "value": [
         {
           "telephone": [
             "0823-01-2345"
           ]
         }
       ]
     }
   },
   {
     "id": "urn:ngsi-ld:Facility:JP9000020342025-0402004",
     "type": "Facility",
     "name": {
       "type": "Text",
       "value": "呉市吉浦まちづくりセンター"
     },
     "nameKana": {
       "type": "Text",
       "value": "クレシマチヅクリセンター"
     },
     "nameEn": {
       "type": "Text",
       "value": "Kure City Yoshiura Community Development Center"
     },
     "originalCategory": {
       "type": "Array",
       "value": [
         "市民文科系施設"
       ]
     },
     "refBuilding": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
     },
     "floor": {
       "type": "Text",
       "value": "2F"
     },
     "contactPoint": {
       "type": "ContactPoint",
       "value": [
         {
           "telephone": [
             "0823-01-2345"
           ]
         }
       ]
     }
   },
   {
     "id": "urn:ngsi-ld:Facility:JP9000020342025-0300012",
     "type": "Facility",
     "name": {
       "type": "Text",
       "value": "呉市立吉浦小学校"
     },
     "nameKana": {
       "type": "Text",
       "value": "クレシリツヨシウラショウガツコウ"
     },
     "nameEn": {
       "type": "Text",
       "value": "Kure Municipal Yoshiura Elementary School"
     },
     "originalCategory": {
       "type": "Array",
       "value": [
         "学校教育系施設"
       ]
     },
     "refBuilding": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-03000012"
     }
   },
   {
     "id": "urn:ngsi-ld:Facility:JP9000020342025-0400008",
     "type": "Facility",
     "name": {
       "type": "Text",
       "value": "呉市立吉浦中学校"
     },
     "nameKana": {
       "type": "Text",
       "value": "クレシリツヨシウラチュウガツコウ"
     },
     "nameEn": {
       "type": "Text",
       "value": "Kure Municipal Yoshiura Junior High School"
     },
     "originalCategory": {
       "type": "Array",
       "value": [
         "学校教育系施設"
       ]
     },
     "refBuilding": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Building:JP9000020342025-04000008"
     }
   }
 ]

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

08: inputdir: c:/Tools/data/, inputfile: Facilitycsv.csv
09: referenced entities. directory: c:/Tools/data/, Organizationfile: Organizationjson.json
09: outputdir: c:/Tools/data/, outputfile: Facilityjson.json
10: CSV Line# 2
10: CSV Line# 3
10: CSV Line# 4
10: CSV Line# 5
12: CSV translated to JSON successfully. Entities number: 4