Is there a way to generate a list of events in a GEDCOM file without a source, maybe sorted by person or surname?
The lineage-linked program Family Historian uses GEDCOM as its native storage format. It allows the user to create queries, and is extensible via the use of plugins, which can be downloaded from the Plugin Store. (Disclaimer: I use Family Historian for my software, and am a member of the User Group, but I am neither part of the Calico Pie development team, nor have I authored any of the queries or Plugins.)
The developer claims that the program is 100% GEDCOM compatible. Obviously all such claims are open to debate, and a Google search can find reviews and previous discussion of just how compatible FH is. But one advantage is that if you do want a GEDCOM file, it isn't necessary to run an import or export file to get the data out of a proprietary database format. It would be possible, though overkill, to use Family Historian as a GEDCOM utility even if one didn't want to use it as their main software program.
I don't know if there is a database-wide query for finding all events without a source, but it is certainly possible to find unsourced events by their event type. As I write this, I am working through the results list generated by a Plugin which looks for missing census records for a designated person and all relations of the designated person.
Apologies if this sounds too much like a press release rather than an answer. I can sort of follow along someone else's script or query when it is explained to me, but I am not yet experienced enough with building my own queries or programming in Lua (the language used for the plugins) or other programming languages to address the technical question directly.
From a practical workflow standpoint, I find it easier to do cleanup when using a targeted search rather than a global one. E.g. looking for missing census entries allows me to search for the missing census records in a systematic fashion, as opposed to working globally and getting distracted by searching all over a particular vendor's offerings.
Similarly, I would prefer to have a 'find unsourced items' query which could be run on individuals or a group of related individuals, as the FH missing census plugin does.
Another possibility would be to use a Research Assistant program such as GenSmarts which looks for 'holes' in your database. Unfortunately the developer seems to be more interested in producing versions which work with proprietary software, and the GEDCOM support is poor (i.e. it suggests you need to search for sources when sources already are present in your file). (Disclaimer: I use GenSmarts but am not connected to their development team; I am a not-very-satisfied customer, but continue to use it to catch things I might have missed.)
So obviously there are ways to do it. If you are thinking about coding a utility yourself, if you do a paper mock-up of how you want the user interface to look, and how the results would be displayed, that might be a good brainstorming tool to help you focus on exactly what you want the utility to do.
Let's assume none of these programs exist, and I had to reinvent the wheel. GEDCOM is mostly-human readable and can be viewed and edited (for the adventurous) with a plain text editor.
If I had to be the computer, my algorithm would be:
- Review the GEDCOM standard to familiarize myself with the tags used to mark events and sources.
- Open the file in my text editor of choice
- Open a spreadsheet to record my findings
- Search for an event
- Skip the events which had a source associated with them (a query language might call this an exclude)
- Record the remainder in my spreadsheet
From there, the results could be sorted by person, surname, event date, or whatever other property I chose to record in the spreadsheet.
I do not have access to an Intel Mac, so I have not kept up with the OS X software scene. Many of the websites that used to cover Mac Genealogy, which listed GEDCOM utilities for OS X, have taken down their old content. However, I did find one program that might be of interest:
Browse the low-level structure of a GEDCOM file (i.e. at the tag level) but with hyperlinks to move within the file.
This might be more convenient than using an ordinary text editor to navigate a GEDCOM file.
For writing your own: gedcom4j looks interesting:
gedcom4j is an open-source, free-to-use Java library for loading (parsing) and saving genealogy data in GEDCOM 5.5 or 5.5.1 files to/from a Java object hierarchy, which can be manipulated by your code as you see fit.
The free utility Family Tree Analyzer https://ftanalyzer.codeplex.com/ offers various views and analysis reports for any GEDCOM file. Its Facts Tab allows Events & Attributes to be sorted by Source, so all unsourced Facts are grouped together. There are also various filters on surnames, relationships, etc to narrow the search. QED
Go look in the plugins forum, I have code in there and a long bunch of diatribe on moving UDF nicks to their proper place. You would change it to look for ~SOUR UDFs on every record and put it out in a table, so you can examine them. The Cemetery Table plugin is pretty calm, and not too many bells and whistles, and you can debug a run thru to see how they output the tables. Its all there and all stealable
so do the (it looks like INDI, FAMS,...I dont remember the exact line, but there is one in the edit help, (but read all records that could be sourced...or read every line in the file) set first indi as I have, do If indi is not null read line by line, is it UDF sour? put it in the table when done reading file output the table
you have an issue, ask in the forum. Lots of help from tatewise.