diff --git a/CHANGELOG.md b/CHANGELOG.md
index 67d83d16e7..45f746da69 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Fixed
+
+- Update to graphANNIS 4.0.1 that fixes performance issues with `@*` queries and has improved
+timeout support for frequency queries (which otherwise could use all the resources of the server).
+
## [4.15.0] - 2025-05-22
### Added
diff --git a/docs/user-guide/src/aql/operators.md b/docs/user-guide/src/aql/operators.md
index b7a719722f..66aedd7706 100644
--- a/docs/user-guide/src/aql/operators.md
+++ b/docs/user-guide/src/aql/operators.md
@@ -2,37 +2,37 @@
AQL currently includes the following operators:
-| Operator | Description | Illustration | Notes | |
-| : -------: | :------------------- | :---------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |
-| `.` | direct precedence |  | For non-terminal nodes, precedence is determined by the right-most and left-most terminal children. In corpora with multiple segmentations the layer on which consecutivity holds may be specified with `.layer` | |
-| `.*` | indirect precedence |  | For specific sizes of precedence spans, `.n,m` can be used, e.g. `.3,4` - between 3 and 4 token distance; the default maximum distance for `.*` is 50 tokens. As above, segmentation layers may be specified, e.g. `.layer,3,4` | |
-| `^` | directly near |  or  | Same as precedence, but in either order. In corpora with multiple segmentations the layer on which consecutivity holds may be specified with `^layer` | |
-| `^*` | indirectly near |  or  | Like indirect precedence in either order. The form `^n,m` can be used, e.g. `^3,4` - between 3 and 4 token distance; the default maximum distance for `^*` is 50 tokens. As above, segmentation layers may be specified, e.g. `^layer,3,4` | |
-| `>` | direct dominance |  | A specific edge type may be specified, e.g. `>secedge` to find secondary edges. Edge labels are specified in brackets, e.g. `>[func="OA"]` for an edge with the function 'object, accusative' | |
-| `>*` | indirect dominance |  | For specific distance of dominance, `>n,m` can be used, e.g. `>3,4` - dominates with 3 to 4 edges distance | |
-| `@*` | part of sub-corpus | | Left attribute is part of a sub-corpus having the attribute of the right-hand side. For specific distance range in the sub-corpus hierarchy, `@n,m` can be used. | |
-| `_=_` | identical coverage |  | Applies when two annotations cover the exact same span of tokens | |
-| `_i_` | inclusion |  | Applies when one annotation covers a span identical to or larger than another | |
-| `_o_` | overlap |  | | |
-| `_l_` | left aligned |  | Both elements span an area beginning with the same token | |
-| `_r_` | right aligned |  | Both elements span an area ending with the same token | |
-| `==` | value identity | **A = B** | The value of the annotation or token A is identical to that of B (this operator does not bind, i.e. the nodes must be connected by some other criteria too) | |
-| `!=` | value difference | **A ≠ B** | The value of the annotation or token A is different from B (this operator does not bind, i.e. the nodes must be connected by some other criteria too) | |
-| `->LABEL` | labeled pointing relation |  | A labeled, directed relationship between two elements. Annotations can be specified with `->LABEL[annotation="VALUE"]` | |
-| `->LABEL *` | indirect pointing relation |  | An indirect labeled relationship between two elements. The length of the chain may be specified with `->LABEL n,m` for relation chains of length n to m | |
-| `#x:arity=n` | arity |  | Specifies the amount of directly dominated children that the searched node has | |
-| `_ident_` | node identity | | True for two attributes that belong to the same node | |
+| Operator | Description | Illustration | Notes |
+| :----------- | -------------------------: | :----------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `.` | direct precedence |  | For non-terminal nodes, precedence is determined by the right-most and left-most terminal children. In corpora with multiple segmentations the layer on which consecutivity holds may be specified with `.layer` |
+| `.*` | indirect precedence |  | For specific sizes of precedence spans, `.n,m` can be used, e.g. `.3,4` - between 3 and 4 token distance; the default maximum distance for `.*` is 50 tokens. As above, segmentation layers may be specified, e.g. `.layer,3,4` |
+| `^` | directly near |  or  | Same as precedence, but in either order. In corpora with multiple segmentations the layer on which consecutivity holds may be specified with `^layer` |
+| `^*` | indirectly near |  or  | Like indirect precedence in either order. The form `^n,m` can be used, e.g. `^3,4` - between 3 and 4 token distance; the default maximum distance for `^*` is 50 tokens. As above, segmentation layers may be specified, e.g. `^layer,3,4` |
+| `>` | direct dominance |  | A specific edge type may be specified, e.g. `>secedge` to find secondary edges. Edge labels are specified in brackets, e.g. `>[func="OA"]` for an edge with the function 'object, accusative' |
+| `>*` | indirect dominance |  | For specific distance of dominance, `>n,m` can be used, e.g. `>3,4` - dominates with 3 to 4 edges distance |
+| `@*` | part of sub-corpus | | Left attribute is part of a sub-corpus having the attribute of the right-hand side. For specific distance range in the sub-corpus hierarchy, `@n,m` can be used. |
+| `_=_` | identical coverage |  | Applies when two annotations cover the exact same span of tokens |
+| `_i_` | inclusion |  | Applies when one annotation covers a span identical to or larger than another |
+| `_o_` | overlap |  | |
+| `_l_` | left aligned |  | Both elements span an area beginning with the same token |
+| `_r_` | right aligned |  | Both elements span an area ending with the same token |
+| `==` | value identity | **A = B** | The value of the annotation or token A is identical to that of B (this operator does not bind, i.e. the nodes must be connected by some other criteria too) |
+| `!=` | value difference | **A ≠ B** | The value of the annotation or token A is different from B (this operator does not bind, i.e. the nodes must be connected by some other criteria too) |
+| `->LABEL` | labeled pointing relation |  | A labeled, directed relationship between two elements. Annotations can be specified with `->LABEL[annotation="VALUE"]` |
+| `->LABEL *` | indirect pointing relation |  | An indirect labeled relationship between two elements. The length of the chain may be specified with `->LABEL n,m` for relation chains of length n to m |
+| `#x:arity=n` | arity |  | Specifies the amount of directly dominated children that the searched node has |
+| `_ident_` | node identity | | True for two attributes that belong to the same node |
-## Unsupported operators
+## Unsupported operators
The following operators have been available in the legacy version ANNIS3, but are not yet implemented in the newest ANNIS version.
-| Operator | Description | Illustration | Notes |
-| : -------: | :------------------- | :---------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| `_ol_` and `_or_`| Overlap, but only on the left or right side | | |
-| `>@l` | left-most child |  | |
-| `>@r` | right-most child |  | |
-| `$` | common parent node |  | |
-| `$*` | common ancestor node |  | |
-| `#x:tokenarity=n` | tokenarity |  | Specifies the length of the span of tokens covered by the node |
-| `#x:root` | root |  | Specifies that the node is not dominated by any other node within its namespace **s** |
\ No newline at end of file
+| Operator | Description | Illustration | Notes |
+| :---------------: | :------------------------------------------ | :-----------------------------: | :------------------------------------------------------------------------------------ |
+| `_ol_` and `_or_` | Overlap, but only on the left or right side | | |
+| `>@l` | left-most child |  | |
+| `>@r` | right-most child |  | |
+| `$` | common parent node |  | |
+| `$*` | common ancestor node |  | |
+| `#x:tokenarity=n` | tokenarity |  | Specifies the length of the span of tokens covered by the node |
+| `#x:root` | root |  | Specifies that the node is not dominated by any other node within its namespace **s** |
diff --git a/pom.xml b/pom.xml
index 0253033dd8..e46a9a3b31 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,7 +39,7 @@
Press ← or → to navigate between chapters
+Press S or / to search in the book
+Press ? to show this help
+Press Esc to hide this help
+