Main element types in GenXML

Definitions of elements

attributes: (id, lang?)
content: (name, address?, email?, uri?, note?, change?, ext*)

attributes: (id, class?, kind?, media?, lang?)
content: (author, title, shorttitle, published?, (isbn | issn)?, (repositoryref* | sourceref)?, template?, sourname*, place*, object*, note?, change?, ext*)

attributes: (id, lang?)
content: (text?, quality?, page?, sourceref, level?, note?, change?, ext*)

attributes: (id, class, active?, lang?)
content : (description, gedcomtag ?, roles ?, principalfmt ?, withnessfmt ?, print ?, note ?, ext*)

attributes: (id, sex, lang?)
content: (personalname, (subpersons | (excerptref*, object*) ), note?, change?, ext*)

<place id?>
attribute: (id?, tp?, lang?)
content: ( prefix?, name, place*, alias?, date?, cords?, ext* )

attributes: ( id, datatype?, lang? )
content: ( (alias | relationship | attribute | event | info),
(excerptref* | (assertionref, assertionref) ), object*, note?, change?, ext*)

General Substructures

Substructures of the Person Structure

Substructures of the Assertion Structure


hrworth 2010-11-29T05:28:07-08:00
Person in GenXML
Trying to understand this piece of the GenXML:

person - The person structure represents a single individual. If, however, there are two persons, each with their own data, that may be the same individual, there may be created a third person that, through the subpersons substructure, combines the two persons into one. If it is certain that the two person records really represents the same individual, they should be merged into one instead of using the subpersons structure. Note that no data except a name may be connected to a person record using the subpersons structure.

Why is this so complicated?

person - The person structure represents a single individual

That person would have attributes and relationships. The sending and receiving application should be able to do the rest.

What am I missing?

Thank you,

testuser42 2010-11-29T10:39:29-08:00
My guess is, that this is a way of creating new "conclusion" persons (that means non-destructive merging). I get the feeling that GenXML usually only has one <person> element for a real life person. This would always be a "conclusion" person, based on various <assertions>.
If this is a better way than what Tom proposes (i.e. constructing a tree of <person> elements), I have no clue.
When Christoffer drops by, I hope we'll know more.
cowe 2010-12-06T11:01:46-08:00
The subpersons structure is an alternative to merge two persons. In this way you may keep the research process history which may be useful in case new evidence later turns up and shows the two persons to really be two different individuals.

I have however not implemented this so far. Possibly there are better ways of handling such situations, but a simple merge may actually add information without evidence.

mstransky 2010-12-06T12:36:03-08:00
I have read Tom's Model and got a chance to email a bit with him. Which was good. Because of some confusion I will ask this. Tom has a person listed and is for the loop/attaching evidence records to, just like the other term above "subpersons structure"

a. are all person in the outline navi area the same as all these shadow persons which are almost duplicates.

b. or the persons in the outline navi area same the same, while there is another area where these shadows of people dont interfear? then when you make your final choice you turn the evidence records to point at the real person.

c. either a or b, you will never really delete any shadow people of real people to hold your research path as a documented reminder how you did it letting all the extra shadow people records stay there as a place marker?

I have seen a few message where a person coined is at times used in two seprated area functions with records, or it just sounded like that. I know you can do it both ways but maybe that would clear it up if one would answer it. People think the shadow person merged into a real person place marker can cuase record damage. when you have three types of birth evidence and each date may be off by a day or week.
I am use to old school merge where they force you to choose a record and write over an evidence record, then you only have 1 out of two records left.
ttwetmore 2010-12-06T12:53:22-08:00

What is unclear to me is exactly what a subperson is, as you have not yet defined on your model page. Is it a substructure that fits inside the person structure, or is it a another whole person structure that the first person structure points to? I believe you mean the former just by the words, but it would be good to know for sure.

I also wonder why you only want there to be two subpersons? What's wrong with many? For example, I have found my great-great grandfather in a series of city directories over a span of about 20 years. I want to keep all of those 20 evidence persons and I'd like to put them all together at once as part of a conclusion person.

I find it interesting that you support both a destructive merge and a non-destructive one. In a destructive merge, how do you keep the sources for the various sub-parts of the merged person straight. For example, if the birth event came from one source, occupation from another, residence from another. I assume you can put a source pointer into your records at any point to handle this? That is also the GEDCOM way which does work when supported.

Tom Wetmore
testuser42 2010-11-29T11:11:20-08:00
Some thoughts
I like the name, place and address structures. They seem powerful and clear.
Places can have a date - maybe we would want an event, too?

I like the classes for eventtypes, and the handling of language-specific event names.

I would probably need an example to see how the assertion structure works. But generally this seems a way to keep evidence and conclusion explictly seperate, so that might be helpful for clarity.

I don't completely understand the subperson-structure. If possible, I'd like to put <person>s in a tree to make clear who they're based on.

Notice that GenXML doesn't have a group object at all. You would create an event with many participants to achieve a similar result.

Because there is no <group>, there are no families either. This job is done with the <relationship> structure. If that works, I'm OK with it.

I don't completely agree with the definitions for Attributes and Events (point in time vs time span). But that's not important.

I like that most (all?) objects get an UUID, and many can have a date-time for last changed. I might want to add a reference to the person who did the changes, so that this info is not lost when giving data away.

The idea of "levels" that keep an imported GenXML intact and seperate is a good one.

I don't see anything about using a zipped container for the XML and all related files. I think this should be possible in BetterGedcom.