راجع سجل التغيير.
إذا كان SWI-Prolog مثبتًا لديك، فهذا فقط:
pip install -U pyswip
راجع البدء للحصول على تعليمات مفصلة.
PySwip هي واجهة Python-Prolog التي تتيح الاستعلام عن SWI-Prolog في برامج Python الخاصة بك. ويتميز بواجهة لغة أجنبية SWI-Prolog، وهي فئة أدوات مساعدة تجعل من السهل الاستعلام باستخدام Prolog وأيضًا واجهة Pythonic.
نظرًا لأن PySwip يستخدم SWI-Prolog كمكتبة مشتركة وأنواع ctypes للوصول إليها، فإنه لا يتطلب تثبيت التجميع.
تم تقديم PySwip إليك من خلال مجتمع PySwip. شكرا لجميع المساهمين.
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
يمكن أيضًا استشارة قاعدة المعرفة الموجودة والمخزنة في ملف Prolog والاستعلام عنها. بافتراض أن اسم الملف "knowledge_base.pl" ويتم تشغيل Python في نفس دليل العمل، فسيتم الرجوع إليه على النحو التالي:
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
تعتمد الوظيفة الأساسية لـ Prolog.query
على النطاق العام prolog.py الخاص بـ Nathan Denny.
تم استخدام PySwip في المقالات العلمية والرسائل العلمية ومشاريع الطلاب على مر السنين. توجه إلى مجتمع PySwip لمزيد من المعلومات وروابط المجتمع.
هل لديك مشروع أو فيديو أو منشور يستخدم/يذكر PySwip؟ تقديم مشكلة أو إرسال طلب سحب.
إذا كنت ترغب في الإشارة إلى PySwip في مستند LaTeX، فيمكنك استخدام ملف BibTeX المقدم. يمكنك أيضًا استخدام المعلومات التالية للإشارة إلى PySwip:
تم ترخيص PySwip بموجب ترخيص MIT.