Just for input, I remember having read this stack overflow question and its answers some time ago regarding genealogic graphs:
Just let me quote from the question to illustrate the problem: "I am the developer of some family tree software (written in C++ and Qt). I had no problems until one of my customers mailed me a bug report. The problem is that the customer has two children with their own daughter, and, as a result, he can't use my software because of errors."
I am not sure if this would be a problem with your data description format. Though cycles in graphs can be a bit nasty...
Anyhow, I found an approach interesting that one of the answer givers described: "We have modeled our family tree to what happens in the real world: Events (for example, births, weddings, engagement, unions, deaths, adoptions, etc.). We do not put any restrictions on these, except for logically impossible ones (for example, one can't be one's own parent, relations need two individuals, etc...)"
Thought you might find this interesting.
Cheers,
Eike