ケーススタディ#1 – 施設情報のcsvファイルを活用した多目的電子データ生成 (6/8)

建物内に設置した設備の機種情報の作成

 建物に設置している多様なものは、部位(BuildingComponent)、設備(Device)、および機種(DeviceModel)に分けて登録します。本ケーススタディは部位の登録は無いと仮定しているので、設備と機種の登録となります。まずは、機種情報の登録から見てみましょう。以下、想定するcsvファイルとAttributeとの関係を示します。

■機種情報 (DeviceModel)

csv項目名Attribute名補足
メーカ名id, manufacturerNameidはメーカの法人番号と型番から生成します。メーカの法人番号は、既に作成したOrganizationのjsonファイルをツールに指定する子で、法人名から変換します。manufacturerNameはメーカ名をそのまま使用します
型番id, modelName前記の様にidの作成に使用します。また、型番自身もmodelNameにそのまま利用します
ブランド名brandNameそのまま使用します
種別categoryそのまま使用します
colorそのまま使用します
説明書documentationそのまま使用します
耐用年数serviceLifeそのまま使用します

 想定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/DeviceModel/",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "dataSource": [
        {
          "dataSource": {"csvAttr": "メーカ名"},
          "entityType": "Organization",
          "searchAttr": "name",
          "valueAttr": "identificationGroup.identification",
          "identificationType": "法人番号",
          "prefix": "urn:ngsi-ld:DeviceModel:JP"
        },
        {
          "csvAttr": "型番",
          "prefix": "-"
        }
      ]
    },
    "type": {"const": "DeviceModel"},
    "alternateName": {
      "type": "object",
      "properties": {
        "type": {"const": "Text"},
        "value": {"type": "string"}
      },
      "required": ["type", "value"]
--以下略--

 これをctojツールに入力すると、以下の様にFMシステムの出力を共通データ仕様に形式変換した結果が得られます。

  [
    {
      "id": "urn:ngsi-ld:DeviceModel:JP7010001008844-RAS-DM28KE8",
      "type": "DeviceModel",
      "brandName": {
        "type": "Text",
        "value": "しろくまくん"
      },
      "category": {
        "type": "Text",
        "value": "空調機"
      },
      "color": {
        "type": "Text",
        "value": "白"
      },
      "documentation": {
        "type": "URL",
        "value": "https://kadenfan.hitachi.co.jp/support/raj/item/docs/ras_dm22ke8_b_tori.pdf"
      },
      "manufacturerName": {
        "type": "Text",
        "value": "日立製作所"
      },
      "modelName": {
        "type": "Text",
        "value": "RAS-DM28KE8"
      },
      "serviceLife": {
        "type": "Number",
--以下略--

建物内に設置した設備情報の作成

 静的情報の最後は設備(Device)情報です。以下、想定するcsvファイルとAttributeとの関係を示します。

■設備情報 (Device)

csv項目名Attribute名補足
製造番号ididは製造番号の文字列の前に”urn:ngsi-ld:Device:”を付加することで生成します。
設置日dateInstalled標準形式(“YYYY-MM–DD”)に変換して利用します
製造日dateManufactured標準形式(“YYYY-MM–DD”)に変換して利用します
設備名nameそのまま使用します
購入価格pricePurchasedそのまま使用します
型番refDeviceModelDeviceModelを検索する事で、型番からidに変換して使用します
施設IDrefBuildingBuildingを検索する事で、施設IDからidに変換して使用します
場所大分類, 場所中分類, 場所小分類zoneInstalled3要素のリストとして仕様します
場所補足zoneRemarksそのまま使用します

 想定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/Device/",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "dataSource": {
        "csvAttr": "製造番号",
        "prefix":"urn:ngsi-ld:Device:"
      }
    },
    "type": {"const": "Device"},
    "areaServed": {
      "type": "object",
      "properties": {
        "type": {"const": "Text"},
        "value": {"type": "string"}
      },
      "required": ["type", "value"]
    },
    "category": {
      "type": "object",
      "properties": {
        "type": {"const": "Text"},
        "value": {"type": "string"}
      },
      "required": ["type", "value"]
    },
    "controlledAsset": {
--以下略--

 これをctojツールに入力すると、以下の様にFMシステムの出力を共通データ仕様に形式変換した結果が得られます。

  [
    {
      "id": "urn:ngsi-ld:Device:RAS-DM28KE801234567XYZ",
      "type": "Device",
      "dateInstalled": {
        "type": "Date",
        "value": "2017-08-27"
      },
      "dateManufactured": {
        "type": "Date",
        "value": "2017-06-21"
      },
      "name": {
        "type": "Text",
        "value": "吉浦1F-支所空調1"
      },
      "pricePurchased": {
        "type": "Number",
        "value": 115000
      },
      "refDeviceModel": {
        "type": "Relationship",
        "value": "urn:ngsi-ld:DeviceModel:JP7010001008844-RAS-DM28KE8"
      },
      "refBuilding": {
        "type": "Relationship",
        "value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
      },
      "serialNumber": {
        "type": "Text",

--以下略--

これで、本ケーススタディで想定した静的データは全て変換できました。