タグの種類を決める。
- ジャンルタグ J
- ロールタグ R
- 仮想タグ V
- その他
JRV をこの順で1ビットで表すと
- 000=0 普通
- 100=1 J ジャンル
- 010=2 R ロール
- 001=4 V 普通の仮想タグ
- 110=3 JR ロールのジャンル
- 101=5 JV ジャンルの仮想タグ
- 011=6 RV ロールの仮想タグ
- 111=7 JRV ロールのジャンルの仮想タグ
タグとアイテム(タギング対象)の関係を分類系〈タクソノミー〉と呼ぶ。キーワードとアイテムの関係は索引という。
Tag, Term, Item が実体テーブル、関連テーブルは:
- TagHier : Tag → Tag タグ階層
- TagSyno : Tag → Tag タグ同義語
- Classify : Tag → Item 分類
- Occur : Term → Item 索引
- TermSyno : Term → Term 用語同義語
TagHier, TagSyno, TermSyno については、生成系と閉包を別テーブルにして、
- TagHierGen, TagHierClosure
- TagSynoGen, TagSynoClosure,
- TermSyno, TermSynoClosure
階層テーブルは推移的関係なので推移閉包を取る。同義語テーブルは推移的対称的関係なので、推移的対称的閉包を取る。キャッシュあるいはメモとして使う。
問い合わせ式〈query expression〉は論理式で:
- タグ は式
- [キーワード] は式
- 論理結合子〈logical connective〉は、空白がAND、| がOR、~ がNOT。他に丸括弧でグルーピング。
- ロール = タグ の形式を使える。
- タグの階層構造を辿るために、接尾辞 ==, =<, >= , <, > が使える。デフォルトで、a の意味は a>= となる。ちょうど a だけは a== とする。同義語同一視をしない場合は、a=== とする。
- タームに同義語はあっても階層はない。
- ロールタグが出現するだけのアイテムを検索するには r=? とする。=, =? は左辺がロールタグのときだけ使える。?=t は単に t とすればよい。
- !, +, -, ^, *, & は将来の演算子(に使う文字)として予約されている。今使っている特殊文字は、空白, ~, |, =, <, >, ? , (, ), [, ] 。
- キーワードを囲む括弧 [, ] 内でも論理結合子は使える。