2.8.9. データID¶
データIDは、時系列データポイントの名称とデータ型を表す識別子です。
おもに、データポイントを受信したブローカーおよびノードでのデータの意味と型の特定、 ダウンストリームフィルタにて指定された受信条件に各時系列データポイントが合致するかどうかの判定、などに使用されます。
2.8.9.1. データIDの構造¶
和名 |
英名 |
データ型 |
|---|---|---|
名称 |
Name |
文字列 |
型 |
Type |
文字列 |
- 名称 - Name
時系列データポイントに付与された名称です。 データ名称は、格納されたデータの持つ意味を示すとともに、データ型と共に、データを一意に特定するための識別子として使用されます。 データ名称を空文字にしてはいけません( MUST NOT )。
- 型 - Type
iSCP は、時系列データポイントの内容をバイト配列で保持します。 データIDが持つ type は、そのバイト配列がどのような型のデータとして取り扱われるべきかを表します。 データ型を空文字にしてはいけません( MUST NOT )
本仕様では、各型の仕様については規定しません。 したがって、各型の仕様は、別途拡張仕様により定義される必要があります。 型の仕様には、その型が持つ意味や、バイト配列のパース/フォーマット方法の定義が含まれる必要があります。
2.8.9.2. データIDのキーコンセプト¶
2.8.9.2.1. セパレータ¶
データIDに含まれるデータ名称および、データ型を表す文字列には、セパレータ文字(/)を含めることができます。
セパレータは、名称や型の階層構造を表す特別な文字です。
データ名称やデータ型を、セパレータ文字のみで構成してはいけません( MUST NOT )。
また、セパレータ文字を連続させること、すなわち特定の階層を空文字に設定することも許可されていません( MUST NOT )。
この階層構造は、ダウンストリームフィルタにおいて、ワイルドカードと組み合わせることで、柔軟にフィルタを構築するために利用されます。
ワイルドカードに関するより詳しい情報については、 ワイルドカード を参照してください。
2.8.9.2.2. ワイルドカード¶
ワイルドカード文字(# および +)は、ダウンストリームフィルタで使用される、複数の文字列に一致するとみなされる特別な文字列です。
したがって、ワイルドカード文字は、データ名称およびデータ型には使用できません( MUST NOT )。
ワイルドカード文字がデータ名称またはデータ型に含まれているデータIDは不正な形式とみなされます。
ワイルドカードに関するより詳しい情報については、 ワイルドカード を参照してください。
2.8.9.2.3. 文字列表現¶
データIDの型と名称をまとめて1つの文字列として表すことができると、便利な場合があります。 データIDを1つの文字列で表す場合は、以下のフォーマットに従わなければなりません( MUST )。
{データ型}:{データ名称}
したがって、: は、データ名称およびデータ型には使用できません( MUST NOT )。
: がデータ名称またはデータ型に含まれているデータIDは不正な形式とみなされます。
2.8.9.3. データIDエイリアス¶
データIDエイリアスは、データ伝送時にデータIDの代わりに使用する数値です。 任意の文字列であるデータIDの名称や型を使用する代わりに、数値のエイリアス値を使用することで、伝送効率を高める効果が期待できます。
データIDエイリアスは、Upstream Open Request や Downstream Open Request などストリームを開始する際に初期状態を指定できるのに加え、 Upstream Chunk Ack や Downstream Chunk Ack によって随時更新されます。