2010-09-24 83 views
13

在工作中,曾討論過使用prolog作爲Web應用程序中規則引擎的後端。這將如何與現有系統綁定?是否有可用於允許調用prolog模塊的其他語言的prolog庫。Prolog網頁編程

+1

只是出於好奇:您的工作場所有多少人實際上已經完全接受了Prolog?這似乎是一個有趣的選擇,商業智慧。 – 2010-09-24 21:13:48

回答

9

對於SWI-Prolog,你可以看看Thea2這對於SWRL支持序言,也可以通過連接到外部推理JPLHermiT爲OWL/SWRL推理,或Pellet

在個人請注意,過去我多次使用JPL來啓用帶有SWI-Prolog後端的網絡應用程序,如果您打算使用可在JVM上執行的語言(如Java,Groovy,或者Scala,例如。另一種選擇是將SWI-Prolog掛接到CC++ environment,我還沒有嘗試使用網絡應用程序。

如果您的網絡應用程序使用另一種不能在JVM或C/C++上運行的開發語言,那麼這可能不適合您,因爲它似乎有點難以連接將SWI-Prolog環境運行到其他語言環境。然而,這就是說,我們已經成功實施了一個使用HTTP的SWI-Prolog-to-anything橋樑,但是如果性能是必需的,這並不理想。

+0

GNU prolog的任何框架? – iGbanam 2013-07-20 01:43:29

+0

我不確定 - 我主要處理SWI-Prolog。 – sharky 2013-07-20 06:22:02

2

我不確定你在找什麼,但你可能想看看Yield Prolog ,它允許使用Python,C#或Javascript嵌入Prolog代碼到程序中。沒有涉及的API。我還沒有用過這個,但它可能適合你想要做的事情。

+0

以我的理解Yield Prolog是基於JavaScript的,你會在網絡服務器上運行嗎?但對於前端集成,我想這會很好。 – 2012-09-06 09:56:44

+0

由於Javascript中的服務器端編程變得越來越受[node.js](https://nodejs.org/)的歡迎,因此這可能是用於在客戶端或服務器端集成Prolog處理的有用工具。 – sharky 2015-04-21 23:08:35

1

LPA Prolog的已被廣泛應用於各種商業的基於Web的應用程序,最顯着的商業誠信的業界領先的文檔組件產品,DealBuilder內

LPA提供deliverying基於Web的應用程序的各種架構 - 其中有些是在VisiRule部內shocased對LPA的網站 www.lpa.co.uk

克里夫

5

SWI-Prolog有包括一個完全合理的HTTP服務器/網絡框架。

你可以通過HTTP與它通話。

有解析XML/SGML和JSON,以及ODBC

+0

JSON以及一些數據庫連接,似乎對web很重要。不幸的是,這裏沒有列出:http://en.wikipedia.org/wiki/Comparison_of_Prolog_implementations#Operating_system_and_Web-related_features – 2015-05-09 12:42:29

0

我猜網頁嵌入的一個重要前提,特別是在 服務器端工具,是Prolog的系統多theading能力。在 至少你可能需要這個,如果你想同時服務多個 用戶。

然後,您可以選擇純粹的解決方案,其中由Prolog本身生成和維護的頁面爲 。或者對於混合解決方案, ,其中Prolog系統僅用於某些業務邏輯,另一個 編程語言用於演示和/或存儲。

以下維基對照表給出的Prolog系統的概述和 無論是多線程和/或支持一些Web編程:

Comparison of Prolog implementations,
Operating system and Web-related features

對於我自己採取對這個問題我有設置了一個小教程 ,該教程顯示Jekejeke Runtime用於服務器端 業務邏輯。 Jekejeke Runtime是相當靈活的,你不能 只有多個線程,你也可以有多個 知識庫。

Jekejeke Runtime,
Deployment Methods

的Jekejeke運行系統是例如目前在生產 銷售系統中,通過一些定製的讀/寫鎖,它使知識基礎,甚至遠程 熱插拔管理員無需重新啓動 的web上下文。遺憾的是,目前還沒有報道。

再見

+0

SWI-Prolog web框架是多線程的。我用它來申請我每天服務10^7左右的應用程序。 – Anniepoo 2015-05-08 19:28:48

+0

是的,這也是爲什麼SWI-Prolog在我的文章中給出的Wiki錶鏈接中列出的原因。同樣的Wiki比較表有一列「多線程」,還有與網絡相關的列。 – 2015-05-09 12:36:38