swi prolog的jupyter内核。

jswipl的Python项目详细描述


jswip

swi prolog的jupyter内核。

灵感来自madmax2012/SWI-Prolog-Kernel,现在使用PySwip

小心使用!

这个内核只在debian linux上使用jupyter lab进行了很少的测试。如果有人测试它,例如在普通的jupyter和/或windows上,请随意打开一张报告成功和/或失败的罚单。

我刚刚开始学习prolog,还没有用prolog的所有语言结构测试这个内核。更高级的prolog可能还有问题。

使用说明和限制

您应该将知识库和查询拆分为不同的单元格。只要内核运行,就会保留KB条目(事实等)。这意味着,如果运行包含两次事实的单元格,则事实将被发送到swipl两次。这通常不会导致错误,但在查询知识库时会导致奇数输出。

如果在运行查询时收到虚假输出,请重新启动内核,并确保只运行一次包含查询以外内容的任何单元格。

每个查询都必须以?-开头。

工作示例:

man(socrates).
mortal(X) :- man(X).

?- mortal(socrates).
?- mortal(X).
?- mortal(bob).

将输出。

true.
X = socrates.
false.

请记住,对于某些问题有很多答案。为了使内核总是在合理的时间内成功,任何一个查询的默认输出限制是10个答案。您可以通过以下语法来影响此限制。

?- someQuery(...) {LIMIT}.
以该查询将显示的最大数量的答案替换。它不是很好的解析(抱歉),所以大括号内或大括号与句点之间不能有空格。不是这样的:{1} .或者这个{ 1 }.

限制值-1表示没有限制。小心点!

支持的环境

只支持pyhton3(任何仍在使用python2的人现在都应该已经升级了…),而且它只在linux上测试过,因为我在windows上没有安装jupyter。但理论上它应该在窗户上工作。

安装

  1. 安装SWI-Prolog
  2. 安装jswiplpython3 -m pip install --upgrade --user jswipl
  3. 将目录更改为jupyters内核目录。通常是~/.local/share/jupyter/kernels
  4. mkdir jswipl && cd jswipl
  5. 安装内核规范:wget https://raw.githubusercontent.com/targodan/jupyter-swi-prolog/master/kernel.json
  6. 重新启动jupyter
  7. 利润

升级

保持最新状态就像不时地运行python3 -m pip install --upgrade --user jswipl一样简单。

贡献

如果出了什么问题,或者有人提出了拉票请求,你可以随意开票。如果打开一个pull请求,请将其打开到develop分支。这个存储库松散地依附于git flow workflowmaster分支是仅“发布”版本的分支。任何正在开发的东西都会进入develop分支。

请记住,这只是一个非常小的侧面项目,我不太可能投入大量的开发时间。不过,我会尽量回答任何问题,即使只是一个快速的“是的,会很好。“请打开一个拉请求某人。”我将尝试快速手动拉请求。

任何有兴趣成为共同维护者的人:打开一个问题让我知道。:)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
GridLayout不工作的java问题   java Restlet请求对象不包含身份验证信息   java使用Cucumber为每个正在运行的线程创建一个TestNG runner类   java在平面文件中存储并跟踪它们?   类Lcom/google/firebase/FirebaseApp中没有虚拟方法zzbzo()Z;或者它的超类   java如何在安卓中创建字符串模式   可从Java访问的树莓PI传感器   java 50+GB分隔文件中的大致行数   是否有Java进程内数据库,允许从多表虚拟机访问?   当我使用ArrayList时,HashMap中的Java ArrayList会导致HashMap中的数据被删除。去除   如何将值存储在最佳java集合结构中   java消息Servlet。servlet appServlet的init()引发异常   java正在使用Spring引导生成空日志文件   c#在访问实例变量时使用this关键字是否更有效?   java JScrollPane滚动到最后添加的行   java Vertx抛出IllegalStateException:响应已被写入   java Liferay以编程方式更改portlet列   java下载单个s3对象并将它们合并到单个文件中   java spark数据帧将JSON转换为ORC满足“列模糊异常”