# JOIN

### Description

JOIN combines a list of values into one new value by appending them. Optionally, you can also specify a string to put in between values. For the more flexible version of `JOIN`, see [`JOIN_OF_ANY`](https://docs.atfinity.io/rule-language/operators/unknown-operators/join_of_any).

### Example: Joining a list

```
p is Person
JOIN((p.first_name, p.last_name), " ")
```

It is common practice to have two separate[ information fields](https://docs.atfinity.io/guides/glossary/information) for a name - one for the first and one for the last name. If, once these data are collected, you want to treat the full name as one combined piece of information, you could use `JOIN` in a [calculated information](https://docs.atfinity.io/rule-language/operators/string-operators/broken-reference) like in the example above, which would return a full name, e.g. "Pablo Picasso".

### Example: get\_properties and JOIN

Together with [`get_properties`](https://docs.atfinity.io/rule-language/operators/special-operators/get-properties-from-instances) this can be used to get a combined name of all instances of some ontology or role. This example could be used in an [assignment rule](https://docs.atfinity.io/rule-language/operators/special-operators/assign):

```
JOIN(
  get_properties(instances(Person), full_name), 
  ", "
)
```

This could return a string of several full names separated by a comma, e.g. "Isaac Newton, Albert Einstein, Stephen Hawking".
