代码之家  ›  专栏  ›  技术社区  ›  Manuel Selva

如何从Java中使用Prolog?

  •  14
  • Manuel Selva  · 技术社区  · 14 年前

    在Java/Eclipse应用程序的上下文中,我希望使用Prolog来执行特定的任务。可用的解决方案和工具有哪些,以及相关的利弊?

    我可以启动一个外部prolog解释器,在文件中生成结果? 我可以使用一个完整的Prolog Java库(在Java中实现的PROLO解释器)? 我可以使用一个专用于与外部PROLO解释器通信的Java库吗?

    事先谢谢你的帮助,

    马努

    5 回复  |  直到 10 年前
        1
  •  10
  •   aioobe    14 年前

    我会给你 GNU Prolog for Java 一次尝试。从网站:

    Java的GNU Prolog是作为Java库的ISO PROlog的实现

        2
  •  7
  •   ProfVersaggi    12 年前

    我在用 图普罗洛格 Official Site , Code Repository 在Android上。他们在一个JAR文件的表单中有一个伟大的嵌入式prolog。他们也有反应!

        3
  •  5
  •   Mostowski Collapse ninesided    12 年前

    当查看多线程prolog系统时,有不同的 其他注意事项。一个目的是分离 线程和逻辑引擎之间。这里表达了这一点: http://www.cs.nmsu.edu/ALP/2011/03/concurrent-programming-constructs-and-first-class-logic-engines/

    有一些prolog系统实现了这种分离。杰克耶克 Prolog也在这些系统中。有一份报告(*)显示 如何使用这种分离。在各种情况下 我们看到“线程”是由 逻辑引擎:

    • 终端部署:线程是Java的主线程。
    • 独立部署:线程是awt/swing线程。
    • applet部署:线程是一些浏览器线程。
    • servlet部署:线程来自Web服务器池。
    • 客户端部署:线程是awt/swing线程。

    顺祝商祺!

    http://www.jekejeke.ch/idatab/doclet/prod/en/docs/05_run/15_stdy/08_deploy/package.html

        4
  •  4
  •   Kaarel    14 年前

    一个快速的谷歌返回 list of options (唉,5年内没有更新)。

    至于利弊,我看是这样的。
    带绑定的本机引擎 在分发和集成方面,这将是更糟糕的选择,但可能比本地Java引擎更快(但我希望首先提供证据)。
    基于API的Java引擎 在集成点上会导致一些尴尬,但应该易于分发。
    序言到字节码编译器 应该能够很好地处理两种语言之间的集成,这意味着您没有使用二进制文件来传送prolog脚本(可能是一个缺点)。这是一个很大的缺点——似乎没有人还活着。
    与字节码编译器相似的Prolog语言 和上面一样,但有些似乎仍然在流动,也需要新语言的知识。
    Java规则引擎 -我认为这是最干净的解决方案。而不是使用两种语言以java-y的方式编写规则,但这取决于用这种方式表达规则的复杂程度。

    第二件要考虑的事情是——项目是否仍在更新。从我的快速谷歌,很少有。 Prova Mandarax 是后一种选择的两个例外。

        5
  •  2
  •   Nicolas    13 年前