Python-CFFI-Bindungen für das „C“ Language Integrated Production System CLIPS 6.41.
Quelle: | https://github.com/noxdafox/clipspy |
---|---|
Dokumentation: | https://clipspy.readthedocs.io |
Herunterladen: | https://pypi.python.org/pypi/clipspy |
CLIPS wurde ursprünglich am Johnson Space Center der NASA entwickelt und ist eine regelbasierte Programmiersprache, die für die Erstellung von Experten- und Produktionssystemen nützlich ist, bei denen eine heuristische Lösung einfacher zu implementieren und zu warten ist als eine zwingende Lösung. CLIPS soll die Entwicklung von Software zur Modellierung menschlichen Wissens oder Fachwissens erleichtern.
CLIPSPy bringt CLIPS-Funktionen in das Python-Ökosystem.
Unter Linux ist CLIPSPy gemäß den PEP-513-Richtlinien als Rad für die x86_64-Architektur gepackt. Die meisten Distributionen sollten unterstützt werden.
$ pip clipspy installieren
Apple Silicon wird für Python-Versionen größer als 3.11 unterstützt.
$ pip clipspy installieren
CLIPSPy wird als Rad für die meisten Python-Versionen und -Architekturen geliefert.
> pip clipspy installieren
Die bereitgestellten Makefiles kümmern sich um das Abrufen des CLIPS-Quellcodes und das Kompilieren der Python-Bindungen zusammen damit.
$ make# make install
Weitere Informationen zum Erstellen von CLIPSPy aus Quellen finden Sie in der Dokumentation.
import clipsDEFTEMPLATE_STRING = """(deftemplate person (slot name (type STRING)) (slot Nachname (type STRING)) (slotbirthdate (type SYMBOL)))"""DEFRULE_STRING = """(defrule hello-world "Grüße a neue Person." (Person (Name ?Name) (Nachname ?Nachname)) => (println "Hallo " ?Name " " ?surname))"""environment = clips.Environment()# define constructionsenvironment.build(DEFTEMPLATE_STRING)environment.build(DEFRULE_STRING)# rufe den Fakt ab templatetemplate = Environment.find_template('person')# bestätige einen neuen Fakt durch seinen templatefact = template.assert_fact(name='John',surname='Doe',birthdate=clips.Symbol('01/01/1970'))# Faktenslots können als Wörterbuchelemente aufgerufen werdenassert fact['name'] == 'John '# die Aktivierungen in der Agendaenvironment.run() ausführen