Siehe Änderungsprotokoll.
Wenn Sie SWI-Prolog installiert haben, ist es nur:
pip install -U pyswip
Ausführliche Anweisungen finden Sie unter „Erste Schritte“.
PySwip ist eine Python-Prolog-Schnittstelle, die die Abfrage von SWI-Prolog in Ihren Python-Programmen ermöglicht. Es verfügt über eine SWI-Prolog-Fremdsprachenschnittstelle, eine Utility-Klasse, die das Abfragen mit Prolog vereinfacht, und auch über eine Pythonic-Schnittstelle.
Da PySwip SWI-Prolog als gemeinsam genutzte Bibliothek und ctypes für den Zugriff verwendet, ist keine Installation der Kompilierung erforderlich.
PySwip wurde Ihnen von der PySwip-Community zur Verfügung gestellt. Vielen Dank an alle Mitwirkenden.
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
Eine vorhandene Wissensdatenbank, die in einer Prolog-Datei gespeichert ist, kann ebenfalls konsultiert und abgefragt werden. Unter der Annahme, dass der Dateiname „knowledge_base.pl“ lautet und Python im selben Arbeitsverzeichnis ausgeführt wird, wird es wie folgt konsultiert:
from pyswip import Prolog
Prolog . consult ( "knowledge_base.pl" )
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)" )))
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
Die Kernfunktionalität von Prolog.query
basiert auf Nathan Dennys Public Domain prolog.py.
PySwip wurde im Laufe der Jahre in wissenschaftlichen Artikeln, Dissertationen und Studentenprojekten verwendet. Weitere Informationen und Community-Links finden Sie in der PySwip-Community.
Haben Sie ein Projekt, Video oder eine Veröffentlichung, die PySwip verwendet/erwähnt? Melden Sie ein Problem oder senden Sie eine Pull-Anfrage.
Wenn Sie PySwip in einem LaTeX-Dokument referenzieren möchten, können Sie die bereitgestellte BibTeX-Datei verwenden. Sie können auch die folgenden Informationen verwenden, um auf PySwip zu verweisen:
PySwip ist unter der MIT-Lizenz lizenziert.