用于Java的嵌入式Prolog解释器/编译器

Sam*_*ami 43 java prolog logic-programming embedded-language constraint-programming

我正在开发一个Java应用程序,它需要做一些复杂的逻辑规则推导作为其功能的一部分.我想在Prolog或其他逻辑/约束编程语言而不是Java中编写我的逻辑演绎编码,因为我相信生成的代码将更加简单和易于维护.

我在Prolog上搜索了嵌入式Java实现,并发现了它们的数量,每个都只有很少的文档.我的(适度)选择标准是:

  • 应该可以嵌入Java(例如,可以与我的java包捆绑在一起,而不需要在外部程序上进行任何本机安装)
  • 从Java使用的简单接口(用于启动扣减,检查结果和添加规则)
  • 至少有一些关于如何使用它的例子
  • 不一定必须是Prolog,但具有上述标准的其他逻辑/约束编程语言也适合我的需要.

我有什么选择,它们的优点和缺点是什么?

Chi*_*Uni 22

根据Wikipedia,以下版本的Prolog具有Java接口.我已经链接到他们的主页:

祝您的搜索顺利!

  • 维基百科列出了与Java接口更多的Prolog系统:JIProlog,Jekejeke序言,JLog,jTrolog,XSB序言,序言YAP. (2认同)

Has*_*yed 8

SWI prolog一个非常流行的实现似乎有一个Java接口和SiCStus一样,这比使用JNI在Java进程中实例化一个实例更容易.我很久以前就使用了C和推荐它们.我的首选是SWI,因为它是开源的,根据我的经验,事实上的实现.

SWI Java接口的文档似乎已经足够,嵌入过程非常简单.

  • 我相信你可以将可执行文件或DLL包装起来包含在你的JAR文件中.SWI最初是作为unix应用程序启动的,因此我认为它不会执行真正安装程序所需的操作 - 即进行注册表更改或安装com对象. (2认同)

Jua*_*nti 6

我需要在2年前做同样的事情.我使用了名为JPL的SWI接口.它允许您加载Prolog文件,在其上断言并查询它.它确实需要安装SWI Prolog,但这根本不是问题.SWI Prolog 适用于许多平台.

我也尝试过用Java实现100%并且不需要外部程序的替代方案.所有这些都是马车或难以使用.不要浪费你的时间.


det*_*erb 5

Clojure是一种基于 JVM 的类 Lisp 语言,具有支持逻辑和基于约束的编程的库 ( core.logic )。Clojure 还具有大量用于生成 Java 类和使用 Java 代码的工具,因此两种语言之间的互操作很简单。