DEFINE-CONSTRAINT ================= Syntax: (define-constraint <Constraint-Name> OF <constraint-pattern-Name> [:DOCUMENTATION <Dokumentation>] [:EXPLANATION <Erklärung>] [FOR-EACH (<bab-Var> <bab-lisp-Ausdruck>)] WITH <einfache-Prädikation>+) Warnung: Der Erklärungseintrag wird durch EMA-XPS nicht unterstützt, d.h. :documentation und :explanation werden ignoriert. Mit einem Constraint definieren Sie die Aus- prägungen für die Parameter des Constraint- Pattern. Im Constraint-Pattern legen Sie fest, wie bestimmte Werte verknüpft werden sollen. Im Constraint legen Sie die konkreten Werte für die Verknüpfung fest. Sie können dabei Attribut- werte einer einzelnen wie auch mehrerer Instanzen verknüpfen. FOR-EACH erwartet eine Liste mit einer Variablen gefolgt von einem Lisp-Ausdruck. Der Lisp-Ausdruck muß zu einer Liste mit gültigen Bedingungen eva- luieren. Durch die FOR-EACH Deklaration kann z.B. für jede Instanz eines bestimmten Rahmens ein Constraint erzeugt werden. WITH erwartet eine einfache Prädikation. Die Prädikationen in den WITH-Klauseln dürfen nicht aufeinander aufbauen. Für jeden Parameter des Patterns muß genau eine WITH-Klausel exis- tieren. Beispiel: >(define-constraint-pattern berechne-reale-kosten) (_reale-Kosten _Landes-Wuensche) :documentation "Berechnet die entstehenden Kosten für den Kunden bei Besuch der Länder _Landes-Wuensche." RULES (KNOWN (_Landes-Wuensche) THEN (is _reale-Kosten (berechne-kosten- der-kunde _Landes-Wuensche)))) >(define-constraint berechne-kosten-fuer- kunden OF berechne-reale-kosten FOR-EACH (ein-kunde (instances-of 'Kunde))) WITH [entstehende-Kosten ein-Kunde _reale-Kosten] [ziele ein-Kunde _Landes-Wuensche])