Query Language

ROPARC includes a powerful query language for filtering and searching. It uses a JQL-like syntax that supports field comparisons, logical operators, and nested queries. You’ll meet it in the items list search bar (which auto-detects query syntax vs. plain text), the cross-entity Search page, dashboard widget filters, verification iteration scoping, and query-scoped permissions.

The search bar offers autocomplete for field names, operators, and values while you compose, plus a syntax help button. The sparkles button translates a natural-language request (“requirements updated in the last week without a verifying test case”) into a query for you.

Query autocomplete in the items search bar

Basic Syntax

A query consists of one or more conditions combined with logical operators:

field operator value

Examples

type = requirement
status = approved
title ~ "authentication"

Keywords and field names are case-insensitive (AND = and, IS EMPTY = is empty).

Operators

OperatorDescriptionExample
=Equalstype = requirement
!=Not equalsstatus != draft
>Greater thancreated_at > 2024-01-01
>=Greater than or equalupdated_at >= -7d
<Less thanpriority < 3
<=Less than or equalpriority <= 2
~Contains (text search)title ~ "auth"
!~Does not containtitle !~ "deprecated"
INValue in setstatus IN (draft, approved)
NOT INValue not in settype NOT IN (hazard, risk)
IS EMPTYField has no valuedescription IS EMPTY
IS NOT EMPTYField has a valueassignee IS NOT EMPTY

Logical Operators

Combine multiple conditions using AND, OR, and NOT:

type = requirement AND status = approved
type = requirement OR type = test
NOT status = deleted
(type = requirement OR type = test) AND status != draft

Operator precedence (highest to lowest):

  1. Parentheses ()
  2. NOT
  3. AND
  4. OR

Fields

Standard Fields

FieldTypeDescription
idstringItem ID
typestringItem type (requirement, test, hazard, etc.)
titlestringItem title (supports full-text search via ~)
statusstringCurrent workflow status
descriptionstringItem description (supports full-text search via ~)
created_atdateCreation timestamp
created_bystringCreator user ID
updated_atdateLast modification timestamp
updated_bystringLast modifier user ID
has_suspect_linksbooleanWhether the item has suspect links (=/!= only)

Custom Fields

Any custom fields defined in your item type configuration can be used directly. If a custom field’s key collides with a standard or link field name, prefix it with custom. to disambiguate:

severity = critical
component ~ "engine"
custom.status_note IS NOT EMPTY

Date and datetime fields support comparison operators for range queries:

due_date > "2025-01-01"
event_time >= "2025-06-15T09:00"

Multi-value fields (multi-select enums and references) match on containment: tags = safety means “contains safety”, tags IN (safety, security) means “overlaps with either”.

Query items by their link relationships:

FieldDescription
links_toItems this one links to (outgoing)
linked_fromItems that link to this one (incoming)
linksItems linked in either direction

Named link types from your workarea configuration can also be used (e.g., verified_by, derives_from, mitigates). Named link-type fields are bidirectional: refines IN (type = X) matches items connected to a refines link involving X regardless of which end they’re on. Use links_to / linked_from only when you specifically need to constrain direction.

Link fields support =/!= against item IDs, IN/NOT IN with ID lists or subqueries, and IS EMPTY / IS NOT EMPTY:

verified_by = ITEM-12
links_to IN (type = testcase)
linked_from NOT IN (status = obsolete)

Link attribute queries use dot notation:

verified_by.applicability = "variant-a"

Cross-Entity Queries

The language isn’t limited to items — documents and verification iterations are queryable too. Use entityType to narrow the scope on the Search page:

entityType = document AND updated_at >= -7d
entityType IN (item, document) AND title ~ "brake"

Documents add a folder_id field; iterations add target_baseline.

Value Types

TypeExamples
Quoted string"hello world", 'single quotes'
Unquoted identifierdraft, approved, in-progress
Number42, -3, 1.5
Booleantrue, false
ISO date2024-01-01, 2024-06-15T14:30:00Z
Relative date-7d (7 days ago), -2w (2 weeks ago), -1m (1 month ago), -1y (1 year ago)

User Variables

In query-scoped permission predicates, $user.id, $user.email, and $user.display_name refer to the current user:

assignee = $user.id

These variables are resolved only where a user context exists (permission predicates) — they don’t match anything in the plain items search bar.

Common Query Examples

Find all open requirements:

type = requirement AND status != closed

Items modified in the last week:

updated_at >= -7d

Requirements with no linked test cases:

type = requirement AND verified_by IS EMPTY

Items containing “safety” in the title:

title ~ "safety"

High-priority items assigned to a specific user:

priority = high AND assignee = "john.doe"

Items with suspect traceability links:

has_suspect_links = true