ケーススタディ#2 – CSVから共通データ仕様の形式への変換 (5/15) — 建物(Building)

「建物(Building)」の項目への変換ルール

 ケーススタディ#1で作成した施設一覧例から「建物(Building)」に変換します。ケーススタディ#1では施設一覧に建物情報も入れ込んでいたので、変換後の建物情報も施設につきひとつなります。施設一覧の例で「建物(Building)」から選択した項目は以下の通りです。

元となるCSV表の項目名共通データ仕様上の項目名表形式からの変換の説明
管理通番id本来idは”url:ngsi-ld:Building:”という文字列の後に不動産IDを繋げた形式ですが、本ケーススタディでは自治体の実情に合わせて不動産IDが無いという設定にしました。そこで、代替え手段として”url:ngsi-ld:Building:JP”の後にオーナーの「法人(Organization)」と管理通番からidを生成する事で、どの建物ともIDが重複しない様にします。法人番号はオーナー情報表から法人番号を求め、管理通番と組み合わせてidの文字列を作成したいところですが、本ケーススタディはオーナーは一つに決まっている事を前提として、建物一覧にはオーナーを特定する情報がありませんので、法人番号は固定の文字列としてidを作成します。
(なし)typeデータモデルのtypeを登録します。ここでは”Building”を登録します。
施設名name施設の名称です。”○○市役所”などです。建物の名称も同一としてそのまま転記します。
施設名カナnameKana施設の名称のカナ表記です。同様にそのまま転記します。
土地IDrefLandこの建物の敷地の土地IDです。このケーススタディでは1つしかありません。Array形式なので、一つ目の項目に登録します。土地IDは、法人番号と管理通番から生成します。
identificationGroup不動産ID等を登録するための項目です。Arrayの項目ですので一つ目の項目に登録します。
建物不動産IDidentification建物の不動産IDです。但し、このケーススタディでは自治体の実情に合わせて全て空欄にしてあります。
(なし)identificationtype建物の不動産IDである事を示すため”不動産ID”を登録します。

CSV表の準備

 「土地(Land)」同様、ケーススタディ#1の施設一覧表の例を使います。

■入力となる表

施設施設名カナ法人番号管理通番建物不動産ID土地不動産ID所管部門名部門コード所管部門電話番号住所国郵便番号住所都道府県住所市区町村住所町字以下ステータス
呉市役所クレシヤクショ900002034202500000001JP7378501広島県呉市中央4-1-6
呉市吉浦市民センタークレシヨシウラシミンセンター900002034202501234567市民部吉浦まちづくりセンター04020040823-31-7540JP7370852広島県呉市吉浦東本町1-7-23
呉市立吉浦小学校クレシリツヨシウラショウガッコウ900002034202503000012学校施設課06020030823-25-3447JP7370853広島県呉市吉浦中町2-6-5
呉市立吉浦中学校クレシリツヨシウラチュウガッコウ900002034202504000008学校施設課06020030823-25-3447JP7370862広島県呉市狩留賀町8-6

■CSVファイルの内容

施設名,施設名カナ,法人番号,管理通番,建物不動産ID,土地不動産ID,所管部門名,部門コード,所管部門電話番号,住所国,郵便番号,住所都道府県,住所市区町村,住所町字以下,ステータス
呉市役所,クレシヤクショ,9000020342025,00000001,,,,,,JP,7378501,広島県,呉市,中央4-1-6,
呉市吉浦市民センター,クレシヨシウラシミンセンター,9000020342025,01234567,,,市民部吉浦まちづくりセンター,0402004,0823-31-7540,JP,7370852,広島県,呉市,吉浦東本町1-7-23,
呉市立吉浦小学校,クレシリツヨシウラショウガッコウ,9000020342025,03000012,,,学校施設課,0602003,0823-25-3447,JP,7370853,広島県,呉市,吉浦中町2-6-5,
呉市立吉浦中学校,クレシリツヨシウラチュウガッコウ,9000020342025,04000008,,,学校施設課,0602003,0823-25-3447,JP,7370862,広島県,呉市,狩留賀町8-6,

建物情報の変換

 このケーススタディでは”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/Building/",    
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "dataSource": {
        "csvAttr": "建物不動産ID",    ----------------------------- 建物不動産IDの中身を確認します
        "prefix": "urn:ngsi-ld:Building:",
        "alternate": {    ---------------------------------------- 建物不動産IDが無かった場合の代替え処理です
          "dataSource": [
            {
              "csvAttr": "法人番号",    --------------------------- 法人番号を読み出します
              "prefix": "urn:ngsi-ld:Building:JP"    ------------- 法人番号の前に付加する文字列です
            },
            {
              "csvAttr": "管理通番",    -------------------------- 管理通番を読み出します
              "prefix": "-"    ----------------------------------- 管理通番の前に付加する文字列です
            }
          ]
        }
      }
    },
    "type": {"const": "Building"},
    "category": {
      "type": "object",
      "properties": {
        "type": {"const": "Text"},
        "value": {"type": "string"}
      },
      "required": ["type", "value"]
    },
    "name": {
      "type": "object",
      "properties": {
        "type": {"const": "Text"},
        "value": {
          "type": "string",
          "dataSource": {"csvAttr": "施設名"}
        }
      },
      "required": ["type", "value"]
    },
以下略--

 この拡張JSON Schemaを指定してctojツールを実行すると、以下の様に共通データ仕様の形式変換した結果が得られます。下図は変換後の先頭部分です。この例では床面積などの各種詳細情報が入力の施設一覧表に無いので非常にシンプルですが、一般的には多様な情報が並びます。

  [
    {
      "id": "urn:ngsi-ld:Building:JP9000020342025-00000001",
      "type": "Building",
      "name": {
        "type": "Text",
        "value": "呉市役所"
      },
      "nameKana": {
        "type": "Text",
        "value": "クレシヤクショ"
      },
      "refLand": {
        "type": "Relationship",
        "value": [
          "urn:ngsi-ld:Land:JP0990123456001-00000001"
        ]
      }
    },
    {
      "id": "urn:ngsi-ld:Building:JP9000020342025-01234567",
      "type": "Building",
      "name": {
        "type": "Text",
        "value": "呉市吉浦市民センター"
      },
      "nameKana": {
        "type": "Text",
        "value": "クレシヨシウラシミンセンター"
      },
      "refLand": {
        "type": "Relationship",
        "value": [
          "urn:ngsi-ld:Land:JP0990123456001-01234567"
        ]
      }
    },
--以下略--