43

私はJavaでアプリケーションに取り組んでおり、その機能の一部として複雑な論理ルールの推論を行う必要があります。結果として得られるコードは非常に単純で保守しやすいものになると信じているため、Java の代わりに Prolog やその他の論理/制約プログラミング言語で論理演繹をコーディングしたいと考えています。

Prolog に埋め込まれた Java の実装を探してみたところ、多数の実装が見つかりましたが、それぞれのドキュメントはほとんどありませんでした。私の(控えめな)選択基準は次のとおりです。

  • Java に組み込むことができる必要があります (たとえば、外部プログラムのネイティブ インストールを必要とする代わりに、私の Java パッケージにバンドルすることができます)。
  • Java から使用するシンプルなインターフェース (推論の開始、結果の検査、およびルールの追加用)
  • それを使用する方法に関する少なくともいくつかの例が付属しています
  • 必ずしも Prolog である必要はありませんが、上記の基準を持つ他のロジック/制約プログラミング言語も私のニーズに合っています。

どのような選択肢があり、その利点と欠点は何ですか?

4

13 に答える 13

21

Wikipediaによると、以下のバージョンの Prolog には Java インターフェイスがあります。それらのメインページにリンクしました:

検索頑張ってください!

于 2009-11-29T23:01:33.663 に答える
8

SWI プロローグ 非常に人気のある実装には、Java プロセスでインスタンスをインスタンス化するために JNI を使用するよりも簡単なSiCStus のような Java インターフェースがあるようです。私はかなり前にCから両方を使用しており、それらをお勧めします。SWI はオープンソースであり、私の経験から事実上の実装であるため、私の好みは SWI です。

SWI の Java インターフェイスのドキュメントは適切であり、埋め込みプロセスは非常に簡単です。

于 2009-11-29T22:43:48.427 に答える
6

私は2年前に同じことをする必要がありました。JPL と呼ばれる SWI インターフェイスを使用しました。Prolog ファイルをロードし、アサートし、クエリを実行できます。SWI Prolog のインストールが必要ですが、まったく問題ありません。SWI Prolog は多くのプラットフォームで利用できます

また、100% Java で実装され、外部プログラムを必要としない代替手段も試しました。それらはすべてバグがあるか、使いにくいものでした。時間を無駄にしないでください。

于 2009-11-30T16:30:10.310 に答える
4

Clojureは、ロジックと制約ベースのプログラミングをサポートするライブラリ ( core.logic ) を備えた JVM ベースの Lisp に似た言語です。Clojure には、Java クラスを生成し、Java コードを操作するための多数の機能も備わっているため、2 つの言語間の相互運用は簡単です。

于 2011-12-22T18:04:37.320 に答える
3

Amzi プロローグはしばらく前から存在しています。簡単に使用しましたが、組み込みバージョンではありません。ただし、優れたドキュメントがあり、サポートを購入できます。それらにはJavaポートがあるので、一見の価値があるかもしれません。

于 2009-11-29T22:51:05.823 に答える
2

また、私が作成したProlエンジンを確認することもできます。それはあなたがあなたのJavaプログラムにPrologを埋め込むことを可能にします(しかしそれはそれほど速くはありません)

于 2011-07-05T14:13:08.903 に答える
2

Java で書かれた 2 つの商用 Prolog: IF Computer Japan による Minerva と Jekejeke。どちらもISOに非常に近いです。

于 2011-07-06T05:16:44.157 に答える
2

LPA は、Java、.Net などを含むさまざまな主流言語に Prolog エンジンを埋め込む方法として、LPA Intelligence Server を提供しています。

クライヴ

http://www.lpa.co.uk/int.htm

于 2010-03-22T12:28:51.493 に答える
2

Paul Tarau 教授は、彼のページからいくつかの実装を利用できるようにしました

ジニー プロローグ

カーネル プロローグ

于 2013-11-20T14:54:34.690 に答える
1

私が最近見つけたもう 1 つの価値のあるオプションは、JSetL です。これは Prolog ではなく、Java 用の制約プログラミング ライブラリであり、論理変数、統一、制約解決、および非決定性をサポートしています。

http://prmat.math.unipr.it/~gianfr/JSetL/index.html

于 2010-04-13T13:20:38.243 に答える
1

Mini-Kanren for Scalaがあり、無駄のないハック可能な最新の Horn 節ベースの論理プログラミング言語のネイティブ JVM 実装を提供します。

于 2010-03-03T10:02:48.263 に答える
1

Java には多くの Prolog 実装があります。それらはそれほど高速ではありませんが、Java 内から使用すると便利です。例: TuPrologまたは PrologCafe Java での Prolog プログラム の実行と分析に関する次の学士論文も参照でき ます。

于 2010-04-21T06:36:15.327 に答える
1

Prova 3.0 http://www.prova.wsは完成に近づいています。ただし、これは単なる別の Prolog ではなく、プログラミング スタイルの組み合わせであり、特に簡単な双方向 Java 統合、リアクティブ エージェント プログラミング、ESB との統合、ワークフロー ロジック、およびイベント処理に役立ちます。このバージョンはゼロからの完全な書き直しであるため、OWL 統合などの一部の古い機能が欠落していますが、次のリビジョンで復活する予定です。

于 2010-01-21T19:16:17.410 に答える