Abfragesprache

Die TopLogic Query-Language ist eine Mengenalgebra, über die intern Suchanfragen an das abstrakte Datenbankschema gestellt werden. Diese Art der Abfrage steht nur für Code-Plugins zur Verfügung. In Konfigurationen und bei der In-App-Entwicklung wird ausschließlich  TL-Script verwendet.

Ein Ausdruck in der Query-Language beschreibt eine Menge von Objekten über Initialmengen, Mengenoperationen, Kreuzprodukt, Filter, Projektion und Partitionierung.

Mengen-Ausdrücke

Ein Mengen-Ausdruck wird ohne Kontext ausgewertet und liefert eine Menge von Werten.

all(T) Die Menge aller Objekte, die genau dem Objekttyp T entsprechen.
any(T) Die Menge aller Objekte, die zuweisungskompatibel mit dem gegebenen Objekttyp T sind.
none() Die leere Menge.
setLiteral(Collection) Die Menge der Elemente in der gegebenen Collection.
filter(set, expr) Die Elemente der Menge set, für die sich der boolsche Ausdruck expr zu true auswertet.
map(set, expr) Die Menge der Ergebniss der Auswertung des Ausdrucks expr auf allen Elementen von set.
union(set_1, set_2) Die Vereinigung der Mengen set_1 und set_2.
intersection(set_1, set_2) Der Schnitt der Mengen set_1 und set_2.
substraction(set_1, set_2) Die Elemente der Menge set_1, die nicht in set_2 enthalten sind.
crossproduct(a1: set_1, a2: set_2, ..., an: set_n) Das Kreutzprodukt der Mengen set_1, set_2,… set_n. Ein Eintrag der Resultatmenge ist ein N-Tupel, mit Namen der Einträge (a1, a2, …, an).
partition(set, expr, fun) Die Menge der Repräsentanten einer Äquivalenz auf der Menge set. Dabei sind Elemente a und b aus set äquivalent, wenn sich expr in Kontext von a und b zu demselben Wert auswertet. Die Funktion fun liefert den Repräsentanten der Äquivalenzklasse, indem sie im Kontext der Menge aller zu einer Äquivalenzklasse gehörenden Elemente von set ausgewertet wird.

Die Menge aller Objekte ist all(KnowledgeObject). Die Menge aller Assoziationslinks ist all(KnowledgeAssociation). Die Menge aller Eingräge der Knowledge-Base ist all(KnowledgeItem).

Wert-Ausdrücke

Ein Ausdruck wird im Kontext eines Einzelwertes ausgewertet und liefert wieder einen Einzelwert (keine Menge).

literal(value) Der gegebene literale Wert. Der Typ des Literals ist durch den Typ des Wertes gegeben.
attribute(attr) Wert des primitiven Zeilen-Attributs attr des Kontextobjektes.
reference(name) Zugriff auf die Referenz der Kontext-Assoziation mit gegebenem Namen (einzige z.Zt unterstützte Namen sind source und destination).
flex(name) Wert des flexiblen Attributes mit Namen name des Kontextobjekts.
get(index) Zugriff auf den Wert mit gegebenem Index des Kontext-Tupels.
eqBinary(expr_1, expr_2) Vergleich der Ergebnisse der Auswertungen der Ausdrücke expr_1 und expr_2 auf Gleichheit.
eqCi(expr_1, expr_2) Vergleich der Ergebnisse der Auswertungen der Ausdrücke expr_1 und expr_2 auf String-Gleichheit ohne Berücksichtigung von Groß- und Kleinschreibung.
matches(regex, expr) Test, ob das Ergebnis der Auswerung von expr_1 zu dem gegebenen regulären Ausdruck regex passt.
le(expr_1, expr_2) Vergleich der Ergebnisse v1 und v2 der Auswertungen der Ausdrücke expr_1 und expr_2 auf v1 kleiner oder gleich v2.
lt(expr_1, expr_2) Vergleich der Ergebnisse v1 und v2 der Auswertungen der Ausdrücke expr_1 und expr_2 auf v1 echt kleiner v2.
ge(expr_1, expr_2) Vergleich der Ergebnisse v1 und v2 der Auswertungen der Ausdrücke expr_1 und expr_2 auf v1 größer oder gleich v2.
gt(expr_1, expr_2) Vergleich der Ergebnisse v1 und v2 der Auswertungen der Ausdrücke expr_1 und expr_2 auf v1 echt größer v2.
inSet(set) Test, ob das Kontextobjekt in der Menge set enhalten ist.
hasType(T) Test, ob das Kontextobjekt genau vom Typ T ist.
instanceof(T) Test, ob das Kontextobjekt zuweisungskompatibel mit dem Typ T ist.
and(expr_1, expr_2) Boolsche Und-Verknüpfung der Ergebnisse der Auswertungen der Ausdrücke expr_1 und expr_2.
or(expr_1, expr_2) Boolsche Oder-Verknüpfung der Ergebnisse der Auswertungen der Ausdrücke expr_1 und expr_2.
not(expr) Boolsche Nicht-Verknüpfung des Ergebnisses der Auswertung des Ausdrücks expr.
eval(expr_1, expr_2) Auswertung von expr_2 im Kontext des Ergebnisses von expr_1.
tuple(expr_1, ..., expr_n) Das Tuple aus den Werten von expr_1 bis expr_n.

Funktionen

Eine Funktion bildet eine Menge von Werten auf einen Einzelwert ab.

count() Anzahl der Elemente in der Kontextmenge.
sum(expr) Summe der Auswertungsergebnisse von expr auf allen Elementen der Kontextmenge.
min(expr) Minimum der Auswertungsergebnisse von expr auf allen Elementen der Kontextmenge.
max(expr) Maximum der Auswertungsergebnisse von expr auf allen Elementen der Kontextmenge.

Ordnung des Ergebnisses

Die Ergebnismenge kann in einer speziellen Ordnung geliefert werden. Die Ordnung wird spezifiziert über ein Tupel aus Ordnungsangaben.

order(descending, expr) Primitive Ordnungsangabe. Das Ergebnis wird sortiert, indem die Ergebnisse der Auswertung von expr im Kontext jedes Ergebnisses aufsteigend (descending = false) oder absteigend (descending = true) sortiert werden.

 

Äquivalenzen

filter(filter(set, expr_1), expr_2) filter(set, and(expr_1, expr_2))
map(map(set, expr_1), expr_2) map(set, eval(expr_1, expr_2))
inSet(all(T)) hasType(T)
inSet(any(T)) instanceOf(T)