このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

クエリ言語と論理式

MongoQLは、「それはナイダロ」的な意味で面白い。

で、だいたい分かったのは、どうも「ドット記法(dot notation)ありき」らしいこと。ドット記法じゃ分かりにくいからフィールドパスとでも呼んでおこう。「フィールパス+値の条件」が原子論理式、しいて言えば。

で、原子論理式の集合をAとして、AがNOTとORで閉じているとき、boolean upper-closedと呼ぶことにする。NOTとANDで閉じていれば、boolean lower-closedね。で、

  • Aがboolean upper-closedなら、Aから作った極性付きAND結合の全体がboolean-closedになる。
  • Aがboolean lower-closedなら、Aから作った極性付きOR結合の全体がboolean-closedになる。

別に難しくはない。こんなことは今まで考えたこともなかったけど。[追記 date="翌日"]この定義はアホ。upper-closed = lower-closed = closed だから意味ない。[/追記 date="翌日"]

Mongoでは、ORがまともに使えないので、原子論理式のレベルではupper-closed、つまりORで閉じていたほうが都合がいい。だが、この条件も満たしてない。しょうがないので、JavaScriptの論理式の力を借りて、無理にupper-closedにする。すると、なんとかかんとかboolean-closedになる。

追記:

「極性付きAND結合」ってのは、a, b, cなどが原子論理式だとして、+{a, b, c}, -{a, b, c} のような形で、集合に寄せ集めるのがAND結合で、プラマイが肯定と否定。それぞれ、a∧b∧c と ¬(a∧b∧c) の意味。

さらに追記:

アトム(原子論理式)と論理式のあいだに、節(クローズ)って概念を入れるとよさそう。

  • 節 ::= アトム | (極性 '∃' 論理式)
  • 論理式 ::= 極性 '{' 節* '}'

∀を入れてないので不恰好だが、これで十分。