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。但理论上它应该在窗户上工作。
安装
- 安装SWI-Prolog。
- 安装jswipl
python3 -m pip install --upgrade --user jswipl
- 将目录更改为jupyters内核目录。通常是
~/.local/share/jupyter/kernels
。 mkdir jswipl && cd jswipl
- 安装内核规范:
wget https://raw.githubusercontent.com/targodan/jupyter-swi-prolog/master/kernel.json
- 重新启动jupyter
- 利润
升级
保持最新状态就像不时地运行python3 -m pip install --upgrade --user jswipl
一样简单。
贡献
如果出了什么问题,或者有人提出了拉票请求,你可以随意开票。如果打开一个pull请求,请将其打开到develop
分支。这个存储库松散地依附于git flow workflow。master
分支是仅“发布”版本的分支。任何正在开发的东西都会进入develop
分支。
请记住,这只是一个非常小的侧面项目,我不太可能投入大量的开发时间。不过,我会尽量回答任何问题,即使只是一个快速的“是的,会很好。“请打开一个拉请求某人。”我将尝试快速手动拉请求。
任何有兴趣成为共同维护者的人:打开一个问题让我知道。:)