gtool4 規約 version 4.3

5. 各種の文字列書式

2005-07-29T23:25:10+09:00 地球流体電脳倶楽部 davis プロジェクト


5.1 名前の規則

属性名, 変数名, 次元名は以下の制約に従う.

この規則は netCDF の名前の規則に由来するが, ハイフンマイナス '-' が利用できないことが異なる.


5.2 変数URL

任意の機械に置かれた任意の netCDF ファイルの中の任意の変数または属性を指定するために, 変数URLを規定する. 変数URLは netCDF ファイルを示す URL (URI) に "?" (または "@") と変数名を付加したものである. たとえば, test2d.nc?ps と test2d.nc@ps は等価である. UNIX シェルのように '?' を含む文字列の扱いが困難な環境では, '?' のかわりに '@' を使うと良い.

変数名は名前規則に従わなければならない.

解釈系は, URL (URI) 部分を RFC 1738 の規則に基づいて解釈しなければならない. 解釈系はネットワークが利用できないことが判明している場合, ネットワークを参照しなくてもよいし, 処理系依存の方法で URL (URI) に対応する代替ファイルを定義できるようにしてもよい.

生成系は変数名を変数 URL に変換する際には, netCDF ファイル内部での相互参照ならば変数名の先頭に単に "?" (または "@") を付加するべきである. それ以外の場合は URL (URI) に "?" (または "@" )と変数名を付加するべきである.

推奨される例を以下に示す.

http プロトコルで公開されているファイル filename.nc の中の変数 q

http://www.some.domain/any/path/filename.nc?q

参照元と同じファイルの中の変数 q

?q

file: スキームで指定されるファイル中の変数

file:///home/hoge/any.nc?q

相対パスで指定されるファイル中の変数

../../hero/any.nc?q

推奨されない例を以下に示す.

参照元と異なる機械に存在する公開されていないファイルの中の変数 

file://hostname.some.domain/any/path/filename.nc?q


5.3 属性URL

属性 URL は変数 URL に「:属性名」の形式の文字列を続けたものである. たとえば, test.nc?ps:units は変数 test.nc?ps の「units」という属性を指示する.

属性名は名前規則に従わなければならない.

先頭が '+' で始まっている名前の属性を大域属性と呼び, ファイル全体で共有される属性とする. たとえば, 変数 test.nc?ps と test.nc?lat が存在するときに test.nc?ps:+institution 属性を作成すると, 自動的に test.nc?lat:+institution が同じ値になる.


5.4 コンマ記法

変数の入出力において範囲を限定したい場合には, 変数URL にコンマ「,」で始まるある種の文字列を続けた 表現を用いることを推奨する.

範囲限定の表現形式として以下のものを推奨する.

ある軸について1点だけを取り出したい場合 (以下, 「一点切り出し」と呼ぶ), 「,次元名=位置」のような形式の文字列を変数URL に続けることによって指定する. 解釈系は, 座標変数の値が位置に最も近い格子番号を選択する. 格子番号を直接指定したい場合, 位置の代わりに「,次元名=^格子番号」のように指定する.

ある軸について連続した範囲を切り出したい場合, 「,次元名=基点位置:終点位置」のような形式の文字列を変数URL に続けることによって指定する. 位置の解釈, 格子番号直接指定, 次元順序番号指定については一点切り出しに準じる. 切り出し格子を間引きたい場合, 「,次元名=基点位置:終点位置:間隔」のように指定する. ここで間隔は整数値で, 格子数と解釈する.

一点切り出しを行ったあと, 当該次元への依存性を隠蔽したい場合は 「,IGN:次元名=位置」という記法を推奨する.


5.5 日時形式

日時の推奨される形式は, JIS X 0301 の完全表記の拡張表記で日付・時間・ 協定世界時からの時差をすべて省略しない書き方とする. 形式的には

yyyy-MM-ddThh:mm:ssSaa:bb

のようになる. ただし yyyy は西暦年, MM は月, dd は日, hh は時, mm は分, ss は秒, S は「+」または「-」, aa は時差の時間の部分, bbは時差の分の部分. たとえば 1972 年 12 月 11 日日本時間 02 時 25 分は

1972-12-11T02:25:00+09:00

である. 日付と時刻の区切りに T を用いるのは国際規格である. なお, udunits は時刻の原点としてこの書き方を受け入れる.


5.6 単位

生成系は以下の文法に従った単位を付与しなければならない. これは udunits が受け入れる記法を明確化したものである. 複数の表記が可能な場合は推奨される表記が規定されている.

以下, 整数値とは C の sscanf(3) の "%d" 書式指定で認識されるものを指し, 実数値とは "%lf" 書式指定子で認識されるものを指す.

単位名

単位名は英大文字, 英小文字, 数字, 下線 「_」 から構成される. 大文字と小文字は区別される. ただし語頭と語尾は数字または下線であってはならない.

可能ならば単位名には数字または下線を含むべきでない.

互換性のため, 以下の単位を認める: パーセント「%」, 角度の分「'」, 角度の秒「"」. これらは推奨されない.

推奨される単位は 

である. 可能ならば, ユーザ定義の単位は最小限に抑えられるべきである.

SI 接頭辞に個別単位名を続けたものは接頭辞に対応する係数をかけた単位となる.

この節で規定する単位名の内部には空白を入れてはならない. 以後の規定で現れる演算子・数値・単位名の間には任意個の空白を置くことができる.

単位のべき乗

単位のあとに整数値を続けたものは単位のべき乗の単位となる.これが推奨されるべき乗の表現である.整数値としては正の数を用いることを推奨する.

単位のあとに '**' または '^' と整数をつなげたものは単位のべき乗を意味する.

単位の積・商

単位の前に数値を置いたものは単位のスカラー倍を意味する.

2つの単位を '.' でつなげたものは単位の積を意味する.これが推奨される積の表現である.

2つの単位を '*' または '-' でつなげたものは単位の積を意味する.ハイフンマイナス '-' は減算と誤解されるので, 避けることを推奨する.

2つの単位をつなげたものは単位の積を意味する.生成系は単位の間には空白を置かねばならないが, 互換性を重視する解釈系は空白が欠けた積を認識してもよい.空白が欠けたために複数の解釈がありえるときは, 最初の単位の文字数が最長になるようなものを採る.この構成法は単に混乱の元であり, 使わないことを強く推奨する.

2つの単位を '/' でつなげたものは単位の商を意味する.

原点移動

単位のあとに「@」, 「after」, 「ref」, 「from」 または 「since」 と数値または日時を続けたものは単位の原点移動を意味する. 「@」以外の演算子の前後には空白を置かねばならない. 時間の単位の原点には日時を指定しなければならない. それ以外の単位の原点には数値を指定しなければならない.

日時に関する原点表示は 5.2 節で示したものを推奨する.

カッコ

単位を '(' と ')' で囲んだものは, 元の単位と同じ単位である.

生成系が単位を認識できるならば, この構成法は使わないで済ませるべきである. しかし, 単位を認識しないで複数の単位の間での演算を行うために非常に有用である.