17

職場では、Web アプリのルール エンジンのバックエンドとして Prolog を使用するという議論がありました。

これは既存のシステムにどのように結び付けられますか?

プロローグモジュールの呼び出しを可能にする他の言語用の利用可能なプロローグライブラリはありますか?

4

6 に答える 6

12

SWI-Prologの場合、Prolog でSWRLをサポートし、OWL/SWRL 推論用の HermiT やPelletなどJPLを介して外部推論器に接続できるThea2を検討できます。

個人的な話ですが、私は過去に何度かJPLを使用して、SWI-Prolog バックエンドで Web アプリを有効にしました。これは、Java などの JVM で実行可能な言語を使用して Web アプリをプログラムする場合に問題なく動作します。 、Groovy、または Scala などです。もう 1 つの方法は、SWI-Prolog をCまたはC++ 環境にフックすることです。これは Web アプリでは試していません。

Web アプリが JVM または C/C++ で実行されない別の開発言語を使用している場合、実行中の SWI-Prolog を接続するのが少し難しいように思われるため、これは適切な方法ではない可能性があります。環境から他の言語環境へ。ただし、以前にHTTPを使用して SWI-Prolog-to-anything ブリッジを正常に実装したことがありますが、パフォーマンスが必要な場合、これは理想的とは言えません。

于 2010-09-24T23:58:52.363 に答える
8

swi-prolog には、完全に合理的な HTTP サーバー/Web フレームワークが含まれています。

HTTP 経由で通信できます。

XML/SGML と JSON、および ODBC を解析するためのツールがあります。

于 2012-09-06T05:23:41.960 に答える
6

あなたが何を探しているのか正確にはわかりませんが、 Python、C#、または Javascript を使用して Prolog コードをプログラムに埋め込むことを可能にするYield Prologを調べることをお勧めします。関連する API はありません。私はこれを自分で(まだ)使用していませんが、あなたがやろうとしていることには従うかもしれません.

于 2010-09-25T00:13:56.840 に答える
4

特にサーバー側での Web 組み込みの重要な前提条件は、Prolog システムのマルチスレッド機能だと思います。複数のユーザーに同時にサービスを提供したい場合は、少なくともこれが必要になるでしょう。

次に、ページが Prolog 自体によって生成および保守される純粋なソリューションを選択できます。または、Prolog システムが一部のビジネス ロジックにのみ使用され、別のプログラミング言語がプレゼンテーションやストレージに使用される混合ソリューションの場合もあります。

次のWiki 比較表は、Prolog システムの概要と、それらがマルチスレッド化されているかどうか、および/または Web プログラミングをサポートしているかどうかを示しています。

Prolog の実装、
オペレーティング システム、および Web 関連の機能の比較

この問題に対する私自身の見解として、サーバー側のビジネス ロジックに Jekejeke ランタイムを使用する方法を示す小さなチュートリアルを用意しました。Jekejeke Runtime は非常に柔軟で、複数のスレッドを持つことができるだけでなく、複数の知識ベースを持つこともできます。

Jekejeke ランタイム、
デプロイ方法

たとえば、Jekejeke ランタイムは現在生産的な販売システムで使用されており、一部のカスタム読み取り/書き込みロックによって、Web コンテキストを再起動することなく、管理者によるナレッジ ベースのリモート ホット スワップさえも可能にします。残念ながら、その報告はまだありません。

さよなら

于 2012-09-06T09:55:23.713 に答える
2

LPA Prolog は、ビジネス インテグリティの業界をリードするドキュメント アセンブリ製品である DealBuilder 内で、さまざまな商用 Web ベース アプリケーションで広く使用されています。

LPA は、Web ベースのアプリケーションを配信するためのさまざまなアーキテクチャを提供します。そのうちのいくつかは、LPA Web サイト www.lpa.co.uk の VisiRule セクションに掲載されています。

クライヴ

于 2010-09-27T15:44:29.903 に答える