問題タブ [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 - Java を使用した Prolog JPL コマンド
プロローグで作成されたエキスパート システムを持っているため、Java インターフェイスから実行すると問題が発生します。問題は、出力の通信に関連しています。Streams を試しましたが、(このプロジェクトでのみ) 正常に動作しません。txt ファイルの書き込み時にアプリケーションが明らかにフリーズします。次のようなことを行います。
執筆の最後に、java で txt を読みました。すべての古いシステムで、このメソッドは正常に機能しましたが、これを使用すると、おそらく推論または再帰呼び出しのために、何か問題が発生します (Java 側、実行するとswiprolog から直接送信しても問題ありません)! そこで、jpl_get を使用して呼び出すことにしましたが、これは初めてです。助けが必要です!私のインターフェイスには、プロローグ システムからのすべての出力を出力する jtextarea があります。私はそれを「jTextAreaOUTPUT」と呼んでいます。このコンポーネントは私の Java クラス インターフェイスにあります。
私のプロジェクト フォルダーは (Windows の場合): "main_folder" で、内部には (すべての eclipse プロジェクトと同様に) src、bin があります。 /mypackage/interface.java jtextarea にサンプル メッセージ「Start Message」を出力するにはどうすればよいですか? 私はこれを試しました:
...そして私のJavaアプリケーションでは、この方法でクエリを呼び出します:
t2 は、main() から呼び出すと「開始」です! そのため、実行すると、システムから「ClassNotFoundException」が返されます!
質問1)誰かが私が望むことをする良い例を教えてもらえますか?
質問 2) jpl get および call における変数 X の役割は何ですか?
質問 3) 変数を出力したい場合、どうすればよいですか?
java - Java UI で Java コンソールのコンテンツをリダイレクトする
Jpl ライブラリ (org.jpl7.*) を使用して Java から参照するプロローグ ファイル (エキスパート システム) があり、プロローグのクエリの出力を表示する UI があります。これは、すべてのコンソール コンテンツをインターフェースにリダイレクトするカスタム出力ストリームです (jTextAreaOUTPUT は、コンテンツをリダイレクトする場所です)。
これは、インターフェイス クラスにあるいくつかの行です。これは、カスタム出力ストリーム メソッドを呼び出します。
いくつかの奇妙な理由で、このプロローグ ファイルでは動作しません (他のファイルで試してみましたが動作します): UI がフリーズし、コンテンツが Java コンソール (Eclipse) に表示され続けます。エキスパート システム ファイルはwrite
、Prolog の命令で動作します (例: write('Lorem Ipsum')
) 。
- なぜ standardOut が使用されないのですか? このように宣言してもよろしいですか?
- Eclipse コンソールに書き込む必要があるすべてのテキストを強制的にリダイレクトする方法はありますか?
また、プロローグで「 write Stream 」メソッドを使用しようとしましたが、(このプロローグ ファイルのみ、おそらく再帰が原因で) outpus が txt ファイルに書き込まれているにもかかわらず、UI がフリーズします。
java - Java から (ユーザー入力に基づいて) Prolog ルールを動的に生成する方法はありますか?
キーワード動的。
私は SWI-Prolog の JPL を試してきましたが、私が知る限り、できることは、事前に作成された Prolog ファイルを取得し、そのナレッジ ベースで実行されるいくつかのクエリを動的に構築することだけです。知識ベースに実際に追加する方法はありません。
私が想定しているのは、Java プログラムを実行しているユーザーが、ある種のコマンド ライン インターフェイス (つまり、ユーザーがインタラクティブなフィクション ストーリーで作成した特定のオブジェクトのプロパティを設定する) を介して Prolog ナレッジ ベースにルールを追加できることです。
JPLはこれを行うことができますか?どの Prolog インターフェイスも使用できますか? それとも、非常にオーバーエンジニアリングされていない (Cyc) か、バグのある混乱 (Tweety) でもない Java 知識表現ライブラリーを見つけるまで戻る必要がありますか? もしそうなら、何かお勧めはありますか?
eclipse - OS X (JPL) 上の Eclipse で Java を使用して SWI-prolog を構成する方法
Java と Prolog を連携させようとしています (OS X 10.11.1 上)。私が望むのは、Java から Prolog クエリを入力することだけです。
次のようなJavaコードを実行すると
次のエラーが表示されます。
SWIProlog が見つからなかったので、最初に PATH 変数にエントリを追加しましたが、効果はありませんでした。私のPATHには以下が含まれています:
誰かがどうしたか知っていることを願っています。何か案は?
java - Java-Prolog の間違った結果
Java で Org.JPL7 を使用してクエリを作成し、さまざまな方法で何度か実行しようとしましたが、多くの間違った結果が得られました。.pl ファイル内のコードは次のとおりです。
そしてJavaコードが次です。
結果:
そして私もこれを試します。
結果:
この...
結果:
「q2.nextSolution()」と「q2.nextElement()」を試してみましたが、結果は常に同じ「_N」で、N は任意の数字「0,1,2,3,4」で、わかりませんどうして。
java - swi-prolog と JPL からソリューションを取得できません
外部ファイルに保存されている DCG 文法を使用して JPL によるプロローグ ソリューションを取得したいのですがgetSolution
、クラスからメソッドを呼び出すと、プロローグから例外が発生します。
プロローグクラス:
prolog - JPLを使用してswi-prologコンソール出力を取得するには?
プロジェクトの 1 つで、swipl コンソール出力 (トレース出力) が必要です。これを行うために JPL7 API を使用しようとしていますが、swipl コンソールから出力を取得する方法が見つからないようです。これを行う方法はありますか?または、トレース出力をファイルに送り、そこから作業するために実行できるクエリはありますか?
前もって感謝します。
prolog - Prolog でチェーン ルールの推論の結果として生じるすべての事実を取得する方法
最後のルールが前のルールの結果に応じて望ましい結果を得る方法で、いくつかの連鎖ルールを実装しました。
ルールごとに推論されたすべての事実を取得する必要があります。私はjplライブラリを使ってJavaからこれをやっています。
Prolog であっても、これらすべての事実を取得するにはどうすればよいですか? 実際のプログラムでは、2 つ以上のルールがあります。