簡體   English   中英

語義 Web 中的 SWI-Prolog

[英]SWI-Prolog in Semantic Web

我想聽聽那些在使用 SWI-Prolog 的語義庫方面有實際編程經驗的人的意見。

編輯:這個問題的原因是,在我與 prolog 經驗交談的許多人中,他們中的大多數人似乎在他們的學術項目中將它用於一些 AI 編程。 我想知道是否有人在生產環境中廣泛使用它。 因為實時可維護性,性能不同於完成項目以獲得好成績。

您是如何與 Java 之類的編程語言集成的?

編輯:如答案中所述,似乎 REST 服務或使用 SWI-Prolog 的外部接口是兩個最佳選擇。

您將 prolog 庫用於什么(在語義網的上下文中)?

可能不會在這里得到明確的答案。 可能,這個問題屬於語義溢出。 我現在有一個合理的想法,並將在更合適的論壇上繼續討論。

使用的是什么開發環境? SWI-Prolog 提供的 Emacs 或其變體似乎是壓倒性的答案。

我從來不想要一個 IDE 像 Intellij IDEA for java。 畢竟我會怎么做,自動完成? 我理解基於規則的語言的必要性。 再說一次,我討論開發環境的原因是為了幫助我跟蹤我的規則(調試),並且還可能識別我的知識集中的異常。 SWI-Prolog 的圖形跟蹤器滿足了第一個要求,但至少在我看來,它顯得粗制濫造和有限。 但我不相信還有別的。

我真的很喜歡使用 SWI-Prolog 的想法,但如果它影響生產力,我會避開它。

正如答案中提到的,應該使用 Prolog 來執行它擅長的事情。 我一直都知道這一點,因此我對與其他編程語言的集成提出了疑問。 似乎最大的生產力豬是開發人員的質量,並且處於開發階段。 系統中的問題可能處於休眠狀態且不易修復,但可以通過使用一組問題來檢查系統的有效性來處理。

注意:當我提到答案時,我指的是@littletable 提供的答案。 同樣對於對語義 web 的 SWI-Prolog 感興趣的人來說, thea看起來很有趣。

免責聲明:我沒有在商業/生產環境中使用 SWI-Prolog,我沒有嘗試過 SWI/Java 接口(盡管在 SWI-Prolog 郵件列表上報告說它工作得很好),我對語義網。

也就是說,我確實使用 SWI-Prolog 編寫了一個大型且非平凡的項目,它不是一個玩具應用程序 - 我需要它來完成我的研究。 因此,我有一些憑據可以回答這個問題,即使不是所有必需的憑據。

在大型項目的上下文中,最好將 Prolog 視為用於編寫搜索例程的特定領域語言 - 與 SQL 和存儲不同。 Prolog 做一件事非常好,那就是它解決了搜索問題。 如果您的問題可以縮小到在給定一組事實和規則的情況下找到一組變量的有效分配,那么 Prolog 是您的首選武器:除了調整之外,您無需擔心編碼中的任何其他問題查詢和規則。 它的運行速度也相當快,尤其是在編譯謂詞時。 Prolog 通常很慢,不是因為它本質上很慢,而是因為它在很大的搜索空間上運行搜索例程。

記住這一點,您可以以與集成 SQL 類似的方式將其與 Java 集成:Prolog 負責解決搜索問題。 它存儲永久數據和規則,並運行查詢。 Java 應用程序會處理其他任何事情。

開發環境是 Prolog 的一個軟肋。 你不會得到一個花哨的 IDE - 僅僅是因為很少有東西值得花哨。 Prolog 程序很少有完整的編譯時信息,所以你不會得到完美的自動完成。 我只是使用 Emacs,Prolog shell 總是打開的。 對於大多數事情,Prolog 文本跟蹤器/調試器可以解決問題。 SWI 自帶圖形調試器,但我沒試過。

Prolog 有幾個鮮為人知的優點:內置的解析框架(DCG 規則)、強大的宏系統(術語擴展)和元謂詞(call、findall 等)。 如果您知道如何使用它們,那么這些就是您套牌中的真正王牌。

總結一下:Prolog 是提高還是損害生產力? 這取決於當前阻礙您工作的因素。 如果您浪費太多時間想知道如何在 Java 中實現知識表示和搜索例程 - 只需使用 Prolog; 這並不是說您實現了自己的紅黑樹而不是使用 SQL。 如果您正在尋找軟實時性能和破壞性的 IDE - 嘗試其他方法。

我也沒有真正在生產環境中使用它,但我將它集成到基於 Java/Eclipse 的Bioclipse 工作台中,作為我論文工作的一部分,用於實際場景中。 此外,論文的工作重點是測試 Bioclipse 中 prolog 集成的性能和可用性。

我將簡要回答您在下面提出的問題,但對於任何感興趣的人,可以在我的論文報告中找到最多的信息,該報告名為 “SWI-Prolog as a Semantic Web Tool for Semantic querying in Bioclipse: Integration and performance benchmarking” ,如以及在我相關標記的博客文章中 源代碼在github repo 中可用。

您是如何與 Java 等編程語言集成的?

我使用了JPL Java Prolog 接口

你用 prolog 庫做什么(在語義網的上下文中)?

我用它對包含不同高度的峰的一些 60000 NMR 光譜的 RDF 數據庫進行了一些模式匹配。 我用它來測試 SWI-Prolog 與其他語義 Web 工具(如 Pellet 和 Jena(基於 Java)相比)在此操作中的性能。 (順便說一句,SWI-Prolog 的表現遠遠超過這兩個工具)。

用的什么開發環境?

日食RCP

我真的很喜歡使用 swi prolog 的想法,但如果它影響生產力,我會避開它。

我的經驗是,除了提高某些問題的生產力外,某些操作的性能也遠優於用傳統編程語言編寫的工具。

  1. 對於 Prolog 和 Java:sicstus prolog
  2. 你也可以使用 CORBA

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM