ดูบันทึกการเปลี่ยนแปลง
หากคุณติดตั้ง SWI-Prolog ไว้ ก็เป็นเพียง:
pip install -U pyswip
ดูเริ่มต้นสำหรับคำแนะนำโดยละเอียด
PySwip เป็นอินเทอร์เฟซ Python-Prolog ที่เปิดใช้งานการสืบค้น SWI-Prolog ในโปรแกรม Python ของคุณ มันมีอินเทอร์เฟซภาษาต่างประเทศ SWI-Prolog ซึ่งเป็นคลาสยูทิลิตี้ที่ทำให้การสืบค้นด้วย Prolog เป็นเรื่องง่ายและยังมีอินเทอร์เฟซ Pythonic
เนื่องจาก PySwip ใช้ SWI-Prolog เป็นไลบรารีที่ใช้ร่วมกันและมีประเภทต่างๆ ในการเข้าถึง จึงไม่จำเป็นต้องติดตั้งการคอมไพล์
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