Copyright ©
Mindbreeze GmbH, A-4020 Linz, 2022.
Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind Handelsnamen und/oder Marken der jeweiligen Hersteller.
Diese Unterlagen sind streng vertraulich. Durch die Übermittlung und Präsentation dieser Unterlagen alleine werden keine Rechte an unserer Software, an unseren Dienstleistungen und Dienstleistungsresultaten oder sonstigen geschützten Rechten begründet. Die Weitergabe, Veröffentlichung oder Vervielfältigung ist nicht gestattet.
Aus Gründen der einfacheren Lesbarkeit wird auf die geschlechtsspezifische Differenzierung, z.B. Benutzer/-innen, verzichtet. Entsprechende Begriffe gelten im Sinne der Gleichbehandlung grundsätzlich für beide Geschlechter.
Die Property Expression Language kann verwendet werden, um Metadaten zu extrahieren, oder Filterwerte zu erzeugen, auf die dann bei der Suche eingeschränkt werden kann.
Konstante literale Werte wie Zahlen oder Zeichenketten können angegeben werden.
Beispiel: | |
Zeichenkette (String) | "text" |
Ganzzahl (Integer) | 3 |
Boolscher Typ (boolean) | true |
Ein Identifier bezieht sich immer auf den aktuellen Kontext.
Dieser Kontext kann ein Dokument sein, aber auch ein Item.
Wird eine Referenz nachverfolgt, so ist dies ein Verweis auf das referenzierte Dokument.
Beispiel: | |
Reguläres Metadatum eines Dokuments | title |
Referenz-Metadatum eines Dokuments | referenz |
Eigenschaft innerhalb eines Items | itemProperty |
Zu beachten ist, dass folgende Character-Class ohne Escaping gültig ist: [A-Za-z0-9_:\-]
Folgende Zeichen in einem Identifier müssen also nicht escaped werden:
Alle anderen Zeichen müssen mit einem Backslash (\) escaped werden, damit die Zeichenkette als Identifier erkannt wird. Z. B. muss property.value folgendermaßen escaped werden: property\.value
Eine Liste mehrerer Ausdrücke, die alle emittiert werden.
Beispiel: | |
Zeichenkette (String) | list("text1", "text2", "text3") |
Der ‚unique‘-Operator entfernt Duplikate aus seinen Parametern, wobei die Reihenfolge beibehalten wird. Er kann auf alle Expressions angewendet werden die eine String-Repräsentation besitzen.
Beispiele: | |
Ausdruck | Emittiert wird … |
unique("a", "b", "c", "b") | "a", "b", "c" |
unique("a", "a", "a") | "a" |
Soll auf Metadaten des referenzierten Dokuments zugriffen werden, kann der Pfad-Operator / verwendet werden.
Beispiel: | ||
Variante 1 | referenz/title | Falls das aktuelle Dokument eine Referenzeigenschaft “referenz” hat, wird der Titel des referenzierten Dokumentes emittiert |
Variante 2 | referenz1/referenz2/title | Falls das aktuelle Dokument eine Referenzeigenschaft “referenz1” hat, und das referenzierte Dokument wiederum eine Referenzeigenschaft “referenz2” hat das auf ein weiteres Dokument verweist, wird dessen Titel emittiert |
Um inversen Referenzen zu folgen kann der rev-Operator verwendet werden. Dazu ist es nötig in den “Reference Settings” des Index die Referenzeigenschaft als “Inverted Reference Metatdata Keys” zu konfigurieren.
Beispiel: | |
rev(parent)/mes:key | Es werden alle „mes:key“ Werte der invertieren Referenz „parent“ emittiert. |
Der dfs-Operation kann verwendet werden, um alle Items zu emittieren die mittels eines Ausdrucks mittels Tiefensuche (depth first search, DFS) beschritten werden. dfs kann mit zwei oder drei Argumenten verwendet werden.
Beispiele: | |
dfs(.,parent)/mes:key | Emittiert alle mes:key Werte die ausgehend vom aktuellen Kontext mit dem Ausdruck parent erreicht werden können. |
dfs(.,rev(parent))/mes:key | Emittiert alle mes:key Werte die ausgehend vom aktuellen Kontext mit dem Ausdruck rev(parent) erreicht werden können. |
dfs(.,parent,"terminal")/mes:key | Emittiert den mes:key Wert des letzten (terminal) Items das vom aktuellen Kontext mit dem Ausdruck parent erreichbar ist. Wenn der Graph Baumförmig ist, wird der mes:key Wert der Wurzel emittiert. |
dfs(.,rev(parent),"terminal")/mes:key | Emittiert den mes:key Wert des letzten (terminal) Items das vom aktuellen Kontext mit dem Ausdruck rev(parent) erreichbar ist. Wenn der Graph Baumförmig ist, werden alle mes:key Werte der Blätter emittiert die vom akuellen Kontext aus erreichbar sind. |
Mit dem Filter-Operator kann eine zusätzliche Einschränkung definiert werden, die für selektierte Ausdrücke (i. d. R. für Items) gelten muss.
Beispiel: | ||
Variante 1 | title[../mes:numericdate < 1444381468000] | Der Titel des aktuellen Dokuments wird nur dann emittiert, falls dessen Datum vor 2015-10-09T09:04:28.000Z liegt (als Millisekunden seit 1970) |
Folgende Vergleichsoperatoren können verwendet werden:
entweder in Kombination mit den logischen Verknüpfungen
oder innerhalb eines Filters
Beispiele in Kombination mit logischen Verknüpfungen: | ||
Ausdruck | Emittiert wird … | |
Gleichheit | 3 = 3 && "true" || "false" | "true" |
Ungleichheit | 3 != 3 && "true" || "false" | "false" |
Kleiner | 3 < 3 && "true" || "false" | "false" |
Kleiner oder gleich | 3 <= 3 && "true" || "false" | "true" |
Größer | 3 > 3 && "true" || "false" | "false" |
Größer oder gleich | 3 >= 3 && "true" || "false" | "true" |
Beispiele in Kombination mit Filter: | ||
Ausdruck | Emittiert wird … | |
Gleichheit | title[3 = 3] | Titel des aktuellen Dokuments |
Ungleichheit | title[3 != 3] | nichts |
Kleiner | title[3 < 3] | nichts |
Kleiner oder gleich | title[3 <= 3] | Titel des aktuellen Dokuments |
Größer | title[3 > 3] | nichts |
Größer oder gleich | title[3 >= 3] | Titel des aktuellen Dokuments |
Bei der Und-Verknüpfung wird nur das letzte Element in der &&-Kette genau dann emittiert, falls alle Elemente davor etwas emittiert hätten und ihr Wert nicht als false interpretiert wird.
Beispiel: | ||
Ausdruck | Emittiert wird … | |
Literale 1 | "text" && "text2" && "text3" | "text3" |
Boolsche Ausdrücke | 0 && "text2" | nichts |
1=1 && "true" || "false" | "true" | |
1!=1 && "true" || "false" | "false" |
Bei der Oder-Verknüpfung wird das erste Element in der ||-Kette genau dann emittiert, welches etwas emittiert.
Beispiel: | ||
Ausdruck | Emittiert wird … | |
Literale 1 | "text1" || "text2" || "text3" | "text1" |
Boolsche Ausdrücke | 0 || "text2" | "text2" |
0=0 && "true" || "text2" | "true" |
Folgende arithmetische Operatoren können verwendet werden:
Ausdruck | Emittiert wird … | |
Addition | +(3, 2) | 5 |
Subtraktion | -(3, 2) | 1 |
Multiplikation | *(3, 2) | 6 |
Division | div(3, 2) | 1 |
Modulo | mod(3, 2) | 1 |
Anmerkung: Bitte beachten Sie, dass arithmetische Operatoren aktuell nur mit ganzzahligen Werten oder Metadaten verwendet werden können. Gleitkommazahlen werden nicht unterstützt.
Mit dem Parent-Operator .. kann auf den übergeordneten Kontext zugegriffen werden.
Dieser Operator ist besonders im Kombination mit dem Filter-Operator nützlich, siehe Kapitel .
Beispiel: | ||
Variante 1 | referenz/title/.. | Entspricht referenz |
Variante 2 | referenz/title/../.. | Entspricht dem evaluierten Dokument selbst |
Mit der Funktion name kann von einem Value-Kontext auf den Namen des Metadatums oder der Item-Eigenschaft zurückgeschlossen werden.
Beispiel: | ||
Variante 1 | name(regex_match(title, "^T.*$")) | title wird emittiert, falls der Titel des aktuellen Dokuments dem regulären Ausdruck entspricht |
Mit der Funktion regex_match kann auf jene Zeichenketten eingeschränkt werden, die einem regulären Ausdruck entsprechen.
Beispiel: | ||
Variante 1 | regex_match(title, "^T.*$") | Titel, die mit “T” beginnen, werden emittiert (implizit Case sensitive) |
Variante 2 | regex_match(title, "^T.*$", "i") | Titel, die mit “T” beginnen, werden emittiert (explizit Case insensitive) |
Mit den Funktionen to_lower und to_upper können Expressions auf Groß- oder Kleinschreibung konvertiert werden.
Beispiel: | ||
Variante 1 | to_lower("UPPER") | "upper" wird emittiert |
to_upper("lower") | "LOWER" wird emittiert |
Mit der Funktion concat können mehrere Werte von Metadaten zusammengehängt werden.
Beispiel: | |
concat("Hauptplatz", " ", "123") | "Hauptplatz 123" wird emittiert |
Mit der Funktion replace können Zeichen(ketten) ersetzt werden, dabei können auch reguläre Ausdrücke verwendet werden.
Beispiel: | ||
Buchstaben entfernen | replace("12ab34cd56", "[a-z]", "") | "123456" wird emittiert |
replace("0123456789","[0-9]{9}$","") | "0" wird emittiert |
Mit der Funktion int kann auf eine Zeichenkette oder ein Datumswert auf eine Ganzzahl konvertiert werden.
Beispiel: | ||
Ausdruck | Emittiert wird … | |
Variante 1 | int("3") | Zahl 3 |
Variante 2 | int(dateproperty) | Datumswert der Eigenschaft "dateproperty" als Millisekunden seit 1970 |
Variante 3 | int(now()) | Aktueller Zeitpunkt als als Millisekunden seit 1970 |
Mit der Funktion split(<string-expr>, <pattern>) kann ein String in mehrere Werte zerlegt werden.
Beispiel: | |
Ausdruck | Emittiert wird … |
split("a,b und c", " *(und|,) *") | Liste: a,b,c |
Mit der Funktion split(<string-expr>, <pattern>) kann ein String in eine hierachische Liste von Weren zerlegt werden. Diese Liste kann unter anderem als hierachische Facette angezeigt werden.
Beispiel:
Ausdruck | Emittiert wird … |
split_path(“/path/to/documents”, “/”) | Hierachische Liste: path, to, documents |
Mit der Funktion json_parse(<json>) kann ein JSON-Ausdruck analysieren und strukturiert dargestellt werden.
Beispiel:
Ausdruck | Emittiert wird … |
json_parse("\"a\"") | a |
json_parse("[\"a\", \"b\"]") | Liste: a,b |
json_parse("{\"int\": 1, \"str\": \"a\"}" | der analysierte JSON-Ausdruck hierarchisch als Item dargestellt |
Mit der Funktion parse_date können Zeichenketten als Datumswert interpretiert werden.
Parameter sind:
Zeichenketten Wert, der geparsed werden soll
Datumsformatierung Parameter, siehe http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax
(Optional) Locale, siehe http://userguide.icu-project.org/locale#TOC-Examples
Beispiel: | ||
Ausdruck | Emittiert wird … | |
Variante 1 | parse_date("1970-01-01 00:00:00 UTC", "yyyy-MM-dd HH:mm:ss zzz") | Entsprechender Datumswert |
Variante 2 | parse_date("October 2015", "MMMM y", "en") | Entsprechender Datumswert |
Die Funktion now kann verwendet werden, um auf den aktuellen Zeitpunkt Bezug zu nehmen. Der Wert ist gegeben in Millisekunden seit 1. Jänner 1970, was bei arithmetischen Ausdrücken wichtig ist.
Beispiel: | ||
Ausdruck | Emittiert wird … | |
Variante 1 | now() | aktueller Zeitpunkt |
Variante 2 | -(now(), 3600000) | Zeitpunkt vor einer Stunde |
Variante 3 | mes:date[../mes:date < now()] | Datumswerte von Dokumenten, die in der Vergangenheit liegen |
Variante 4 | -(now(), dateproperty) > 3600000 && "true" || "false" | "true" |