問題タブ [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.

0 投票する
1 に答える
424 参照

java - マルチスレッドプログラム(JavaとPrologのインターフェース)でのJPLライブラリの予期しない動作

私はJPLのマルチスレッド機能を実験してきました。ソースコードのコメントから理解できる限り、Javaスレッドごとに1つの異なるPrologエンジンが割り当てられています。明らかに、クエリがスレッドAで開始され、別のクエリがスレッドBで実行され(スレッドAによって生成され)、3番目のクエリがスレッドAで再度実行されるときに問題が発生します。

次のコードスニペットは、問題を示しています。

JPLのドキュメントには、2つのクエリを同時にアクティブにすることはできないと記載されているため、コードはスレッドが完了するまで待機してから最後のクエリに進みます(その制約が同じスレッドのクエリにのみ適用されるかどうかはまだわかりません)。または、異なるスレッドやエンジンのクエリに適用される場合)。

前の例では、最初の2つのクエリのみが成功します。3番目のクエリを実行すると、次の致命的なエラーが発生します。

これはJPLのバグですか?その場合、誰かがマルチスレッドでJPLを使用するための回避策を知っていますか?

YAPバージョン6.2.2と6.3.2の両方でテストしたところ、同じ結果が得られました。

アップデート:

@sharkyが示唆したように、明らかにYAPバイナリ(またはYAPのJPLポート)に問題があります。SWIを使用する場合、質問に示されている例は正常に機能しています。

それでも、マルチスレッドプログラムでのJPLの動作には戸惑っています。JPLライブラリopenのクラスのメソッドのソースコードとコメントを見てみましょう。Query

JPLはスレッドごとに新しいロジックエンジンを作成すると言っているようです。ただし、この単純なプログラムを実行すると、次のようになります。

次の出力が表示されます。

したがって、明らかに2番目のスレッドは最初のスレッドと同じPrologエンジンにアクセスしており、ソースコードとそのコメントが示唆しているように新しいスレッドではありません。

誰かがJPLとマルチスレッドの経験がある場合は、これを明確にしてください。

0 投票する
4 に答える
4416 参照

java - Java と swi プロローグを接続する

Java から swi prolog を実行しようとしています。Eclipse
を使用しており、プロジェクトに jpl.jar を挿入し (プロパティ -> ライブラリ -> 外部 jar を追加)、プログラムを実行しようとしているときに (これは jpl のサンプルです)動作するはずです..)エラーが発生します:

私は何が欠けていますか?

0 投票する
0 に答える
1949 参照

java - jpl.dll: 依存ライブラリが見つかりません

Java netbeans を使用していて、その中で Prolog API を使用したいのですが、エラーが発生し続けます

誰でも私を助けてくれますか?

0 投票する
2 に答える
2127 参照

java - JPL jpl.dll の依存ライブラリが見つかりません

私のコンピュータに SWI-Prolog をインストールした後、そのサンプルの 1 つを試してみたところ、この特定の美しさを発見しました。

確認したところ、前述のフォルダ内に jpl.dll ファイルがあるため、ここで何が起こっているのか正確にはわかりませんこのウェブサイトとインターネットで以前の質問をチェックしましたが、どちらも決定的な答えを提供しませんでした.

誰でもこれについてどうすればよいか考えていますか?

編集:

これが役立つ場合に備えて、実行しようとしているコードです。

0 投票する
1 に答える
1315 参照

java - Java から prolog へのファクトのアサート

JPL ライブラリで SWI-Prolog を使用しています。次のような文字列を生成する Java で書かれたプログラムがあります。

次に、ファイルの先頭にこの事実を必要とするプロローグ ファイルがあります。ファイルの先頭にコードを挿入したり、テキストファイルを使用したりしたくありませんが、java. これに対する解決策はありますか?

0 投票する
1 に答える
1122 参照

java - ファイルをjplのモジュールとして参照する方法

jpl は複数の Prolog VM をサポートしていないため、Prolog ファイルをモジュールとして参照しようとしています。

swipl コンソールでは、このようなことを正常に実行できます

Java(実際にはscalaですが、それらはすべてjvmの上にあります)では、問題なくファイルを直接参照できます

ただし、ファイルをモジュールとして参照しようとすると、常に例外が発生します。

プロローグファイルをjplのモジュールとして参照する正しい方法を教えてもらえますか? ありがとう!

0 投票する
3 に答える
561 参照

prolog - 同じプロローグ ファイルを jpl の異なるモジュールにロードするには

jpl を使用して、同じ swipl ファイルを別のモジュールにロードしようとしています。私がこれをしなければならなかった理由は、他の述語をそのままにしておいて、新しい述語をアサートできるモジュールが欲しいからです。問題はswiplがこれを禁止しているように見えることです.

load_files に redefine_module(true) を設定しようとしましたが、まだうまくいきません

私はこれによって何時間もブロックされていますが、オンラインで解決策を見つけることができません. 誰でも助けてもらえますか??

0 投票する
1 に答える
3236 参照

java - How to use swi-prolog with android

I have developed a prolog program with swi-prolog and I attached a interface for it using regular java with JPL.jar, That is running perfectly.

Now I want do the same with android mobile interfaces instead of java desktop interfaces. So I created a android application, add the JPL as external jar and called the prolog files as earlier. There are no errors showed in the code.

But when I run it as a android application it says jpl.query$1 cannot be found.

here is the logcat

So what is the error could be.

I found some says that JPL(swi prolog) cannot be used in android, is that true.

What can I do to have my prolog app run on android

thanks Mathee