GEDCOM/XREF ID: Unterschied zwischen den Versionen
K (→Vorbemerkung) |
|||
Zeile 42: | Zeile 42: | ||
===''' Vorbemerkung '''=== | ===''' Vorbemerkung '''=== | ||
Auf der Basis der Diskussion in der Gedcom-L werden im | Auf der Basis der Diskussion in der Gedcom-L werden im Nachfolgenden Entscheidungsvorschläge zu Vereinbarungen zu Zeigern und Querverweis_id ( XREF_ID ) formuliert. Dieser Entwurf steht nun zur weiteren Diskussion an, er kann erweitert und geändert werden. | ||
Der Umfang orientiert sich an den Themen, die in der Liste bislang diskutiert wurden, und wo die Diskussion im | Der Umfang orientiert sich an den Themen, die in der Liste bislang diskutiert wurden, und wo die Diskussion im Wesentlichen abgeschlossen ist. | ||
In den Entscheidungsvorschlägen 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. | In den Entscheidungsvorschlägen 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'''=== | ==='''Zeiger und Querverweis_id im Export'''=== |
Version vom 19. Januar 2010, 08:54 Uhr
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.
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@.
Entscheidungsvorschläge für Vereinbarungen zu XREF_ID
Vorbemerkung
Auf der Basis der Diskussion in der Gedcom-L werden im Nachfolgenden Entscheidungsvorschläge zu Vereinbarungen zu Zeigern und Querverweis_id ( XREF_ID ) formuliert. Dieser Entwurf steht nun zur weiteren Diskussion an, er kann erweitert und geändert werden.
Der Umfang orientiert sich an den Themen, die in der Liste bislang diskutiert wurden, und wo die Diskussion im Wesentlichen abgeschlossen ist.
In den Entscheidungsvorschlägen 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)
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" ).
Status:
Entscheidungsvorschlag formuliert