Gendatam - A Genealogical Data Model External Data File Record Formats ('Native' Version) Model Major Revision Date: 1st March 2005 Model First Publication Date: 25th September 2002 This Document published: 4th March 2005. Revised see Change History Copyright (c)2002-2008 Graywork Products Ltd All Rights Reserved Author: Peter J. Seymour, Graywork Products Ltd Email: gdm@gendatam.com (note: plain-text emails are preferred). This document also serves to define the data model field attributes. -------------------------------------------------------------------------- PENDING CHANGES Add Global Evidence template descriptions Specification of maximum line length While it is not strictly necessary, possibly add some spare fields Embedded Images External references -------------------------------------------------------------------------- CHANGE HISTORY Version is incremented when any fields are changed. (At most once per day) Date is updated whenever this document is changed. VERSION 36 DATE 2008-08-13 Added dualyear flag to DATE record History prior to Version 35 deleted. VERSION 035 DATE 2008-06-16 Added Special Event Lists to PERSON and COUPLE Added PERSON Baptism Special Event Removed Date List from Assertion Records Removed Editable time field from EVENTASSERTION -------------------------------------------------------------------------- DESIGN OBJECTIVES - The file should be structured in such a way that it has maximum cross-platform compatibilty and transferability. This applies not just in terms of operating system but also hardware. - The file should be free of both endian and codepage considerations. This is to provide a common format and content in all circumstances. - Any character in the Unicode 16-bit range should be accommodated. - Files will be encoded in UTF-8. - The file should be in plain-text format as far as use of UTF-8 allows. This is to minimise any binary compatability issues. - All 'core' data existing during program execution must also be preserved in the saved file. Core data does not include derived values such as 'age'. - Any logical links between records must be 'two-way'. This ensures that it is always known when and how a record is referred to. Both halves of a link pair are considered core data as neither has precedence. -------------------------------------------------------------------------- OVERALL SOLUTION - The only true key values are the record id number and the logical record type. (The physical record type A/B is only a feature of the external file format, as is the record B sub-type). All other fields (surname etc) are variable and do not qualify as key fields. - File encoding will be UTF8. This effectively relaxes to 7-bit ASCII if codepoints above 126 are not present and codepage considerations are ignored. Values beyond 7 bits will not "plain-text" but this is accepted. - Binary values to describe fields lengths or other aspects of data cannot be used. - Files should be saved in compressed format to make it difficult to directly edit the data. This compressed format should exploit the 'zlib' process to provide maximum compatibility (refer to www.zlib.net). -------------------------------------------------------------------------- DEPARTURES FROM OBJECTIVES - Use of UTF8 encoding may result in data that is not 'plain-text'. -------------------------------------------------------------------------- GENERAL RATIONALE The basic design principle adopted is that of the mainframe sequential flat file. Physically, data is grouped by a record type. In this design, record type 'A' is the first record in a group, the other records in the group being type 'B'. The data within a group is spread over a number of records in a manner largely dictated by sub-groupings of data particularly where there is a variable amount of that data. Subgroups are identified by a record subtype. The first record of a group (the type 'A') is also logically identified by a subtype and by a numeric id value. The subtype identifies the object type for the group. The id value is a variable width field and is located at the end of the record, at the end of the variable width field section, so that it is always at a known position. The general record format (without the embedded blanks shown) is: either: 'A' recordsubtype fixedwidthdata variablewidthdata idvalue or: 'B' recordsubtype data There are many record subtypes. As stated, the first record of a group starts with an 'A' record. Subsequent records in the group are type 'B' records. Thus, a group starts with an 'A' record and ends when the next record is also an 'A' type (ie is not a 'B' type). The group includes all the records within these limits. Fixed-width fields precede any variable-width fields in each record. The width of variable-width fields is given by the presence of delimiter characters in order to preserve the plain-text nature of the file. The defined delimiter is '/' (forward slash). This value cannot occur in the delimited fields themselves. The delimiter is omitted if it would be the last character in the record. User-entered text is held without delimiter characters, for instance in subtypes C,D and E, with the result that any user-enterable text may be held in such fields. Within subgroups (ie for a particuar record subtype within a group) the records are identified by their sequential position within the group. Therefore, if a particular record is present, all preceding records in the subgroup must also be present to preserve the correct sequential position. If there are no data values for a particular instance of a subgroup, that subgroup will not occur in the relevant group. It is not required for any trailing 'empty' records to be present in a subgroup. For records containing multiple data fields it is required that all the defined fields be present. This requirement applies to the initial version of the file format. It is possible it will be relaxed in a defined way in a future version to allow compatibility between versions. ------------------------------------------------------------------------- SEQUENCE REQUIREMENTS - The File Header group must be the first group in the file and there must be one and only one File Header group in the file. - A record group is any AB...B record type sequence terminated by a following 'A' type or end-of-file. - It is possible, but unlikely, for a group to contain no 'B' records. - Within a group, a sub-group need not be present if it has no data. - Within a group, subgroups are collated by record subtype. ------------------------------------------------------------------------- VERSION COMPATIBILITY REQUIREMENTS (not yet implemented) Note that Graywork Products Ltd is the sole authority on changes. 'Local' variations are not permitted. All questions on changes to this specification must be referred to Graywork Products Ltd. These requirements will apply to versions later than a version to be specified at a later date. The compatibility scheme is: - Items added to lists go at the end of the list - Items added to the fixed width section of record headers go at the end of the fixed width section. - Items added to the variable width section of record headers go at the start of the variable width section. - Items removed leave a spare position (which cannot be re-used). - Record types cannot be removed. - New record types must use a previously unused type value. ------------------------------------------------------------------------- DATE FORMAT User Date values are required to be in the form 'YYYY-MM-DD'. This form intrinsically enables correct sequence comparisons. The dashes make explicit the demarcation between parts. This facilitates part dates, eg YYYY or YYYY-MM or -MM or --DD. Indecipherable digits in otherwise complete source fields are denoted by '?'. Years are implicitly assumed to be Gregorian Calendar, epoc 'AD'. Although multiple datestamps per record are allowed, only the latest is required. Multiple datastamps are held earliest first. ------------------------------------------------------------------------- CROSS-FILE LINKAGE Cross-file 'forward' ids are only permitted to Task, Notes, Global and Evidence Private records. This reduces the scope for a 'can of worms' developing over time. Additional rules may be added in future to allow ways in which groups of Person and Couple records can be segmented between files. While cross-file linkage is partly defined in this document, its implementation is reserved for a future version (if at all). See also 'Future Considerations' ------------------------------------------------------------------------- TO DO: -------------------------------------------------------------------------- FUTURE CONSIDERATION: - list of "permanent" person identifiers? (NI etc) - cross-file linkage - ids to be long (2x32bits),'fileid,recid' externally, so an example cross-file id might be '1,23' where '1' identifies the file. It is not an error for a cross ref to be non-existent or inaccessible (in a resilient system it has to be this way, but it of course seriously limits its usefulness). Probably change this to two separate fields. 'fileid' will be a local value, unique per file and references to an external file need not use the same value in other files. Obviously, a table of fileids and filenames is required (probably in the file header). - user-defined fields (a small number per record) ??? - user-defined reports (may require "external" field names)?? -------------------------------------------------------------------------- DATA TYPES: (I) - an index character (eg '3' or 'A'). Length can only be 1. Base 62 (N) - numeric text (eg '123456' ) (A) - alphanumeric text (eg '6 cats sat 7 times'). (D) - date, the format YYYY-MM-DD (or a truncation) is required. (T) - internal date/time stamp of the form YYYYMMDDHHMMSS (S) - latitude or longitude in the form N-DD-MM-SS (E) - Base 62 encoding (used for record unique id) A numeric suffix indicates field length where fixed. For example (N3) An equals sign followed by a value shows a fixed value for the field -------------------------------------------------------------------------- OTHER NOTATION IN THIS DOCUMENT: / Field Delimiter (shown where required) + Additional lines of same subtype may be present /... Additional delimited fields may be present on the same line : (Usually near the centre of a line) means the rest of line is a comment which typically has been included for explanation or illustration. Blanks at the start of lines following an 'A' subtype signify a continuation of the 'A' information. Any blanks shown are not significant and do not occur in the data. Anything else is used merely for display purposes in this document. -------------------------------------------------------------------------- FIELD SIZES: 'uniquestamp' is a 63-bit integer when loaded, 'E' when stored. Ids are 31-bit integers when loaded, 'N' when stored. (****x-file 63****) -------------------------------------------------------------------------- RECORD SCOPE (included as part of record category) Miscellaneous- General scope, not subject to the Global/Assertion categories Primary - May be standalone (ie not linked to any other record). Cannot have an "owner". Global - Logical visibility not restricted. Can be standalone. Does not require an "owner", but may have many via assertion records. Assertion - Logical visibility limited to the required 'owning' record. Scope may be qualified by record type, in which case "owner" can only be of that type. Can only have one "owner". Ancillary - Only exist as single instances and are private to the owning record. ("Logical visibility" refers to ability of other records to link to this) -------------------------------------------------------------------------- RECORD TYPES (The Physical Record Type) A - Main B - Continuation Record -------------------------------------------------------------------------- RECORD TYPE 'A' SUB-TYPES (The Logical 'Record' or Object type) -------------------------------------Miscellaneous------------------------ A - File Header B - Task Log C - spare -------------------------------------Primary ----------------------------- D - Person E - Couple -------------------------------------Person Private ---------------------- F - Parentage G - Naming (Forename) H - Naming (Surname) I - Naming (Title) J - Culture (Nationality) K - Culture (Religion) L - Occupation (Education) M - Occupation (Employment etc) N - Id Number -------------------------------------Assertions(Private)------------------ O - Address Assertion P - Event Assertion Q - Group Assertion R - Evidence Assrtion S - Reserved -------------------------------------Global ------------------------------ T - Address U - Event V - Group (conceptual/duplicates/concrete) W - Evidence X - Reserved -------------------------------------Evidence Private(Global)------------- Y - Archive (physical location) Z - Evidence Computer File -------------------------------------Ancillary--------------------------- a - Date z - File Trailer -------------------------------------------------------------------------- RECORD TYPE 'B' SUB-TYPES -------------------------------------------------------------------------- A - Task link B - Special Event link (ordered list, null items at end may be omitted) C - Date fields (ordered list, null items at end may be omitted) D - User fields (ordered list, null items at end may be omitted) E - Notes F - Evidence Assertion link G - Person Couple link H - Forename link I - Surname link J - Title link K - Education link L - Occupation link M - Address Assertion link N - Multiple Birth link O - Event Assertion link P - Group Assertion link Q - Evidence/Archive Assessment R - Referenced-by link S - Couple Child link (via Parentage) T - Parentage Link from Person U - Nationality link V - Religion link W - Alternative Spellings (or some other list) X - Id Number link Y - Non-deletable highlight in Evidence (notes or image) Z - Subgrouping list a - Task Categories list b - Evidence Computer File list c - spare d - Evidence Document Details e - Evidence Data Template Data f - Address Lines (Global Address) g - Other Ids h - spare i - Ref Date Record Ids list (Evidence Assertion and Date) j - reserved k - Medical notes m - Medical terms n - Medical Private Evidence Ids -------------------------------------------------------------------------- ========================================================================== FILEHEADER AA encoding(I1) specversion(N3) idlen(N2) crossfileflag(I1) fileusage(I1) /unused(N)/maxlinelength(N)/estimatedrecords(N)/counter(N)/dummyid(N=0) BD lastupdate(T)/... : 0 computer generated BD lastfilewrite(T) : 1 last written timestamp BD generator(A) : 2 Name of generating program BD generversion(A) : 3 Version of generating program BD fullfilename(A) : 4 (data not visible externally) BD filedescription(A) : 5 a short description of the file BD originator(A) : 6 effectively, a contact point re this file BD copyright(A) : 7 a copyright assertion BD otherfileusage(A) : 8 re fileusage BE noteline(A)+ : notes ========================================================================== TASK AB archived(N1) started(N1) finished(N1) priority(N3) /pargrpid(N)/id(N) BD lastupdate(T)/... : 0 computer generated BD description(A) : 1 task description BD datestarted(D) : 2 date started yyyy-mm-dd BD datefinished(D) : 3 date finished yyyy-mm-dd BE comments(A)+ : progress comments BR refbyid(N)/...+ : computer generated BZ subgrpid(N)/...+ : sub-group list Ba category(A)+ : category list Bg type id(A)+ : other ids list ==================================================Atomic Records========== ==================================================Person================== PERSON AD sex(I1) birthtype(I1) deathtype(I1) burialtype(I1) birthcertind(I1) deathcertind(I1) censuscertind(I1) userreftype(I1) privacy(I1) export(I1) /imageid(N)/uniquestamp(E)/id(N) BA taskid(N)/...+ : list of task record ids BB specialid(N)+ : list of special event record ids BD lastupdate(T)/... : 0 computer generated BD otherprivacy(A) : 1 BD birthweight(A) : 2 Eg 8lb 5oz BD deathcause(A) : 3 Eg old age BD otherbirthtype(A) : 4 BD otherdeathtype(A) : 5 BD otherburialtype(A) : 6 BD otheruserref(A) : 7 BD height(A) : 8 Person Height BD weight(A) : 9 Person Weight BD hair(A) : 10 Person Hair colour BD eyes(A) : 11 Person Eye colour BD skin(A) : 12 Person Skin colour BD physicaldesc(A) : 13 General Physical Description BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BG coupleid(N)/...+ : list of Couple record ids BH forenameid(N)/...+ : list of Forename record ids BI surnameid(N)/...+ : list of Surname record ids BJ titleid(N)/...+ : list of Title record ids BK educationid(N)/...+ : list of Education record ids BL occupationid(N)/...+ : list of Occupation record ids BM addressid(N)/...+ : list of Address Assertion record ids BO eventid(N)/...+ : list of Event Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids BT parentageid(N)/...+ : list of Parentage record ids BU nationalityid(N)/...+ : list of Nationality record ids BV religionid(N)/...+ : list of Religion record ids BX idnumberid(N)/...+ : list of Id Number record ids Bg type id(A)+ : other ids list Bk noteline(A)+ : medical notes Bm terms(A)+ : medical terms used Bn evidenceid(N)/...+ : medical Evidence Assertion record ids ==================================================Couple================== COUPLE AE coupletype(I1) endreason(I1) usethis(I1) marriagecertind(I1) userreftype(I1) /imageid(N)/uniquestamp(E)/maleid(N)/femaleid(N)/id(N) BA taskid(N)/...+ : list of task record ids BB specialid(N)+ : list of special event record ids BD lastupdate(T)/... : 0 computer generated BD otherendreason(A) : 1 re endreason BD coupleother(A) : 2 re coupletype BD otheruserref(A) : 3 BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BM addressid(N)/...+ : list of Address Assertion record ids BN multbirth(N)/...+ : list of "Twins" (includes Triplets etc) BO eventid(N)/...+ : list of Event Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids BS parentageid(N)/...+ : list of Parentage record ids Bg type id(A)+ : other ids list =========================================================================== ==================================================Person-Private Records=== PARENTAGE AF maleparentagetype{I1} femaleparentagetype(I1) usethis(I1) /uniquestamp(E)/parentcoupleid(N)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD othermaleparentagetype(A): 1 BD otherfemaleparentagetype(A): 2 BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids Bg type id(A)+ : other ids list =========================================================================== FORENAME AG forenametype(I1) usethis(I1) knownas(I1) assocsex(I1) surnameref(I1) /namegroup(N)/uniquestamp(E)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD name(A) : 1 eg John BD otherforenametype(A) : 2 (unlikely to be used?) BD othersurnameref(A) : 3 eg Greatgrandmother BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids BW spelling(A)+ : alternative spellings Bg type id(A)+ : other ids list =========================================================================== SURNAME AH surnametype(I1) usethis(I1) mononame(I1) surnamestructure(I1) /namegroup(N)/uniquestamp(E)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD surname(A) : 1 eg Smith BD surnameprefixes(A) : 2 eg de BD othersurnametype(A) : 3 (unlikely to be used?) BD othersurnamestruc(A) : 4 BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids BW spelling(A)+ : alternative spellings Bg type id(A)+ : other ids list =========================================================================== TITLE AI titleposition(I1) usethis(I1) titletype(I1) /namegroup(N)/uniquestamp(E)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD abbreviation(A) : 1 eg Mr BD fullname(A) : 2 eg Mister (is this ever used?) BD othertitleposition : 3 re titleposition BD othertitletype(A) : 4 re titletype BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids BW spelling(A)+ : alternative spellings Bg type id(A)+ : other ids list =========================================================================== NATIONALITY AJ usethis(I1) category(I1) /uniquestamp(E)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD countryname(A) : 1 eg United Kingdom BD abbreviation(A) : 2 eg UK BD othercategory(A) : 3 BD ethnicity(A) : 4 BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids BW spelling(A)+ : alternative spellings Bg type id(A)+ : other ids list =========================================================================== RELIGION AK usethis(I1) category(I1) /uniquestamp(E)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD religionname(A) : 1 eg Church of England (ie or denomination) BD abbreviation(A) : 2 eg CofE BD othercategory(A) : 3 BD parishorcommunity(A) : 4 eg St John the Baptist, New Town BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids BW spelling(A)+ : alternative spellings Bg type id(A)+ : other ids list =========================================================================== EDUCATION AL usethis(I1) /uniquestamp(E)/glbaddressid(N)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD establishmentname(A) : 1 eg KEGS Newtown BD role(A) : 2 pupil (or scholar, student, graduate etc) BD eventtype(A) : 3 optional (could be gedcom code) BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids Bg type id(A)+ : other ids list =========================================================================== OCCUPATION AM usethis(I1) /uniquestamp(E)/glbaddressid(N)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD description(A) : 1 eg Solicitors BD role(A) : 2 eg Clerk BD eventtype(A) : 3 optional (could be gedcom code) BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids Bg type id(A)+ : other ids list =========================================================================== IDNUMBER AN type(I1) /uniquestamp(E)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD value(A) : 1 the id number BD othertype{A} : 2 re type BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids Bg type id(A)+ : other ids list =========================================================================== ==================================================Assertion Records======== ADDRESS ASSERTION AO usethis(I1) addresscategory(I1) type(I1) /uniquestamp(E)/globaladdressid(N)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BD lastupdate(T)/... : 0 computer generated BD shortformaddress(A) : 1 eg "'Dunromin', Guildford" BD othercategory(A) : 2 BD othertype(A) : 3 BD cause(A) : 4 cause of move (if relevant) BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids Bg type id(A)+ : other ids list =========================================================================== EVENT ASSERTION AP eventtype(I1) role(I1) /uniquestamp(E)/globaleventid(N)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BD lastupdate(T)/... : 0 computer generated BD otherrole(A) : 1 (not required in this case) BD eventtype(A) : 2 use for xxxxxx if reqd BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids Bg type id(A)+ : other ids list =========================================================================== GROUP ASSERTION AQ /uniquestamp(E)/globalgroupid(N)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BD lastupdate(T)/... : 0 computer generated BD unused(A) : 1 reserved field BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids Bg type id(A)+ : other ids list =========================================================================== EVIDENCE ASSERTION AR status(I1) weight(I1) ownconfidence(I1) gedconfidence(I1) /uniquestamp(E)/globalevidenceid(N)/refbyid(N)/id(N) BA taskid(N)/...+ : list of task record ids BD lastupdate(T)/... : 0 computer generated BD referenceinsource(A) : 1 eg Page 27, 2nd paragraph BD datechecked(D) : 2 yyyy-mm-dd BE noteline(A)+ : notes re relevance BP groupid(N)/...+ : list of Group Assertion record ids BY style(I1)/xorg(N)/yorg(N)/width(N)/height(N)/shortdesc(A)/+ Bg type id(A)+ : other ids list Bi refdaterecid(N)/...+ : Referring Date record ids =========================================================================== ==================================================Global Records=========== ADDRESS AT restype(I1) exclusive(I1) /imageid(N)/style(N)/uniquestamp(E)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD description(A) : 1 eg three bedroom bungalow BD mapOSreference(A) : 2 Ordnance Survey grid reference BD maplatitude(S) : 3 Latitude BD maplongitude(S) : 4 Longitude BD landmark(A) : 5 Nearby landmark BD otherrestype(A) : 6 re restype BD maprefaccuracy(A) : 7 eg 100m BD mapUTMreference(A) : 8 UTM grid reference BD mapotherreference(A) : 9 other grid reference BD FORMvalue(A) : 10 FORM value BD LLdatum(A) : 11 re 3/4 BD OSdatum(A) : 12 re 2 BD UTMdatum(A) : 13 re 8 BD Otherdatum(A) : 14 re 9 BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids BR refbyid(N)/...+ : computer generated Bf addressline(A)+ : eg 4 Acacia Avenue etc(as many lines as reqd) Bg type id(A)+ : other ids list =========================================================================== EVENT AU eventtype(I1) exclusive(I1) /imageid(N)/uniquestamp(E)/globaladdressid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD eventname(A) : 1 eg Marriage of ... BD officiator(A) : 2 eg Revd A.B.Cee BD timeofday(A) : 3 eg 2.00pm BD agency(A) : 4 eg CofE BD othertype(A) : 5 (not relevant in this example) BD eventcause(A) : 6 cause (if required) BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BP groupid(N)/...+ : list of Group Assertion record ids BR refbyid(N)/...+ : computer generated Bg type id(A)+ : other ids list =========================================================================== GROUP AV grouptype(I1) exclusive(I1) /uniquestamp(E)/pargrpid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD groupname(A) : 1 eg British Legion, Anytown Branch BD purpose(A) : 2 Identifies a group of members BD othergrouptype(A) : 3 re grouptype BE noteline(A)+ : notes BF evidenceid(N)/...+ : list of Evidence Assertion record ids BR refbyid(N)/...+ : computer generated BZ subgrpid(N)/...+ : sub-group list Bg type id(A)+ : other ids list =========================================================================== EVIDENCE AW evidencesource(I1) exclusive(I1) evidcategory(I1) evidimportance(I1) eviddirectness(I1) evidconfidence(I1) gedconfidence(I1) evidencebasemedium(I1) condition(I1) security(I1) /templatetype(N)/uniquestamp(E)/archiveid(N)/pargrpid(N)/id(N) BA taskid(N)/...+ : list of task record ids BD lastupdate(T)/... : 0 computer generated BD subject(A) : 1 eg Marriage certificate (original) BD suggestedby(A) : 2 eg Mrs Smith, John's mother BD locationinarchive(A) : 3 eg filed under 123/A BD otherevidencetype(A) : 4 re evidencetype BD othermedium(A) : 5 re medium BD otherevidcategory(A) : 6 re evidcategory BD othercondition(A) : 7 re condition BD othersecurity(A) : 8 re security BD sourcespecifics(A) : 9 source specifics BD daterecorded(D) : 10 yyyy-mm-dd BD webaddress(A) : 11 a www source BD webaddresssearchargs(A) : 12 www search arguments BE noteline(A)+ : notes BP groupid(N)/...+ : list of Group Assertion record ids BQ assessment(A)+ : an assessment of this item BR refbyid(N)/...+ : computer generated BZ subgrpid(N)/...+ : sub-group list Bb fileid(N)/...+ : computer file list Bd PublicationDate1(D) : 0 Bd datenarrative1(A) : 1 Bd type(I1)/DocType(A) : 2 Document Type Bd title(A) : 3 Document Title Bd author(A) : 4 Document Author Bd edition(A) : 5 Document Edition Bd publisher(A) : 6 Document Publisher Bd publisherref(A) : 7 Publishers Catalogue No. Bd publicationIdISBN(A) : 8 ISBN Bd libofcongresscat(A) : 9 Library of Congress No. Bd othercatalogueref(A) : 10 Other catalogue ref Bd copyright(A) : 11 Document Copyright Bd volume(A) : 12 Volume No. Bd issue(A) : 13 Issue No. Be data(A)+ : Template data (depends on template type) Bg type id(A)+ : other ids list =========================================================================== =========================================Evidence Private Records========== ARCHIVE AY operatortype(I1) exclusive(I1) accesstype(I1) /uniquestamp(E)/spare/pargrpid(N)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD name(A) : 1 eg Anytown Library BD description(A) : 2 eg Public Library BD owner(A) : 3 eg Anyshire CC BD contactdetails(A) : 4 eg tel 0123456789 BD otheroperatortype(A) : 5 re operatortype BD otheraccesstype(A) : 6 re accesstype BE noteline(A)+ : eg Libraries can't be relied on to keep books. BP groupid(N)/...+ : list of Group Assertion record ids BQ assessment(A)+ : assessment notes BR refbyid(N)/...+ : computer generated BZ subgrpid(N)/...+ : sub-group list Bf addressline(A)+ : address Bg type id(A)+ : other ids list =========================================================================== COMPUTER FILE AZ filetype(I1) exclusive(I1) /uniquestamp(E)/id(N) BA taskid(N)/...+ : list of task record ids BC dateid(N)/...+ : Date ids list BD lastupdate(T)/... : 0 computer generated BD shortfilename(A) : 1 filename (no path if standard) BD originalfilename(A) : 2 original filename (from a gedcom system) BD description(A) : 3 eg scan of Aunt Mabels group photo BD otherfiletype(A) : 4 other file type BD dateadded(D) : 5 yyyy-mm-dd BE noteline(A)+ : BP groupid(N)/...+ : list of Group Assertion record ids BR refbyid(N)/...+ : computer generated Bg type id(A)+ : other ids list =========================================================================== ==============================================Ancillary=================== DATE Aa category(I1) accuracy(I1) bounds(I1) status(I1) derivation(I1) calendar(I1) dualyear(I1) /uniquestamp(E)/refbyid(N)/id(N) BD lastupdate(T)/... : 0 not used BD datevalue(D) : 1 Date Value yyyy-mm-dd BD narrative(A) : 2 Date Narrative value (error or unknown fmt) Bi id(N)/...+ : list of linked Evidence Assertion record ids =========================================================================== ==============================================Housekeeping================= FILE TRAILER Az /recordcount/dummyid(N=0) ===========================================================================