To expand on previous answer, right now this would be represented as:
key firstname string; key lastname string;
auto full_name <- concat(firstname, ' ', lastname);
datasource people ( firstname:firstname, lastname:lastname ) address people;
datasource persons ( firstname: firstname, last_name:lastname ) address persons;
And a select full_name;
Could resolve from either table.
The missing bit if you're trying to define a universe across both is actually the union construct; right now a concept is assumed to have one cardinality space.
Something like: auto all_first_names <- union(first_name1, first_name2);
There's a coupling between the concept definition both as a function input and as a semantic value. They could be decomposed, but you'd still need to recompose them at some point before running a query.
Here's an example of what this would look like in practice; https://gist.github.com/greenmtnboy/580f479c80e23c5362a70b43...