Re: Validation of genealogy data
[email protected] (Stephen Woodbridge) Sat, 06 Aug 2011 22:44:28 -0400
| Newsgroups | perl.gedcom |
|---|---|
| Message-ID | <[email protected]> |
Hi Ron, I think you have summed this up correctly. Using a UID or UUID and collecting a stream of them probably does the job. I think that one subtle point is that given an object identified by a UID it can change over time as information is added to it. I think version tracking on the object is a good idea. That would allow you to merge and object at some version and later deal with updating that object from its source to a new version. Overall, it sounds like you have the ideas and it sounds like it could be a very enabling tool. Thanks, -Steve On 8/6/2011 7:30 PM, Ron Savage wrote: > Hi Steve > > On Sat, 2011-08-06 at 11:32 -0400, Stephen Woodbridge wrote: >> On 8/6/2011 2:28 AM, Ron Savage wrote: >>> Hi Steve >>> >>> On Sat, 2011-08-06 at 00:39 -0400, Stephen Woodbridge wrote: >>>> On 8/5/2011 9:04 PM, Darren Duncan wrote: >>>>> Ron Savage wrote: >>> >>>> http://swoodbridge.com/family/Woodbridge/index.php?indi=I2921 >>>> >>>> I keep all the data in Family Tree Maker, export that to a GEDCOM, then >>>> load it use a Gedcom.pm script into Postgresql database and serve the >>>> pages via php. The photos are integrated by a separate web app that >>>> allows loading, editing and linking them to the genealogy tables in the >>>> database. >>>> >>>> I really big requirement is persistent IDs for individuals. I have to be >>>> very careful to not do anything that might renumber them. >>> >>> Noted. >>> >>> Is there some specific action with programs we've mentioned which does >>> renumber them? >> >> Well the obvious one is a renumber command ;), but merging files and >> merge individuals some times creates a new individual and then copies >> the data from the two merged ones into the new which causes the new one >> to be a new number. > > OK. This is what I wanted spelled out. Saves me having to make baseless > assumptions :-). > > Yes, I see the difficulty. Thinking aloud... > > Let's say we try to solve this by giving each INDI a unique # (UID) > besides the # in the INDI statement itself. > > Renumbering changes INDI # but not UID. > > When combining data from 2 parties, INDI can be set to anything, but we > haven't solved the problem, since the question now is: Which UID is > definitive? A: Neither. We've gained nothing. Right? But read on... > > Or is it enough to record a trail of UIDs, so a set of UIDs can be > attached to the final INDI? This allows backtracking from the combined > data to the 2 source data sets (by ignoring the actual value of INDI, > and working off the UID). Would that suffice? > > No. See below. > >> But from a more general point of view and talking about versioning of >> data, if 100 people create an INDI record for the same person in >> separate research projects and later some of them merge their research >> at various points in time it would be nice to know if my INDI includes >> one or more of those other INDIs and it might be nice to know at what >> version of those INDI(s) got merged into my work. > > I think this is just the above, extended such that each assertion about > an individual, not just each individual, owns a set of UIDs. Make sense? > >> I suppose one way of thinking about this would be like SVN or GIT source >> code respository, where files were INDIs or FACTs and there exists a >> link like item the connects facts to INDIs or "LINK"s and INDIs to other >> INDIs. I'm not suggesting this as a technical design but as a way of >> thinking about the problem of revisioning and history. > > It might be tempting to use git, but I think not: > > o With git (etc) the end result is, for each assertion, 1 definitive > value (after a merge), but with a history managed by git to enable > tracing of where that value came from, i.e. what the alternative values > were at the time(s) of the merge(s). > > o My feeling from the discussion so far is that what's wanted is to > carry forward all versions of the assertion, in parallel so to speak. > > I really think this means a set of UIDs per assertion, with the UIDs' > purposes being pointers back in time to the multiple sources leading to > the 'current' state. >