Skip to main content

PySwip enables querying SWI-Prolog in your Python programs.

Project description

PySwip

PySwip logo

What's New?

See the Change Log.

Install

If you have SWI-Prolog installed, it's just:

pip install -U pyswip

See Get Started for detailed instructions.

Introduction

PySwip is a Python-Prolog interface that enables querying SWI-Prolog in your Python programs. It features an SWI-Prolog foreign language interface, a utility class that makes it easy querying with Prolog and also a Pythonic interface.

Since PySwip uses SWI-Prolog as a shared library and ctypes to access it, it doesn't require compilation to be installed.

PySwip was brought to you by the PySwip community. Thanks to all contributors.

Documentation

Examples

Using Prolog

from pyswip import Prolog
Prolog.assertz("father(michael,john)")
Prolog.assertz("father(michael,gina)")
list(Prolog.query("father(michael,X)")) == [{'X': 'john'}, {'X': 'gina'}]
for soln in Prolog.query("father(X,Y)"):
    print(soln["X"], "is the father of", soln["Y"])
# michael is the father of john
# michael is the father of gina

An existing knowledge base stored in a Prolog file can also be consulted, and queried. Assuming the filename "knowledge_base.pl" and the Python is being run in the same working directory, it is consulted like so:

from pyswip import Prolog
Prolog.consult("knowledge_base.pl")

Foreign Functions

from pyswip import Prolog, registerForeign

def hello(t):
    print("Hello,", t)
hello.arity = 1

registerForeign(hello)

Prolog.assertz("father(michael,john)")
Prolog.assertz("father(michael,gina)")
print(list(Prolog.query("father(michael,X), hello(X)")))

Pythonic interface (Experimental)

from pyswip import Functor, Variable, Query, call

assertz = Functor("assertz", 1)
father = Functor("father", 2)
call(assertz(father("michael","john")))
call(assertz(father("michael","gina")))
X = Variable()

q = Query(father("michael",X))
while q.nextSolution():
    print("Hello,", X.value)
q.closeQuery()

# Outputs:
#    Hello, john
#    Hello, gina

The core functionality of Prolog.query is based on Nathan Denny's public domain prolog.py.

Help!

PySwip Community Home

PySwip was used in scientific articles, dissertations, and student projects over the years. Head out to PySwip Community for more information and community links.

Do you have a project, video or publication that uses/mentions PySwip? file an issue or send a pull request.

If you would like to reference PySwip in a LaTeX document, you can use the provided BibTeX file. You can also use the following information to refer to PySwip:

  • Author: Yüce Tekol and PySwip contributors
  • Title: PySwip VERSION
  • URL: https://pyswip.org

License

PySwip is licensed under the MIT license.

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

pyswip-0.3.3.tar.gz (36.0 kB view details)

Uploaded Source

Built Distribution

pyswip-0.3.3-py3-none-any.whl (36.1 kB view details)

Uploaded Python 3

File details

Details for the file pyswip-0.3.3.tar.gz.

File metadata

  • Download URL: pyswip-0.3.3.tar.gz
  • Upload date:
  • Size: 36.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pyswip-0.3.3.tar.gz
Algorithm Hash digest
SHA256 745cc6d86046a4cf9ba775a76f00d97f7d9129f7517515228391d7399bc4fe3d
MD5 2329afa05e82b99763d6778701282d3e
BLAKE2b-256 ff7596b326387af00edd34c7cca121ce98c10062d7b8dc5ec73324727997f678

See more details on using hashes here.

File details

Details for the file pyswip-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: pyswip-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 36.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pyswip-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 abddc4729917e3631e4a516e16211cbee93d4b701700eb116d6c3e8228ec3052
MD5 64ee033b80d1927512ae38fa464af8e6
BLAKE2b-256 b52bc3bfc5a53714f7fb1b092aadb95277f133ce8c605f411f8888ca7ba340dd

See more details on using hashes here.

Supported by

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