I can't get the predicate argument

Thanks for the details.
Now I have a better understanding of your issue.
When you try to create the HAS_CONTACT predicate in :

you are using the uid() function both on subject and object. This is a tricky case and I need to verify if it is supported.
The complexity is that uid(user) is a list of uids (in your case it’s only one, but theoretically uid(v) is the list of all uids of the the map variable). So using it in both object and subject leads to handling the cartesian product of uid(user) and uid(contact_{idx}).

I’ll check the options…