値の表現

禁則文字

2025-02-08

 NGSI V2では、識別子に使ってはいけない文字がありましたが、値にも使えない文字があります。これは、URLに指定するとセキュリティー上の問題を引き起こす可能性がある場合や、NGSI V2の規格上特別な意味をもつために制限をかけているものです。制限している文字を「禁則文字 (Forbidden characters) 」と呼びます。但し、共通データ仕様の用語ではこれらの禁則文字は除外していないので、Fiware/Orionに登録するときに別の文字に置き換える事が必要です。この置き換えをURLエンコードなどと呼びます。URLエンコードで置き換えるべき文字は以下の通りです。

禁則文字エンコード説明
<
>


=
;
(
)
%3C
%3E
%22
%27
%3D
%3B
%28
%29
全ての登録や読み出しで禁止されています。
Fiware利用時にこの値を指定するとエラーになりますので、必ずURLエンコードして使う必要があります。
NGSI V2としてはURLエンコードして格納する事を必須としています。
#
?
/
%
&
%23
%3F
%2F
%25
%26
これらの文字は URL 解釈では特別な意味を持ちセキュリティー上の問題になりえるため、できる限り避けるべき文字です。
Fiware利用時にこの値を指定してもエラーにはなりません。
NGSI V2としてはURLエンコードして格納する事を推奨しています。
日本語等日本語などのASCII文字(半角文字)ではない文字もFiware/Orionに登録する事は可能です。但し、URLに指定する事はできませんので、URLに指定するときにはURLエンコードする事が必要です。尚、お使いのプログラムによっては自動的にURLエンコードしてくれる場合がありますので、確認が必要です。

 idの文字列は、更にURNの規定にも従う必要があります。URNの規定によると使っていい文字は、非予約文字、URLエンコード、副区切り文字、コロン(:)、アットマーク(@)、およびスラッシュ(/)です。非予約文字とはASCIIの英数字、”-“、”.”、”~”、および”_”です。副区切り文字とは、”!”、”$”、”&”、”‘”、”(“、”)”、”*”、”+”、”,”、”;”、および”=”です。但し、”@”はNGSI V2の後継規格であるNGSI-LDでは特別の意味があるため使うべきでしないでしょう。また、”!”、”$”、”*”、”+”、および”,”以外の副区切り文字は、前項で禁則文字となっていますので使えません。更に、”$”と”,”もNGSI V2では特別な意味があり、視認性を確保する上で避けた方が無難でしょう。

一般的に使われる値の表現

NGSI V2では、Text等のデータタイプの規定に加え、時刻と座標の表現方法を規定していますが、それ以外にも一般的に使われる値が幾つかあります。ここでは、それらの値の表現について記載しています。

表現したい値説明
サービス提供
時間帯
サービスを提供する時間帯をTextのリスト構造で登録します。各Textでは、曜日、開館時刻、閉館時刻を以下の文字列で表現します。
   <曜日> (空白)<開始時刻>-<終了時刻>
曜日はMo、Tu、We、Th、Fr、Sa、Suの二文字で表現します。曜日はカンマを挟んで並べる事で複数の曜日を表現できます。また、連続する曜日の場合は二つの曜日をハイフンで繋ぐことで一括して表現できます。開始時刻と終了時刻はHH:MMの24時間形式で表現します。開始時刻が終了時刻より大きい場合は、夜間を通じて開館していると解釈します。
例えば、以下の様に表現します。この例では、月曜と水曜が8時から12時まで、木曜と金曜と土曜が14時まで、日曜が16時まで、火曜は記載されていないので休日と言う事になります。
 [
    “Mo,We 08:00-12:00”,
    “Th-Sa 08:00-14:00”,
    “Su 08:00-16:00”
  ]
住所国、都道府県、基礎自治体、それ以下、郵便番号で項目を分離した形式で記述します。
尚、基礎自治体が町村の場合、基礎自治体名には郡名も記述します。
詳しくは、共通パーツのPostalAddressを参照してください。
座標GeoJSONの規定に準拠して記載します。具体的には、[東経, 北緯]となります。これは、Fiware/Orionの座標の機能を活用するためです。精度は、GIFの規定通り、通常は小数点以下6桁とします。これは、約10cmの誤差を意味しています。西経と南緯はそれぞれマイナスの値として表現します。
電話番号数値(“0”-“9”)、プラス(“+”)、マイナス(“-“)を組み合わせた文字列です。プラスは先頭のみに許され、プラスを指定するとその後ろは国番号と解釈されます。国番号を付けた場合は市外局番の先頭の”0″は省略します。マイナスは視認性を確保するためのセパレーターの意味しかありません。
尚、一般には市外局番を省略可能という意味で括弧で囲う場合がありますが、スマートシティでは市外局番の省略は望ましくあませんので、括弧は使用しません。

更新履歴

■コメントおよび更新の一覧

コメント日コメント内容対応改版日
2025-01-28NGSI V2ではデータとして登録できる文字に制約があるが、記載がない禁則文字の節を新たに追加しました。また、禁則文字がある時の処置方法について、ケーススタディ#6を新たに追加します2025-02-08