タギングと問い合わせ式

タグの種類を決める。

  1. ジャンルタグ J
  2. ロールタグ R
  3. 仮想タグ V
  4. その他

JRV をこの順で1ビットで表すと

  1. 000=0 普通
  2. 100=1 J ジャンル
  3. 010=2 R ロール
  4. 001=4 V 普通の仮想タグ
  5. 110=3 JR ロールのジャンル
  6. 101=5 JV ジャンルの仮想タグ
  7. 011=6 RV ロールの仮想タグ
  8. 111=7 JRV ロールのジャンルの仮想タグ

タグとアイテム(タギング対象)の関係を分類系〈タクソノミー〉と呼ぶ。キーワードとアイテムの関係は索引という。

Tag, Term, Item が実体テーブル、関連テーブルは:

  1. TagHier : Tag → Tag タグ階層
  2. TagSyno : Tag → Tag タグ同義語
  3. Classify : Tag → Item 分類
  4. Occur : Term → Item 索引
  5. TermSyno : Term → Term 用語同義語

TagHier, TagSyno, TermSyno については、生成系と閉包を別テーブルにして、

  1. TagHierGen, TagHierClosure
  2. TagSynoGen, TagSynoClosure,
  3. TermSyno, TermSynoClosure

階層テーブルは推移的関係なので推移閉包を取る。同義語テーブルは推移的対称的関係なので、推移的対称的閉包を取る。キャッシュあるいはメモとして使う。

問い合わせ式〈query expression〉は論理式で:

  1. タグ は式
  2. [キーワード] は式
  3. 論理結合子〈logical connective〉は、空白がAND、| がOR、~ がNOT。他に丸括弧でグルーピング。
  4. ロール = タグ の形式を使える。
  5. タグの階層構造を辿るために、接尾辞 ==, =<, >= , <, > が使える。デフォルトで、a の意味は a>= となる。ちょうど a だけは a== とする。同義語同一視をしない場合は、a=== とする。
  6. タームに同義語はあっても階層はない。
  7. ロールタグが出現するだけのアイテムを検索するには r=? とする。=, =? は左辺がロールタグのときだけ使える。?=t は単に t とすればよい。
  8. !, +, -, ^, *, & は将来の演算子(に使う文字)として予約されている。今使っている特殊文字は、空白, ~, |, =, <, >, ? , (, ), [, ] 。
  9. キーワードを囲む括弧 [, ] 内でも論理結合子は使える。