# is all

**All existence declarations** match all the remaining instances of a certain type. This means the whole declaration will only match exactly one time or zero times, in that way this matches "any" instance that fulfils the condition including none. They allow you to make highly variable documents or rules.

Note that an `all` existence declaration does not prevent a document or rule from matching if there are no matching instances.

### Syntax

`VARIABLE_1, ... VARIABLE_N, ... OTHER is all ONTOLOGY, ROLE_1, ... ROLE_N`

The first `N` matching Instances will be stored in the variables `VARIABLE_1` to `VARIABLE_N`. If there are more than `N` Instances, these will be stored as a list in `OTHER`.

### Examples: separate variables

```python
p1, p2, p3, ...ps is all Person
```

If there are five `Person` Instances in the Case, the first three will be available as `p1`, `p2`, `p3`, the other two will go into a list available as `ps`.

### Examples: variables stored in a list

```python
ps is all Person
```

If there are `N` `Person` Instances in the Case, `ps` will hold that list of `N` `Person` Instances.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.atfinity.io/rule-language/declarations/is-all-ontology-role.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
