GOV/Datenmodell: Unterschied zwischen den Versionen

aus GenWiki, dem genealogischen Lexikon zum Mitmachen.
< GOV
Zur Navigation springen Zur Suche springen
(→‎Relationale Darstellung: verwirrt, da es mit dem GOV gar nichts zu tun hat)
Zeile 44: Zeile 44:
 
* Kirchen gehören zu Kirchspielen (''nicht Kirchspiele -> Kirche'')
 
* Kirchen gehören zu Kirchspielen (''nicht Kirchspiele -> Kirche'')
  
== Relationale Darstellung ==
 
Alle Ausprägungen der Quicktext-Elemente eines Eintrags (GOV-ID) werden intern als eine XML-Zeichenkette gespeichert. Diese kann man mit einem [[GOV/Webservice|Webservice]] auslesen und in relationale Tabelle umwandeln. Der Zugriff auf die XML-Zeichenkette kann mit XPath-Funktionen einer Programmiersprache erfolgen.
 
 
=== Vereinfachte Darstellung ===
 
In der vereinfachten Darstellung sind Quellenangaben nicht enthalten.
 
Je GOV-ID (Schlüssel) kann es viele Ausprägungen geben. Sie werden je GOV-ID im zweiten Schlüsselfeld lfd_id gezählt.
 
 
Im Kommentar sind Beispiele für den Pfadzugriff und die Attribute angegeben. Details ergeben sich aus der WSDL-Definition. Beispiel für  Datumsumrechnung siehe [[GOV/Webservice/Oracle#Name_mit_Datum|Name mit Datum]].
 
 
<source lang="sql">
 
create table gov_rel (
 
govid    varchar(40),      -- GOV-ID (PK 1)
 
lfd_id    number (10),      -- laufende Satznummer je GOV-ID (PK 2)
 
-- [1] letzte Änderung ----- //out
 
last_modification date,      -- @last-modification z.B. "2007-08-11T19:37:21.000+02:00"
 
dep_govid  varchar(40),      -- @deprecated = Eintrag wurde verschmolzen mit dep_govid
 
--    position ------------ //out
 
postyp    varchar(1),        -- ns2:position/@type
 
lat      number(18,14),    -- ns2:position/@lat = Breite
 
lon      number(18,14),    -- ns2:position/@lon = Länge
 
height    number(8),        -- ns2:position/@height
 
-- [2] external-reference -- //out/ns2:external-reference
 
ext    varchar(100),        -- @value
 
-- [3] url ----------------- //out/ns2:url
 
url    varchar(100),        -- @value = URL der Webseite
 
-- [4] name ---------------- //out/ns2:name
 
name      varchar(100),      -- @value = Name (z.B. Ortsname)
 
name_l    varchar(3),        -- @lang = Sprache
 
name_z    varchar(25),      -- Datum von/bis - ist zu berechnen aus name_b* und name_e* und name_y
 
name_b    date,              -- Datum von - zu berechnen aus name_b* ...
 
name_e    date,              -- Datum bis - zu berechnen aus name_e* ...
 
-- mögliche Felder vor der Berechnung könnten sein:
 
--name_by  varchar(4),      -- begin year @begin-year
 
--name_ey  varchar(4),      -- end year  @end-year
 
--name_y    varchar(4),      -- year      @year
 
--name_bc  varchar(8),      -- begin      ns2:timespan/ns2:begin/@jd
 
--name_bp  varchar(1),      -- precision  ns2:timespan/ns2:begin/@precision
 
--name_ec  varchar(8),      -- end        ns2:timespan/ns2:end/@jd
 
--name_ep  varchar(1),    -- precision  ns2:timespan/ns2:end/@precision
 
-- [5] type ---------------- //out/ns2:type
 
type    number (5),          -- @value GOV-Objekttyp
 
type_z  varchar(25),
 
type_b  date,
 
type_e  date,
 
type_c  varchar(100),        -- Typ-Beschreibung aus Beschreibungstabelle (s.u.)
 
-- [6] population ---------- //out/ns2:population
 
einw    number (15),        -- @value = Einwohnerzahl
 
einw_z  varchar(25),
 
einw_b  date,
 
einw_e  date,
 
-- [7] postal-code --------- //out/ns2:postal-code
 
plz    varchar(20),        -- @value = Postleitzahl
 
plz_z  varchar(25),
 
plz_b  date,
 
plz_e  date,
 
-- [8] w-number ------------ //out/ns2:w-number
 
wnr    varchar(10),        -- @value = W-Nummer
 
-- [9] denomination -------- //out/ns2:denomination
 
konf    varchar(6),          -- @value = Konfession (z.B. ev, rk, lu)
 
konf_z  varchar(25),
 
konf_b  date,
 
konf_e  date,
 
-- [10] municipal-id ------- //out/ns2:municipal-id
 
gkz    varchar(10),        -- @value = Gemeindekennziffer (=AGS)
 
gkz_z  varchar(25),
 
gkz_b  date,
 
gkz_e  date,
 
-- [11] area --------------- //out/ns2:area
 
area    number (18,5),      -- @value = Fläche (ersetzen . -> ,)
 
area_z  varchar(25),
 
area_b  date,
 
area_e  date,
 
-- [12] households --------- //out/ns2:households
 
hh      number(8),          -- @value = Haushalte
 
hh_z    varchar(25),
 
hh_b    date,
 
hh_e    date,
 
-- [13] part-of ------------ //out/ns2:part-of
 
part    varchar(40),        -- @value = gehört zu GOV-ID
 
part_z  varchar(25),
 
part_b  date,
 
part_e  date,
 
-- [14] located-in --------- //out/ns2:located-in
 
loc_govid varchar (40),      -- @value = (z.B. Kirche) steht in GOV-ID
 
-- [15] represents --------- //out/ns2:represents
 
repre  varchar(40),        -- @value = (z.B. Pfarrei) repräsentiert GOV-ID
 
repre_z varchar(25),
 
repre_b date,
 
repre_e date,
 
-- [16] note --------------- //out/ns2:note
 
txt    varchar(1000)      -- '.' = TEXT: ... :TEXT = Anmerkungen
 
);
 
</source>
 
 
<source lang="sql">
 
create unique index pk_gov_rel on gov_rel (govid, lfd_id);
 
</source>
 
 
<source lang="sql">
 
alter table gov_rel add primary key (govid, lfd_id) using index pk_gov_rel;
 
</source>
 
 
Die Beschreibung der Objekttypen kann man per Webservice mit der WSDL-Operation getTypeDescription abholen und in einer Tabelle ablegen.
 
 
<source lang="sql">
 
-- Objekttypen-Tabelle
 
CREATE TABLE gov_type (
 
type_id number(3),
 
type_c  varchar(100)
 
lang    varchar(3),
 
);
 
</source>
 
 
Beispiel für die zwei Einträge AARRSTJO72WT und object_262995.
 
 
<table border="1">
 
<tr>             
 
<tr><th>GOVID        </th><th>LFD_ID</th><th>LAST_MODIFICATION  </th><th>ID          </th><th>POSTYP</th><th>      LAT</th><th>      LON</th><th>NAME      </th><th>NAME_Z      </th><th>NAME_B    </th><th>TYPE</th><th>TYPE_Z      </th><th>TYPE_B    </th><th>TYPE_E    </th><th>TYPE_C      </th><th>EINW</th><th>EINW_Z                </th><th>EINW_B    </th><th>EINW_E    </th><th>PLZ  </th><th>PLZ_Z</th><th>PLZ_B    </th><th>WNR  </th><th>GKZ      </th><tr>
 
<tr><td>AARRSTJO72WT </td><td>    1</td><td>05.12.2014 21:59:38</td><td>AARRSTJO72WT </td><td>p    </td><td>  52,8219</td><td>    15,891</td><td>Tuczępy  </td><td>1945 -      </td><td>01.01.1945</td><td>  85</td><td> - 1935-03-31</td><td>          </td><td>31.03.1935</td><td>Landgemeinde </td><td> 316</td><td>1885                  </td><td>01.01.1885</td><td>31.12.1885</td><td>    </td><td>    </td><td>          </td><td>52335</td><td>        </td><tr>
 
<tr><td>AARRSTJO72WT </td><td>    2</td><td>05.12.2014 21:59:38</td><td>            </td><td>      </td><td>          </td><td>          </td><td>Aarhorst  </td><td>            </td><td>          </td><td>  18</td><td>1935-04-01 - </td><td>01.04.1935</td><td>          </td><td>Gemeinde    </td><td> 209</td><td>1939                  </td><td>01.01.1939</td><td>31.12.1939</td><td>    </td><td>    </td><td>          </td><td>    </td><td>        </td><tr>
 
<tr><td>AARRSTJO72WT </td><td>    3</td><td>05.12.2014 21:59:38</td><td>            </td><td>      </td><td>          </td><td>          </td><td>          </td><td>            </td><td>          </td><td>    </td><td>            </td><td>          </td><td>          </td><td>            </td><td> 248</td><td>1910-12-01 - 1910-12-01</td><td>01.12.1910</td><td>01.12.1910</td><td>    </td><td>    </td><td>          </td><td>    </td><td>        </td><tr>
 
<tr><td>AARRSTJO72WT </td><td>    4</td><td>05.12.2014 21:59:38</td><td>            </td><td>      </td><td>          </td><td>          </td><td>          </td><td>            </td><td>          </td><td>    </td><td>            </td><td>          </td><td>          </td><td>            </td><td> 313</td><td>1895-12-02 - 1895-12-02</td><td>02.12.1895</td><td>02.12.1895</td><td>    </td><td>    </td><td>          </td><td>    </td><td>        </td><tr>
 
<tr><td>AARRSTJO72WT </td><td>    5</td><td>05.12.2014 21:59:38</td><td>            </td><td>      </td><td>          </td><td>          </td><td>          </td><td>            </td><td>          </td><td>    </td><td>            </td><td>          </td><td>          </td><td>            </td><td> 215</td><td>1933                  </td><td>01.01.1933</td><td>31.12.1933</td><td>    </td><td>    </td><td>          </td><td>    </td><td>        </td><tr>
 
<tr><td>AARRSTJO72WT </td><td>    6</td><td>05.12.2014 21:59:38</td><td>            </td><td>      </td><td>          </td><td>          </td><td>          </td><td>            </td><td>          </td><td>    </td><td>            </td><td>          </td><td>          </td><td>            </td><td> 240</td><td>1925                  </td><td>01.01.1925</td><td>31.12.1925</td><td>    </td><td>    </td><td>          </td><td>    </td><td>        </td><tr>
 
<tr><td>object_262995</td><td>    1</td><td>24.11.2014 21:33:28</td><td>object_262995</td><td>c    </td><td>52,7854486</td><td>13,9423364</td><td>Falkenberg</td><td>2001-12-31 -</td><td>31.12.2001</td><td>  18</td><td>2001-12-31 - </td><td>31.12.2001</td><td>          </td><td>Gemeinde    </td><td>2518</td><td>2001                  </td><td>01.01.2001</td><td>31.12.2001</td><td>16259</td><td>2002 </td><td>01.01.2002</td><td>    </td><td>12064125 </td><tr>
 
<tr><td>object_262995</td><td>    2</td><td>24.11.2014 21:33:28</td><td>            </td><td>      </td><td>          </td><td>          </td><td>          </td><td>            </td><td>          </td><td>    </td><td>            </td><td>          </td><td>          </td><td>            </td><td>2479</td><td>2005                  </td><td>01.01.2005</td><td>31.12.2005</td><td>    </td><td>    </td><td>          </td><td>    </td><td>        </td><tr>
 
<tr><td>object_262995</td><td>    3</td><td>24.11.2014 21:33:28</td><td>            </td><td>      </td><td>          </td><td>          </td><td>          </td><td>            </td><td>          </td><td>    </td><td>            </td><td>          </td><td>          </td><td>            </td><td>2481</td><td>2004                  </td><td>01.01.2004</td><td>31.12.2004</td><td>    </td><td>    </td><td>          </td><td>    </td><td>        </td><tr>
 
<tr><td>object_262995</td><td>    4</td><td>24.11.2014 21:33:28</td><td>            </td><td>      </td><td>          </td><td>          </td><td>          </td><td>            </td><td>          </td><td>    </td><td>            </td><td>          </td><td>          </td><td>            </td><td>2447</td><td>2006                  </td><td>01.01.2006</td><td>31.12.2006</td><td>    </td><td>    </td><td>          </td><td>    </td><td>        </td><tr>
 
<tr><td>object_262995</td><td>    5</td><td>24.11.2014 21:33:28</td><td>            </td><td>      </td><td>          </td><td>          </td><td>          </td><td>            </td><td>          </td><td>    </td><td>            </td><td>          </td><td>          </td><td>            </td><td>2486</td><td>2003                  </td><td>01.01.2003</td><td>31.12.2003</td><td>    </td><td>    </td><td>          </td><td>    </td><td>        </td><tr>
 
<tr><td>object_262995</td><td>    6</td><td>24.11.2014 21:33:28</td><td>            </td><td>      </td><td>          </td><td>          </td><td>          </td><td>            </td><td>          </td><td>    </td><td>            </td><td>          </td><td>          </td><td>            </td><td>2510</td><td>2002                  </td><td>01.01.2002</td><td>31.12.2002</td><td>    </td><td>    </td><td>          </td><td>    </td><td>        </td><tr>       
 
</table>
 
 
=== Exakte Darstellung ===
 
Die exakte Darstellung müsste den verschachtelten Typ-Deklarationen in der WSDL-Datei der Webservices entsprechen. Man könnte erzeugen:
 
* eine führende Tabelle mit den eindeutigen GOV-ID Eigenschaften,
 
* eine oder mehrere Tabellen für die mehrfach auftretenden Quicktext-Eigenschaften (oder je Eigenschaft eine eigene Tabelle),
 
* eine Tabelle für die Quellen-Referenzen (Verwendung der Quellen mit Notizen, z.B. Seitenzahlen) und
 
* eine Tabelle für die GOV-IDs, die Quellen sind.
 
 
Hier ein grober Entwurf für eine mögliche Tabellenstruktur.
 
 
<source lang="sql">
 
-- GOV-ID-Tabelle
 
create table govid (
 
govid    varchar(40),      -- GOV-ID (PK)
 
last_modification date,    -- @last-modification z.B. "2007-08-11T19:37:21.000+02:00"
 
dep_govid  varchar(40),    -- @deprecated = Eintrag wurde verschmolzen mit dep_govid
 
postyp    varchar(1),      -- ns2:position/@type
 
lat      number(18,14),  -- ns2:position/@lat = Breite
 
lon      number(18,14),  -- ns2:position/@lon = Länge
 
height    number(8)        -- ns2:position/@height
 
);
 
CREATE UNIQUE INDEX pk_govid ON gov_rel (govid, lfd_id);
 
ALTER TABLE govid ADD PRIMARY KEY (govid) USING INDEX pk_govid;
 
</source>
 
 
 
<source lang="sql">
 
-- Eigenschaften (Property)-Tabelle
 
create table property(
 
property_id number(10),  -- laufende Nummer (PK)
 
govid      varchar(40),  -- GOV-ID (Indexspalte 1)
 
property  varchar(10),  -- Property (Eigenschaft): 'name', 'type', 'population', 'postal-code'... (Indexspalte 1)
 
lang      varchar (3),  -- language  @lang
 
value      varchar200),  -- Wert      @value
 
begin_year number (4),  -- begin year @begin-year
 
end_year  number (4),  -- end year  @end-year
 
year      number (4),  -- year      @year
 
begin      date,        -- begin      ns2:<property>/ns2:begin/@jd
 
begin_p    varchar2 (1), -- precision  ns2:<property>/ns2:begin/@precision
 
end        date,        -- end        ns2:<property>/ns2:end/@jd
 
end_p      varchar2 (1)  -- precision  ns2:<property>/ns2:end/@precision
 
begin_d    date,        -- Datum von (für Abfragen) - zu berechnen aus b* ...
 
end_d      date,        -- Datum bis (für Abfragen) - zu berechnen aus e* ...
 
source_ref_id  number (10)  -- Verweis auf Quellen-Referenz
 
);
 
CREATE UNIQUE INDEX pk_property ON property (property_id, govid);
 
ALTER TABLE property ADD PRIMARY KEY (property_id, govid) USING INDEX  pk_property;
 
-- Index zur Suche
 
CREATE INDEX fk1_property ON property (govid, property);
 
-- Sequenz für Primärschlüssel
 
create sequence seq_property
 
  start with 1
 
  increment by 1
 
  order;
 
</source>
 
 
 
<source lang="sql">
 
-- Quellen-Referenz mit Zähler, govid zu source_id und Anmerkungen
 
create table source_ref(
 
source_ref_id number(10),  -- laufende Nummer (PK)
 
note  varchar(1000),  -- Text
 
source_govid          -- GOV-ID der Source
 
);
 
-- Sequenz für Primärschlüssel
 
create sequence seq_source_ref
 
  start with 1
 
  increment by 1
 
  order;
 
</source>
 
 
 
<source lang="sql">
 
-- Quellen (Sourcen)
 
create table source(
 
source_govid    -- GOV-ID der Source (PK)
 
);
 
--------------------------------------
 
-- Eigenschaften einer Quelle (Source)
 
--------------------------------------
 
-- external-reference
 
-- url
 
-- located-in
 
-- note
 
--- nur Quellen-Eigenschaften
 
-- title
 
-- author
 
-- subtitle
 
-- isbn
 
-- batchnumber
 
-- describes
 
</source>
 
  
 
[[Kategorie:GOV-Intern]]
 
[[Kategorie:GOV-Intern]]

Version vom 16. März 2021, 09:32 Uhr

GOV-Hauptseite > GOV/Projekt > GOV Datenmodell

Projekt GOV
hier: GOV/Datenmodell

GOV-Datenbankabfrage:

Infoseiten zum Projekt:

Datenerfassung:

Kontakt:

Kategorien:


Das zentrale Element mit Modell ist das GOV-Objekt. Ein GOV-Objekt hat

  • Eigenschaften
  • Beziehungen zu anderen GOV-Objekten

Eigenschaften

Ein GOV-Objekt hat eine Menge von Eigenschaften, z.B. Namen

 Objekt O1 hat (zu einer gewissen Zeit) die Eigenschaft E1 (Quellenangabe),

Liste von Eigenschaften

Beziehungen

Beziehungen zwischen zwei GOV-Objekten haben die Form

 Objekt O1 steht (zu einer gewissen Zeit) in Beziehung zu Objekt O2 (Quellenangabe),

Liste von Beziehungen

Zeitangabe

Sowohl Eigenschaften als auch Beziehungen können mit Zeitangaben versehen werden. Es können angegeben werden

  • Zeitpunkte
 Objekt01 steht JJJJ-MM-TT in Beziehung zu Objekt02 (sagt Quelle),
  • Zeiträume
 Objekt01 steht ab JJJJ-MM-TT bis JJJJ-MM-TT in Beziehung zu Objekt02 (sagt Quelle),

Zeiträume können auch teilweise (nur ab oder nur bis) angegeben werden. Weitere Informationen zu Zeitangaben im GOV stehen hier.

Quellenangaben

Sowohl Eigenschaften als auch Beziehungen können mit Quellenangaben versehen werden. Die Quelle, zB. ein Buch, wird im GOV als eigenes Objekt hinterlegt.

Nähere Angaben - zB. bei Büchern Seitenangaben oder bei Periodika Jahrgang, Nr. der Ausgabe und Seite - werden in Klammern gesetzt.

 ... sagt Quelle (Nähere Angaben),

Bei mehreren Quellenangaben - zB bei Zeiträumen - werden die Quellenangaben hintereinander gesetzt.

 ... sagt Quelle (Nähere Angaben) sagt Quelle (Nähere Angaben),

Das ganze als Graph

Man kann sich die Daten auch als gerichteten, zyklenfreien Graph vorstellen, in dem die GOV-Objekte Knoten und die Beziehungen Kanten zwischen diesen Knoten sind. Eine Kante kann mit einer Zeitangabe und Quellenangaben versehen werden.

Wichtig: Der Graph darf keine Zyklen haben, da sonst die Suche nach den Kind-Elementen nicht aufhört.

  • Kirchen stehen in Orten
  • Orte gehören zu Kirchspielen
  • Kirchen gehören zu Kirchspielen (nicht Kirchspiele -> Kirche)