ケーススタディ#2 – CSVから共通データ仕様の形式への変換 (8/15) — 入居施設(Facility)

入居「施設(Facility)」の項目への変換ルール

 ケーススタディ#1で作成した入居施設一覧例から「施設(Facility)」に変換します。施設一覧表の例で「施設(Facility)」から選択した項目は以下の通りです。

元となるCSV表の項目名共通データ仕様上の項目名表形式への変換の説明
施設コードididは”url:ngsi-ld:Facility:”という文字列の後に国コード、法人番号、および施設コードを繋げた形式です、国コードは日本国内の団体であれば”JP”固定です。
(なし)typeデータモデルのtypeを登録します。ここでは”Facility”を登録します。
施設名name施設の名称です。”○○市役所”などです。そのまま転記します。
施設名カナnameKana施設の名称のカナ表記です。そのまま転記します。
施設名英語nameEn施設の名称の英語表記です。そのまま転記します。
管理通番facilityParent入居施設の場合に入居している施設(複合施設)を識別する番号です。idは”url:ngsi-ld:Facility:”という文字列の後に国コード、法人番号、および管理通番を繋げた形式です、国コードは日本国内の団体であれば”JP”固定です。この項目は2025-06-02現在承認されていません。
大分類originalCategory0施設の大分類です。そのまま転記します。
小分類originalCategory1施設の小類です。そのまま転記します。
方書建物名refBuildingこの施設が入居している建物の建物IDです。管理通番で「建物(Building)」を検索して建物IDを取り出します。
方書フロア名floorこの施設が入居しているフロア名です。そのまま転記します。

CSV表の準備

 ケーススタディ#1の入居施設一覧表の例を使います。

■入力となる表

施設コード施設名施設名カナ施設名英語大分類小分類方書建物名方書フロア名管理通番
0100001呉市役所クレシヤクショKure City Hall行政施設庁舎呉市役所本庁舎00000001
0100022呉市吉浦支所クレシヨシウラシショKure City Yoshiura Branch行政施設庁舎呉市吉浦市民センター1階01234567
0402004呉市吉浦まちづくりセンタークレシマチヅクリセンターKure City Yoshiura Community Development Center文化施設地区センター呉市吉浦市民センター2階01234567
0300012呉市立吉浦小学校クレシリツヨシウラショウガッコウKure Municipal Yoshiura Elementary School教育施設小学校呉市立吉浦小学校
0400008呉市立吉浦中学校クレシリツヨシウラチュウガッコウKure Municipal Yoshiura Junior High School教育施設中学校呉市立吉浦中学校

■CSVファイルの内容

施設コード,施設名,施設名カナ,施設名英語,大分類,小分類,方書建物名,方書フロア名,管理通番
0100001,呉市役所,クレシヤクショ,Kure City Hall,行政施設,庁舎,呉市役所,本庁舎,00000001
0100022,呉市吉浦支所,クレシヨシウラシショ,Kure City Yoshiura Branch,行政施設,庁舎,呉市吉浦市民センター,1階,01234567
0402004,呉市吉浦まちづくりセンター,クレシマチヅクリセンター,Kure City Yoshiura Community Development Center,文化施設,地区センター,呉市吉浦市民センター,2階,01234567
0300012,呉市立吉浦小学校,クレシリツヨシウラショウガッコウ,Kure Municipal Yoshiura Elementary School,教育施設,小学校,呉市立吉浦小学校,,
0400008,呉市立吉浦中学校,クレシリツヨシウラチュウガッコウ,Kure Municipal Yoshiura Junior High School,教育施設,中学校,呉市立吉浦中学校,,

施設情報の変換

 このケーススタディでは”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/Facility/",    
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "dataSource": {
          "csvAttr": "施設コード",
          "prefix": "urn:ngsi-ld:Facility:JP9000020342025-"
      }
    },
    "type": {"const": "Facility"},
    "name": {
      "type": "object",
      "properties": {
        "type": {"const": "Text"},
        "value": {
          "type": "string",
          "dataSource": {"csvAttr": "施設名"}
        }
      },
      "required": ["type", "value"]
    },
    "nameKana": {
      "type": "object",
      "properties": {
        "type": {"const": "Text"},
        "value": {
          "type": "string",
          "dataSource": {"csvAttr": "施設名カナ"}
        }
      },
      "required": ["type", "value"]
    },
    "nameEn": {
      "type": "object",
      "properties": {
        "type": {"const": "Text"},
        "value": {
          "type": "string",
          "dataSource": {"csvAttr": "施設名英語"}
        }
      },
      "required": ["type", "value"]
    },
--以下略--

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

  [
    {
      "id": "urn:ngsi-ld:Facility:JP9000020342025-0100001",
      "type": "Facility",
      "name": {
        "type": "Text",
        "value": "呉市役所"
      },
      "nameKana": {
        "type": "Text",
        "value": "クレシヤクショ"
      },
      "nameEn": {
        "type": "Text",
        "value": "Kure City Hall"
      },
      "facilityID": {
        "type": "Text",
        "value": "0100001"
      },
      "originalCategory": {
        "type": "Array",
        "value": [
          "行政施設",
          "庁舎"
        ]
      },
      "refBuilding": {
        "type": "Relationship",
        "value": "urn:ngsi-ld:Building:JP9000020342025-00000001"
      },
      "facilityParent": {
        "type": "Relationship",
        "value": "urn:ngsi-ld:Facility:JP9000020342025-00000001"
      },
      "floor": {
        "type": "Text",
        "value": "本庁舎"
      }
    },
--以下略--