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

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

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

元となるCSV表の項目名共通データ仕様上の項目名表形式への変換の説明
施設コードididは”url:ngsi-ld:Facility:”という文字列の後に国コード、法人番号、および施設コードを繋げた形式です、国コードは日本国内の団体であれば”JP”固定です。施設一覧にはオーナーを特定する情報がありませんので、法人番号は固定の文字列としてidを作成します。
(なし)typeデータモデルのtypeを登録します。ここでは”Facility”を登録します
施設名name施設の名称です。”○○市役所”などです。そのまま転記します。
施設名カナnameKana施設の名称のカナ表記です。そのまま転記します。
施設名英語nameEn施設名の英語表記です。そのまま転記します。
個別郵便番号postalCode施設が個別郵便番号を有する場合の郵便番号です。そのまま転記します。
管理通番refBuildingこの施設が入居している建物の建物IDです。建物IDは施設一覧には無い情報なので、管理通番で「建物(Building)」を検索して建物IDを取り出します
フロアfloor入居する建物内の位置です。方書にフロア情報も必要な場合に登録します。そのまま転記します。
originalCategory施設カルテ等に記述するオーナーが定める施設分類です。Array構造です。この例では二階層を想定していてます
大分類[0]オーナーが定める施設分類の大分類。そのまま転記します。
小分類[1]オーナーが定める施設分類の小分類。そのまま転記します。

CSV表の準備

 「土地(Land)」同様、ケーススタディ#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教育施設小学校呉市立吉浦小学校03000012
0400008呉市立吉浦中学校クレシリツヨシウラチュウガッコウKure Municipal Yoshiura Junior High School教育施設中学校呉市立吉浦中学校04000008

■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,教育施設,小学校,呉市立吉浦小学校,,03000012
0400008,呉市立吉浦中学校,クレシリツヨシウラチュウガッコウ,Kure Municipal Yoshiura Junior High School,教育施設,中学校,呉市立吉浦中学校,,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/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"]
    },
--以下略--

 この拡張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"
      },
      "refBuilding": {
        "type": "Relationship",
        "value": "urn:ngsi-ld:Building:JP9000020342025-00000001"
      },
      "floor": {
        "type": "Text",
        "value": "本庁舎"
      }
    },
    {
      "id": "urn:ngsi-ld:Facility:JP9000020342025-0100022",
      "type": "Facility",
      "name": {
        "type": "Text",
        "value": "呉市吉浦支所"
      },
      "nameKana": {
        "type": "Text",
        "value": "クレシヨシウラシショ"
      },
      "nameEn": {
        "type": "Text",
        "value": "Kure City Yoshiura Branch"
      },
      "refBuilding": {
        "type": "Relationship",
        "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
      },
      "floor": {
        "type": "Text",
        "value": "1階"
      }
    },
--以下略--