Die [Expert Query Language] ist Bestandteil des [Intersult Expert] Systems. !!!Verwendung Der Expert Parser wird durch die Klasse com.intersult.expert.query.ExpertParser angesprochen oder implizit durch ExpertService. !!!Hintergrund Die [Expert Query Language] wird durch den Parser [Lambda] geparst, einem effizienten und zugleich simplen Parser. !!Primitiven Die [Expert Query Language] kennt nur zwei Primitive: * __Literale:__ Einfache Literale können ohne jegliche Anführungsstriche geschrieben werden. Als Anführungsstriche sind Hochkomma und Anführungszeichen erlaubt. Folgende Ausdrücke sind vollkommen gleichwertig: test, 'test' und "test". * __Variable:__ Ausdrücke die mit einem Fragezeichen (?) beginnen, können als Variablen dienen. Diese können sowohl zur Parse-Zeit als auch zur Compile-Zeit ersetzt werden. Beispiel wären ?object, ?parameter oder ?var. Variablen spielen insbesondere beim Einbetten der [Expert Query Language] in andere Systeme eine Rolle. Wie zum Beispiel in [JSF] durch das [Intersult Expert]. !!Rules und Goals Grundsätzlich werden Goal- und Rule-Querys unterschieden: * __Goal-Query:__ Diese Query evaluiert zu einer Liste von Strings und kann wieder für andere Goals herangezogen werden. * __Rule-Query:__ Diese Query evaluiert zu einer Liste von Rule-Objekten. Mit diesen kann ebenfalls wieder weitergearbeitet werden, vor allem durch einen goal-selector wieder in eine Goal-Query umgewandelt werden. ||Ausdruck||Beschreibung||Beispiel |goal-query|Ein Audruck der zu einer Liste von Goals evaluiert|(Expertensystem, *, *).value |rule-query|Ein Ausdruck der zu einem Liste von Rules evaluiert|(Expertensystem, *, *) |goal-combination|Verknüpfung zweier Goals durch die Experten-Operatoren +, -, / und .|red + green |braced-goal|Goals können geklammert werden, um die Priorität festzulegen.|(red + green) / (green + blue) |goal-selector|Ein Rule-Goal kann durch die drei Selektoren object, attribute oder value in ein Goal verwandelt werden|(Expertensystem, *, *).value !!Goal Combinations Wie schon beschrieben, gibt es vier Goal Combinations. Der Goal-Operator +, -, / und . steht zwischen den Goals. Das Goal links vom Goal-Operator wird auch als Links-Goal und das Goal rechts davon entsprechend als Rechts-Goal bezeichnet. ||Goal Combination||Bezeichnung||Beschreibung |+|Union|Das Zusammenfügen beider Goal-Mengen. Es entstehen keine Doppelten Goals, diese werden ausgefiltert. |-|Subtraction|Als Grundmenge dient die Links-Goals, davon werden die Rechts-Goals entfernt. Goals die in den Rechts-Goals vorkommen, jedoch nicht in den Links-Goals sind dabei ebenfalls nicht enthalten. |/|Intersection|Es wird die Schnittmenge zwischen den Links-Goals und den Rechts-Goals berechnet. |.|Transformation|Eine Kurzschreibweise für (left, right, *).value. Die Ergebnis-Goals sind die Values alles Attributes mit dem Namen der Rechts-Goals von den Links-Goals. Zum Beispiel kann haus.wohnfläche zum Ergebnis 110qm führen.