43

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

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

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

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

4

13 回答 13

21

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

祝您搜索顺利!

于 2009-11-29T23:01:33.663 回答
8

SWI prolog 一个非常流行的实现似乎有一个Java 接口,SiCStus也有,这比使用 JNI 在你的 Java 进程中实例化一个实例更容易。我很久以前就使用过 C 语言并推荐它们。我更喜欢 SWI,因为它是开源的,而且根据我的经验,它是事实上的实现。

SWI 的 Java 接口的文档似乎足够了,嵌入过程也很简单。

于 2009-11-29T22:43:48.427 回答
6

两年前我也需要这样做。我使用了称为 JPL 的 SWI 接口。它允许您加载 Prolog 文件,对其进行断言和查询。它确实需要安装 SWI Prolog,但这根本不是问题。SWI Prolog可用于许多平台

我还尝试了 100% 用 Ja​​va 实现且不需要外部程序的替代方案。所有这些都是越野车或难以使用。不要浪费你的时间。

于 2009-11-30T16:30:10.310 回答
4

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

于 2011-12-22T18:04:37.320 回答
3

Amzi prolog已经存在了一段时间。我已经简单地使用了它,但没有使用嵌入式版本。但是他们确实有很好的文档,并且可以购买支持。他们有 Java 端口,所以可能值得一看。

于 2009-11-29T22:51:05.823 回答
2

LPA 确实提供 LPA 智能服务器作为将其 Prolog 引擎嵌入到各种主流语言(包括 Java、.Net 等)中的一种方式

克莱夫

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

于 2010-03-22T12:28:51.493 回答
2

您还可以查看我创建的 Prol 引擎。它允许您将 Prolog 嵌入到您的 Java 程序中(但速度不是很快)

于 2011-07-05T14:13:08.903 回答
2

两个用 Java 编写的商业 Prolog:IF Computer Japan 的 Minerva 和 Jekejeke。两者都非常接近 ISO。

于 2011-07-06T05:16:44.157 回答
2

Paul Tarau 教授在他的页面上提供了几个实现

金妮序言

内核序言

于 2013-11-20T14:54:34.690 回答
1

Prova 3.0 http://www.prova.ws即将完成。然而,它不仅仅是另一个 Prolog,而是编程风格的混合体,特别适用于简单的双向 Java 集成、反应式代理编程、与 ESB 的集成、工作流逻辑和事件处理。此版本是从零开始的完全重写,因此缺少一些较旧的功能,例如 OWL 集成,但一定会在下一个版本中返回。

于 2010-01-21T19:16:17.410 回答
1

Scala有Mini-Kanren,它为您提供了一种精简、可破解、现代的基于 Horn 子句的逻辑编程语言的本机 JVM 实现。

于 2010-03-03T10:02:48.263 回答
1

我最近遇到的另一个有价值的选择是 JSetL。它不是 Prolog,而是 Java 的约束编程库,支持逻辑变量、统一、约束求解和非确定性。

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

于 2010-04-13T13:20:38.243 回答
1

Java 中有许多 Prolog 实现。它们不是非常快,但在 Java 中使用起来很方便。例如: TuPrologPrologCafe您还可以查看以下关于Java Prolog 程序的执行和分析 主题的学士论文 。

于 2010-04-21T06:36:15.327 回答