GEDCOM/XREF ID
Name und Bedeutung
Querverweis
Dieser Artikel beschreibt das Thema der Querverweise (englisch: XREF_ID) und Zeiger (englisch: pointer) in GEDCOM Dateien. Basis ist der GEDCOM Standard Draft 5.5.1 in der deutschen Übersetzung von Jörn Daub.
Formelle Bezeichnung
XREF_ID
Deutsche Bezeichnung
Querverweis_id
Verwendung
Zeiger (englisch: pointer) und Querverweis_id (englisch: XREF_ID) erlauben aus einem Datensatz heraus Querverweise auf einen anderen, durch die Querverweis_id eindeutig definierten Datensatz herzustellen.
Formale Beschreibung zulässiger Werte
Aussagen des GEDCOM Standards 5.5.1
Querverweis_id := (siehe auch Zeiger) Die Querverweis-ID besteht aus einer beliebigen Kombination von Zeiger_zeichen. Das erste Zeichen muss ein Alpha oder Ziffer sein. Die Querverweis_id wird im empfangenden System nicht gespeichert und darf daher auf eine Art geformt werden, die für das sendende System praktisch ist. Der Empfänger wird der Querverweis_id keinerlei Bedeutung zumessen, außer diese dem damit verbundenen Datensatz eindeutig zuzuordnen. Die Benutzung eines Doppelpunktes (:) ist für die Zukunft reserviert[, um Querverweise in Netzwerken zu erstellen, die Nutzung von Ausrufezeichen (!) ist reserviert für Zeiger innerhalb eines Datensatzes. Die Querverweis-IDs müssen innerhalb einer Datei eindeutig sein]. [...]: ergänzt aus XREF:=...
Zeiger := (englisch: pointer) Ein Zeiger steht als Platzhalter für einen Datensatz oder Kontext, der durch die passende Querverweis_id identifiziert wird. Theoretisch sollte ein empfangendes System darauf vorbereitet sein, einem Zeiger zu beliebigen Werten so zu folgen, dass dies transparent für das Subsystem ist, das nach spezifischen Kennzeichen sucht. Diese hochgradig flexible Einrichtung wird wahrscheinlich in Zukunft mehr genutzt werden. Für den jetzigen Zeitpunkt wird jedoch die Nutzung von Zeigern explizit in der GEDCOM-Form in Kapitel 2 beschrieben. Der Zeiger repräsentiert eine Assoziation zwischen zwei Objekten, die normalerweise in unterschiedlichen Datensätzen gespeichert sind. Objekte innerhalb eines logischen Datensatzes können assoziiert werden. Wenn dies benötigt wird, enthält der Zeiger ein Ausrufezeichen (!), welches den Verweis auf den Datensatz vom Verweis auf dessen untergeordnetes Element trennt. Die Querverweis_id auf eine Unterstruktur eines Datensatzes der Ebene 0 wird immer durch die Datensatz-ID und die Unterstruktur-ID gebildet, wie z. B. @I132!1@. Die Einbeziehung der Datensatz-ID in diesem Zeiger erlaubt es, ausschließlich einen Index der Datensätze zu führen, und diese sequenziell nach der Unterstruktur abzusuchen. Wenn der Zeiger mit einem Ausrufezeichen (!) beginnt, wird angenommen, dass er auf eine Unterstruktur des aktuellen Datensatzes verweist.
Beispiel aus dem Standard
Beispiele: Die folgenden Zeilen sind voneinander unabhängige Beispiele gültiger GEDCOM-Zeilen.
0 @1234@ INDI
…
1 AGE 13y
…
1 CHIL @1234@
…
1 NOTE Dies ist ein Notizfeld, das
2 CONT auf der nächsten Zeile fortgesetzt wird
Die erste Zeile hat die Ebene 0, die Querverweis_id @1234@, ein INDI-Kennzeichen und keinen Zeilen_wert.
Die zweite Zeile hat die Ebene 1, keine Querverweis_id, ein AGE-Kennzeichen und einen Zeilen_wert von 13y.
Die dritte Zeile hat die Ebene 1, keine Querverweis_id, ein CHIL-Kennzeichen, und einen Zeilen_wert, bestehend aus einem Zeiger auf die Querverweis_id @1234@.
Vereinbarungen zu XREF_ID
Vorbemerkung
Auf der Basis der Diskussion in der Gedcom-L wurden die folgenden Vereinbarungen entwickelt und durch Abstimmung (stimmberechtigt: alle an der Gedcom-L beteiligten Progarmmautoren) verabschiedet.
In den Vereinbarungen nicht abgebildet ist eine Verwendung von Querverweis-id durch den Anwender ( zur Identifikation z.B. von Personen- oder Familiendatensätzen ). Diese Nutzung widerspricht dem im Standard beschriebenen Sinn von Zeigern und Querverweis-id; dieses Thema wird daher mit den Kennworten REFN und ggfs RIN noch diskutiert werden.
Zeiger und Querverweis_id im Export
E1 Form von Zeigern und Querverweis_id
Zeigern (pointer) und Querverweis_id (XREF_ID) müssen in der folgenden Form gebildet werden:
zeiger := [(0x40) + alphanum + zeiger_zeichenkette + (0x40) ]
wobei:
(0x40)=@
alphanum := [a bis z|A bis Z|_ (Unterstrich)|0 bis 9]
In zeiger_zeichenkette ist das Zeichen @ nicht zulässig, und die Zeichen : sowie ! dürfen nur gemäss ihrer Sonderbedeutungen eingesetzt werden.
E2 Eindeutigkeit der Querverweis_id
Die Querverweis-id muss innerhalb der gesamten GEDCOM-Datei eindeutig sein, d.h. eine nach E1 gebildete Querverweis_id ist genau einem Datensatz zugeordnet. Für jeden in der GEDCOM-Datei vorkommenden Zeiger muss die zugehörige Querverweis_id in der GEDCOM-Datei vorhanden sein.
E3 Bezeichnungen für Querverweis_id
Die Bezeichnungen für Querverweis_id und die zugehörigen Zeiger können beim Export frei gewählt werden, solange die Bestimmungen aus E1 und E2 eingehalten werden. Es gibt weder eine zwingende Vorschrift, importierte Bezeichnungen beizubehalten noch eine zwingende Vorschrift, Querverweis_id beim Export umzubenennen und in eine einheitliche, z.B. durchnummerierte Form zu bringen.
E4 Empfehlung für Bezeichnungen für Querverweis_id
Für die Bezeichnung von Querverweis_id wird folgendes empfohlen: Die Bezeichnung setzt sich aus @Xnnnn@ zusammen, dabei ist X ein den Typ des Datensatzes kennzeichnender Buchstabe und nnnn eine positive Zahl, die die Eindeutigkeit sicherstellt. Im einzelnen wird empfohlen:
- @Innnn@ für Personendatensätze (Individual)
- @Fnnnn@ für Familiendatensätze (Family)
- @Nnnnn@ für Notizdatensätze (Note)
- @Onnnn@ für Objekte (Multimedia)
- @Snnnn@ für Quellendatensätze (Source)
- @Rnnnn@ für Archivdatensätze (Repository)
Diese Empfehlung soll die bessere Lesbarkeit der GEDCOM-Datei für Anwender ermöglichen.
Wegen der nach Standard frei möglichen Namensgebung kann hieraus jedoch nicht gefolgert werden, dass eine Querverweis-id, die z.B. mit @I beginnt, auch wirklich einen Personendatensatz identifiziert. Der Typ des Datensatzes wird immer in der einleitenden Zeile des Datensatzes durch das Kennwort ( INDI, FAM, ... ) festgelegt und nicht durch den Namen der Querverweis_id.
Zeiger und Querverweis_id beim Import
I1 Unterstützung aller zulässigen Querverweis_id
Beim Import müssen alle nach E1 und E2 gebildeten Querverweis_id und Zeiger unterstützt werden.
I2 Umgang mit den Querverweis_id beim Import
Es ist freigestellt, die beim Import angebotenen Bezeichnungen für Querverweis_id und zugehörige Zeiger zu übernehmen oder stattdessen Programm-intern die Datensätze auf andere Weise eindeutig zu identifizieren. Es gibt keine Verpflichtung, die beim Import vorgefundenen Bezeichnungen weiterzuverwenden oder in irgendeiner Form abzuspeichern.
Behandlung/Darstellung schwieriger Situationen
Verwendung der querverweis_id als Personen- oder Familien-Identnummer
In vielen Fällen verwenden Anwender (in verschiedenen Formen durch Programme unterstützt) die querverweis_id von Personen (meist als @Innn@ geschrieben) und Familien (meist als @Fnnn@ geschrieben) als Ident-Nummer der Person oder der Familie. Diese Art der Verwendung widerspricht der expliziten Aussage des Standards, dass querverweis_id im empfangenden System nicht gespeichert werden. Damit ist der Erhalt dieser "Information" bei einem Datentransfer nicht gesichert, und diese Verwendung nicht zu empfehlen.
Insbesondere widerspricht eine Forderung, eine querverweis_id für Personendatensätze oder Familiendatensätze im importierenden Programm nicht zu verändern, der expliziten Aussage des Standards. Jedes exportierende Programm muss nach Standard damit rechnen, dass ein importierendes Programm die querverweis_id neu vergibt.
Die vom Anwender vorgesehene Indentifizierung der Personen / Familien kann Standard-konform mit REFN (ggfs mit unterstelltem TYPE) dargestellt werden. Problem hierbei ist die nicht flächendeckende Unterstützung in den Programmen, so dass wegen dieses Unterschiedes im Funktionsumfang die entsprechende Information nicht immer im Zielprogramm ankommt.
Status:
in Diskussion
Namensgebung für querverweis_id und zeiger
Der Standard sagt zur Namensgebung von Zeigern (pointer) und Querverweis_id (XREF_ID) folgendes aus:
zeiger := [(0x40) + alphanum + zeiger_zeichenkette + (0x40) ]
wobei:
(0x40)=@
alphanum := [a bis z|A bis Z|_ (Unterstrich)|0 bis 9]
In zeiger_zeichenkette ist das Zeichen @ nicht zulässig, und die Zeichen : sowie ! haben Sonderbedeutungen.
Eine Kennzeichnung des Typs des Datensatzes, auf den der Zeiger zeigt, ist bei der Namensgebung nicht vorgeschrieben. Der Typ des Datensatzes ergibt sich eindeutig aus dem Kontext des Zeigers bzw der querverweis_id.
Daher sind die Verwendung von
- @Innn@ für Personen
- @Fnnn@ für Familien
- @Snnn@ für Quellen
- @Nnnn@ für Notizen
sowie weitere ähnliche Namensgebungen zwar weit verbreitet und auch Standard-konform, aber durch den Standard nicht in dieser Form vorgeschrieben. Ein Import muss daher unabhängig von diesen weit verbreiteten Namensgebungen funktionieren. Beim Export darf diese Namensgebung verwendet werden, muss es aber nicht ( "darf daher auf eine Art geformt werden, die für das sendende System praktisch ist" ).
Die Programmautoren haben vereinbart, entsprechende Benennungen zu empfehlen, aber wie im Standard nicht vorzuschreiben.
Zur vereinbarten Empfehlung E4 ( Empfehlung für Bezeichnungen für Querverweis_id ) ist noch klärend hinzuzufügen, dass mit der Darstellung @Innnn@ usw. nicht gemeint ist, dass die positive Zahl vierstellig dargestellt werden muss. Dieser Punkt soll im Rahmen eines abschliessenden Gesamtreviews des Projektes noch in die Formulierung von E4 übertragen werden.
Status:
Vereinbarung getroffen
Erst im Laufe der Abstimmung fiel auf, dass bei den vorgeschlagenen Vereinbarungen die beiden Querverweis_id für
- SUBMISSION_RECORD und
- SUBMITTER_RECORD
nicht mit Empfehlungen zur Namensbildung belegt waren. Dieser Teil ist noch in Diskussion und wird später entschieden / nachgetragen.
Status:
in Diskussion
Abweichungen vom Standard bei der Verwendung
Manche Programme erzeugen Querverweis_ID, die nur innerhalb einer Datensatzart (z.B. INDI ) eindeutig sind, jedoch nicht innerhalb der gesamten GEDCOM-Datei. D.h. dieselbe Bezeichnung wird z.B. für Querverweise auf INDI und auf FAM oder SOUR angelegt. Dies ist nach Standard nicht zulässig und birgt die Gefahr von Fehlern beim Import in andere Programme.
Status:
Mit E2 haben die Programmautoren vereinbart, die Eindeutigkeit der Querverweis_id zukünftig innerhalb der gesamten GEDCOM-Datei sicherzustellen.