GOV/Qualitätskontrolle

aus wiki, dem genealogischen Lexikon zum Mitmachen.
Zur Navigation springen Zur Suche springen

Fehlersuche in Datenbank

Objekte ohne Namen

Vielfach werden in GOV Kindobjekte aufgelistet, die keinen Namen haben und die damit auch nicht als Objekt editierbar oder löschbar sind. Diese Objekte sollten über einen Suchmechanismus gefunden werden können und dann gelöscht werden.

SELECT o.textualId FROM GovItem o 
  LEFT JOIN Property n ON n.gov_object=o.id AND n.type=1
  WHERE o.deleted=0 AND o.itemClass='o' AND n.id IS NULL;

Objekte ohne Typ

SELECT o.textualId FROM GovItem o 
  LEFT JOIN Property t ON tt.gov_object=o.id AND t.type=2
  WHERE o.deleted=0 AND o.itemClass='o' AND tt.id IS NULL;


Kirchen ohne Standort

SELECT o.textualId FROM Property t, GovItem o
  LEFT JOIN Relation r ON r.child=t.gov_object AND r.type=2
  WHERE t.type=2 AND t.typeObject=26 
    AND o.id=t.gov_object AND r.parent IS NULL;

Kirchspiele ohne Kirche

Relevante Objekt-Typen:

  • 29 (Kirchspiel)
  • 42 (Pfarrei)
  • 81 (Kloster)
  • 92 (Kirchengemeinde)
SELECT o.textualId from Property t, GovItem o
  LEFT JOIN Relation r ON r.parent=t.gov_object AND r.type=3
  WHERE t.type=2 and t.typeObject IN (29,92,42,81) 
    AND o.id=t.gov_object and r.child IS NULL;

Religiöse Objekte ohne Konfession

Relevante Objekt-Typen:

  • 26 (Kirche)
  • 29 (Kirchspiel)
  • 42 (Pfarrei)
  • 81 (Kloster)
  • 92 (Kirchengemeinde)
 SELECT o.textualId from Property t, GovItem o
   LEFT JOIN Property k ON k.gov_object=t.gov_object AND k.type=7
   WHERE t.type=2 and t.typeObject IN (26,29,92,42,81)
     AND o.id=t.gov_object AND k.id IS NULL;

Orte und Ortsteile mit falscher PLZ

  • Länge der PLZ = 1 (z.B. nur "O" oder "W")
  • kein Jahr bis bei PLZ die mit "O" oder "W" beginnt
  • in DE: Länge PLZ = 4

Orte und Koordinaten im übergeordneten Objekt

  • Orte in einem Bundesland/Regierungsbezirk, die keine Koordinaten haben
SELECT distinct ri.ende, textualId 
  FROM GovItem i 
  JOIN Property p ON i.id=p.gov_object AND p.type=2
  JOIN Type t ON t.id=typeObject 
  JOIN p ri ON ri.anfang=i.id AND ri.ende in (1312, 1315, 1322, 1324, 1325, 1326, 1331, 1332, 1338, 1342, 1346, 1351, 1359, 1360, 1363, 1364, 1365, 1369, 1373, 191050, 211667, 213750) 
  WHERE itemClass='o' AND deleted=0 AND (latitude is null or latitude=0) AND position=1
  • Orte die identische Koordinaten in einem Bundesland/Regierungsbezirk haben

Orte ohne Koordinate

Gelöschte Objekte und solche mit einem Typ, der keine Position zuläßt, dürfen nicht mitgezählt werden.

 SELECT count(distinct textualId) FROM GovItem i 
   JOIN Property p ON  i.id=p.gov_object AND p.type=2 
   JOIN Type t ON t.id=typeObject 
   WHERE itemClass='o' deleted=0 and latitude is null or latitude=0 and position=1;

Gelöschte Objekte mit Kindern

Ein gelöschtes Objekt darf nie als Elternobjekt eingetragen sein.

 SELECT DISTINCT textualId
   FROM GovItem p, Relation r 
   WHERE p.deleted =1 AND parent =p.id;

Orte an den Rändern von Einheiten

im Norden:

SELECT c.* FROM GovItem i JOIN p ON p.ende=i.id JOIN GovItem c ON p.anfang=c.id
  WHERE i.textualId='OBJEKTKENNUNG' ORDER BY c.latitude DESC LIMIT 1;

im Süden:

SELECT c.* FROM GovItem i JOIN p ON p.ende=i.id JOIN GovItem c ON p.anfang=c.id
  WHERE i.textualId='OBJEKTKENNUNG' ORDER BY c.latitude ASC LIMIT 1;

im Westen:

SELECT c.* FROM GovItem i JOIN p ON p.ende=i.id JOIN GovItem c ON p.anfang=c.id
  WHERE i.textualId='OBJEKTKENNUNG' ORDER BY c.longitude ASC LIMIT 1;

im Osten:

SELECT c.* FROM GovItem i JOIN p ON p.ende=i.id JOIN GovItem c ON p.anfang=c.id
  WHERE i.textualId='OBJEKTKENNUNG' ORDER BY c.longitude DESC LIMIT 1;

Objekte, die einem gleichnamigen Objekt zugeordnet sind

Das müssen nicht unbedingt Fehler sein, aber an einigen Stellen kann man so Probleme finden.

SELECT p1.content, i1.textualId, tn1.value, i2.textualId, tn2.value 
  FROM GovItem i1, GovItem i2, Property p1, Property p2, 
       Property t1, Property t2, p, type_names tn1, type_names tn2 
  WHERE p.anfang=i1.id and p.ende=i2.id AND i2.id=p2.gov_object 
   AND p2.type=1 AND  i1.id= p1.gov_object AND p1.type=1 AND p1.content=p2.content 
   AND t1.gov_object=i1.id and t2.gov_object=i2.id AND t1.type=2 and t2.type=2 
   AND t1.typeObject=tn1.type_id and tn1.language='deu'
   and t2.typeObject=tn2.type_id and tn2.language='deu' 
   AND t2.typeObject NOT IN (1,5,9,25,29,32,36,42,46,53,94,99,100,103) limit 10;

Gemeinden ohne OpenGeoDB-Zuordnung

Da OpenGeoDB alle deutschen Gemeinden enthält, müßte auch jede Gemeinde im GOV eine externe Kennung opengeodb:... haben.

  SELECT textualId, o.content from GovItem, Property t
    LEFT JOIN Property o ON o.gov_object = GovItem.id AND o.type=6 AND o.content like 'opengeodb:%'
    WHERE t.type=2 and t.typeObject=18 AND o.id is null AND t.gov_object = GovItem.id;

Gemeinden ohne übergeordnetes Objekt

Für Gemeinden lassen sich einfach Zugehörigkeiten feststellen. Diese Gemeinden haben überhaupt keine Zugehörigkeit:

select textualId from GovItem, Property 
  LEFT JOIN p ON p.anfang=GovItem.id 
  WHERE GovItem.deleted =0 and GovItem.id=Property.gov_object 
  AND Property.type=2 and Property.typeObject =18 AND p.nummer is null;

vermischte Gemeinden und Dörfer

Um Ein- und Umgemeindungen korrekt modellieren zu können, ist es notwendig, eigene Gemeindeobjekt zu haben. Leider gibt es bereits viele Einträge, bei denen Gemeinde und Dorf vermischt wurden.

 SELECT textualId FROM Property p1, Property p2, GovItem
  WHERE  GovItem.id=p1.gov_object AND p1.type=2 AND p2.type=2
    AND p1.typeObject <> p2.typeObject AND p1.gov_object = p2.gov_object
    AND p1.typeObject=18;

Kennzahlen

Manche Kennzahlen geben Auskunft über die Entwicklung der Qualität der im GOV enthaltenen Daten.

Anzahl Orte mit Position

 SELECT count(*) FROM GovItem WHERE itemClass ='o' AND latitude >0;

Anzahl Orte ohne Position

 SELECT count( distinct textualId) 
  FROM GovItem i , Property p, Type t  
  WHERE (latitude =0 or latitude is null) 
   and itemClass='o' AND gov_object=i.id 
   AND propertyClass='t' and typeObject=t.id 
   and t.locatedIn=1 ;
  • Anzahl Orte ohne Elternobjekt
  • Anzahl Werte mit Quellenangaben
  • Verteilung Anzahl Elternobjekte
  • Verteilung Verschachtelungstiefe
  • Verteilung Anzahl Kindobjekte
  • Objekte mit vielen Kindobjekte