The [X] all_types table occurrence is likely not needed, unless you want a portal showing all types. A Value List would not require it, as it can show all types without a relationship.
I think what you're missing here is a way to "gather" all the var_types in "annotations" for a var_id in "bits". The List() function gathers data. Without it you just get the 1st the relationship hits.
Substitute ( List (annotations::var_type) ; "¶" ; "-" )
A great thankyou for your very clear and right answer to my question. It does indeed work like you say and I could finally progress in my quest thanks to your help
Have a great Xmas season and thank you again for your nice help