シングル文は、事物の存在を主張する。事物はエンティティやリソースと呼んでいるモノで、値とかリテラルは事物に含めない。また、事物の存在は結局、事物の名前〈識別子〉の存在で代替する。
シングルの最初のスタイルは、
- ["type", NAME]
NAMEはプレースホルダーで、(予約語以外の)任意の文字列を入れてよい。意味は、
- NAME(という名前の)型が存在する。
型名 NAME を入れる名前空間はシステムに最初から準備されている。"type" も型名の名前空間に入っているので、予約語になる。ユーザー定義の型名は、予約語を除いた任意の名前。
["type", NAME] は型名宣言文と呼ぶ。型名宣言文により、型名を名前空間名とする名前空間が作られる。したがって、型名は名前空間名になる。
すべての事物の名前(以下、単に名前)は名前空間を持つので、名前空間で修飾される必要がある。型名という名前の名前空間名は "type" だから、ファイル型は ["type", "file"] となる。あるいは "type:file" が型名。
"aa01.md" という名前のファイルは型名修飾付きで ["file", "aa01.md"] と表現される。
デジタルリソースではない現実事物は、ハッシュURLを用いて ["person", "https://www.chimaira.org/person#m-hiyama"] のように表す。
次のようなシングル宣言文で型(の名前空間)を宣言する。
["type", "file"] ["type", "desc"] ["type", "tag"] ["type", "context"] ["type", "term"] ["type", "topic"]
型=名前空間に所属する名前(実体は文字列)が正しい名前であるか? 等しいモノを指す名前であるかどうかを判断するために、次のメソッドを要求する。
interface Type { isWellFormed(x:string):boolean; areEqual(x:string, y:string):boolean; }