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

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

 前ページでは場所(zones)以外の項目の変換を行いました。ここではケーススタディ#1で作成した場所一覧例から「建物(Building)」に変換します。前ページで作った「建物」とのマージは行いません。マージは本ケーススタディの末尾の付録でエリア・データ連絡基盤を使って行います。場所一覧表の例で「建物」から選択した項目は以下の通りです。

元となるCSV表の項目名共通データ仕様上の項目名表形式への変換の説明
管理通番ididは”url:ngsi-ld:Building:”という文字列の後に不動産IDを繋げた形式ですが、本ユースケースでは不動産IDが無い場合を想定しているため、代替え手段として国コード、法人番号、および管理通番を繋げた形式としました。国コードは日本国内の団体であれば”JP”固定です。場所一覧にはオーナーを特定する情報がありませんので、法人番号は固定の文字列としてidを作成します。この項目は後で前ページで作った「建物」とマージする際の突き合わせのためのキーとなります。
(なし)typeデータモデルのtypeを登録します。ここでは”Building”を登録します。前ページの「建物」と重複しますが、仕様上必須項目なので、一応作ります。
建物名name建物の名称です。前ページの「建物」と重複するので、ここでは変換しません。
管理通番facilityID施設管理業務においてオーナーが指定した管理のための建物を識別する番号です。前ページの「建物」と重複するので、ここでは変換しません。
zones建物内外の場所の名称です。多重のArrayの構造になっているため、最も細かい分類を一行に展開し、より大まかな分類は各行に登録してあります。
場所大分類zonesName最もおおまかな場所の名称です。一番外側のArrayにそのまま転記します。
subZonesArrayの項目です。
subZoneNamesubZonesの要素のArrayの項目です。
場所中分類[0]大分類を更に区分した場所の名称です
[1]subZoneNameの二つ目の項目はArrayになっています。
場所小分類[0][1]…中分類を更に区分した場所の名称です。subZoneNameの二つ目の項目にArrayで格納します

CSV表の準備

 ケーススタディ#1の場所一覧表の例を使います。

■入力となる表

建物名管理通番場所大分類場所中分類場所小分類
呉市吉浦市民センター01234567建物内部1F吉浦支所
呉市吉浦市民センター01234567建物内部1F男子トイレ
呉市吉浦市民センター01234567建物内部1F女子トイレ
呉市吉浦市民センター01234567建物内部1F正面玄関
呉市吉浦市民センター01234567建物内部1F階段室
呉市吉浦市民センター01234567建物内部1F共用ロビー
呉市吉浦市民センター01234567建物内部2F市民センター窓口
呉市吉浦市民センター01234567建物内部2F音楽室
呉市吉浦市民センター01234567建物内部2F調理室
呉市吉浦市民センター01234567建物内部2F図書室
呉市吉浦市民センター01234567建物内部2F階段室
呉市吉浦市民センター01234567建物内部2F共用ロビー
呉市吉浦市民センター01234567建物内部3F学習室1
呉市吉浦市民センター01234567建物内部3F学習室2
呉市吉浦市民センター01234567建物内部3F階段室
呉市吉浦市民センター01234567建物内部3F共用ロビー
呉市吉浦市民センター01234567建物内部4Fホール
呉市吉浦市民センター01234567建物内部4F控室1
呉市吉浦市民センター01234567建物内部4F階段室
呉市吉浦市民センター01234567建物内部4F共用ロビー
呉市吉浦市民センター01234567建物外部屋上塔屋
呉市吉浦市民センター01234567建物外部屋上屋上床
呉市吉浦市民センター01234567建物外部外壁北面
呉市吉浦市民センター01234567建物外部外壁南面
呉市吉浦市民センター01234567建物外部外壁西面
呉市吉浦市民センター01234567建物外部外壁東面
呉市吉浦市民センター01234567建物外部アプローチ
呉市吉浦市民センター01234567建物周辺駐車場
呉市吉浦市民センター01234567建物周辺植栽
呉市立吉浦小学校03000012校舎1F正面玄関
呉市立吉浦小学校03000012校舎1F職員玄関
呉市立吉浦小学校03000012校舎1F職員室
呉市立吉浦小学校03000012校舎1F校長室
呉市立吉浦小学校03000012校舎1F音楽室
呉市立吉浦小学校03000012校舎1F西階段室
呉市立吉浦小学校03000012校舎1F東階段室
呉市立吉浦小学校03000012校舎1F給食室
呉市立吉浦小学校03000012校舎2F1年1組
呉市立吉浦小学校03000012校舎2F1年2組
呉市立吉浦小学校03000012校舎2F西階段室
呉市立吉浦小学校03000012校舎2F東階段室
呉市立吉浦小学校03000012校舎2F廊下
呉市立吉浦小学校03000012校舎3F2年1組
呉市立吉浦小学校03000012校舎3F2年2組
呉市立吉浦小学校03000012校舎3F西階段室
呉市立吉浦小学校03000012校舎3F東階段室
呉市立吉浦小学校03000012校舎3F廊下
呉市立吉浦小学校03000012校舎3F工作室
呉市立吉浦小学校03000012校舎3F倉庫
呉市立吉浦小学校03000012体育館舞台
呉市立吉浦小学校03000012体育館コート
呉市立吉浦小学校03000012屋外正門
呉市立吉浦小学校03000012屋外裏門
呉市立吉浦小学校03000012屋外グランド
呉市立吉浦小学校03000012屋外花壇
呉市立吉浦中学校04000008校舎1F正面玄関
呉市立吉浦中学校04000008校舎1F職員玄関
呉市立吉浦中学校04000008校舎1F職員室
呉市立吉浦中学校04000008校舎1F校長室
呉市立吉浦中学校04000008校舎1F図書室
呉市立吉浦中学校04000008校舎1F西階段室
呉市立吉浦中学校04000008校舎1F東階段室
呉市立吉浦中学校04000008校舎1F給食室
呉市立吉浦中学校04000008校舎2F1年A組
呉市立吉浦中学校04000008校舎2F1年B組
呉市立吉浦中学校04000008校舎2F西階段室
呉市立吉浦中学校04000008校舎2F東階段室
呉市立吉浦中学校04000008校舎2F廊下
呉市立吉浦中学校04000008校舎3F2年A組
呉市立吉浦中学校04000008校舎3F2年B組
呉市立吉浦中学校04000008校舎3F西階段室
呉市立吉浦中学校04000008校舎3F東階段室
呉市立吉浦中学校04000008校舎3F廊下
呉市立吉浦中学校04000008校舎3F3年A組
呉市立吉浦中学校04000008校舎3F3年B組
呉市立吉浦中学校04000008体育館舞台
呉市立吉浦中学校04000008体育館コート
呉市立吉浦中学校04000008屋外正門
呉市立吉浦中学校04000008屋外裏門
呉市立吉浦中学校04000008屋外グランド
呉市立吉浦中学校04000008屋外花壇

■CSVファイルの内容

建物名,管理通番,場所大分類,場所中分類,場所小分類
呉市吉浦市民センター,01234567,建物内部,1F,吉浦支所
呉市吉浦市民センター,01234567,建物内部,1F,男子トイレ
呉市吉浦市民センター,01234567,建物内部,1F,女子トイレ
呉市吉浦市民センター,01234567,建物内部,1F,正面玄関
呉市吉浦市民センター,01234567,建物内部,1F,階段室
呉市吉浦市民センター,01234567,建物内部,1F,共用ロビー
呉市吉浦市民センター,01234567,建物内部,2F,市民センター窓口
呉市吉浦市民センター,01234567,建物内部,2F,音楽室
呉市吉浦市民センター,01234567,建物内部,2F,調理室
呉市吉浦市民センター,01234567,建物内部,2F,図書室
呉市吉浦市民センター,01234567,建物内部,2F,階段室
呉市吉浦市民センター,01234567,建物内部,2F,共用ロビー
呉市吉浦市民センター,01234567,建物内部,3F,学習室1
呉市吉浦市民センター,01234567,建物内部,3F,学習室2
呉市吉浦市民センター,01234567,建物内部,3F,階段室
呉市吉浦市民センター,01234567,建物内部,3F,共用ロビー
呉市吉浦市民センター,01234567,建物内部,4F,ホール
呉市吉浦市民センター,01234567,建物内部,4F,控室1
呉市吉浦市民センター,01234567,建物内部,4F,階段室
呉市吉浦市民センター,01234567,建物内部,4F,共用ロビー
呉市吉浦市民センター,01234567,建物外部,屋上,塔屋
呉市吉浦市民センター,01234567,建物外部,屋上,屋上床
呉市吉浦市民センター,01234567,建物外部,外壁,北面
呉市吉浦市民センター,01234567,建物外部,外壁,南面
呉市吉浦市民センター,01234567,建物外部,外壁,西面
呉市吉浦市民センター,01234567,建物外部,外壁,東面
呉市吉浦市民センター,01234567,建物外部,アプローチ,
呉市吉浦市民センター,01234567,建物周辺,駐車場,
呉市吉浦市民センター,01234567,建物周辺,植栽,
呉市立吉浦小学校,03000012,校舎,1F,正面玄関
呉市立吉浦小学校,03000012,校舎,1F,職員玄関
呉市立吉浦小学校,03000012,校舎,1F,職員室
呉市立吉浦小学校,03000012,校舎,1F,校長室
呉市立吉浦小学校,03000012,校舎,1F,音楽室
呉市立吉浦小学校,03000012,校舎,1F,西階段室
呉市立吉浦小学校,03000012,校舎,1F,東階段室
呉市立吉浦小学校,03000012,校舎,1F,給食室
呉市立吉浦小学校,03000012,校舎,2F,1年1組
呉市立吉浦小学校,03000012,校舎,2F,1年2組
呉市立吉浦小学校,03000012,校舎,2F,西階段室
呉市立吉浦小学校,03000012,校舎,2F,東階段室
呉市立吉浦小学校,03000012,校舎,2F,廊下
呉市立吉浦小学校,03000012,校舎,3F,2年1組
呉市立吉浦小学校,03000012,校舎,3F,2年2組
呉市立吉浦小学校,03000012,校舎,3F,西階段室
呉市立吉浦小学校,03000012,校舎,3F,東階段室
呉市立吉浦小学校,03000012,校舎,3F,廊下
呉市立吉浦小学校,03000012,校舎,3F,工作室
呉市立吉浦小学校,03000012,校舎,3F,倉庫
呉市立吉浦小学校,03000012,体育館,舞台,
呉市立吉浦小学校,03000012,体育館,コート,
呉市立吉浦小学校,03000012,屋外,正門,
呉市立吉浦小学校,03000012,屋外,裏門,
呉市立吉浦小学校,03000012,屋外,グランド,
呉市立吉浦小学校,03000012,屋外,花壇,
呉市立吉浦中学校,04000008,校舎,1F,正面玄関
呉市立吉浦中学校,04000008,校舎,1F,職員玄関
呉市立吉浦中学校,04000008,校舎,1F,職員室
呉市立吉浦中学校,04000008,校舎,1F,校長室
呉市立吉浦中学校,04000008,校舎,1F,図書室
呉市立吉浦中学校,04000008,校舎,1F,西階段室
呉市立吉浦中学校,04000008,校舎,1F,東階段室
呉市立吉浦中学校,04000008,校舎,1F,給食室
呉市立吉浦中学校,04000008,校舎,2F,1年A組
呉市立吉浦中学校,04000008,校舎,2F,1年B組
呉市立吉浦中学校,04000008,校舎,2F,西階段室
呉市立吉浦中学校,04000008,校舎,2F,東階段室
呉市立吉浦中学校,04000008,校舎,2F,廊下
呉市立吉浦中学校,04000008,校舎,3F,2年A組
呉市立吉浦中学校,04000008,校舎,3F,2年B組
呉市立吉浦中学校,04000008,校舎,3F,西階段室
呉市立吉浦中学校,04000008,校舎,3F,東階段室
呉市立吉浦中学校,04000008,校舎,3F,廊下
呉市立吉浦中学校,04000008,校舎,3F,3年A組
呉市立吉浦中学校,04000008,校舎,3F,3年B組
呉市立吉浦中学校,04000008,体育館,舞台,
呉市立吉浦中学校,04000008,体育館,コート,
呉市立吉浦中学校,04000008,屋外,正門,
呉市立吉浦中学校,04000008,屋外,裏門,
呉市立吉浦中学校,04000008,屋外,グランド,
呉市立吉浦中学校,04000008,屋外,花壇,

場所情報の変換

 このケーススタディでは”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": "管理通番",
        "prefix": "urn:ngsi-ld:Building:JP9000020342025-"
      }
    },
    "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"}
      },
      "required": ["type", "value"]
    },
    "nameKana": {
      "type": "object",
      "properties": {
        "type": {"const": "Text"},
        "value": {"type": "string"}
      },
      "required": ["type", "value"]
    },
--以下略--

 この拡張JSON Schemaを指定してctojツールを実行すると、以下の様に共通データ仕様の形式変換した結果が得られます。下図は変換後の先頭部分です。

  [
    {
      "id": "urn:ngsi-ld:Building:JP9000020342025-01234567",
      "type": "Building",
      "zones": {
        "type": "Text",
        "value": [
          {
            "zoneName": "建物内部",
            "subzones": [
              {
                "subzoneName": [
                  "1F",
                  [
                    "吉浦支所",
                    "男子トイレ",
                    "女子トイレ",
                    "正面玄関",
                    "階段室",
                    "共用ロビー"
                  ]
                ]
              },
              {
                "subzoneName": [
                  "2F",
                  [
                    "市民センター窓口",
                    "音楽室",
                    "調理室",
                    "図書室",
                    "階段室",
                    "共用ロビー"
                  ]
                ]
              },
--以下略--