リファレンス memberOf/contains/soundslike

確定申告 is over!!わあい\(^▽^\)(/^▽^)/わあいっ.やっと奥さんのピリピリがとれてホッと一息。というわけで小物を確認していく。まずは日本人としては使いどころがわからない、soundslike!です。英語でよく聞く言葉なんだけど、Soundexにもとづく条件チェックをしてくれます。詳しくはhttp://en.wikipedia.org/wiki/Soundex.いろいろあるものです。初めて知りました。このwikipediaによると"b"と"v"が同じポイントになっていたのでPersonオブジェクトのfirstNameに"victory"をセットして以下のルールを試すと確かにコンソール出力されたザマス。

rule "you must be victory!!"
    when
    	$p : Person(firstName soundslike 'bictory')
    then     
        System.out.println("ま、いっしょだろ!");
end  

で、次はcontainsとmemberOf.だいたい直感でもわかるとおりListや配列の中にこれを含めていますか?といった時に使います。containsのほうがより値を特定してルールを記述することを目的にしているそうな。でも、だいたいの使い方では振る舞いとしては一緒のような気がする。実際の例はこんな感じ。
java

Person person = new Person();
	
List hobbies = new ArrayList();
hobbies.add("backetball");
hobbies.add("programming");
hobbies.add("movie");

person.setHobbies(hobbies);

ksession.insert(person);

と書いて、drlのほうは

rule "backetball"
    when
    	$p : Person(hobbies contains "backetball")
    then     
        System.out.println("あきらめたらそこで試合終了ですよ");
end  

と書きます。
で、memberOfは、

rule "we are developping!"
    when
    	$p : Person(action memberOf list)
    then     
        System.out.println("開発中");
end  

という感じですね。PersonオブジェクトのactionというStringのフィールドがあるとして、それがlist(ここではStringのリストを想定)に含まれているかマッチングしてくれます。