This is a good question and comes down to what you want to achieve with the
In your first example,
Mother(x, y) is a (binary) relation. That means that you can have as many
ys as you would like per
Mother as a relation, you can also make formula that checks whether you have two
ys that satisfies motherhood for
In your other example,
hasMother(x) is a predicate that can only be true or false. How many mothers do
x have? Impossible to say. Who is
x's mother? We can't say.
You could also conceive of a
mother(x) → y function that maps an
x to its mother
y, but then you can have only one mother, and every
x needs to have a mother (in the model).
It all comes down to (a) what is a natural representation of "the world" (whatever you want to model), and (b) what you want to achieve (whatever you want to get out of your model).