「部門(Department)」の項目への変換ルール
ケーススタディ#1の所管部門一覧表の例で選択した項目は以下の通りです。データモデル「部門(Department)」に変換するので、「部門」から選択した項目を中心に利用しますが、施設IDだけは「施設」から選択した項目です。他は無視します。各項目の変換の仕方も表内記入しました。
表形式への変換の説明 | |||
---|---|---|---|
法人番号、部門コード | id | idの生成ルールに従って法人番号と部門コードから変換します。 | |
(なし) | type | データモデルのtypeを登録します。ここでは”Depaartment”を登録します | |
部門名 | name | 所管部門の法人名です。そのまま代入します。 | |
法人番号 | departmentOf | 所属する法人(オーナーの法人)の法人IDです。法人番号から機械的に法人IDiに変換する事も可能ですが、ここでは前ページの「法人(Organization)」を法人番号で検索する事で、法人IDを求めることにします。 | |
contactPoint | 各種連絡先の情報です。Array項目なので、一つ目の項目へ変換します。 | ||
電話番号 | telephone | 連絡先の電話などです。そのまま代入します。 | |
施設コード | refFacility | idの生成ルールに従って法人番号と施設コードから変換します。 |
CSV表の準備
ケーススタディ#1の所管部門一覧表の例を使います。
■入力となる表
法人番号 | 部門コード | 部門名 | 電話番号 | 施設コード | 個別郵便番号 | 郵便番号 | 国 | 都道府県 | 市区町村 | 町字以下 | 建物名 | フロア |
---|---|---|---|---|---|---|---|---|---|---|---|---|
9000020342025 | 0402004 | 吉浦まちづくりセンター | 0823-31-7540 | 0402004 | 7370852 | JP | 広島県 | 呉市 | 吉浦中町2-6-5 | 呉市吉浦市民センター | 2階 | |
9000020342025 | 0602003 | 学校施設課 | 0823-25-3447 | 0100001 | 7378501 | JP | 広島県 | 呉市 | 中央4-1-6 | 呉市役所 | 本庁舎 |
■CSVファイルの内容
法人番号,部門コード,部門名,電話番号,施設コード,個別郵便番号,郵便番号,国,都道府県,市区町村,町字以下,建物名,フロア 9000020342025,0402004,吉浦まちづくりセンター,0823-31-7540,0402004,,7370852,JP,広島県,呉市,吉浦中町2-6-5,呉市吉浦市民センター,2階 9000020342025,0602003,学校施設課,0823-25-3447,0100001,,7378501,JP,広島県,呉市,中央4-1-6,呉市役所,本庁舎 |
部門情報の変換
このケーススタディでは”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/Department/",
"type": "object",
"properties": {
"id": { ---------------------------------------- "id"というAttributeに関する指定です
"type": "string",
"dataSource":[ ------------------------------- 複数の文字列を繋げます
{ ------------------------------------------ 一つ目の文字列の指定です
"csvAttr": "法人番号", -------------------- CSVの法人番号から値を取ってきます
"prefix": "urn:ngsi-ld:Department:JP" ---- 法人番号の前につなげる文字列です
},
{ ------------------------------------------ 二つ目の文字列の指定です
"csvAttr": "部門コード", ------------------ CSVの部門コードから値を取ってきます
"pattern": "^[0-9]{7}$", ----------------- 7桁の数字に満たない時は先頭にゼロを付加します
"prefix": "-" ------------------------------ 部門コードの前にハイフンを付加します
}
]
},
"type": {"const": "Department"}, --------------- "type"に対応する値は"Department"という固定値です
"name": {
"type": "object",
"properties": {
"type": {"const": "Text"}, ----------------- この"type"に対応する値は"Text"という固定値です
"value": {
"type": "string",
"dataSource":{"csvAttr": "部門名"} -------- CSVの部門名から値を取ってきます
}
},
"required": ["type", "value"],
"additionalProperties": false
},
{
--以下略--
この拡張JSON Schemaを指定してctojツールを実行すると、以下の様に共通データ仕様の形式変換した結果が得られます。
[
{
"id": "urn:ngsi-ld:Department:JP9000020342025-0402004",
"type": "Department",
"name": {
"type": "Text",
"value": "吉浦まちづくりセンター"
},
"departmentOf": {
"type": "Relationship",
"value": "urn:ngsi-ld:Organization:JP9000020342025"
},
"refFacility": {
"type": "Relationship",
"value": "urn:ngsi-ld:Facility:JP9000020342025-0402004"
},
"contactPoint": {
"type": "ContactPoint",
"value": [
{
"telephone": [
"0823-31-7540"
]
}
]
}
},
{
"id": "urn:ngsi-ld:Department:JP9000020342025-0602003",
"type": "Department",
"name": {
"type": "Text",
"value": "学校施設課"
},
"departmentOf": {
"type": "Relationship",
"value": "urn:ngsi-ld:Organization:JP9000020342025"
},
"refFacility": {
"type": "Relationship",
"value": "urn:ngsi-ld:Facility:JP9000020342025-0100001"
},
"contactPoint": {
"type": "ContactPoint",
"value": [
{
"telephone": [
"0823-25-3447"
]
}
]
}
}
]