Home
Home
German Version
Support
Impressum
22.3 Release ►

    Main Navigation

    • Preparation
      • Connectors
      • Create an InSpire VM on Hyper-V
      • Initial Startup for G7 appliances
      • Setup InSpire G7 primary and Standby Appliances
    • Datasources
      • Configuration - Atlassian Confluence Connector
      • Configuration - Best Bets Connector
      • Configuration - Box Connector
      • Configuration - COYO Connector
      • Configuration - Data Integration Connector
      • Configuration - Documentum Connector
      • Configuration - Dropbox Connector
      • Configuration - Egnyte Connector
      • Configuration - GitHub Connector
      • Configuration - Google Drive Connector
      • Configuration - GSA Adapter Service
      • Configuration - HL7 Connector
      • Configuration - IBM Connections Connector
      • Configuration - IBM Lotus Connector
      • Configuration - Jira Connector
      • Configuration - JiveSoftware Jive Connector
      • Configuration - JVM Launcher Service
      • Configuration - LDAP Connector
      • Configuration - Microsoft Azure Principal Resolution Service
      • Configuration - Microsoft Dynamics CRM Connector
      • Configuration - Microsoft Exchange Connector
      • Configuration - Microsoft File Connector (Legacy)
      • Configuration - Microsoft File Connector
      • Configuration - Microsoft Graph Connector
      • Configuration - Microsoft Project Connector
      • Configuration - Microsoft SharePoint Connector
      • Configuration - Microsoft SharePoint Online Azure Principal Resolution Service
      • Configuration - Microsoft Stream Connector
      • Configuration - Microsoft Teams Connector
      • Configuration - Salesforce Connector
      • Configuration - SAP KMC Connector
      • Configuration - SemanticWeb Connector
      • Configuration - ServiceNow Connector
      • Configuration - SharePoint Online Connector
      • Configuration - Sitecore Connector
      • Configuration - Web Connector
      • Configuration - Yammer Connector
      • Configuration - Zoho Connector
      • Data Integration Guide with SQL Database by Example
      • Indexing user-specific properties (Documentum)
      • Installation & Configuration - Atlassian Confluence Sitemap Generator Add-On
      • Installation & Configuration - Caching Principal Resolution Service
      • Installation & Configuration - Jive Sitemap Generator
      • Installation & Configuration - Mindbreeze InSpire Insight Apps in Microsoft SharePoint On-Prem
      • Mindbreeze InSpire Insight Apps in Microsoft SharePoint Online
      • Mindbreeze Web Parts for Microsoft SharePoint
      • User Defined Properties (SharePoint 2013 Connector)
      • Whitepaper - Mindbreeze InSpire Insight Apps in Salesforce
    • Configuration
      • CAS_Authentication
      • Cognito JWT Authentication
      • Configuration - Alternative Search Suggestions and Automatic Search Expansion
      • Configuration - Back-End Credentials
      • Configuration - Chinese Tokenization Plugin (Jieba)
      • Configuration - CJK Tokenizer Plugin
      • Configuration - Collected Results
      • Configuration - CSV Metadata Mapping Item Transformation Service
      • Configuration - Entity Recognition
      • Configuration - Exporting Results
      • Configuration - External Query Service
      • Configuration - Filter Plugins
      • Configuration - GSA Late Binding Authentication
      • Configuration - Identity Conversion Service - Replacement Conversion
      • Configuration - InceptionImageFilter
      • Configuration - Index-Servlets
      • Configuration - Item Property Generator
      • Configuration - Japanese Language Tokenizer
      • Configuration - Kerberos Authentication
      • Configuration - Management Center Menu
      • Configuration - Metadata Enrichment
      • Configuration - Metadata Reference Builder Plugin
      • Configuration - Mindbreeze Proxy Environment (Remote Connector)
      • Configuration - Notifications
      • Configuration - Personalized Relevance
      • Configuration - Plugin Installation
      • Configuration - Principal Validation Plugin
      • Configuration - Profile
      • Configuration - QueryExpr Label Transformer Service
      • Configuration - Reporting Query Logs
      • Configuration - Reporting Query Performance Tests
      • Configuration - Request Header Session Authentication
      • Configuration - Shared Configuration (Windows)
      • Configuration - Vocabularies for Synonyms and Suggest
      • Configuration of Thumbnail Images
      • Cookie-Authentication
      • Documentation - Mindbreeze InSpire
      • I18n Item Transformation
      • Installation & Configuration - Outlook Add-In
      • Installation - GSA Base Configuration Package
      • Language detection - LanguageDetector Plugin
      • Mindbreeze Personalization
      • Mindbreeze Property Expression Language
      • Mindbreeze Query Expression Transformation
      • Non-Inverted Metadata Item Transformer
      • SAML-based Authentication
      • Trusted Peer Authentication for Mindbreeze InSpire
      • Using the InSpire Snapshot for Development in a CI_CD Scenario
      • Whitepaper - MMC_ Services
      • Whitepaper - SSO with Microsoft AAD or AD FS
      • Whitepaper - Text Classification Insight Services
    • Operations
      • app.telemetry Statistics Regarding Search Queries
      • Configuration - app.telemetry dashboards for usage analysis
      • Configuration Usage Analysis
      • Deletion of Hard Disks
      • Handbook - Backup & Restore
      • Handbook - Command Line Tools
      • Handbook - Distributed Operation (G7)
      • Handbook - Filemanager
      • Handbook - Indexing and Search Logs
      • Handbook - Updates and Downgrades
      • Index Operating Concepts
      • Inspire Diagnostics and Resource Monitoring
      • InSpire Support Documentation
      • Mindbreeze InSpire SFX Update
      • Provision of app.telemetry Information on G7 Appliances via SNMPv3
      • Restoring to As-Delivered Condition
    • User Manual
      • Browser Extension
      • Cheat Sheet
      • iOS App
      • Keyboard Operation
    • SDK
      • api.v2.alertstrigger Interface Description
      • api.v2.export Interface Description
      • api.v2.personalization Interface Description
      • api.v2.search Interface Description
      • api.v2.suggest Interface Description
      • api.v3.admin.SnapshotService Interface Description
      • Debugging (Eclipse)
      • Developing an API V2 search request response transformer
      • Developing Item Transformation and Post Filter Plugins with the Mindbreeze SDK
      • Development of Insight Apps
      • Embedding the Insight App Designer
      • Java API Interface Description
    • Release Notes
      • Release Notes 20.1 Release - Mindbreeze InSpire
      • Release Notes 20.2 Release - Mindbreeze InSpire
      • Release Notes 20.3 Release - Mindbreeze InSpire
      • Release Notes 20.4 Release - Mindbreeze InSpire
      • Release Notes 20.5 Release - Mindbreeze InSpire
      • Release Notes 21.1 Release - Mindbreeze InSpire
      • Release Notes 21.2 Release - Mindbreeze InSpire
      • Release Notes 21.3 Release - Mindbreeze InSpire
      • Release Notes 22.1 Release - Mindbreeze InSpire
      • Release Notes 22.2 Release - Mindbreeze InSpire
      • Release Notes 22.3 Release - Mindbreeze InSpire
    • Security
      • Known Vulnerablities
    • Product Information
      • Product Information - Mindbreeze InSpire - Standby
      • Product Information - Mindbreeze InSpire
    Home

    Path

    Sure, you can handle it. But should you?
    Let our experts manage the tech maintenance while you focus on your business.
    See Consulting Packages

    Mindbreeze Property Expression Language

    Copyright ©

    Mindbreeze GmbH, A-4020 Linz, 2022.

    All rights reserved. All hardware and software names are brand names and/or trademarks of their respective manufacturers.

    These documents are strictly confidential. The submission and presentation of these documents does not confer any rights to our software, our services and service outcomes or other protected rights.

    The dissemination, publication or reproduction hereof is prohibited.

    For ease of readability, gender differentiation has been waived. Corresponding terms and definitions apply within the meaning and intent of the equal treatment principle for both sexes.

    IntroductionPermanent link for this heading

    The property expression language can be used to extract metadata, or to create filter values that can then be limited in the search.

    Language elementsPermanent link for this heading

    LiteralPermanent link for this heading

    Constant literal values such as numbers or strings can be specified.

    Example:

    String

    "text"

    Integer

    3

    Boolean value

    true

    IdentifiersPermanent link for this heading

    An identifier always refers to the current context.

    This context can be a document, but also an item.

    If a reference is tracked, this refers to the referenced document.

    Example:

    Regular metadata of a document

    title

    Reference metadata of a document

    reference

    Property within an item

    itemProperty

    Note that the following character class is valid without escaping: [A-Za-z0-9_:\-]

    The following characters in an identifier do not have to be escaped:

    • Capital letters (A-Z)
    • Lower case letters (a-z)
    • The following special characters: "_", ":", "-"

    All other characters must be escaped with a backslash (\) so that the character string is recognized as an identifier. For example, property.value must be escaped as follows: property\.value

    ListsPermanent link for this heading

    A list of several expressions, that are all emitted.

    Example:

    String

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

    Removing duplicatesPermanent link for this heading

    The unique operator removes duplicates from its parameters while maintaining the order. It can be applied to all expressions that have a string representation.

    Beispiele:

    Ausdruck

    Emittiert wird …

    unique("a", "b", "c", "b")

    "a", "b", "c"

    unique("a", "a", "a")

    "a"

    PathsPermanent link for this heading

    If metadata of the referenced document should be accessed, the path operator / can be used.

    Example:

    Variant 1

    reference/title

    If the current document has a reference property "reference", the title of the referenced document is emitted

    Variant 2

    reference1/reference2/title

    If the current document has a reference property "reference1", and the referenced document in turn has a reference property "reference2" that refers to another document, that title is emitted

    Inverse referencesPermanent link for this heading

    The rev operator can be used to follow inverse references. To do this, you need to configure the reference property as “Inverted Reference Metatdata Keys” in the “Reference Settings” of the index.

    Example:

    rev(parent)/mes:key

    All “mes:key” values of the inverted reference “parent” are emitted.

    Transitive ClosurePermanent link for this heading

    The dfs operator can be used to emit all items starting from an expression that are reachable via an expression in depth first search (DFS) traversal. dfs takes two or three arguments:

    Examples:

    dfs(.,parent)/mes:key

    All mes:key values starting at the current context of all items reachable via the parent expression.

    dfs(.,rev(parent))/mes:key

    All mes:key values starting at the current context of all items reachable via the rev(parent) expression.

    dfs(.,parent,"terminal")/mes:key

    mes:key value of the last (terminal) item that is reachable via the parent expression from the current context. If the graph has a tree form, this expression yields the mes:key property of the root of the tree.

    dfs(.,rev(parent),"terminal")/mes:key

    mes:key value of the last (terminal) item that is reachable via the rev(parent) expression from the current context. If the graph has a tree form, this expression emits all the mes:key properties of leaves reachable from the current context.

    FiltersPermanent link for this heading

    The filter operator can be used to define additional constraints which must apply (normally for items) for selected expressions.

    Example:

    Variant 1

    title[../mes:numericdate < 1444381468000]

    The title of the current document will only be emitted if the date is prior to 2015-10-09T09:04:28.000Z (as milliseconds since 1970)

    Comparison operatorsPermanent link for this heading

    The following comparison operators may be used:

    either in combination with logic operations

    or within a filter

    Examples in combination with logical operators:

    Expression

    What is emitted …

    Equality

    3 = 3 && "true" || "false"

    "true"

    Inequality

    3 != 3 && "true" || "false"

    "false"

    Less than

    3 < 3 && "true" || "false"

    "false"

    Less than or equal to

    3 <= 3 && "true" || "false"

    "true"

    Greater than

    3 > 3 && "true" || "false"

    "false"

    Greater than or equal to

    3 >= 3 && "true" || "false"

    "true"

    Examples in combination with filter(s):

    Expression

    What is emitted …

    Equality

    title[3 = 3]

    Title of the current document

    Inequality

    title[3 != 3]

    Nothing

    Less than

    title[3 < 3]

    Nothing

    Less than or equal to

    title[3 <= 3]

    Title of the current document

    Greater

    title[3 > 3]

    Nothing

    Greater than or equal to

    title[3 >= 3]

    Title of the current document

    Logical OperatorsPermanent link for this heading

    AND operator &&Permanent link for this heading

    In the AND operation, only the last item in the &&-chain is emitted, if and only when all previous elements have emitted something and their value is not interpreted as false.

    Example:

    Expression

    What is emitted …

    Literal 1

    "text" && "text2" && "text3"

    "text3"

    Boolean expressions

    0 && "text2"

    nothing

    1=1 && "true" || "false"

    "true"

    1!=1 && "true" || "false"

    "false"

    OR operator ||Permanent link for this heading

    In the OR operator, the first element in the ||-chain is emitted || if and only when the element emits something.

    Example:

    Expression

    What is emitted …

    Literal 1

    "text1" || "text2" || "text3"

    "text1"

    Boolean expressions

    0 || "text2"

    "text2"

    0=0 && "true" || "text2"

    "true"

    Arithmetic operatorsPermanent link for this heading

    The following arithmetic operators can be used:

    Expressions

    What is emitted …

    Addition

    3 + 2

    3.2 + 5

    5

    7.2

    Subtraction

    3 – 2

    3.2 – 5

    1

    -2.2

    Multiplication

    3 * 2

    3.2 * 5

    6

    16.0

    Division

    3 div 2

    3.2 div 5

    1

    0.64

    Modulo

    mod(3, 2)

    1

    Operator precedence is supported for compound expressions, so multiplication and division have higher precedence than addition and subtraction. The precedence of partial expressions can be changed by using parentheses:

    Expressions

    What is emitted …

    Precedence

    3 + 1 * 2 – 1

    (3 + 1) * 2 – 1

    (3 + 1) * (2 – 1)

    4

    7

    4

    Parent contextPermanent link for this heading

    The Parent-operator .. can be used to access the parent context.

    This operator is particularly useful in combination with the filter operator, see chapter .

    Example:

    Variant 1

    reference/title/..

    Corresponds to reference

    Variant 2

    reference/title/../..

    Corresponds to the evaluated document itself

    NamePermanent link for this heading

    The function name can be used to deduce the name of the metadata item or the item property from a value context.

    Example:

    Variant 1

    name(regex_match(title, "^T.*$"))

    Title emitted, if the title of the current document matches the regular expression

    StringsPermanent link for this heading

    Regex matchPermanent link for this heading

    The function regex_match can be used to restrict to those strings which correspond to a regular expression.

    Example:

    Variant 1

    regex_match(title, "^T.*$")

    Titles that begin with "T" are emitted (implicitly case sensitive)

    Variant 2

    regex_match(title, "^T.*$", "i")

    Titles that begin with "T" are emitted (explicitly case insensitive)

    Conversions to upper/lower casePermanent link for this heading

    With the functions to_lower and to_upper, expressions can be converted to uppercase or lowercase.

    Example:

    Variant 1

    to_lower("UPPER")

    "upper" is emitted

    to_upper("lower")

    "LOWER" is emitted

    String contexts (concat)Permanent link for this heading

    The concat function connects multiple values from metadata.

    Example:

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

    "Hauptplatz 123" is emitted

    Character replacementPermanent link for this heading

    With the replace function, characters (character strings) can be replaced; when doing this, regular expressions can be used.

    Example:

    Removing letters

    replace("12ab34cd56", "[a-z]", "")

    "123456" is emitted

    replace("0123456789","[0-9]{9}$","")

    "0" is emitted

    Type conversionsPermanent link for this heading

    Conversion to Integer ValuePermanent link for this heading

    With the function int, a string or a date value can be converted to an integer.

    Example:

    Expression

    What is emitted:

    Variant 1

    int("3")

    Number 3

    Variant 2

    int(dateproperty)

    Date value of the property "dateproperty" as milliseconds since 1970

    Variant 3

    int(now())

    Current time as milliseconds since 1970

    Conversion to Floating Point ValuePermanent link for this heading

    The float function can be used to convert a string or date value to a floating point number.

    Example:

    Expression

    What is emitted:

    Variant 1

    float("3.124")

    Number 3.124

    Variant 2

    float(10)

    10 as floating point number

    Variant 3

    float(now())

    Current time as milliseconds since 1970

    Splitting StringsPermanent link for this heading

    With the function split(<string-expr>, <pattern>) a string can be converted to a list of values.

    Example:

    Expression

    What is emitted:

    split("a,b and c", " *(and|,) *")

    List: a,b,c

    With the function split_path(<string-expr>, <pattern>) a string can be converted to a hierarchical list of values. This hierarchical list can be displayed as a hierarchical facet.

    Example:

    Expression

    What is emitted:

    split_path(“/path/to/documents”, “/”)

    Hierarchical List: path, to, documents

    Parsing JSON expressionsPermanent link for this heading

    The function json_parse(<json>) can be used to parse a JSON expression.

    Beispiel:

    Ausdruck

    What is emitted:

    json_parse("\"a\"")

    a

    json_parse("[\"a\", \"b\"]")

    List: a,b

    json_parse("{\"int\": 1, \"str\": \"a\"}"

    the parsed JSON expression is represented hierarchically as an item

    Parsing date valuesPermanent link for this heading

    With the function parse_date, strings can be interpreted as a date value.

    Parameters are:

    String value to be parsed

    Date formatting parameter, see http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax

    (Optional) Locale, see http://userguide.icu-project.org/locale#TOC-Examples

    Example:

    Expression

    What is emitted:

    Variant 1

    parse_date("1970-01-01 00:00:00 UTC", "yyyy-MM-dd HH:mm:ss zzz")

    Corresponding date value

    Variant 2

    parse_date("October 2015", "MMMM y", "en")

    Corresponding date value

    Now (current time)Permanent link for this heading

    The function now can be used to refer to the current time. The value is expressed in milliseconds since January 1, 1970, which is important in arithmetic expressions.

    Example:

    Expression

    What is emitted:

    Variant 1

    now()

    Current time

    Variant 2

    -(now(), 3600000)

    Time one hour ago

    Variant 3

    mes:date[../mes:date < now()]

    Date values of documents that are in the past

    Variant 4

    -(now(), dateproperty) > 3600000 && "true" || "false"

    "true"

    Given that the date value of the property "dateproperty" is older than one hour

    Download PDF

    • Mindbreeze Property Expression Language

    Content

    • Introduction
    • Language elements

    Download PDF

    • Mindbreeze Property Expression Language