J'essaie d'implémenter un système expert de base dans le langage de programmation Clips. J'ai une base de connaissance des enfants avec leurs parents respectifs. Je veux mettre en place une règle pour que si deux enfants ont les mêmes parents, alors ils affirment le fait qu'ils sont frères et soeurs.Clips Family Expert System
(deftemplate person "family tree"
(slot name)
(slot father)
(slot mother))
(assert
(person
(name "William")
(father "John")
(mother "Megan")))
(assert
(person (name "David")
(father "John")
(mother "Megan")))
(defrule sibling
(person
(name ?name1)
(father ?x)
(mother ?x))
(person
(name ?name2)
(father ?y)
(mother ?y)))
et quand je définis la règle que j'obtiens une erreur de syntaxe:
Syntax Error: Check appropriate syntax for defrule.
Merci qui a fonctionné mais j'ai dû mettre MAIN :: devant mon titre de frère. Mais maintenant, quand j'appelle la règle dans un «assert», je continue à recevoir des erreurs. J'ai essayé la syntaxe '(assert MAIN :: sibling (personne (nom" First_Person ")) (personne (nom" Second_Person ")))' et '(assert (MAIN :: sibling (person (" David ")) (personne ("William")))) "J'ai aussi essayé sans MAIN :: Des suggestions? – cdruckemiller
S'il vous plaît modifier votre question en précisant les erreurs que vous obtenez. Également écrire des modèles, des faits et des règles qui séparent chaque énoncé avec un retour à la ligne qui aide beaucoup à la lisibilité. – noxdafox
Désolé mais j'ai dû accepter la réponse. La règle n'a pas vraiment été adoptée. Je reçois une erreur de syntaxe maintenant. J'ai édité la question pour montrer mon code et mon erreur. – cdruckemiller