2010-09-24 49 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