宣言文の形式

シングル文は、事物の存在を主張する。事物はエンティティやリソースと呼んでいるモノで、値とかリテラルは事物に含めない。また、事物の存在は結局、事物の名前〈識別子〉の存在で代替する。

シングルの最初のスタイルは、

  • ["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;
}