Expert Query Language
This is version . It is not the current version, and thus it cannot be edited.
Back to current version   Restore this version

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:

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:

AusdruckBeschreibungBeispiel
goal-queryEin Audruck der zu einer Liste von Goals evaluiert(Expertensystem, *, *).value
rule-queryEin Ausdruck der zu einem Liste von Rules evaluiert(Expertensystem, *, *)
goal-combinationVerknüpfung zweier Goals durch die Experten-Operatoren +, -, / und .red + green
goal-restrictionEinschränkung eines Goals durch die Attribut-Operatoren =, !=, <, <=, >, >=*.contains = Knowledge
braced-goalGoals können geklammert werden, um die Priorität festzulegen.(red + green) / (green + blue)
goal-selectorEin 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 CombinationBezeichnungBeschreibung
+UnionDas Zusammenfügen beider Goal-Mengen. Es entstehen keine Doppelten Goals, diese werden ausgefiltert.
-SubtractionAls 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.
/IntersectionEs wird die Schnittmenge zwischen den Links-Goals und den Rechts-Goals berechnet.
.TransformationEine 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.

Goal Restrictions#

Goals können auch eingeschränkt werden. Dabei wird ebenfalls der Operator . verwendet, nach dem Rechts-Goal folgt allerdings ein weiterer Operator aus =, !=, <, <=, > und >= mit einem weiteren Goal, also <object>.<attribute>.<value>.

OperatorBeschreibung
=Der Equal-Operator selektiert alle Objekte, deren Attributswert sich in der gegebenen Liste befindet.
!=Der Not-Equal-Operator selektiert alle Objekte, deren Attributswert sich nicht in der gegebenen Liste befindet.
<Der Less-Operator selektiert alle Objekte, deren Attributswert kleiner als der gegebene Wert ist. In der Liste darf sich nur ein Wert befinden.
<=Der Less-Equal-Operator selektiert alle Objekte, deren Attributswert kleiner oder gleich als der gegebene Wert ist. In der Liste darf sich nur ein Wert befinden.
>Der Less-Operator selektiert alle Objekte, deren Attributswert größer als der gegebene Wert ist. In der Liste darf sich nur ein Wert befinden.
>=Der Less-Operator selektiert alle Objekte, deren Attributswert größer oder gleich als der gegebene Wert ist. In der Liste darf sich nur ein Wert befinden.

Ziel einer Restriction ist es, eine Menge von Goals einzuschränken. Dies ist generell gleichwertig zu einer Rule-Query mit anschließender Objekt-Selektion (<object>, <attribute>, <value>).object, allerdings immer mit Equals.