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) |