Hi Andy,
Thanks for the question.
There are several points to make about your example.
Entity Types (page 63 of Terry's 2001 book and page 66 of the 2008 version)
An ORM Object Type can be either an "Entity" or a "Value"
In your diagram the ORM Object "Member" is an Entity type and not a Value type.
This means that the Object Type "Member" is a name for the set of all possible instances of Member.
Sets don't have duplicates so "Member" needs a reference.
In my example I have chosen ".id" but you can chose others.
I used the NORMA Fact Editor to type in Member(.id) has GivenName()
The empty parentheses after GivenName tell NORMA that this is a Value Type.
Your "Member" object is coloured red because the fact does not conform to the ORM2 rules.
This is what the error message is saying.
Allowing for multiple given names
Your example allows for up to three given names, two of which are optional.
Since, as you say, it is wise to avoid nulls my example is coded in a way that (a) allows for as many given names as you want and (b) avoids creating nulls in the database.
I suggest that you make liberal use of the Verbalizer window. This will help you to identify the exact meaning of any facts that you enter and to correct them as you add them to the model.
Hope this helps
Ken