Gendatam - External Data Formats This Document published: 4th March 2005. Revised see Change History Copyright (c)2002-2011 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 field attributes used internally. -------------------------------------------------------------------------- CHANGE HISTORY VERSION 52 DATE 2011-11-14 Removed addresscategory in ADDRESSASSERTION The ability to save an image inline has been retired Added documentation for DNA profiles but not implemented yet VERSION 51 DATE 2011-09-21 Added PERSON baptism fields Added COUPLE Arbitrary Marriage End date Added DATE multipartlink id Moved Previds to User-Defined Fields VERSION 50 DATE 2011-07-15 Added NOCHILDREN flag to COUPLE record VERSION 49 DATE 2011-06-07 Added external link permission fields to HEADER and EVIDENCE Added External Record Link and Link File Records Added Image Annotation Records -------------------------------------------------------------------------- FUTURE CHANGES -------------------------------------------------------------------------- DESIGN OBJECTIVES - The file should be structured in such a way that it has maximum cross-platform compatibilty. 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 be "plain-text" but this is accepted. - Binary values to describe fields lengths or other aspects of data cannot be used. - Files may 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 none. -------------------------------------------------------------------------- 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 specified delimiter is '\'. 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, 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 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. - Template fields are stored in the order displayed by Gendatam Suite, line by line top left to bottom right. - Lists are indexed from zero not because that is necessarily a sensible way of doing it, but because that is how Java handles arrays. ------------------------------------------------------------------------- VERSION COMPATIBILITY REQUIREMENTS 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. 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 reserved 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'. ------------------------------------------------------------------------- CROSS-FILE LINKAGE Cross-file or external links are only permitted to Task, Evidence and Archive records. (Only Evidence external links have been implemented so far). ------------------------------------------------------------------------- TO DO: -------------------------------------------------------------------------- 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'). (M) - Marked-up alphanumeric text. (Minimal style Jultral markup) (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) (Q) - RFC4648 Base 64 image encoding 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). As Input, defined per record. + 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. -------------------------------------------------------------------------- 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 - Visibility not restricted. Can be standalone. Does not require an "owner", but may have many via assertion records. Assertion - 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. -------------------------------------------------------------------------- RECORD TYPES A - Main B - Continuation Record -------------------------------------------------------------------------- RECORD TYPE 'A' SUB-TYPES -------------------------------------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 - spare -------------------------------------Global ------------------------------ T - Address U - Event V - Group W - Evidence X - spare -------------------------------------Evidence Private(Global)------------- Y - Archive (physical location) Z - Evidence Image File -------------------------------------Ancillary--------------------------- a - Date b - Image Annotation c - External Link d - External Link File Details e - DNA data (reserved) z - File Trailer -------------------------------------------------------------------------- RECORD TYPE 'B' SUB-TYPES -------------------------------------------------------------------------- A - Task link B - Spare C - Date link 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 - Address Lines O - Event Assertion link P - Group Assertion link Q - Encoded Image Data 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 - User-defined fields (name and value paired entries) Z - Export Id List (import id is first element) a - Task Categories list b - Evidence Image File link c - Image File Annotation link d - Evidence Template Data Details e - spare f - spare g - spare h - spare i - DNA data (reserved) j - DNA data links in PERSON (reserved) k - Medical notes m - Medical terms n - Medical Private Evidence Ids -------------------------------------------------------------------------- ========================================================================== FILEHEADER : Must be first record in file AA fielddelimiter(A1) encoding(I1) specversion(N3) fileusage(I1) externallinkallowed(I1) \estimatedrecords(N)\counter(N)\dummyid(N=0) BD lastfilewrite(T) : 0 last written timestamp BD generator(A) : 1 Name of generating program BD generversion(A) : 2 Version of generating program BD fullfilename(A) : 3 (data not visible externally) BD filedescription(A) : 4 a short description of the file BD originator(A) : 5 effectively, a contact point re this file BD copyright(A) : 6 a copyright assertion BD otherfileusage(A) : 7 re fileusage BE noteline(M)+ : notes ========================================================================== TASK AB fielddelimiter(A1) archived(N1) started(N1) finished(N1) priority(N3) \spare\id(N) BD description(A) : 0 task description BD datestarted(D) : 1 date started yyyy-mm-dd BD datefinished(D) : 2 date finished yyyy-mm-dd BE comments(M)+ : progress comments BR refbyid(N)\...+ : computer generated BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used Ba category(A)+ : category list ==================================================Atomic Records========== ==================================================Person================== PERSON AD fielddelimiter(A1) sex(I1) birthtype(I1) deathtype(I1) burialtype(I1) birthcertind(I1) deathcertind(I1) censuscertind(I1) spare(I1) privacy(I1) living(I1) unproven(I1) baptismtype(I1) \imageid(N)\spare\id(N) BA taskid(N)\...+ : list of Task record ids BD otherprivacy(A) : 0 BD birthweight(A) : 1 Eg 8lb 5oz BD deathcause(A) : 2 Eg old age BD otherbirthtype(A) : 3 BD otherdeathtype(A) : 4 BD otherburialtype(A) : 5 BD spare : 6 BD height(A) : 7 Person Height BD weight(A) : 8 Person Weight BD hair(A) : 9 Person Hair colour BD eyes(A) : 10 Person Eye colour BD skin(A) : 11 Person Skin colour BD physicaldesc(A) : 12 General Physical Description BD arbitrarydate(D) : 13 Arbitrary Birth Date BD arbitrarydate(D) : 14 Arbitrary Death Date BD otherbaptismtype(A) : 15 BE noteline(M)+ : 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 BR refbyid(N)\...+ : computer generated 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 BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used Bj dnaid(A)+ : list of DNA record ids Bk noteline(M)+ : medical notes Bm terms(A)+ : medical terms used Bn evidenceid(N)\...+ : medical Evidence Assertion record ids ==================================================Couple================== COUPLE AE fielddelimiter(A1) coupletype(I1) endreason(I1) usethis(I1) marriagecertind(I1) spare(I1) unproven(I1) nochildren(I1) \imageid(N)\spare\maleid(N)\femaleid(N)\id(N) BA taskid(N)\...+ : list of Task record ids BD otherendreason(A) : 0 re endreason BD coupleother(A) : 1 re coupletype BD spare : 2 BD arbitrarydate(D) : 3 Arbitrary Marriage Start Date BD arbitraryenddate(D) : 4 Arbitrary Marriage End Date BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion 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 BR refbyid(N)\...+ : computer generated BS parentageid(N)\...+ : list of Parentage record ids BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== ==================================================Person-Private Records=== PARENTAGE AF fielddelimiter(A1) maleparentagetype{I1} femaleparentagetype(I1) usethis(I1) spare(I1) \spare\parentcoupleid(N)\id(N) BD othermaleparentagetype(A): 0 BD otherfemaleparentagetype(A): 1 BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BR refbyid(N)\...+ : computer generated (child or twins etc) BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== FORENAME AG fielddelimiter(A1) forenametype(I1) usethis(I1) knownas(I1) assocsex(I1) surnameref(I1) spare(I1) \namegroup(N)\spare\refbyid(N)\id(N) BC dateid(N)\...+ : list of Date record ids BD name(A) : 0 eg John BD otherforenametype(A) : 1 (unlikely to be used?) BD othersurnameref(A) : 2 eg Greatgrandmother BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BW spelling(A)+ : alternative spellings BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== SURNAME AH fielddelimiter(A1) surnametype(I1) usethis(I1) mononame(I1) surnamestructure(I1) spare(I1) \namegroup(N)\spare\refbyid(N)\id(N) BC dateid(N)\...+ : list of Date record ids BD surname(A) : 0 eg Smith BD surnameprefixes(A) : 1 eg de BD othersurnametype(A) : 2 (unlikely to be used?) BD othersurnamestruc(A) : 3 BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BW spelling(A)+ : alternative spellings BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== TITLE AI fielddelimiter(A1) titleposition(I1) usethis(I1) titletype(I1) spare(I1) \namegroup(N)\spare\refbyid(N)\id(N) BC dateid(N)\...+ : list of Date record ids BD abbreviation(A) : 0 eg Mr BD fullname(A) : 1 eg Mister (is this ever used?) BD othertitleposition : 2 re titleposition BD othertitletype(A) : 3 re titletype BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BW spelling(A)+ : alternative spellings BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== NATIONALITY AJ fielddelimiter(A1) usethis(I1) category(I1) spare(I1) \spare\refbyid(N)\id(N) BC dateid(N)\...+ : list of Date record ids BD countryname(A) : 0 eg United Kingdom BD abbreviation(A) : 1 eg UK BD othercategory(A) : 2 BD ethnicity(A) : 3 BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BW spelling(A)+ : alternative spellings BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== RELIGION AK fielddelimiter(A1) usethis(I1) category(I1) spare(I1) \spare\refbyid(N)\id(N) BC dateid(N)\...+ : list of Date record ids BD religionname(A) : 0 eg Church of England (ie or denomination) BD abbreviation(A) : 1 eg CofE BD othercategory(A) : 2 BD parishorcommunity(A) : 3 eg St John the Baptist, New Town BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BW spelling(A)+ : alternative spellings BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== EDUCATION AL fielddelimiter(A1) usethis(I1) spare(I1) \spare\glbaddressid(N)\refbyid(N)\id(N) BC dateid(N)\...+ : list of Date record ids BD establishmentname(A) : 0 eg KEGS Newtown BD role(A) : 1 pupil (or scholar, student, graduate etc) BD eventtype(A) : 2 optional (could be gedcom code) BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== OCCUPATION AM fielddelimiter(A1) usethis(I1) spare(I1) \spare\glbaddressid(N)\refbyid(N)\id(N) BC dateid(N)\...+ : list of Date record ids BD description(A) : 0 eg Solicitors BD role(A) : 1 eg Clerk BD eventtype(A) : 2 optional (could be gedcom code) BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== IDNUMBER AN fielddelimiter(A1) type(I1) spare(I1) \spare\refbyid(N)\id(N) BC dateid(N)\...+ : list of Date record ids BD value(A) : 0 the id number BD othertype{A} : 1 re type BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== ==================================================Assertion Records======== ADDRESS ASSERTION AO fielddelimiter(A1) usethis(I1) notused(I1) residencetype(I1) \spare\globaladdressid(N)\refbyid(N)\id(N) BD notused(A) : 0 not used BD notused(A) : 1 not used BD othertype(A) : 2 BD cause(A) : 3 cause of move (if relevant) BE noteline(M)+ : notes BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== EVENT ASSERTION AP fielddelimiter(A1) role(I1) \specialflags(N)\spare\globaleventid(N)\refbyid(N)\id(N) BD otherrole(A) : 0 BD specialeventname : 1 reserved for future use BE noteline(M)+ : notes BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== GROUP ASSERTION AQ fielddelimiter(A1) \spare\globalgroupid(N)\refbyid(N)\id(N) BD unused(A) : 0 reserved field BE noteline(M)+ : notes BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== EVIDENCE ASSERTION AR fielddelimiter(A1) status(I1) weight(I1) ownconfidence(I1) \spare\globalevidenceid(N)\refbyid(N)\id(N) BD referenceinsource(A) : 0 eg Page 27, 2nd paragraph BD datechecked(D) : 1 yyyy-mm-dd BE noteline(M)+ : notes re relevance BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== ==================================================Global Records=========== ADDRESS AT fielddelimiter(A1) category(I1) alttype(I1) exclusive(I1) \imageid(N)\style(N)\spare\id(N) BA taskid(N)\...+ : list of Task record ids BC dateid(N)\...+ : list of Date record ids BD description(A) : 0 eg three bedroom bungalow BD mapOSreference(A) : 1 Ordnance Survey grid reference BD maplatitude(S) : 2 Latitude BD maplongitude(S) : 3 Longitude BD landmark(A) : 4 Nearby landmark BD otherrestype(A) : 5 re restype BD unused(A) : 6 unused BD mapUTMreference(A) : 7 UTM grid reference BD mapotherreference(A) : 8 other grid reference BD FORMvalue(A) : 9 FORM value BD LLdatum(A) : 10 re 2\3 BD OSdatum(A) : 11 re 1 BD UTMdatum(A) : 12 re 7 BD Otherdatum(A) : 13 re 8 BD Altstreetname(A) : 14 BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BN addressline(A)+ : eg 4 Acacia Avenue etc(as many lines as reqd) BP groupid(N)\...+ : list of Group Assertion record ids BR refbyid(N)\...+ : computer generated BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== EVENT AU fielddelimiter(A1) eventtype(I1) exclusive(I1) \imageid(N)\spare\globaladdressid(N)\id(N) BA taskid(N)\...+ : list of Task record ids BC dateid(N)\...+ : list of Date record ids BD eventname(A) : 0 eg Marriage of ... BD officiator(A) : 1 eg Revd A.B.Cee BD timeofday(A) : 2 eg 2.00pm BD agency(A) : 3 eg CofE BD othertype(A) : 4 (not relevant in this example) BD eventcause(A) : 5 cause (if required) BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BP groupid(N)\...+ : list of Group Assertion record ids BR refbyid(N)\...+ : computer generated BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== GROUP AV fielddelimiter(A1) grouptype(I1) exclusive(I1) \imageid(N)\spare\ownerid(N)\id(N) BA taskid(N)\...+ : list of Task record ids BC dateid(N)\...+ : list of Date record ids BD groupname(A) : 0 eg British Legion, Anytown Branch BD purpose(A) : 1 Identifies a group of members BD othergrouptype(A) : 2 re grouptype BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BP groupid(N)\...+ : list of Group Assertion record ids BR refbyid(N)\...+ : computer generated BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== EVIDENCE AW fielddelimiter(A1) evidencesource(I1) exclusive(I1) evidcategory(I1) evidimportance(I1) eviddirectness(I1) evidconfidence(I1) gedconfidence(I1) evidencebasemedium(I1) condition(I1) security(I1) extlinkallowed(N1) \spare\archiveid(N)\id(N) BA taskid(N)\...+ : list of Task record ids BD subject(A) : 0 eg Marriage certificate (original) BD suggestedby(A) : 1 eg Mrs Smith, John's mother BD locationinarchive(A) : 2 eg filed under 123\A BD otherevidencetype(A) : 3 re evidencetype BD othermedium(A) : 4 re medium BD otherevidcategory(A) : 5 re evidcategory BD othercondition(A) : 6 re condition BD othersecurity(A) : 7 re security BD daterecorded(D) : 8 yyyy-mm-dd BE noteline(M)+ : notes BP groupid(N)\...+ : list of Group Assertion record ids BR refbyid(N)\...+ : computer generated BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used Bb imagefileid(N)\...+ : image file list Bd data(A)+ : Template data (depends on template type) =========================================================================== =========================================Evidence Private Records========== ARCHIVE AY fielddelimiter(A1) operatortype(I1) exclusive(I1) accesstype(I1) \imageid(N)\spare\id(N) BA taskid(N)\...+ : list of Task record ids BC dateid(N)\...+ : list of Date record ids BD name(A) : 0 eg Anytown Library BD description(A) : 1 eg Public Library BD owner(A) : 2 eg Anyshire CC BD contactdetails(A) : 3 eg tel 0123456789 BD otheroperatortype(A) : 4 re operatortype BD otheraccesstype(A) : 5 re accesstype BE noteline(M)+ : eg Libraries can't be relied on to keep books. BN addressline(A)+ : address BP groupid(N)\...+ : list of Group Assertion record ids BR refbyid(N)\...+ : computer generated BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== IMAGE FILE AZ fielddelimiter(A1) filetype(I1) exclusive(I1) order(I1) saveinlineretired(I1) \spare\id(N) BA taskid(N)\...+ : list of Task record ids BC dateid(N)\...+ : list of Date record ids BD description(A) : 0 eg scan of Aunt Mabels group photo BD originalfilename(A) : 1 original filename (from a gedcom system) BD shortfilename(A) : 2 permanent filename (no path, see 6) BD otherfiletype(A) : 3 other file type BD dateadded(D) : 4 yyyy-mm-dd BD tempfilename(A) : 5 Temporary filename BD nonstandardpath(A) : 6 Directory if non-standard BE noteline(M)+ : notes BP groupid(N)\...+ : list of Group Assertion record ids BQ imagedata(Q)+ : image encoded data (retired) BR refbyid(N)\...+ : computer generated BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used Bc annotationid(N)\...+ : image annotation list ========================================================================== ==============================Ancillary Records - Not direcly viewable==== DATE Aa fielddelimiter(A1) category(I1) accuracy(I1) bounds(I1) status(I1) derivation(I1) calendar(I1) dualyear(I1) \multipartlinkid(N)\refbyid(N)\id(N) BD datevalue(D) : 0 Date Value yyyy-mm-dd BD narrative(A) : 1 Date Narrative value (error or unknown fmt) BD othercalendar(A) : 2 BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== IMAGE ANNOTATION Ab fielddelimiter(A1) style(I1) \annotid(N)\xref(N)\yref(N)\xorg(N)\yorg(N)\xext(N)\yext(N)\ \spare\refbyid(N)\id(N) BD title(A) : displayed title BE noteline(M)+ : notes BY userdefined{A}+ : list of user-defined field name/values BZ exportid(A)+ : list of export ids used =========================================================================== EXTERNAL RECORD LINK : per link (1 in each of the two files) Ac fielddelimiter(A1) linkrectype(A1) linkdirection(N1) spare(A1) \spare(A)\linkfileid(N)\fwdid(N)\targetrecid(N)\refbyid(N)\id(N) =========================================================================== LINK FILE : per linked file (1 each file) Ad fielddelimiter(A1) \id(N) BD fullfilename(A) : Full name of other file BR refbyid(N)\...+ : computer generated =========================================================================== DNA PROFILE (reserved) Ae fielddelimiter(A1) profiletype(I1)\spare(N)\id(N) BD desc(A) : a description BE noteline(M)+ : notes BF evidenceid(N)\...+ : list of Evidence Assertion record ids BR refbyid(N)\...+ : computer generated BY userdefined{A}+ : list of user-defined field name/values Bi dnadata(A)\...+ : either name/count pairs Bi dnadata(A)\...+ : or group/exception list dep on profiletype =========================================================================== ==============================================Housekeeping================= FILE TRAILER : Must be last record in file Az fielddelimiter(A1)\recordcount\dummyid(N=0) ===========================================================================