Skip to main content

A Jupyter Kernel for SWI-Prolog.

Project description

jswip

A Jupyter Kernel for SWI-Prolog.

Inspired by madmax2012/SWI-Prolog-Kernel and now using PySwip.

USE WITH CARE!

This kernel is only barely tested using jupyter lab on debian linux. If anyone tests it e. g. on plain jupyter and/or windows feel free to open a ticket to report success and/or failure.

I have only just started out learning prolog and have not tested this kernel with all language constructs of prolog yet. There might still be problems with more advanced prolog stuff.

Usage Notes and Limitations

You should split your knowledgebase and your queries into different cells. KB entries (facts and so on) will be retained as long as the kernel is running. This means that if you run a cell containing facts twice the facts will be sent to swipl twice. This will typically not result in errors but in odd outputs when querying the KB.

Should you receive bogus output when running queries restart the kernel and make sure you run any cell containing something other than queries only once.

Every query must start with ?-.

Working example:

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

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

Will output.

true.
X = socrates.
false.

Keep in mind that for some queries there are lots of answers. For the kernel to always succeed in a reasonable amount of time the default output limit to any one query is 10 answers. You can influence this limit by the following syntax.

?- someQuery(...) {LIMIT}.

Where LIMIT is replaced by the maximum number of answers that will be displayed for this query. It is not very smartly parsed (sorry), so there must be no spaces inside the curly braces or in between the closing curly brace and the period. Not like this: {1} . or this { 1 }.

A limit value of -1 means no limit. Be careful with this!

Supported environments

Only pyhton3 is supported (anybody still using python2 should really have upgraded by now...) and it was only tested on linux as I have no jupyter installation on windows. In theory it should work on windows though.

Installation

  1. Install SWI-Prolog.
  2. Install jswipl python3 -m pip install --upgrade --user jswipl
  3. Change directory to your jupyters kernel directory. Typically ~/.local/share/jupyter/kernels.
  4. mkdir jswipl && cd jswipl
  5. Install kernel spec: wget https://raw.githubusercontent.com/targodan/jupyter-swi-prolog/master/kernel.json
  6. Restart jupyter
  7. Profit

Upgrading

Keeping up to date is as simple as running python3 -m pip install --upgrade --user jswipl from time to time.

Contributing

Feel free to open tickets if something goes wrong or open pull requests. If you open a pull request do open it onto the develop branch. This repository loosely adheres to the git flow workflow. The master branch is the branch on which only "released" versions are. Anything in development goes into the develop branch.

Please do keep in mind that this is just a very small side project and I am unlikely to sink tons of development time into this. However I will try to answer on any issues even if it's just a quick "Yup, would be nice. Please open a pull request someone." and I'll try to handly pull requests quickly.

Anyone who's interested in becoming a co-maintainer: open an issue and let me know. :)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jswipl-1.0.2.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jswipl-1.0.2-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file jswipl-1.0.2.tar.gz.

File metadata

  • Download URL: jswipl-1.0.2.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for jswipl-1.0.2.tar.gz
Algorithm Hash digest
SHA256 3716198ce99e3e986a1c2830ac8580e5bd29ddd89d3784c4c963301ca9ec5e3e
MD5 471932cbb5a3d49d1453e3701de9728e
BLAKE2b-256 c3f6840d0446ba7cc94e96a2d421e5c67fa9bdf5f17aecd532ad7f80e991e500

See more details on using hashes here.

File details

Details for the file jswipl-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: jswipl-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for jswipl-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f033c8f0a44b17c23f5054c49ed8bc42f9047a5205679e74e66c01340cbf72a4
MD5 86e3912ef08d46bd6f80a9f441aa1ca2
BLAKE2b-256 faf67e4f4debc943b0d20107f666a3f3667ba771d282afab47d46909134ba392

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page