問題タブ [jpl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - SWI Prolog Java jpl.PrologException クエリが機能しない
2 つの Prolog ファイルがあります。条項および規則は次のとおりです。
節.pl
rules.pl
次の方法でジョンが Java のどこにいるかを調べるクエリを作成すると、次のようになります。
次のエラーが表示されます。
ただし、while ループを削除して単純にクエリを出力すると、Prolog から次の応答が返されます。
したがって、少なくともクエリが Java から Prolog に到達していることはわかっています。エラーの原因について何か考えはありますか?
注: ファイル パスが正しくないことがわかりました。クエリを作成するコードを次のように変更します。
次の出力が得られます。
どちらがコンパイラ エラーよりも優れていますが、答えは次のようになります。
java - jpl最新バージョンの入手方法: jpl7?
jpl ライブラリで Java プロジェクトを使用していますが、「パッケージ org.jpl7 が存在しません」というコンパイル エラーが発生します。最新バージョンをダウンロードしようとしましたが、おそらく jpl3 バージョンを取得しました。
jpl7 の最新バージョンを入手するにはどうすればよいですか? 私は広範囲に検索し、http://jpl7.orgも見つけましたが、そのバージョンをダウンロードする方法についてのヒントはありません。
ありがとう
java - JPL を使用した Java の Prolog リスト
私はプロローグ初心者で、Java のプロローグ リストに問題があります。
プロローグ:
prologconsole での解決策: [einkaufen,sport,hotel,schwimmen,sauna]
ジャワ:
Java での出力: X = '[|]'(einkaufen, '[|]'(sport, '[|]'(hotel, '[|]'(schwimmen, '[|]'(sauna, '[]')) ))))))
prolog-term を Java の ArrayList として読み取るにはどうすればよいですか?
java - JPL7、prolog-query の文字列のリスト
アトムとして配列を必要とするプロローグクエリがあります:
searchEventsOnCategory(Categories,Events) カテゴリは文字列のリストです。
入力例: searchEventsOnCategory(['Bar','Disco'],Events)
出力: イベント = [listOfEvents]
私のJavaコードは次のとおりです。
プロローグがVを文字列のリストとして取得するVをどのように定義する必要がありますか?
java - JPL で SWI-Prolog インスタンスのコピーを作成してロードする
私がやろうとしているのは、Prolog インスタンスのコピーを作成し、そのコピーを JPL (Java-Prolog Interface) でロードすることです。これを行う方法はいくつか考えられますが、どれも完全には解決されていません。それが私がここに来た理由です。
まず、 を使用して状態のコピーを保存できることを知っていますqsave_program/2
。これにより、実行可能なexeファイルが作成されます。ただし、JPL を使用して、この保存されたインスタンスを Java からクエリする必要があります。これに関するドキュメントを探してみましたが、何も見つかりませんでした (おそらく一般的な問題ではありません)。を使用して保存したインスタンスをqsave_program/2
実行し、JPL から照会する方法はありますか?
2 番目のアイデアは、動的にアサートされたすべての句について、元のインスタンスをクエリすることです。しかし、何が主張されたのかは分からないので直接求めることはできず、動的であるという前提でこれらの節を集めなければなりません。次に、JPL から別のインスタンスを開始し、これらのファクトをアサートしてコピーを作成するだけです。これは可能ですか?そして、これは事実上、州のコピーを作成するでしょうか?
java - JPL を使用して Prolog モジュールを照会する
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))");
機能していないすべてのクエリがファイル内にあり、構文が同じように機能しないことが原因でしょうか? 私は知りません、私はただ吐き出しています。
それで、私が作成したモジュールをどのように照会できるかについてのアイデアはありますか?
java - Java バイトコード命令を理解するのに助けが必要
Prolog でバイトコードの静的解析を行おうとしています。MethodGen から命令リストを取得するために bcel ライブラリを使用しています。aload_0 の場合、取得します
0:aload_0[42](1)
aload_0
0番目のローカル変数をロードすることを意図していることを理解しています。しかし、次のビット、つまりを理解するのに苦労しています[42](1)
。たとえば、次のような他の指示もあります。
誰かがそれらが何であるか説明してもらえますか?. 高く評価します!