Структура данных программы "Родственники".

Формат хранения генеалогической информации GEDCOM был предложен Церковью Иисуса Христа Святых последних дней ("Церковь мормонов") в 80-х годах и стал de facto общепризнанным стандартом. Именно по причине глобального распространения GEDCOMа структура данных в программе "Родственники" аналогична структуре данных этого формата.

Данные в программе представлены набором записей. В таблице ниже показаны типы записей и их соответствие GEDCOM-тэгам:
Тип записи GEDCOM-тэг Примечание
Заголовок HEAD Заголовок файла содержит информацию, общую для всего файла. Например, программа-создатель данного файла, автор, кодировка файла, дата его создания и т.п. У файла может быть только один заголовок.
Родственник INDI Индивидуум, персона. (Автор предпочел использовать слово "родственник", хотя не все люди в одном файле обязательно являются родственниками по отношению друг к другу, т.к. файл может содержать более чем одно генеалогическое дерево). Родственники имеют ссылки на семьи, в которых они являются супругами и детьми, таким образом, каждый родственник "знает", к каким семьям он принадлежит. В файле должна быть, по крайней мере, одна запись этого типа.
Семья FAM В семье может быть не более одного мужа и одной жены. Если кто-то имеет более одного супруга, то это будет отдельная семья. Семьи имеют ссылки на родственников, которые являются супругами и детьми в данной семье, таким образом, любая семья "знает" своих членов. Каждая семья должна иметь, по крайней мере, двух членов.
Комментарий NOTE Комментарий, заметки. Другие записи могут использовать такой комментарий как общий для всех. Такого рода записи называются "записями общего пользования".
Источник SOUR Источник информации в виде записи общего пользования. На такую запись могут ссылаться несколько других записей, если они имеют общий источник информации.
Репозиторий REPO Архив, хранилище данных, библиотека, музей, база данных и т.п., т.е. всё, что может хранить документы. На такую запись, например, могут ссылаться несколько источников, если они хранятся в одном и том же месте.
Автор SUBM Автор данных, лицо или организация, предоставившая информацию. Если данные для нескольких записей были предоставлены одним автором, то они могут сообща ссылаться на такую запись общего пользования. Автором данных для всех записей файла по умолчанию считается тот автор, который указан в заголовке файла, если в записи не указано иначе. Таким образом, в файле должен быть, по крайней мере, один автор для всего файла, плюс авторы данных других записей, если таковые существуют.
Подпись SUBN Эта запись (может быть только одна в файле) содержит инструкции и информацию, необходимые для получающей данный файл системы. Используется только в собственной системе хранения генеалогической информации Церкви мормонов.

Записи типа "встроенный медиа-объект" (GEDCOM-тэг OBJE) не поддерживаются. См. О полной поддержке GEDCOM 5.5.

Достаточно подготовленный пользователь может использовать Редактор пользовательских тэгов и создать свои собственные типы записей.

Записи содержат элементы, которые, в свою очередь, могут содержать другие элементы, и т.д. Таким образом, каждая запись представляет собою "дерево элементов", подобное структуре директорий и файлов. Каждый элемент имеет свой тэг, соответствующий GEDCOM-тэгу и значение. Типы значений элементов перечислены в следующей таблице:
Тип значения Описание
Пусто Элемент не имеет значения. Такой элемент просто содержит другие элементы.
Строка Значение элемента - одна строка текста.
Текст Значение элемента - многострочный текст неограниченной длины.
Ссылка Значение элемента - ссылка на другую запись. Например, в записи Родственник элемент "Ребенок в семье" (тэг FAMC) - это ссылка на запись Семья, в которой данный родственник является сыном или дочерью.

В формате GEDCOM одинаковые тэги могут иметь разный смысл в зависимости от контекста, т.е. от того, где в дереве элементов они расположены. Например, тэг TITL применительно к Родственнику означает "титул, звание", а в Источнике это "название, заглавие документа". В программе "Родственники" каждая запись и каждый её элемент снабжены своим шаблоном, который указывает тип, который имеет данный элемент, а также описание данного элемента, текст помощи для его создания/редактирования, минимальное и максимальное количество элементов данного типа в родительском элементе и т.п. Таким образом элементы с одинаковыми тэгами различаются в зависимости от своего положения в дереве элементов. Шаблон также хранит список всех возможных значений для тех элементов, которые могут иметь только одно значение из заранее заданного списка.

Примечание: Комментарии (тэг NOTE) и Источники (тэг SOUR) могут быть как элементами в записях, так и отдельными записями общего пользования. Благодаря тому, что они имеют разные шаблоны, программа различает их, помогая пользователю не спутать их. Например, в дереве элементов вы можете увидеть как элемент с названием "Комментарий", так и элемент с названием "Ссылка на комментарий" - это разные типы:
Комментарий - это простой текстовый комментарий, он принадлежит только данному родительскому элементу (или записи);
Ссылка на комментарий - это ссылка на запись общего пользования типа Комментарий.

Полное дерево возможных элементов для каждого типа записи можно увидеть на левой панели в диалоговом окне "Улучшенный поиск".


GEDCOM - сложный и полноценный формат, позволяющий хранить практически любую генеалогическую информацию, однако в большинстве случаев рядовому пользователю для целей "домашней родословной" не нужно всего того разнообразия данных, которые предлагает этот формат. Поэтому автор программы решил выделить некоторую информацию о родственниках и семьях, как основную, главную, и сделать доступ к ней упрощенным, а всю остальную информацию убрать на второй план, чтобы она не мешала восприятию главной. Какая же информация является основной - той, которую желательно донести до "читателя" вашего фамильного дерева в первую очередь? По мнению автора, для любого объекта (родственник, семья и т.п.) это две категории данных: а) комментарии и б) ссылки.

Комментарий - это текст произвольной длины, назначение которого очевидно - описание объекта, сообщение о нем самой разнообразной информации. Комментарий может вместить в себя любую информацию об объекте и вообще говоря, можно было бы обойтись только этим типом данных, но в реальности приходится мириться с тем, что для целей компьютерной обработки информация должна быть структурирована.

Ссылка - адрес документа, относящегося к данному объекту. Это может быть цифровая фотография, текстовый файл, документ Word, веб-страничка в Интернете, музыкальный или видео файл, другое генеалогическое дерево и т.д. - все, что можно хранить в электронном виде.

Другая первостепенная информация:

Для родственника - это имя-фамилия и даты жизни, ближайшие родственники: мать, отец, супруг/супруга, дети.

Для семьи - муж, жена, дети, дата и место бракосочетания.

Пример такого подхода: информационное окно, показывающее сведения о родственнике:

1) В положении переключателя Вид "Комментарии+Ссылки" окно показывает основные данные: имя, даты жизни, сведения о ближайших родственниках, комментарий, ссылки.
Если комментариев у данного родственника несколько, то будут показаны все они, разделенные друг от друга горизонтальной чертой.

вид Комментарии+Ссылки

2) Если переключить Вид в положение "Дерево", то можно увидеть любую информацию, которая есть о данном родственнике - в данном случае пользователь выбрал информацию о месте погребения.

вид Дерево

Аналогичным образом работает Редактор записей - кнопки в нижней части диалогового окна редактора позволяют быстро вызвать на редактирование основные элементы записи, а при необходимости редактирования других элементов используется дерево элементов.

Пример окна Редактора при редактировании родственника:
Кнопки "Имя...", "Пол...", "Рожд. и смерть..." и др. вызывают соответствующие диалоговые окна для редактирования этих элементов.

окно редактирования

О максимальной длине строкового значения:
В стандарте GEDCOM для каждой строки файла установлена предельная длина - 256 символов, из которых на значение (за вычетом номера уровня и тэга) остается максимум 248 символов. Это предел был установлен еще во времена маломощных компьютеров, и позднее это архаичное ограничение так и осталось. Программа "Родственники" не ограничивает длину одиночной строки, хотя при экспорте в GEDCOM файл, если элемент имеет тип многострочный текст, разбивает его на строки (тэги CONT и CONC) согласно формату GEDCOM.