ケーススタディ#2 – CSVから共通データ仕様の形式への変換 (13/14) — エリア・データ連携基盤への登録

[付録] エリア・データ連携基盤への登録

 ここまでで電子データを共通データ仕様に合致した用語と形式で作成した例を紹介しましたが、将来的にはエリア・データ連携基盤が各自治体に整備される事を想定して電子データをエリア・データ連携基盤に登録する例を紹介します。エリア・データ連携基盤としては、デジタル庁が推奨するFiware/Orionを前提として記述します。

 ここまでの例では、電子データはモノやコトを表すEntityが並んだものとして作成されています。エリア・データ連携基盤にこれを登録するには、以下の3つの方法があります。

  • プログラムを作成して、Entityの並びを読み込んてエリア・データ連携基盤に登録する
  • エリア・データ連携基盤が読み込めるように、Entityの列の前後にエリア・データ連携基盤への指示を追加してエリア・データ連携基盤に入力する。指示の追加はWindowsのPowerShellや簡単なプログラムで可能です。追加すべき指示は下図の赤枠部分です
  • 本ケーススタディで使用したctojツールにはエリア・データ連携基盤が読み込めるようなJSON文を作成する機能があるので、これを利用してエリア・データ連携基盤に入力する

本ケーススタディでは、ctojを使う方法を紹介します。

 まず、ctojのツールを使用するときにパラメータとして”jsontype=batch”を追加して実行します。そうすると、生成されるJSON文に以下の赤字の部分が追加されます。この部分はFiware/Orionに対する指示で、この場合は「追加しなさい」という意味です。追加するのはentitiesで指定したもの。つまり、CSVから変換した共通データ仕様の形式になっているデータです。

{
  "actionType": "append",
  "entities": [
    {
      "id": "urn:ngsi-ld:Building:JP0990123456001-00000001",
      "type": "Building",
      "name": {
        "type": "Text",
        "value": "呉市役所"
      },
      "nameKana": {
        "type": "Text",
        "value": "クレシヤクショ"
      },
      "facilityID": {
        "type": "Text",
        "value": "00000001"
      }
    },
------- 略 -------
    {
      "id": "urn:ngsi-ld:Building:JP0990123456001-04000008",
      "type": "Building",
      "name": {
        "type": "Text",
        "value": "呉市立吉浦中学校"
      },
      "nameKana": {
        "type": "Text",
        "value": "クレシリツヨシウラチュウガッコウ"
      },
      "facilityID": {
        "type": "Text",
        "value": "04000008"
      },
      "refDepartment": {
        "type": "Relationship",
        "value": "urn:ngsi-ld:Department:JP9000020342025-0602003"
      }
    }
  ]
}

 この方法で「建物(Building)」に関する二つの変換、つまり建物と場所の変換をやり直し、エリア・データ連携基盤に入力します。入力はopenAPIなどと呼ばれるインターネットで標準となっている方法です。この方法についてはここでは記述しませんが、一般の書店などでも売っている本にも記述されていますし、インターネット上にも情報は沢山あります。例えばこちらが詳しい様です。

 建物と場所の変換はどちらも「建物(Building」への変換であり、項目が違っていただけでし。さて、両方ともエリア・データ連携基盤に入力したてあとでひとつのEntityをエリア・データ連携基盤から読み出した例が以下です。この例では、keyValuesという簡略化したJSON文を読み出しました。BuildingとそのZonesとで別のJSON文になっていたものが、エリア・データ連携基盤の中ではidで名寄せされ、ひとつのEntityになっている事が分かります。赤字部分が場所一覧から取り込まれた部分です。

[
    {
      "id": "urn:ngsi-ld:Building:JP9000020342025-00000001",
      "type": "Building",
      "facilityID": "00000001",
      "name": "呉市役所",
      "nameKana": "クレシヤクショ"
    },
    {
      "id": "urn:ngsi-ld:Building:JP9000020342025-01234567",
      "type": "Building",
      "facilityID": "01234567",
      "name": "呉市吉浦市民センター",
      "nameKana": "クレシヨシウラシミンセンター",
      "refDepartment": "urn:ngsi-ld:Department:JP9000020342025-0402004",
      "zones": [
        {
          "zoneName": "建物内部",
          "subzones": [
            {"subzoneName": ["1F",["吉浦支所","男子トイレ","女子トイレ","正面玄関","階段室","共用ロビー"]]},
            {"subzoneName": ["2F",["市民センター窓口","音楽室","調理室","図書室","階段室","共用ロビー"]]},
            {"subzoneName": ["3F",["学習室1","学習室2","階段室","共用ロビー"]]},
            {"subzoneName": ["4F",["ホール","控室1","階段室","共用ロビー"]]}
          ]
        },
        {
          "zoneName": "建物外部",
          "subzones": [
            {"subzoneName": ["屋上",["塔屋","屋上床"]]},
            {"subzoneName": ["外壁",["北面","南面","西面","東面"]]},
            {"subzoneName": ["アプローチ"]}
          ]
        },
        {
          "zoneName": "建物周辺",
          "subzones": [
            {"subzoneName": ["駐車場"]},
            {"subzoneName": ["植栽"]}
          ]
        }
      ]
    },
-- 以下略 --