質問

Swi-Progologのセマンティックライブラリを使用した現実世界プログラミングの経験を持っている人々から耳を傾けたいと思います。

編集:この質問の理由は、Prolog Experienceで私が話した多くの人々の中で、彼らのほとんどが学術プロジェクトのいくつかのAIプログラミングにそれを使用したようです。誰かが生産環境で広くそれを使用しているかどうかを知りたかったのです。リアルタイムのメンテナンス可能性であるため、パフォーマンスは、優れた成績を得るためにプロジェクトを実行することとは異なります。

Javaのようなプログラミング言語とどのように統合しましたか?

編集:答えで述べたように、SWI Prologの外部インターフェイスの休憩サービスまたは使用法が2つの最良のオプションであるようです。

(セマンティックWebのコンテキストで)Prologライブラリを使用しましたか?

おそらくここでこれに対して明確な答えは得られないでしょう。この質問はセマンティックオーバーフローに属します。私は今、公正なアイデアを持っています、そして、より適切なフォーラムでこの議論を続けます。

どの開発環境が使用されましたか?SWI Prologによって提供されるEMACまたはそのバリアントは、圧倒的な答えのようです。

JavaのIntellijのアイデアのようなIDEを望んでいませんでした。結局のところ、私は何をしますか、自動完成?ルールベースの言語の必要性を理解しています。繰り返しになりますが、私が開発環境について議論した理由は、私のルール(デバッグ)を追跡するのを助けることであり、おそらく私の知識セットの異常を特定することです。swiPrologグラフィカルトレーサーは最初の要件を処理しますが、少なくとも私には、それが現れたように見えました。見掛け倒しと限定。しかし、私は他に何もあるとは思わない。

私はSWI Prologを使用するというアイデアが本当に好きですが、生産性に影響を与える場合は、そこから離れます。

答えで述べたように、Prologはそれが得意なことを実行するために使用する必要があります。私はこれを常に知っていたので、他のプログラミング言語との統合に関する私の質問でした。最大の生産性HOGは、開発者の品質であり、開発段階にあるようです。システムの問題は休眠状態であり、簡単に修正できない場合がありますが、システムの有効性をチェックするために一連の質問を使用して処理できます。

注:答えに言及するとき、@littletableが提供する答えを意味します。また、SWI Prolog for Semantic Webに興味がある人のために、 シーア 面白そうです。

役に立ちましたか?

解決

免責事項:私は商業/生産環境でSWI-Prologを使用しませんでした。SWI/Javaインターフェイスを試しませんでした(SWIプロログメーリングリストでは合理的にうまく機能することが報告されていますが)。セマンティックウェブ。

とはいえ、私はSwi-Progologを使用して大規模で非自明のプロジェクトを書きましたが、それはおもちゃのアプリケーションではありませんでした - 私は研究を終了するためにそれを機能させる必要がありました。したがって、私は持っています いくつか すべてのものではないとしても、この質問に答えるための資格情報 必要 ワンズ。

大規模なプロジェクトのコンテキストでは、SQLやストレージとは異なり、検索ルーチンを作成するためのドメイン固有の言語としてPrologを扱うことが最善です。 Prologは非常にうまくいき、検索の問題を解決することを非常にうまく行います。一連の事実とルールが与えられた一連の変数への有効な割り当てを見つけるために問題を絞り込むことができれば、プロログはあなたの選択の武器です。調整以外のコーディングの他のことを心配する必要はありませんクエリとルール。また、特に述語をコンパイルする場合は、かなり速く実行されます。 Prologは、本質的に遅いためではなく、大きな検索スペースで検索ルーチンを実行しているために遅くなることがよくあります。

それを念頭に置いて、SQLを統合する同様の方法でJavaと統合できます。Prologは検索の解決に注意してください。永続的なデータとルールを保存し、クエリを実行します。 Javaアプリは他のものの世話をします。

開発環境は、Prologのソフトスポットです。派手なIDEを手に入れることはありません - 単に、派手なものがほとんどないからです。 Prologプログラムに完全なコンパイル時間情報がないことはめったにないため、完全な自動完了を取得することはありません。私は単にEMACを使用しましたが、Prolog Shellは常に開いています。ほとんどの場合、Prolog Textual Tracer/Debuggerがトリックを行います。 SWIにはグラフィカルなデバッガーが付属していますが、試したことはありません。

Prologには、組み込みの解析フレームワーク(DCGルール)、優れたマクロシステム(用語拡張)、およびメタプリダイテス(Call、Findallなど)など、いくつかのめったに知られていない利点がいくつかあります。それらの使用方法を知っている場合、これらはデッキの実際のエースです。

要約すると、Prologは生産性を高めたり損傷したりしますか?それは現在あなたの生産性をブロックしているものに依存します。 Javaで知識表現と検索ルーチンを実装する方法を疑問に思っている時間を無駄にしている場合は、Prologを使用してください。 SQLを使用する代わりに、「赤色の黒の木を実装する」というわけではありません。ソフトリアルタイムのパフォーマンスと甘やかされたIDEを探しているなら、何か他のものを試してください。

他のヒント

私もそれを生産環境では使用しませんでしたが、Java/Eclipseベースに統合しました 生物lipseのワークベンチ, 、私の論文の一部として、実際のシナリオで使用されます。また、論文作業は、生体におけるプロログ統合のパフォーマンスと使いやすさのテストに大きく焦点を当てていました。

以下で尋ねた質問に短い答えを出しますが、興味のある人のために、ほとんどの情報は私の論文レポートにあるという名前の名前をご覧ください。 「BioClipseでのセマンティッククエリのためのセマンティックWebツールとしてのSWIプロログ:統合とパフォーマンスベンチマーク」, 、私が関連するタグ付けされただけでなく ブログ投稿. 。ソースコードはaで使用できます Github Repo.

Javaのようなプログラミング言語とどのように統合しましたか?

を使用しました JPL Java Prologインターフェイス

(セマンティックWebのコンテキストで)Prologライブラリを使用しましたか?

私はそれを使用して、明確な高さのピークを含む約60000 NMRスペクトルのRDFデータベースとのパターンマッチングを行いました。これを使用して、PelletやJena(Java Based)などの他のセマンティックWebツールと比較して、この操作のSwi-Prologのパフォーマンスをテストしました。 (ところで、これらのツールの両方をはるかに上回ったSWIプロログ)。

どの開発環境が使用されましたか?

Eclipse RCP

私はSWI Prologを使用するというアイデアが本当に好きですが、生産性に影響を与える場合は、そこから離れます。

私の経験では、特定の問題の生産性の向上に加えて、特定の操作のパフォーマンスは、従来のプログラミング言語で書かれたツールよりもはるかに優れているということです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top