「法人(Organization)」の項目への変換ルール
ケーススタディ#1のオーナー情報表の例で選択した項目は以下の通りです。データモデル「法人(Organization)」に変換するので、「法人」以外から選択した項目は無視します。各項目の変換の仕方も表内記入しました。変換が必要なのはidだけです。CSVでは必要が無かったtypeはNGSI V2の規定に従って登録します。
共通データ仕様上の項目名 | 表形式への変換の説明 | ||
---|---|---|---|
法人番号 | id | idの生成ルールに従って変換します。 | |
(なし) | type | データモデルのtypeを登録します。ここでは”Organization”を登録します | |
identificationGroup | Arrayなので2つの項目をひとつにまとめます | ||
自治体コード | identification | Arrayの一つ目の項目にそのまま代入すると共に、identificationTypeに”自治体コード”を登録します | |
法人番号 | identification | Arrayのふたつ目の項目にそのまま代入すると共に、identificationTypeに”法人番号”を登録します | |
法人名 | name | オーナーの法人名です。そのまま代入します。 | |
県名 | containedInPlace | 基礎自治体が位置する都道府県名です。そのまま代入します。 | |
法人名カナ | nameKana | 法人名のカナ表記です。そのまま代入します。 | |
法人名英語 | nameEn | 法人名の英語表記です。そのまま代入します。 | |
組織種別 | category | ”市区町村”、”都道府県”、”国研”などです。そのまま代入します。 | |
説明 | description | この組織に関する説明です。そのまま代入します。 | |
url | url | 法人が開設しているWebサイトURLです。そのまま代入します。 | |
contactPoint | 各種連絡先の情報です。Array項目なので、一つ目の項目へ変換します。 | ||
電話番号 | telephone | 代表電話などです。そのまま代入します。 |
CSV表の準備
ケーススタディ#1のオーナー情報表の例を使いますが、本ケーススタディでは後でメーカーの法人番号が必要になるので、メーカーの情報も追加します。追加する必要があるのは、メーカー名と法人番号だけです。
■入力となる表
法人番号 | 自治体コード | 法人名 | 都道府県 | 法人名カナ | 法人名英語 | 組織種別 | 説明 | url | 電話番号 | 施設コード | 個別郵便番号 | 郵便番号 | 住所国 | 住所都道府県 | 住所市区町村 | 住所 | 方書建物名 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
9000020342025 | 342025 | 呉市 | 広島県 | クレシ | Kure City | 市区町村 | 戦艦大和のふるさととして有名 | https://www.city.kure.lg.jp/ | 0823-25-3100 | 0100001 | 7378501 | JP | 広島県 | 呉市 | 中央4-1-6 | 呉市役所 | |
0990123456001 | パナ製作所 | ||||||||||||||||
0990123456002 | KAKA | ||||||||||||||||
0990123456003 | 西洋シャッター | ||||||||||||||||
0990123456004 | 吉浦電機製作所 | ||||||||||||||||
0990123456005 | 吉浦サウンドシステム | ||||||||||||||||
0990123456006 | 吉浦街路灯 | ||||||||||||||||
0990123456007 | ガラホン | ||||||||||||||||
0990123456008 | 吉浦遊具 | ||||||||||||||||
0990123456009 | 吉浦プール |
■CSVファイルの内容
法人番号,自治体コード,法人名,都道府県,法人名カナ,法人名英語,組織種別,説明,url,電話番号,施設コード,個別郵便番号,郵便番号,住所国,住所都道府県,住所市区町村,住所,方書建物名 9000020342025,342025,呉市,広島県,クレシ,Kure City,市区町村,戦艦大和のふるさととして有名,https://www.city.kure.lg.jp/,0823-25-3100,0100001,,7378501,JP,広島県,呉市,中央4-1-6,呉市役所 0990123456001,,パナ製作所,,,,,,,,,,,,,,, 0990123456002,,KAKA,,,,,,,,,,,,,,, 0990123456003,,西洋シャッター,,,,,,,,,,,,,,, 0990123456004,,吉浦電機製作所,,,,,,,,,,,,,,, 0990123456005,,吉浦サウンドシステム,,,,,,,,,,,,,,, 0990123456006,,吉浦街路灯,,,,,,,,,,,,,,, 0990123456007,,ガラホン,,,,,,,,,,,,,,, 0990123456008,,吉浦遊具,,,,,,,,,,,,,,, 0990123456009,,吉浦プール,,,,,,,,,,,,,,, |
法人情報の変換
このケーススタディでは”ctoj”というツールを使いますので、csvファイルを作成する際にはutf-8で書き込んでおきます。
このケーススタディでは以下の様に拡張JSON Schemaを策定しました。拡張JSON Schemaとは、本協議会が公開しているJSON SchemaにcsvからJSONファイルに変換する際のルールを追記したものです。詳しくはツールのサイトを参照してください。「法人」の場合は例えば以下となります。
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://ppp-database.org/spec/datamodel/Organization/",
"type": "object",
"properties": {
"id": { ---------------------------------------- "id"というAttributeに関する指定です
"type": "string", ---------------------------- "id"に対応する値は文字列です
"dataSource": { ------------------------------ CSVから取り出します
"csvAttr": "法人番号", ---------------------- CSVの法人番号から値を取ってきます
"prefix": "urn:ngsi-ld:Organization:JP" ---- 法人番号の前につなげる文字列です
}
},
"type": { -------------------------------------- "type"というAttributeに関する指定です
"const": "Organization" ---------------------- "type"に対応する値は"Organization"という固定値です
},
"identificationGroup": { ----------------------- "identification"というAttributeに関する指定です
"type": "object",
"properties": {
"type": {"const": "IdentificationGroup"}, -- "typeというSub-attributuonの値は"IdentificationGroup"と言う固定値です
"value": { --------------------------------- "value"というSub-attributeに関する指定です
"type": "array", ------------------------- このAun-attributionはArrayです
"items": [
{ -------------------------------------- Arrayの一つ目の指定です
"type": "object",
"properties":{
"identification": { ---------------- "identification"というSub-ttributeに関する指定です
"type": "string",
"dataSource": {"csvAttr": "自治体コード"}
},
"identificationType": {"const": "自治体コード"}
--以下略--
この拡張JSON Schemaを指定してctojツールを実行すると、以下の様に共通データ仕様の形式変換した結果が得られます。下の左図は変換後の先頭部分、右が追加したメーカーの部分です。
余談ですが、NGSI V2ではこの”id”と”type”以外のAttributeに”type”と”value”が記述されている形式をNormalized形式と呼んでいます。簡略化して見やすくしたkeyValues形式と言うものがありますが、type名などが失われるので、情報を保存する際にはこのNormalized形式を利用します。
[
{
"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": {
--以下略--
{
"id": "urn:ngsi-ld:Organization:JP0990123456001",
"type": "Organization",
"identificationGroup": {
"type": "IdentificationGroup",
"value": [
{
"identification": "0990123456001",
"identificationType": "法人番号"
}
]
},
"name": {
"type": "Text",
"value": "パナ製作所"
}
},
{
"id": "urn:ngsi-ld:Organization:JP0990123456002",
"type": "Organization",
"identificationGroup": {
"type": "IdentificationGroup",
"value": [
{
"identification": "0990123456002",
"identificationType": "法人番号"
}
]
},
"name": {
"type": "Text",
"value": "KAKA"
}
},
--以下略--
更に余談ですが、このツールでは、出力の形式を選べます。記載の例はPythonなどでそのままリストとして読み込める形式ですが、この他に、デジタル庁の推奨モジュールであるFiware/Orionにそのまま入力できる形式も選択可能です。