It seems to me that the "problem" that you perceive is caused by the way you are using language.
Specifically, I think that you are mixing formal language with informal language and expecting to make some kind of sense. Can't be done!
According to semiotic principles, words are just symbols that do not have any intrinsic meaning.
When we assert a fact, we are asserting a true proposition.
Thus, the fact type "Person has Nickname", serves as a container for the facts (fact instances) that you want to assert.
e.g. "Mary has nickname Spinner" and "Joe has nickname SQL-Guru"
If you don't want to assert a fact, then you don't assert it and it is not in the universe of discourse.
Any attempt to characterise a fact as either formal or informal is doomed to failure because in the universe of discourse that is a fact based model, all facts are "formal".
You either assert a fact or you don't.