Menu

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


Column
Link集
用語集


Coppell

Technologies

利用例-2 (Department)


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

■csvファイル
 ここでは、公共施設の所管部門として二つの部門を登録します。 サンプルのcsvファイルのファイル名は"Departmentcsv.csv"であり、data配下に格納してあります。

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

Attribute 追加ルール 説明
id

dataSource idを法人番号と部門番号を組み合わせて作成するので、リスト構造で二つの指定を並べます。
0 csvAttr csvの項目名として、"法人番号"を指定します。
prefix 法人番号の前に付加する文字列として、"urn:ngsi-ld:Department:JP"を指定します。これにより、idの文字列の前半が"urn:ngsi-ld:Department:JP"と呉市の法人番号を結合した文字列になります
1 csvAttr csvの項目名として、"部門コード"を指定します。
prefix 部門コードの前に付加する文字列として、"-"を指定します。これにより、最終的にidの文字列が"urn:ngsi-ld:Department:JP"と呉市の法人番号と"-"と部門コードを結合した文字列になります
pattern 部門コードはこの例では7桁ですが、Excelなどでcsvを生成すると数値と解釈されて先頭のゼロが削除されてしまう場合があるので、"^[0-9]{7}$"を指定にすることより先頭にゼロを追加して7桁に戻します
name

dataSource

csvAttr csvの項目名として、"部門名"を指定します。
departmentOf この部門が所属している法人へのリンクです。この例では呉市のEntityのidを求めて格納します

dataSource

dataSource

csvAttr csvの項目名として、"法人番号"を指定します。
entityType 法人番号からOrganizationのidを求めるために、検索するEntityとして"Organization"を指定します
searchAttr Organizationの法人名が登録されているAttributeとして、"name"を指定します
valueAttr Organizationからidを取り出すために、Attributeとして、"id"を指定します
refFacility この部門が入居している施設へのリンクです。

dataSource idを法人番号と施設コードを組み合わせて作成するので、リスト構造で二つの指定を並べます。
0 csvAttr csvの項目名として、"法人番号"を指定します。
prefix 法人番号の前に付加する文字列として、"urn:ngsi-ld:Facilityt:JP"を指定します。これにより、idの文字列の前半が"urn:ngsi-ld:Facility:JP"と呉市の法人番号を結合した文字列になります
1 csvAttr csvの項目名として、"施設コード"を指定します。
prefix 施設コードの前に付加する文字列として、"-"を指定します。これにより、最終的にidの文字列が"urn:ngsi-ld:Facility:JP"と呉市の法人番号と"-"と施設コードを結合した文字列になります
pattern 施設コードはこの例では7桁ですが、Excelなどでcsvを生成すると数値と解釈されて先頭のゼロが削除されてしまう場合があるので、"^[0-9]{7}$"を指定にすることより先頭にゼロを追加して7桁に戻します
contactPoint

telephone

dataSource

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

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

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


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

c:\Tools>Python ctoj.py dir=c:/Tools/data/ inputfile=Departmentcsv.csv outputfile=Departmentjson.json schemafile=Department.exschema.json Organizationfile=Organizationjson.json logfile=Departmentlog.txt
##### start ctoj converter #####
CSV translated to JSON successfully. output Entities number: 2

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


 [
   {
     "id": "urn:ngsi-ld:Department:JP9000020342025-0402004",
     "type": "Department",
     "name": {
       "type": "Text",
       "value": "吉浦まちづくりセンター"
     },
     "departmentOf": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Organization:JP9000020342025"
     },
     "refFacility": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Facility:JP9000020342025-0000001"
     }
   },
   {
     "id": "urn:ngsi-ld:Department:JP9000020342025-0602003",
     "type": "Department",
     "name": {
       "type": "Text",
       "value": "学校施設課"
     },
     "departmentOf": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Organization:JP9000020342025"
     },
     "refFacility": {
       "type": "Relationship",
       "value": "urn:ngsi-ld:Facility:JP9000020342025-0000002"
     }
   }
 ]

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

02: inputdir: c:/Tools/Data/, inputfile: Departmentcsv.csv
04: directory: Organizationdir, Organizationfile: Organizationfile
09: outputdir: c:/Tools/Data/, outputfile: Departmentjson.json
10: CSV Line# 2
10: CSV Line# 3
12: CSV translated to JSON successfully. Enities number: 2