利用ツール概要
このケーススタディではケーススタディ#1と同様に、無償公開されているCoppell Technologiesの”ctoj”というツールを利用します。ケーススタディ#1の末尾にツールの自製に関する記事を掲載しましたので、自製も検討しては如何でしょうか。
報告情報と案件情報の作成
このケーススタディのFMシステムは報告情報と案件(不具合)情報をひとつのcsvファイルで出力すると仮定しています。
まずは、Excelを使って法人情報のcsvファイルを作成します。の項目名と変換後のAttribute名の対応を設計します。このケーススタディでは以下の様に変換の対応表を策定しました。
■報告(Report)
csv項目名 | 変換後のAttribute名 | 補足 |
---|---|---|
報告番号 | id | 報告番号の前に”urn:ngsi-ld:Report:”を付けてidを生成して登録 |
報告日 | timestamp | Excel形式から標準形式に変換して登録 |
— | category | 即値として”不具合情報”を登録 |
検査日 | dateOperation | Excel形式から標準形式に変換して登録 |
施設番号 | refTarget | BuildingからfacilityIDが施設番号と一致するEntityを検索し、idの値を登録 |
案件番号 | refComplaint | 案件番号の前に”urn:ngsi-ld:Complaint:”を付けてComplaintのidを生成して登録 |
簡易修繕 | damageControl | そのまま登録 |
指示事項 | request | そのまま登録 |
所見 | opinion | そのまま登録 |
■案件(Complaint)
csv項目名 | 変換後のAttribute名 | 補足 |
---|---|---|
案件番号 | id | 案件番号の前に”urn:ngsi-ld:Complaint:”を付けてidを生成して登録 |
現象 | phenomenon.category | Arrayの要素としてそのまま登録 |
現象補足 | phenomenon.remarks | そのまま登録 |
案件名 | name | そのまま登録 |
ステータス | status | そのまま登録 |
検査日 | timestamps[0].timestamp | Arrayの一つ目の要素のtimestampにExcel形式から標準形式に変換して登録。stepには即値で”検査”を登録 |
報告日 | timestamps[1].timestamp | Arrayの二つ目の要素のtimestampにExcel形式から標準形式に変換して登録。stepには即値で”報告”を登録 |
施設番号 | refBuilding | Buildingから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": "報告",
--以下略--
以上で本ケーススタディは終了です。