簡體   English   中英

用於Java的嵌入式Prolog解釋器/編譯器

[英]Embedded Prolog Interpreter/Compiler for Java

我正在開發一個Java應用程序,它需要做一些復雜的邏輯規則推導作為其功能的一部分。 我想在Prolog或其他邏輯/約束編程語言而不是Java中編寫我的邏輯演繹編碼,因為我相信結果代碼將更加簡單和易於維護。

我在Prolog上搜索了嵌入式Java實現,並發現了它們的數量,每個都只有很少的文檔。 我的(適度)選擇標准是:

  • 應該可以嵌入Java(例如,可以與我的java包捆綁在一起,而不需要在外部程序上進行任何本機安裝)
  • 從Java使用的簡單接口(用於啟動扣減,檢查結果和添加規則)
  • 至少有一些關於如何使用它的例子
  • 不一定必須是Prolog,但具有上述標准的其他邏輯/約束編程語言也適合我的需要。

我有什么選擇,它們的優點和缺點是什么?

根據Wikipedia ,以下版本的Prolog具有Java接口。 我已經鏈接到他們的主頁:

祝您的搜索順利!

SWI prolog一個非常流行的實現似乎有一個Java接口和SiCStus一樣 ,這比使用JNI在Java進程中實例化一個實例更容易。 我很久以前就使用了C和推薦它們。 我的首選是SWI,因為它是開源的,根據我的經驗, 事實上的實現。

SWI Java接口的文檔似乎已經足夠,嵌入過程非常簡單。

我需要在2年前做同樣的事情。 我使用了名為JPL的SWI接口 它允許您加載Prolog文件,在其上斷言並查詢它。 它確實需要安裝SWI Prolog,但這根本不是問題。 SWI Prolog 適用於許多平台

我也嘗試過用Java實現100%並且不需要外部程序的替代方案。 所有這些都是馬車或難以使用。 不要浪費你的時間。

Amzi prolog已經存在了一段時間。 我簡單地使用了它,但沒有使用嵌入式版本。 但他們確實有很好的文檔和支持可以購買。 他們有Java端口,所以值得一看。

LPA確實提供LPA Intelligence Server作為將Prolog引擎嵌入各種主流語言(包括Java,.Net等)的方式

克萊夫

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

您還可以查看我創建的Prol引擎 它允許您將Prolog嵌入到Java程序中(但它不是很快)

用Java編寫的兩本商業Prolog:IF Computer Japan和Jekejeke的Minerva。 兩者都非常接近ISO。

Clojure是一種基於JVM的類似Lisp的語言,其庫( core.logic )支持基於邏輯和約束的編程。 Clojure還有大量用於生成java類和使用java代碼的工具 ,因此兩種語言之間的交互操作是微不足道的。

Paul Tarau教授從他的頁面中提供幾個實現

Jinni Prolog

內核Prolog

Prova 3.0 http://www.prova.ws即將完成。 然而,它不僅僅是另一種Prolog,而是混合編程風格,特別適用於簡單的雙向Java集成,反應式代理編程,與ESB的集成,工作流邏輯和事件處理。 這個版本是從零完全重寫的,因此缺少一些舊功能,如OWL集成,但必須在下一版本中返回。

ScalaMini-Kanren ,它為您提供了一種基於Jorn子句的精簡,可黑客,現代的邏輯編程語言的原生JVM實現。

我最近遇到的另一個有價值的選擇是JSetL。 它不是Prolog,而是Java的約束編程庫,支持邏輯變量,統一,約束求解和非確定性。

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

Java中有許多Prolog實現。 它們不是非常快,但在Java中使用方便。 例如: TuPrologPrologCafe您還可以查看以下關於Java中Prolog程序執行和分析主題的學士論文。

暫無
暫無

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

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