ケーススタディ#2 – 不具合情報のcsvファイルを活用した多目的電子データ生成

利用ツール概要

 このケーススタディではケーススタディ#1と同様に、無償公開されているCoppell Technologiesの”ctoj”というツールを利用します。ケーススタディ#1の末尾にツールの自製に関する記事を掲載しましたので、自製も検討しては如何でしょうか。

報告情報と案件情報の作成

 このケーススタディのFMシステムは報告情報と案件(不具合)情報をひとつのcsvファイルで出力すると仮定しています。

 まずは、Excelを使って法人情報のcsvファイルを作成します。の項目名と変換後のAttribute名の対応を設計します。このケーススタディでは以下の様に変換の対応表を策定しました。

■報告(Report)

csv項目名変換後のAttribute名補足
報告番号id報告番号の前に”urn:ngsi-ld:Report:”を付けてidを生成して登録
報告日timestampExcel形式から標準形式に変換して登録
category即値として”不具合情報”を登録
検査日dateOperationExcel形式から標準形式に変換して登録
施設番号refTargetBuildingからfacilityIDが施設番号と一致するEntityを検索し、idの値を登録
案件番号refComplaint案件番号の前に”urn:ngsi-ld:Complaint:”を付けてComplaintのidを生成して登録
簡易修繕damageControlそのまま登録
指示事項requestそのまま登録
所見opinionそのまま登録

■案件(Complaint)

csv項目名変換後のAttribute名補足
案件番号id案件番号の前に”urn:ngsi-ld:Complaint:”を付けてidを生成して登録
現象phenomenon.categoryArrayの要素としてそのまま登録
現象補足phenomenon.remarksそのまま登録
案件名nameそのまま登録
ステータスstatusそのまま登録
検査日timestamps[0].timestampArrayの一つ目の要素のtimestampにExcel形式から標準形式に変換して登録。stepには即値で”検査”を登録
報告日timestamps[1].timestampArrayの二つ目の要素のtimestampにExcel形式から標準形式に変換して登録。stepには即値で”報告”を登録
施設番号refBuildingBuildingからfacilityIDが施設番号と一致するEntityを検索し、idの値を登録
場所大分類zones.abstracts[0]Arrayの一つ目の要素にそのまま登録
場所中分類zones.abstracts[1]Arrayの二つ目の要素にそのまま登録
場所細分類zones.abstracts[2]Arrayの三つ目の要素にそのまま登録
場所補足zones.remarksそのまま登録
部位parts.abstracts[0]Arrayの一つ目の要素にそのまま登録
部位補足parts..remarksそのまま登録
原因cause.abstractsそのまま登録
原因補足cause.remarksそのまま登録
緊急度severityMarkそのまま登録(2023-02-06現在、この仕様は未確定です)

 FMシステムが出力すると想定したcsvは以下の通りです。このFMシステムは案件(不具合)情報と報告情報をひとつのcsvで出力すると想定しています。

このデータをcsvファイルとして書き込みます。その際、”ctoj”の指定通り、utf-8で書き込みます。

 次に、このcsvファイルをJSON形式に変換するための拡張JSON Schemaを用意しますが、報告と案件の場合は例えば以下となります。左が報告、右が案件となります。詳細はツールのwebサイトをご覧ください。

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://ppp-database.org/spec/datamodel/Report/",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "dataSource": {
        "csvAttr": "報告番号",
        "prefix": "urn:ngsi-ld:Report:"
        }
      },
    "type": {"const": "Report"},
    "timestamp": {
      "type": "object",
      "properties": {
        "type": {"const": "Date"},
        "value": {
          "type": "string",
          "format": "date",
          "dataSource": {"csvAttr": "報告日"}
        }
      },
      "required": ["type", "value"]
    },
    "category": {
      "type": "object",
      "properties": {
        "type": {"const": "Text"},
        "value": {
--以下略--
{
  "$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:"
      }
    },
    "type": {"const": "Complaint"},
    "phenomenon": {
      "type": "object",
      "properties": {
        "type": {"const": "StructuredValue"},
        "value": {
          "type": "object",
          "properties": {
            "category": {
              "type": "array",
              "items": {
                "type": "string",
                "dataSource": {"csvAttr": "現象"}
              }
            },
            "remarks": {
              "type": "string",
              "dataSource": {"csvAttr": "現象補足"}
--以下略--

 これをctojツールに入力すると、以下の様にExcelのcsvデータを共通データ仕様に形式変換した結果が得られます。日付の項目がYYYY/MM/DDというExcelの形式から、YYYY-MM-DDのGIFの形式に変換されている事がわかります。

  [
    {
      "id": "urn:ngsi-ld:Report:2023-123-000010-001",
      "type": "Report",
      "timestamp": {
        "type": "Date",
        "value": "2023-07-25"
      },
      "category": {
        "type": "Text",
        "value": "不具合報告"
      },
      "dateOperation": {
        "type": "Date",
        "value": "2023-07-25"
      },
      "refTarget": {
        "type": "Relationship",
        "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
      },
      "refComplaint": {
        "type": "Array",
        "value": [
          "urn:ngsi-ld:Complaint:2023-123-000010"
        ]
      },
      "damageControl": {
        "type": "Text",
        "value": "汚れ・つまりの清掃"
      },
--以下略--
  [
    {
      "id": "urn:ngsi-ld:Complaint:2023-123-000010",
      "type": "Complaint",
      "phenomenon": {
        "type": "StructuredValue",
        "value": {
          "category": [
            "汚損"
          ],
          "remarks": "ペンキ様の赤色塗料の文字"
        }
      },
      "name": {
        "type": "Text",
        "value": "吉浦まちづくりセンター図書室汚損"
      },
      "status": {
        "type": "Text",
        "value": "完了届出"
      },
      "timestamps": {
        "type": "Array",
        "value": [
          {
            "step": "検査",
            "timestamp": "2023-07-25"
          },
          {
            "step": "報告",
--以下略--

 以上で本ケーススタディは終了です。