ケーススタディ#2 – CSVから共通データ仕様の形式への変換 (11/14) — 案件(Complaint)

「案件(Complaint)」の項目への変換ルール

 ケーススタディ#1で作成した「案件一覧の例」のーCSVから「案件(Complaint)」の共通データモデルの形式に変換します。案件一覧表の例で「案件(Complaint)」のデータモデルから選択した項目と変換ルールは以下の通りです。

元となるのCSVの項目名共通データ仕様上の項目名項目の内容
案件コードididは”urn:ngsi-ld:Complaint:”と国コードと法人番号と案件コードを組み合わせた文字列としたので、案件コードから変換する事にします。
(なし)typeデータモデルのtypeを登録します。ここでは”Complaint”を登録します
phenomenon不具合現象です。
現象概要category現象の概要。“破損”、“汚損”など。Arrayの一つ目の項目に転記します。
現象補足 remarks前項の補足です。例えば、”コンクリートの割れ”など。そのまま転記します。
説明description説明を記載してあります。そのまま転記します。
参照案件コードisPartOf一つの不具合により複数の案件を登録する場合に、関連する案件の案件IDを登録します。案件ID同様に、参照案件コードから変換します。
座標location不具合の座標です。「案件一覧の例」では採用していないため変換しません。
案件名name案件の名称です。そのまま転記します。
追加情報seeAlso追加情報のurlです。「案件一覧の例」では採用していないため変換しません。
ステータスstatus活動状況を登録します。”処置中”、”完了”など。そのまま転記します。
timestamps受付、報告、完了のみっつの日付をArrayの項目にそのまま転記します。尚、”step”の値は用語定義されたものではありません
[0]Arrayの最初の項目群です。
受付日付timestamp不具合を認識した日付です。そのまま転記します。
(なし)step“受付”を登録します
[1]Arrayの二つ目の項目群です。
報告日付timestamp最初に報告した日付です。そのまま転記します。
(なし)step“報告”を登録します
[2]Arrayの三つ目の項目群です。
処置日付timestamp処置が完了した日付です。そのまま転記します。
(なし)step“処置”を登録します
管理通番refBuildingこの案件の対象となる建物(Building)の建物ID(id)です。「建物」を管理通番で検索し、idを求めます。
zones不具合発生の場所です。
abstracts最大3項目のArrayです。
場所大分類[0]場所の大分類です。そのまま転記します。
場所中分類[1]場所の中分類 です。そのまま転記します。
場所小分類[2]場所の小分類 です。そのまま転記します。
場所補足remarks前項の補足です。例えば、”北側”など。そのまま転記します。
parts不具合を発生した部位や設備
部位概要abstracts不具合を発生した部位や設備の概要。そのまま転記します。
部位名または設備名refComponent「部位」または「設備」を部位名または設備名から検索し、idを求めます
部位補足remarks部位の補足。”基礎部分”、”蛍光管”など。そのまま転記します。
cause不具合を発生させた報告の時点での推定原因。そのまま転記します。
原因概要 abstracts原因の概要。用語から選択。そのまま転記します。
原因補足remarks前項の補足。そのまま転記します。
緊急度マークseverityMark不具合に対する緊急性を示すマーク。そのまま転記します。
緊急度補足severity不具合に対する説明文。そのまま転記します。
処置計画repairPlan処置の計画です。”部品交換”などと記載します。そのまま転記します。

CSV表の準備

 ケーススタディ#1の報告一覧表の例を使います。但し、一行目の実施日と報告日を標準形式ではなく、良く使われる非標準の形式にしてあります。これは、ツールで標準の形式に整形されるのをお見せするためです。

■入力となる表

案件コード案件名建物名管理通番場所大分類場所中分類場所小分類場所補足部位概要部位/設備名称部位/設備補足現象概要現象補足参照案件コード原因概要原因補足緊急度マーク緊急度補足処置計画受付日付報告日付処置日付ステータス説明
20240405-001吉浦センター1Fトイレ不点灯呉市吉浦市民センター01234567建物内部1F男子トイレ 照明器具照明-1F-支所-003LED電球不点灯  経年劣化 B  2024/4/52024/4/524/4/5完了 
20240410-002吉小階段ノンスリップ呉市立吉浦小学校03000012校舎2F西階段室 ノンスリップ 下から3段目はがれ端から15センチ程度 経年劣化 S階段踏み外しの可能性 2024-04-092024-04-102024-04-10完了 
20240410-003     吉小階段ノンスリップ本処置呉市立吉浦小学校03000012校舎2F西階段室 ノンスリップ 階段全段荒れ摩耗が見られる20240410-002経年劣化 A将来階段踏み外しの可能性ノンスリップの交換2024-04-092024-04-15 不具合報告 
20240415-004吉中インターホン汚損呉市立吉浦中学校04000008屋外正門  呼出し設備呼出-3F-吉中-004インターホン表面汚損マジック様の塗料付着 盗難・いたずら(故意) C  2024-04-152024-04-202024-04-15完了 
20240420-005吉浦センター正面玄関空調滴下呉市吉浦市民センター01234567建物内部1F正面玄関 空調機空調-1F-支所-009室内機漏水  経年劣化排水不良A利用者の頭上で漏水 2024-04-202024-04-212024-04-21完了 

■CSVファイルの内容

案件コード,案件名,建物名,管理通番,場所大分類,場所中分類,場所小分類,場所補足,部位概要,部位/設備名称,部位/設備補足,現象概要,現象補足,参照案件コード,原因概要,原因補足,緊急度マーク,緊急度補足,処置計画,受付日付,報告日付,処置日付,ステータス,説明
20240405-001,吉浦センター1Fトイレ不点灯,呉市吉浦市民センター,01234567,建物内部,1F,男子トイレ,,照明器具,照明-1F-支所-003,LED電球,不点灯,,,経年劣化,,B,,,2024/4/5,2024/4/5,24/4/5,完了,
20240410-002,吉小階段ノンスリップ,呉市立吉浦小学校,03000012,校舎,2F,西階段室,,ノンスリップ,,下から3段目,はがれ,端から15センチ程度,,経年劣化,,S,階段踏み外しの可能性,,2024-04-09,2024-04-10,2024-04-10,完了,
20240410-003,吉小階段ノンスリップ本処置,呉市立吉浦小学校,03000012,校舎,2F,西階段室,,ノンスリップ,,階段全段,荒れ,摩耗が見られる,20240410-002,経年劣化,,A,将来階段踏み外しの可能性,ノンスリップの交換,2024-04-09,2024-04-15,,不具合報告,
20240415-004,吉中インターホン汚損,呉市立吉浦中学校,04000008,屋外,正門,,,呼出し設備,呼出-3F-吉中-004,インターホン表面,汚損,マジック様の塗料付着,,盗難・いたずら(故意),,C,,,2024-04-15,2024-04-20,2024-04-15,完了,
20240420-005,吉浦センター正面玄関空調滴下,呉市吉浦市民センター,01234567,建物内部,1F,正面玄関,,空調機,空調-1F-支所-009,室内機,漏水,,,経年劣化,排水不良,A,利用者の頭上で漏水,,2024-04-20,2024-04-21,2024-04-21,完了,

案件情報の変換

 このケーススタディでは”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/Complaint/",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "dataSource": {
        "csvAttr": "案件コード",
        "prefix": "urn:ngsi-ld:Complaint:JP9000020342025-"
      }
    },
--途中略--
    },
    "timestamps": {
      "type": "object",
      "properties": {
        "type": {"const": "Array"},
        "value": {
          "type": "array",
          "items": [
            {
              "type": "object",
              "properties": {
                "step": {
                  "type": "string",
                  "const": "受付"
                },
                "timestamp": {
                  "type": "string",
                  "dataSource": {"csvAttr": "受付日付"},
                  "format": "date"    ------------------------------- 日付の形式を指定し居ます
                }
              },
              "required": ["step", "timestamp"]
            },
--以下略--

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

  [
    {
      "id": "urn:ngsi-ld:Complaint:JP9000020342025-20240405-001",
      "type": "Complaint",
      "phenomenon": {
        "type": "StructuredValue",
        "value": {
          "category": [
            "不点灯"
          ]
        }
      },
      "name": {
        "type": "Text",
        "value": "吉浦センター1Fトイレ不点灯"
      },
      "status": {
        "type": "Text",
        "value": "完了"
      },
      "timestamps": {
        "type": "Array",
        "value": [
          {
            "step": "受付",
            "timestamp": "2024-04-05"    ------------------------------- 日付の形式が標準形式に修正されています
          },
          {
            "step": "報告",
            "timestamp": "2024-04-05"    ------------------------------- 日付の形式が標準形式に修正されています
          },
          {
            "step": "処置",
            "timestamp": "2024-04-05"    ------------------------------- 日付の形式が標準形式に修正されています
          }
        ]
      },
      "refBuilding": {
        "type": "Relationship",
        "value": "urn:ngsi-ld:Building:JP0990123456001-01234567"    ---- 「建物」を検索してidを求めています
      },
      "zones": {
        "type": "StructuredValue",
        "value": {
          "abstracts": [
            "建物内部",
            "1F",
            "男子トイレ"
          ]
        }
      },
--以下略--