データタイプ

デフォルトデータタイプ

2023-04-02

 データタイプとは、文字通り値の形式の事です。各Attribute内でtypeで指定されています。デフォルトデータタイプとは、データタイプの内、最も基本的なデータタイプです。Entityを登録する際、Attribute typeを指定しないと、デフォルトデータタイプのいずれかであると解釈されます。どのデータタイプとして解釈されるかは、Valueの値の形式によります。

データタイプValueに格納する値に関する説明
Boolean論理値です。具体的には、値にTrue または Falseが入ります。JSONではTrueとFalseとは文字列とは別に定義されているので、文字列の様にダブルクオートで囲む必要はありません。.
Number数値です。実数と浮動小数点数の2種類があります。
実数は0123456789の数字および最大1つのピリオドを小数点として使用する文字列です。負数の場合は先頭にマイナス”-“を付加します。カンマを読みやすさのために使う事は避けます。
浮動小数点数は、実数を表す文字列の後ろに”e”または”E”を付加し、更に仮数を持たない実数(つまり、自然数)を並べて表現します。自然数の前にはプラス”+”またはマイナス”-“を付加する事が出来ます。
JSONで定義されているデータタイプであり、ダブルクオートで囲む必要はありません。
StructuredValueオブジェクトの構造を持つValueです。オブジェクトの構造とは、波括弧(“{“と”}”)で囲われたSub-Attribute群が並んでいる形式です。
尚、NGSI V2では列(大括弧[]で囲まれたValue群)もStructuredValueと規定してあります。また、実際にtypeを省略して登録した列を読み出すと、typeにはStructuredValueが設定されています。しかし、Smart Data Modelsなどでは、typeを”Array”と表現して区別しているため、本協議会でもArrayを定義して区別しています。
Text文字列です。日本語を格納しても構いません。JSONの定義にある様に、値はダブルクオートで囲む必要があります。
none型が無い事を示す特別な型です。Entityを登録する際に、typeとvalueを両方省略した場合にtypeはnoneであると解釈されます。

デフォルトデータタイプはValueの値を見るだけでどのデータタイプが分かります。例えば、ダブルクォートで囲まれてていればTextでしょうし、波括弧や大括弧で囲まれていればStructuredValueです。このため、Entityの登録時にtypeを省略すると、typeはデフォルトデータタイプのいずれかであると解釈されます。

データタイプのチェック

 Fiware/Orion(Ver. “3.8.0”)では、デフォルトデータタイプはValueの値の形式を殆どチェックしていません。例えば、typeにNumberと指定して値に”abc”を指定して登録してもエラーになりませんし、そのまま読み出すこともできます。また、列に文字列と数値を混在させてもエラーにはなりません。この様に実質的にtypeはコメント程度の意味しかありませんが、データ交換を間違いなく行うため、利用者の責任で正確に記述しましょう。

スペシャルデータタイプ

2023-04-02

NGSI V2で追加規定されているデータタイプです。これらのデータタイプは、処理系の動作のNGSI V2で規定されており、例えば座標のデータタイプでは、検索時に距離による条件を指定することが可能です。

データタイプValueに格納する値に関する説明
DateTime日時を示します。YYYY-MM-DDThh:mm:ss [Z |(+ |-)hh:mm]の形式です。YYYYは4桁の西暦の数値であり紀元10000万年以降は表現できません。また、YYYYの前にマイナスを付加する事は出来ないので、紀元前も表現できません。YYYYは西暦。月と日は二桁の数値で表現するとともに、年月日の間には”-“を挟む。つまり米国式のApril 20th, 2022や2022/04/20は認められない。
年月日と時刻の間にはセパレーターとして”T”を挟む。hhは24時間制で表現。
秒の後の”Z”はUTC (協定世界時) であることを示す。UTC以外の場合には、Zの代わりにタイムゾーンを記載する。例えば日本の場合は”+09:00″となる。
JSON上は文字列として扱うので、ダブルクオートで囲む必要がある。
geo:box矩形のgeo:jsonであることを示します。地域のの北西端と南東端の緯度経度を指定することによって、その範囲を矩形領域として表現します
geo:jsonAttributeのtypeに”geo:json”が指定された場合、そのAttributeのvalueはStructuredValueと同様に波括弧で囲われた構造化された値となり、その値はGeoJSONオブジェクトであることを示す。GeoJSONオブジェクトのtypeにはPoint、 LineString、 Polygon、 MultiPoint、 MultiLineString、およびMultiPolygonの6種類がある。GeoJSONオブジェクトの値はvalueの代わりにcoordinatesで示される。例えば点の場合、Point(点)に対する値は次の様に記述する。
{“type”=”Point”,  “coordinates”: [102.0, 0.5]}。最後の数値の並びは[東経, 北緯, 高度]であり、高度は省略しても良い。西経と南緯はそれぞれマイナス(-)の符号を数値の前に置く。
geo:lineLineのgeo:jsonである事を示します。線の両端の緯度経度を指定することによって、その範囲の線上を領域として表現します
geo:pointPointのgeo:jsonである事を示します。座標点を示します。
geo:polygonPolygonのgeo:jsonである事を示します。多角形の頂点の座標をリスト構造で示すことで、閉じた多角形の領域を表現します。座標のリストの始点と終点は一致している必要があります。

 データタイプとは、文字通り値の形式の事です。各Attribute内でtypeで指定されています。デフォルトデータタイプとは、データタイプの内、最も基本的なデータタイプです。Entityを登録する際、Attribute typeを指定しないと、デフォルトデータタイプのいずれかであると解釈されます。どのデータタイプとして解釈されるかは、Valueの値の形式によります。

本データ仕様共通のデータタイプ

2023-04-02

NGSI V2で規定されていませんが、本データ仕様で共通に使用されるデータタイプです。

データタイプValueに格納する値に関する説明
Array列を表す形式です。大括弧(“[“と”]”)に囲まれ、値が複数並んでいる形式です。値が複数と書きましたが、ゼロ個でも一個でも構いません。例えば、[“abc”, “def”]も、[“ghi”]も[]も全て列です。
Date日付の形式です。YYYY-MM-DD[Z |(+ |-)hh:mm]形式です。YYYYは4桁の西暦です。月と日は2桁の数値で表現するとともに、年月日の間には”-“を挟みます。つまり米国式のApril 20th, 2022や2022/04/20は認められません。
DDの後の”Z”はUTC (協定世界時) であることを示します。UTC以外の場合には、Zの代わりにタイムゾーンを記載します。例えば日本の場合は”+09:00″となります。
NGSI V2の定義上は文字列として扱われるので、ダブルクオートで囲む必要があります。また、不正な文字列を登録してもエラーにはなりません。
Integer整数です。
NGSI V2の定義上はNumberとして扱われるので値はダブルクオートで囲んではいけません。また、小数点が付くなど整数として不正な数値を登録してもエラーにはなりません。
URI
または
URL
URLを表す文字列です。”http:”や”https”も含めた文字列。また、URLには日本語は記載できないので、データとして格納する場合は、エンコードして格納する必要があります。
NGSI V2の定義上ははTextとして扱われるので値はダブルクオートで囲む必要があります。また、不正な文字列を登録してもエラーにはなりません。
Time時刻の形式です。hh:mm:ss [Z |(+ |-)hh:mm]の形式です。hhは24時間制で表現します。ssで表している0以上60未満であれば、秒に小数点以下があっても構いません。
秒の後の”Z”はUTC (協定世界時) であることを示す。UTC以外の場合には、Zの代わりにタイムゾーンを記載します。例えば日本の場合は”+09:00″となります。
NGSI V2の定義上は文字列として扱われるので、ダブルクオートで囲む必要があります。また、時刻として不正な文字列を登録してもエラーにはなりません。
Relationshipリンク情報を格納します。値としては、リンク先のidを格納します。NGSI V2の定義上はTextとして扱うため、必ずダブルクオートで囲います。

システム固有のデータタイプ

2023-04-02

 本データ仕様を継承して、新たなAttributeを追加するためのAttribute typeの命名規則です。

データタイプValueに格納する値に関する説明
X-<文字列>システム毎に任意に追加できるAttributeのtypeです。”X”はASCII(半角)の大文字です。<文字列は>システム毎に決めて構いませんが、”X-“と<文字列>とを合わせて識別子の規則に従う必要があります。
NGSI V2の定義上はデフォルトデータタイプとして扱われるので、値はデフォルトデータタイプの形式に従う必要があります。
(その他)PostalAddressやAccesibilityなどのデータタイプを本データ仕様で策定しています。これらの仕様については、データパーツを参照してください。