Consultez le journal des modifications.
Si SWI-Prolog est installé, c'est juste :
pip install -U pyswip
Voir Commencer pour des instructions détaillées.
PySwip est une interface Python-Prolog qui permet d'interroger SWI-Prolog dans vos programmes Python. Il dispose d'une interface en langue étrangère SWI-Prolog, d'une classe utilitaire qui facilite les requêtes avec Prolog et également d'une interface Pythonic.
Étant donné que PySwip utilise SWI-Prolog comme bibliothèque partagée et des ctypes pour y accéder, il ne nécessite pas d'installation de compilation.
PySwip vous a été présenté par la communauté PySwip. Merci à tous les contributeurs.
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
Une base de connaissances existante stockée dans un fichier Prolog peut également être consultée et interrogée. En supposant que le nom de fichier "knowledge_base.pl" et que Python soit exécuté dans le même répertoire de travail, il est consulté comme suit :
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
La fonctionnalité de base de Prolog.query
est basée sur le prolog.py du domaine public de Nathan Denny.
PySwip a été utilisé dans des articles scientifiques, des mémoires et des projets étudiants au fil des ans. Rendez-vous sur la communauté PySwip pour plus d'informations et des liens vers la communauté.
Avez-vous un projet, une vidéo ou une publication qui utilise/mentionne PySwip ? déposer un problème ou envoyer une pull request.
Si vous souhaitez référencer PySwip dans un document LaTeX, vous pouvez utiliser le fichier BibTeX fourni. Vous pouvez également utiliser les informations suivantes pour faire référence à PySwip :
PySwip est sous licence MIT.