JPL を使用してプロローグ ファイルの動的モジュールをクエリしようとしています。この質問( jpl でファイルをモジュールとして参照する方法)のおかげで、次のように宣言された Query オブジェクトを使用して、モジュールを参照、アサート、および撤回することができました。
assertFact = new Query("assert(mod1:"+fact.toString()+")");
retractFact = new Query("retract(mod1:"+fact.toString()+")");
consultQuery = new Query("mod1:consult('"+rulesPath+"')");
ただし、次のような同様の呼び出しを使用してファイル内の述語を照会することはできません。
legalMovesQuery = new Query("mod1:legal("+playerName+",Move)");
また
nextQuery = new Query("mod1:next(Role,Action)");
同時に実行しているプロローグの非モジュールインスタンスからの結果を常に返します。このクエリを正常に実行できるため、これは特に奇妙です。
dynamicQuery = new Query("mod1:predicate_property(X,dynamic),\\+predicate_property(X,built_in),\\+predicate_property(X,number_of_clauses(0))");
機能していないすべてのクエリがファイル内にあり、構文が同じように機能しないことが原因でしょうか? 私は知りません、私はただ吐き出しています。
それで、私が作成したモジュールをどのように照会できるかについてのアイデアはありますか?