Mindbreeze Property Expression Language

Copyright ©

Mindbreeze GmbH, A-4020 Linz, 2018.

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.

EinleitungPermanenter Link zu dieser Überschrift

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.

SprachelementePermanenter Link zu dieser Überschrift

LiteralePermanenter Link zu dieser Überschrift

Konstante literale Werte wie Zahlen oder Zeichenketten können angegeben werden.

Beispiel:

Zeichenkette (String)

"text"

Ganzzahl (Integer)

3

Boolscher Typ (boolean)

true

IdentifiersPermanenter Link zu dieser Überschrift

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

ListenPermanenter Link zu dieser Überschrift

Eine Liste mehrerer Ausdrücke, die alle emittiert werden.

Beispiel:

Zeichenkette (String)

list("text1", "text2", "text3")

PfadePermanenter Link zu dieser Überschrift

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

Inverse ReferenzenPermanenter Link zu dieser Überschrift

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:

Variante 1

rev(parent)/mes:key

Es werden alle „mes:key“ Werte der invertieren Referenz „parent“ emittiert.

FilterPermanenter Link zu dieser Überschrift

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)

VergleichsoperatorenPermanenter Link zu dieser Überschrift

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

Logische VerknüpfungenPermanenter Link zu dieser Überschrift

Und-Verknüpfung &&Permanenter Link zu dieser Überschrift

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"

Oder-Verknüpfung ||Permanenter Link zu dieser Überschrift

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"

Arithmetische VerknüpfungenPermanenter Link zu dieser Überschrift

Folgende Arithmetische 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

Parent-KontextPermanenter Link zu dieser Überschrift

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

NamePermanenter Link zu dieser Überschrift

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

ZeichenkettenPermanenter Link zu dieser Überschrift

Regex-MatchPermanenter Link zu dieser Überschrift

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)

Konvertierungen nach Großschreibung / KleinschreibungPermanenter Link zu dieser Überschrift

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

Zeichenketten zusammenhängen (concat)Permanenter Link zu dieser Überschrift

Mit der Funktion concat können mehrere Werte von Metadaten zusammengehängt werden.

Beispiel:

concat("Hauptplatz", " ", "123")

"Hauptplatz 123" wird emittiert

Zeichen ersetzenPermanenter Link zu dieser Überschrift

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

TypumwandlungenPermanenter Link zu dieser Überschrift

Konvertierung zu IntegerPermanenter Link zu dieser Überschrift

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

Aufteilen von ZeichenkettenPermanenter Link zu dieser Überschrift

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

Parsen von DatumwertenPermanenter Link zu dieser Überschrift

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

Now (aktueller Zeitpunkt)Permanenter Link zu dieser Überschrift

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"

Gegeben, dass der Datumswert der Eigenschaft "dateproperty" älter als eine Stunde ist