部位(BuildingComponent)の項目への変換ルール
ケーススタディ#1の部位一覧表の例で「部位(BuildingComponent)」から選択した項目は以下の通りです。各項目の変換の仕方も表内記入しました。
表形式への変換の説明 | ||
---|---|---|
(なし) | id | 部位IDです。部位一覧表の項目には、CSVの各行を一意に識別する項目はありません。運用上はnameなどが一意に命名されているかもしれませんが、それが建物内で一意なのか、全世界で一意なのか不明確です。そこでここでは、UUID1と呼ばれるIDを使ってidを作る事にします。尚、UUIDは作成する度に違う文字列になるので、これを使えるのは最初の一度だけです。二度目からはちゃんと引き継いでidが変わらない様にする必要があります。 |
(なし) | type | データモデルのtypeを登録します。ここでは”BuildingComponent”を登録します |
部位種別 | category | 設置した日付です。そのままコピーします |
部位名称 | name | 製造年月日です。そのままコピーします |
説明 | description | 設備情報として公開可能な詳細情報です。そのままコピーします |
管理通番 | refBuilding | この設備が部位が存在する建物の建物IDです。オーナーの法人番号と、管理通番と組み合わせてidの文字列を作成します。オーナーを区別する項目が無い為、法人番号は固定値で設定します |
場所大分類 | zoneInstalled[0] | 場所の大分類です。そのままコピーします |
場所中分類 | zoneInstalled[1] | 場所の中分類です。そのままコピーします。 |
場所小分類 | zoneInstalled[2] | 場所の小分類です。そのままコピーします。 |
場所備考 | zoneRemarks | 前項の補足情報です。そのままコピーします。 |
CSV表の準備
ケーススタディ#1の部位一覧表の例を使います。
■入力となる表
建物名 | 管理通番 | 部位種別 | 部位名称 | 説明 | 場所大分類 | 場所中分類 | 場所小分類 | 場所備考 |
---|---|---|---|---|---|---|---|---|
呉市吉浦市民センター | 01234567 | 窓 | 窓-1F-支所-001 | 建物内部 | 1F | 吉浦支所 | ||
呉市吉浦市民センター | 01234567 | ロールスクリーン・ブラインド | ロブ-1F-支所-002 | 建物内部 | 1F | 吉浦支所 | ||
呉市吉浦市民センター | 01234567 | 棚 | 棚-1F-支所-003 | 建物内部 | 1F | 吉浦支所 | ||
呉市吉浦市民センター | 01234567 | 内壁 | 内壁-1F-支所-004 | 建物内部 | 1F | 男子トイレ | ||
呉市吉浦市民センター | 01234567 | 開き戸 | 開戸-1F-支所-005 | 建物内部 | 1F | 男子トイレ | ||
呉市吉浦市民センター | 01234567 | 窓 | 窓-1F-支所-006 | 建物内部 | 1F | 男子トイレ | ||
呉市吉浦市民センター | 01234567 | 入口ドア(手動) | ドア-1F-支所-007 | 建物内部 | 1F | 正面玄関 | ||
呉市吉浦市民センター | 01234567 | 風除室 | 風除-1F-支所-008 | 建物内部 | 1F | 正面玄関 | ||
呉市立吉浦小学校 | 03000012 | 内壁 | 内壁-2F-吉小-001 | 校舎 | 2F | 1年1組 | ||
呉市立吉浦小学校 | 03000012 | 天井 | 天井-2F-吉小-001 | 校舎 | 2F | 1年1組 | ||
呉市立吉浦小学校 | 03000012 | 床 | 床-2F-吉小-001 | 人造石 | 校舎 | 2F | 1年1組 | |
呉市立吉浦小学校 | 03000012 | 窓 | 窓-2F-吉小-001 | 校舎 | 2F | 1年1組 | ||
呉市立吉浦小学校 | 03000012 | カーテンレール | カー-2F-吉小-001 | YJJ | 校舎 | 2F | 1年1組 | |
呉市立吉浦小学校 | 03000012 | 踏面 | 踏面-2F-吉小-001 | 校舎 | 2F | 西階段室 | ||
呉市立吉浦小学校 | 03000012 | 蹴上 | 蹴上-2F-吉小-001 | 校舎 | 2F | 西階段室 | ||
呉市立吉浦小学校 | 03000012 | ノンスリップ | ノス-2F-吉小-001 | スベラヘンW18 | 校舎 | 2F | 西階段室 | |
呉市立吉浦小学校 | 03000012 | 床 | 床-2F-吉小-001 | フローリング | 体育館 | 舞台 | ||
呉市立吉浦中学校 | 04000008 | 内壁 | 内壁-2F-吉中-001 | 校舎 | 3F | 3年A組 | ||
呉市立吉浦中学校 | 04000008 | 天井 | 天井-2F-吉中-001 | 校舎 | 3F | 3年A組 | ||
呉市立吉浦中学校 | 04000008 | 床 | 床-2F-吉中-001 | タイルカーペット | 校舎 | 3F | 3年A組 | |
呉市立吉浦中学校 | 04000008 | 窓 | 窓-2F-吉中-001 | 校舎 | 3F | 3年A組 | ||
呉市立吉浦中学校 | 04000008 | カーテンレール | カー-2F-吉中-001 | YJJ | 校舎 | 3F | 3年A組 | |
呉市立吉浦中学校 | 04000008 | 舗装・砂利敷 | 舗装-2F-吉中-001 | 屋外 | 正門 | |||
呉市立吉浦中学校 | 04000008 | 門扉 | 門扉-2F-吉中-001 | スチール門扉H1500 | 屋外 | 正門 | ||
呉市立吉浦中学校 | 04000008 | 倉庫 | 倉庫-2F-吉中-001 | 屋外 | グランド |
■CSVファイルの内容
建物名,管理通番,部位種別,部位名称,説明,場所大分類,場所中分類,場所小分類,場所備考 呉市吉浦市民センター,01234567,窓,窓-1F-支所-001,,建物内部,1F,吉浦支所, 呉市吉浦市民センター,01234567,ロールスクリーン・ブラインド,ロブ-1F-支所-002,,建物内部,1F,吉浦支所, 呉市吉浦市民センター,01234567,棚,棚-1F-支所-003,,建物内部,1F,吉浦支所, 呉市吉浦市民センター,01234567,内壁,内壁-1F-支所-004,,建物内部,1F,男子トイレ, 呉市吉浦市民センター,01234567,開き戸,開戸-1F-支所-005,,建物内部,1F,男子トイレ, 呉市吉浦市民センター,01234567,窓,窓-1F-支所-006,,建物内部,1F,男子トイレ, 呉市吉浦市民センター,01234567,入口ドア(手動),ドア-1F-支所-007,,建物内部,1F,正面玄関, 呉市吉浦市民センター,01234567,風除室,風除-1F-支所-008,,建物内部,1F,正面玄関, 呉市立吉浦小学校,03000012,内壁,内壁-2F-吉小-001,,校舎,2F,1年1組, 呉市立吉浦小学校,03000012,天井,天井-2F-吉小-001,,校舎,2F,1年1組, 呉市立吉浦小学校,03000012,床,床-2F-吉小-001,人造石,校舎,2F,1年1組, 呉市立吉浦小学校,03000012,窓,窓-2F-吉小-001,,校舎,2F,1年1組, 呉市立吉浦小学校,03000012,カーテンレール,カー-2F-吉小-001,YJJ,校舎,2F,1年1組, 呉市立吉浦小学校,03000012,踏面,踏面-2F-吉小-001,,校舎,2F,西階段室, 呉市立吉浦小学校,03000012,蹴上,蹴上-2F-吉小-001,,校舎,2F,西階段室, 呉市立吉浦小学校,03000012,ノンスリップ,ノス-2F-吉小-001,スベラヘンW18,校舎,2F,西階段室, 呉市立吉浦小学校,03000012,床,床-2F-吉小-001,フローリング,体育館,舞台,, 呉市立吉浦中学校,04000008,内壁,内壁-2F-吉中-001,,校舎,3F,3年A組, 呉市立吉浦中学校,04000008,天井,天井-2F-吉中-001,,校舎,3F,3年A組, 呉市立吉浦中学校,04000008,床,床-2F-吉中-001,タイルカーペット,校舎,3F,3年A組, 呉市立吉浦中学校,04000008,窓,窓-2F-吉中-001,,校舎,3F,3年A組, 呉市立吉浦中学校,04000008,カーテンレール,カー-2F-吉中-001,YJJ,校舎,3F,3年A組, 呉市立吉浦中学校,04000008,舗装・砂利敷,舗装-2F-吉中-001,,屋外,正門,, 呉市立吉浦中学校,04000008,門扉,門扉-2F-吉中-001,スチール門扉H1500,屋外,正門,, 呉市立吉浦中学校,04000008,倉庫,倉庫-2F-吉中-001,,屋外,グランド,, |
部位情報の変換
このケーススタディでは”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/BuildingComponent/",
"type": "object",
"properties": {
"id": {
"type": "string",
"dataSource": {
"dataSource": "uuid", ---------------------------- UUIDでidを生成します
"prefix": "urn:ngsi-ld:BuildingComponent:"
}
},
"type": {"const": "BuildingComponent"},
"category": {
"type": "object",
"properties": {
"type": {"const": "Text"},
"value": {
"type": "string",
"dataSource": {"csvAttr": "部位種別"}
}
},
"required": ["type", "value"]
},
"name": {
"type": "object",
"properties": {
"type": {"const": "Text"},
"value": {
"type": "string",
"dataSource": {"csvAttr": "部位名称"}
}
},
"required": ["type", "value"]
},
--以下略--
この拡張JSON Schemaを指定してctojツールを実行すると、以下の様に共通データ仕様の形式変換した結果が得られます。下図は変換後の先頭部分です。
[
{
"id": "urn:ngsi-ld:BuildingComponent:a95c7e58-2973-451d-bac0-d5e4179f30fa", --- UUIDでidが生成されています
"type": "BuildingComponent",
"category": {
"type": "Text",
"value": "窓"
},
"name": {
"type": "Text",
"value": "窓-1F-支所-001"
},
"refBuilding": {
"type": "Relationship",
"value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
},
"zoneInstalled": {
"type": "Array",
"value": [
"建物内部",
"1F",
"吉浦支所"
]
}
},
{
"id": "urn:ngsi-ld:BuildingComponent:764e21e8-f6ed-4e9c-9aa4-e2b1f66019d4",
"type": "BuildingComponent",
"category": {
"type": "Text",
"value": "ロールスクリーン・ブラインド"
},
"name": {
"type": "Text",
"value": "ロブ-1F-支所-002"
},
"refBuilding": {
"type": "Relationship",
"value": "urn:ngsi-ld:Building:JP9000020342025-01234567"
},
"zoneInstalled": {
"type": "Array",
"value": [
"建物内部",
"1F",
"吉浦支所"
]
}
},
--以下略--
- UUID (Universally Unique Identifier): 世界で一意となる文字列であり、ソフトウェアで広く用いられる手法です。その実装には多様なものがあります。本ユースケースではランダムな文字列としています。但し、含まれる文字は0-9の数字とa-fの英小文字の16種類をハイフンで繋いだものです。 ↩︎