While leaving gender as plain text (instead of just "male" or "female") is politically correct, it makes certain assertions difficult.
Example: if X is Y's sibling and X is female, then X is Y's sister.
However, the gender "female" could be written inconsistently as "F", "Female", "FEM", or in some other way.
I suggest gender be a "quasi-enumerable" value: "F" for female, "M" for male, but plain text allowed for other genders.
So, you couldn't use "female" or "fem" for female (since it already has an assigned enumeration), but you could still have non-male/female genders.
While leaving gender as plain text (instead of just "male" or "female") is politically correct, it makes certain assertions difficult.
Example: if X is Y's sibling and X is female, then X is Y's sister.
However, the gender "female" could be written inconsistently as "F", "Female", "FEM", or in some other way.
I suggest gender be a "quasi-enumerable" value: "F" for female, "M" for male, but plain text allowed for other genders.
So, you couldn't use "female" or "fem" for female (since it already has an assigned enumeration), but you could still have non-male/female genders.