Wikimaps/GeonamenDB

Abstract: This is a collection of a Swiss student project on creating a database of geographical names and positions using Wikipedia (.de) article data


Projekt GeoWikiDB I edit

Erstellung einer freien geographischen Namensdatenbank (GeoNDB)


Ziel und Idee edit

Das Ziel des Projekts 'GeoWikiDB I' ist der Aufbau einer Geographischen Namensdatenbank (GeoNDB), auf der Grundlage von Wikipedia.de.

Die Grundidee des Projekts besteht darin, dass Wikipedia.de als Quelle für geographische Daten betrachtet wird. Mit Hilfe eines simplen Internet-Browsers kann jedermann, jederzeit Artikel editieren oder ergänzen.

Aus klar bestimmbaren Artikel sollen ausgewählte Daten extrahiert werden, wie z.B. Koordinaten, Einwohnerzahl und der Wikipedia-Artikelname selber. Dabei handelt es sich um Artikel, die einen eindeutigen Bezug zu geographischen Namen haben. Es sind dies namentlich Geographie (Deutschland), (Österreich) sowie (Schweiz). Der Einbezug von Sehenswürdigkeiten (sog. Points of Interest, POI) ist im Gespräch. Gerade mit Koordinaten versehene POIs wären in Kombination mit GPS und mobilen Applikationen besonders interessant.

Damit die GeoNDB aktuell und zuverlässig ist, sind in jedem Falle klare und konsistente Angaben in den Artikel nötig. Es ist anzunehmen, dass die Wikipedias diese Anforderung nicht überall erfüllen können. Darum soll aufgezeigt werden, wo dies bei Wikipedia.de nicht der Fall ist. Zudem sollen Lösungsvorschläge vorgeschlagen werden. (Hier die Aufgabenstellung zum Projekt 'GeoWikiDB' auf den Seiten des CC integis HSR).

Typische Funktionen und Anwendungen edit

Die GeoNDB dient als Grundlage für verschiedene Anwendungen mit Raumbezug, welche typischerweise folgende Funktionen benötigen:

  • Zuordnung von geographischen Namen zur Lage im Raum (z.B. mit Export gem. versch. GPS-Formaten)
  • Zuordnung von Koordinaten (GPS) und geographischen Namen zu Wikipedia.de-Artikel
  • Umkreissuche (GPS)
  • Distanzberechnung
  • Routenplanung
  • Eingrenzung, bzw. Erweiterung von Suchanfragen auf Orte und Gebiete (engl. local search).
  • ... und natürlich zur Erstellung von Karten!

Eine erste konkrete Anwendung der GeoNDB ist geometa.info - die Suchmaschine für Geodienste, Geodaten und Geospatial News. Anschliessend an das Projekt GeoWikiDB I wird voraussichtlich das Projekt GeoWikiDB II in Angriff genommen (siehe unten).

Weitere Anwendungsbeispiele sind u. a.:

  • Verortung von Wikipedia-Artikel (vgl. das GALILEO_Masters_2004-Proposal)
  • Erkennung von raumbezogenen Begriffen in Suchanfragen im Hinblick auf Geodienste im Web (z.B. geometa.info oder Google-Suche 'München' )
  • Extraktion von Adressen aus Webdokumenten (z.B. für ein Branchenverzeichnis / Gelbe Seiten).
  • Verortete Weblogs (Blogmaps)
  • Genealogische Recherchen
  • Aufgrund des wirtschaftlichen Interesses werden wohl auch touristische Anwendungen und "Gelbe Seiten" von einer solchen Datenbank profitieren.

Ein vergleichbares Unterfangen wird zurzeit mit der Extraktion von de:Personendaten durchgeführt.

Begriffliches und Rechtliches edit

  • GeoNDB ist die freie geographische Namensdatenbank auf der Grundlage von Wikipedia.de, welche im Rahmen des Projekts 'GeoWikiDB' erarbeitet wurde.
  • GeonamenDB ist der Name dieses MetaWiki-Artikels
  • GeoWikiDB I ist der Name einer Studienarbeit, genannt 'GeoWikiDB' an der HSR (FH Ostschweiz). Die eigentliche Datenbank heisst GeoNDB (denn die Datenbank selber ist kein "Wiki").
  • Wikipedia:Gazetteer: engl. für Ortsnamen-Datenbank
  • Allgemein sprechen wir von geographischen Namen. Darin eingeschlossen sind geographische Orte. Hinweis: Geographische Namen werden auch Toponyme genannt.

Rechtliches: An dieser Stelle muss auch darauf hingewiesen werden, dass diese Daten zu den sogenannten Geobasisdaten gehören, die traditionell von den Landesvermessungsämtern und/oder deren Beauftrage (Geodäten/Ingenieurgeometer) erhoben und beansprucht werden. Der Trend dort geht aber langsam in Richtung "Geodaten für jedermann" und gerade geographische Namen stehen eigentlich exemplarisch dafür, sind sie doch im Volksmund ein typisches "Allgemeingut". Mehr zu den rechtlichen Fragestellungen evtl. später.


Aktueller Entwicklungsstand edit

An dieser Stelle berichten wir jeweils aktuellen Stand. Veraltete Informationen werden am Ende dieses Artikels archiviert.


16.12.2004 edit

Datenbank:

  • Import von Stammdaten:
    • WDBII-Daten Import abgeschlossen
    • OpenGeoDB-Datenimport abgeschlossen
    • Weitere Datenquellen erschlossen.
  • Aufbau der Datenbank:
    • Vorläufig abgeschlossen, wird jedoch noch Änderungen unterworfen sein.
  • Merge von Daten:
    • Merge funktioniert. Noch kleinere Detailfragen. Beispielsweise; inwieweit sollen Resultate wie Stadt ist in Region; Region ist in Land, ...:
      • a) zur Laufzeit via GeoFunktionen berechnet werden
      • b) beim Import berechnet und zwischengespeichert werden.
    • tendiere zur Zeit zu b. Bin hier jedoch noch am Abklären was das Idealste ist.
  • Pendenzen:
    • BotenFile. Sprich welche Geografische Region hat eine Postleitzahl.
      • Hier fehlen uns zur Zeit immer noch die Informationen.
    • Pendenz BFS Nummern (betrifft nur die Schweiz). BFS Katalog konnte aufgetrieben werden.

Dokumentation:

API:

  • API hat in den Bereichen Merge, Abfrage von Informationen, ... stabilen Stand erreicht.
    • Zur Zeit gibt es die Diskussion: Kann man ein Regions Objekt (Umriss) als Vererbung eines Typonym Objektes (Sprich GeoNamen und Punkt Koordinate) ansehen oder nicht?
      Ist von Außen schwer zu beurteilen. Spontan sehe ich nichts, was dagegen spricht. -- Nichtich
      • Inzwischen hat sich eine Lösung aufgedrängt. Vielen Dank nochmals allen! Regionen werden als Erweiterung von Punkten angesehen.

2.1.2005 edit

Es gibt da einiges zu überlegen, was nun die beste Art sei, eine akzeptierte Strukturierung von Artikel über geographische Orte zu erhalten:

  • Wie kommen wir nun an die Kategorien heran?
Entweder den SQL-Dump (http://download.wikipedia.org) parsen (siehe perl-Beispiel unter hier)
Oder mit dem Python Robot-Framework.
Ok: Wenn ich den SQL-Dump, bzw. das Perl-Beispiel richtig interpretiere, dann wedern dort im Wesentlichen die Wiki-Tags geparst. Das löst das Problem der Kategorien nicht (vgl. Export von Wikipedia-Daten). Das Python Robot-Framework hat das Problem gelöst, parst aber das HTML-Format, was änderungsanfällig ist.
Wenn ich die Vorteile/Nachteile abwäge, dann tendiere ich immer noch dazu, für Einzelabfragen eine PHP-Erweiterung von MediaWiki im Stile "Kategorie:xxx?action=xml&eval" einzubauen. Diese Funktion kann dann mit Frameworks verschiedener Sprachen (perl, Python, Java) verwendet werden.
  • Praktisch keine einzige Ortsangabe in Wikipedia ist mit Vorlagen gemacht...
Wieviel bekommt man denn erstmal per RegExp "Koordinaten || ..."? (z.B. per perl aus dem SQL-Dump)
Das muss ich abklären. Vom Gefühl her etwas über 80%.
  • Wie geht so eine Qualitätsoffensive für Kategorien?
Besser nicht "Qualitätsoffensive" nennen, da dies schon ein Projekt in der deutschen Wikipedia ist.
  • Eigenes Projekt gründen? Vorgehen analog Personendaten?
Jup. Vorgehen auf einer eigenen Projektseite beschreiben und von Personendaten, Wikiprojekt Geoinformatik, und anderen Seiten verlinken und ggf. auf der Mailingliste ankündigen. Dann einfach anfangen und hoffen, dass andere mitziehen.
  • Vorlage (inkl. Infobox?): Wie, Wer, Wann? ... und/oder Datenbanklink?
Ich wäre für {{KOORDINATEN|...}} (Vorlage), wie mit André auf dem 21C3 besprochen. Das geht aber erstmal nur für Punktkoordinaten.
  • Generieren von Stubs, sobald wir mit der GeonamenDB soweit sind?
Sollte vorher diskutiert werden. Eine Liste von Namen, die noch nicht in Wikipedia sind, reicht für den Anfang auch -- Nichtich 17:29, 2 Jan 2005 (UTC)


Allgemeine Diskussion edit

Projektideen und organisatorische Fragen zu obenstehendem Thema.


Inhalt der GeoNDB edit


Sehenswürdigkeiten edit

Gemäss Wikipedia.de ist eine Sehenswürdigkeit (S.) "ein bedeutsames Objekt des Naturerbes oder des Kulturerbes, welches häufig in touristische Programme (Fremdenverkehr) einbezogen wird". Die Bedeutung von S. für Anwendungen einer Geonamendatenbank scheint unbestritten. Hier einige Beispiele:

Zurzeit gibt es weder eine Kategorie noch eine Vorlage für S. S. werden offensichtlich v.a. als Wiki-Link verwendet und das auch erst spärlich (vgl. Links, die auf S. zeigen). Hingegen ist es meist so, dass von S.-Artikel einer Kategorie zugeordnet werden, z.B. zu de:Kategorie:Bauwerk.

Unklar ist der Umgang damit und dessen Kennzeichnung in Wikipedia.de. Wie die Lage von S. auch erschlossen wird, es müssen die Autoren vermehrt auf diese Linkmöglichkeit hingewiesen werden. Das genügt aber noch nicht, ein Artikel muss auch entsprechende (noch zu definierende) Daten enthalten. Das absolute Minimum sind dabei die Koordinaten.

Wie bei allen Geodaten muss zwei Angaben für eine erkennbare S. vorhanden sein:

  1. Kennzeichnung als S. Dafür genügen Wiki-Links oder es wird eine eigene (neue) Kategorie bestimmt.
  2. Koordinaten und ev. weitere Attribute (wenn nötig). Dafür gibt es zwei Möglichkeiten: Ergänzung einerseits mit nur bedingt dargestellten Metadaten (Vorgehen analog de:Personendaten) oder andererseits mit Vorlagen (Infoboxen?).

Beispiel mit einem Datenbanklink:

<!-- Bitte nicht loeschen! 
Zur Erklaerung siehe [meta:Wikimaps/GeonamenDB] -->
{{geo.position| lat=47.3194 | lon=8.8053}}

Kategorien mit Raumbezug edit

Kategorien mit Raumbezug sind besondere Kategorien ...! Kategorisierungen sind selten absolut, bzw. kontextfrei. So kann man komplexere Dinge der Welt, wie z.B. ein 'Stuhl' verschiedensten Kategorien zuordnen: Sitzgelegenheit, Kunst, Sammlerstück, Behelfsleiter ...

Toponyme können natürlich auch kategorisiert werden. Sie werden dann einheitlich zusammen mit anderen Begriffen z.B. in Thesauren verwaltet. Streng genommen stellt das aber nur ein Behelf oder eine Doppelfunktion dar: Toponyme - und damit deren Kategorien - haben einen Raumbezug, der einem Begriff wie eine Eigenschaft zugeordnet werden kann (z.B. Schloss (in) Rapperswil).

Wenn es nun z.B. darum geht, die räumlichen Beziehungen zwischen Toponymen festzuhalten (z.B. Rapperswil in Welt/Europa/Schweiz/St.Gallen/Gemeinden), dann kann man das natürlich mit Unterkategorien (= Hierarchie), bzw. mit "verwandten Kategorien" tun (= Thesaurus). Genau diese Information liefert aber eine zugeordnete Koordinate, eine Linie oder eine Fläche in viel präziserer und nutzbarerer Form: Damit lassen sich nämlich mittels GIS-Funktionen räumliche Beziehungen ad-hoc ableiten, die mit Mitteln der Kategorisierung niemals mit vernünftigem Aufwand erreicht werden können, beispielsweise: "Gib alle Seen in der Nähe von 10Km rund um Rapperswil" (Antwort: Zürichsee, Obersee, Lützelsee, ...).

Wie geht das mit der Kontrolle der Kategoriennutzung sowie der Überarbeitung der Kategorien selber? --Sfk 21:48, 15 Dec 2004 (UTC)
Totales Chaos, aber es kommt oft trotzdem etwas ziemlich Brauchbares heraus. Zu den Kategorien gibt es viele gute und schlechte Ideen, aber da es keine Kontrolle (vergleichbar mit dem NPOV für Artikel) gibt, ist das Ergebnis sehr unterschiedlich. Im Zweifellsfall ignoriert die Kategorien und im Idealfall könnt ihr sie als Grundlage nehmen. -- Nichtich 23:10, 13 Dec 2004 (UTC)
  • Qualitätsfrage: Tests haben ergeben, dass nicht alle kategorisierten Artikel auch die entsprechende Templates verwenden. Ausgerechnet z.B. Rapperswil SG ist z.B. ohne Template (und damit ohne Tabelle) erstellt worden. Damit ist keine verlässliche 'Datenstruktur' gegeben und Programme, die an speziellen Daten, wie Koordinate, Höhe ü.M. oder Einwohnerzahl interessiert sind, werden dort nichts finden (obschon für den menschlichen Leser etwas da steht.
Warum wird in Wikipedia unten nicht das verwendete Template angezeigt, wie in Mediawiki? --Sfk 21:47, 15 Dec 2004 (UTC)
Verstehe die Frage nicht. Wenn in den Artikel noch niemand das Template eingebaut hat, gibt es auch keins.
Evtl. ist dort tatsächlich kein Template, ich kenne mich da noch nicht so aus. Was ich meinte war, dass ein Template eine verlässliche Struktur, u. a. mit Tabellen und Schlüsselworten bietet. In besagtem Beispiel Rapperswil fehlt nun z.B. eine solche Tabelle. --Sfk 21:47, 15 Dec 2004 (UTC)
Jetzt blicke ich besser durch: Ich sah gerade mit Schrecken, dass fast alle Orte - ausser de:Vorlage:Ort_in_Österreich- aus Prinzip nur Copy&Paste-Vorlagen verwenden und keine 'echten' Templates (z.B. Formatvorlage Ort)! Was offenbar dringend nötig ist, das ist entweder eine echte Vorlage, ein Infobox (als echte Vorlage) und/oder Datenbanklinks. --Sfk 19:21, 28 Dec 2004 (UTC)


Vorlagen, Templates, Infoboxen edit

Gehört die Kontrolle der Nutzung von Templates besonders in Kategorien zum Thema Qualitätsoffensive?
Eigentlich schon, wenn auch nicht zentral. Euer Projekt könnte helfen, das Bewußtsein für gute Templates zu schärfen, z.B. durch eine Liste aller Artikel in denen kein (brauchbares) Template gefunden werden konnte - als Aufforderung an die Wikipedia dies nachzutragen bzw. zu verbessern.
Übrigens: 'Template' ist das englische Wort für Vorlage - stimmt das? Was ist dann der Unterschied zwischen Infobox und Vorlage? Offenbar gibt es Vorlagen für einen ganzen Artikel und Vorlagen nur für einen Abschnitt davon (= Infobox, z.B. Abstract). Sollte es dann nicht eher heissen Infobox-Vorlage? --Sfk 19:21, 28 Dec 2004 (UTC)

Vorlagen (engl. Templates) sind parametrisierbare Textbausteine, die mit doppelten geschweiften Klammern verwendet werden. Infoboxen sind (mehr oder weniger) standardisierte Tabellen mit Daten zum Artikelinhalt. Infoboxen können unter Umständen mittels Vorlagen verwendet werden, allerdings hat sich dies noch nicht allgemein durchgesetzt, da erstmal irgendjemand eine passende Vorlage erstellen muss und da dies nur möglich ist, wenn die Infobox immer gleich aufgebaut ist (keine optionalen Felder, Bedingungen o.Ä.). -- Nichtich 17:12, 2 Jan 2005 (UTC)


Technische Diskussion edit

Hier ein möglicher Geo-Webdienste-Aufruf (REST):

www.irgendEineURL.domain/q?isLocation=name

Gegeben ein Name, gib den oder die entsprechenden Ortsnamen zurück. Ziel ist, dann den/die Verweis(e) auf Wikipedia-Artikel zu erhalten.


Wahl einer Datenbank für die GeoNDB edit

Wir haben uns für PostgreSQL entschieden. Dazu gibt es eine funktionale Erweiterung, PostGIS, welche die wichtigsten räumlichen Grundfunktionen auf georeferenzierte Daten zur Verfügung stellt.


Export von Wikipedia-Daten (aus Sicht Wikipedia) edit

Wir sind auf ein grundsätzliches Problem beim Export von Kategorien gestossen. Habe auf den Tipp von Brian Vibber und Ashar Voultoiz den Sachverhalt auf Wikitech-l [1] und auf Mediazilla [2] gebracht mit der Überschrift "Eval extension to action=raw and to export xml".

Das Problem: Wenn man eine Anfrage einer Kategorie im raw-Format oder XML formuliert (vgl. unten), werden (richtigerweise) 'nur' die Kategorien als Wiki-Tags zurückgeliefert (Beispiel für die Seite Kategorie:Ort in der Schweiz: "[[Kategorie:Geographie (Schweiz)|Ort]]"). Was wir aber benötigen, ist die eigentliche Liste der zu einer bestimmten Kategorie hinzugehörigen Unterkategorien oder Artikel (also: "Aadorf, Aarau, Aarberg, Aarburg,..." etc.)!

Leider hat bisher niemand auf meine Fragen geantwortet. Ashar meinte vorgängig, dass die meisten MediaWiki-Entwickler z.Zt. an einem Release arbeiteten, dass aber mein Problem mit relativ kleinem Aufwand lösbar sei (u. a. durch eine Erweiterung der Anfrage-Syntax).

Dank dem Python-Framework und dadurch, dass ein einmaliger Export in diesem Projekt genügt, können wir mit dieser Situation leben. Spätestens wenn es (in einem Folgeprojekt) darum geht, solche Exporte in einen wiederkehrenden Prozess einzubinden, muss eine Lösung gefunden werden.

Frage an die Wikipedia-Admins: Angenommen, wir organisieren so eine Funktionserweiterung des action=raw-Befehls (bzw. des Special:Export), wie lange geht es üblicherweise, bis ein neuer Release eingespielt wird? Mit wem können wir diese Frage intensiver diskutieren?

Admins sind die Leute, die Artikel löschen und sperren können - die haben mit der Softwarentwicklung i.d.R. nichts zu tun. Ansonsten ist wikitech-l der Ort, es gibt auch einen IRC-Channel: irc://irc.freenode.net/mediawiki Das Einspielen neuer Releases hängt davon ab, wie schwerwiegend die Änderung. Versucht GeonamenDB interessant zu machen, dann wächst die Motivation und es geht schneller ;-)
An Nichtich: Evtl. könnte man dieses Problem - zusammen mit dem Qualitätsproblem (oben) - an der 21C3 vom 27. Dez. 2005 in Berlin ansprechen? --Sfk 23:25, 13 Dec 2004 (UTC)
Von euch ist nicht jemand da, oder? hier planen die Entwickler ihr Treffen. Das mit der Qualität von Templates werde ich ansprechen - in beiden Fällen kann öfter mal auf den Mailinglisten (auch wikide-l) nachfragen nicht schaden. -- Nichtich 23:32, 13 Dec 2004 (UTC)
Evtl. kann jemand von uns kommen, wir sind am Abklären. Gibt es an der Konferenz auch Zeit, sich zu einer kleinen Sitzung zu treffen? --Sfk 21:53, 15 Dec 2004 (UTC)


Formate edit

Python edit

Dazu ist das Python Wikipedia Robot Framework empfehlenswert. Beispielsweise lassen sich in etwa folgendermaßen ziemlich viele Ortsartikel in der deutschsprachigen Wikipedia finden:

import sys
#Append the path to the framework
sys.path.append("E:/Daten/Schule/GeoNDB/repository/GeoNDB/20_WikiExporter/framework")

import wikipedia
import catlib


kategorien = ['Ort in der Schweiz']
exportDestination = 'E:\\Daten\\Schule\\GeoNDB\\Download\\wikiExport\\'

# get categorie from wikipedia.de
cat = []
for kategorie in kategorien:
    cat.append(catlib.CatLink(wikipedia.mylang, kategorie))


article = cat[0].articles(cat[0],False)
for x in cat:
    article += x.articles(x,True)            # rekursiv alle Artikel dieser Kategorien


# alle Artikeltexte herunterladen
pages = wikipedia.getall(wikipedia.mylang, article) 

for page in pages:
    try:
        filename = exportDestination + wikipedia.PageLink.urlname(page)

        file=open(filename, 'w')
        file.write(wikipedia.PageLink.get(page).encode("utf-8"))
        file.close()
    except:
        print 'ERROR IN (' + filename + ')'

Ansonsten können bekannte Artikel mit Special:Export exportiert werden.


Perl edit

Hier ein Beispiel, wie man mit Perl einen SQL-Dump von Wikipedia parst.


Java edit

Frage: Gibt's hier auch Bibliotheken zum Lesen von Wikipedia.de? (Sfk)

Nicht, dass ich wüßte -- Nichtich 00:35, 1 Dec 2004 (UTC)
Wird evtl. demnächst von einem Informatikstudenten in einer Programmierübung erstellt. Wir hätten noch Fragen zum Wikipedia-Interface: Wer hat das Python-Framework geschrieben? (Sfk 01:30, 4 Dec 2004 (UTC)
Deutschsprachiger Ansprechpartner ist wahrscheinlich Andre Engels, der ist einer der Admins des Projekts auf sourceforge.
Vielen Dank; hat sich soweit geklärt, bzw. das Problem ist erkannt (vgl. oben). --Sfk 23:09, 13 Dec 2004 (UTC)

Hier ein prototypischer Code (leider geht Upload von zip-Dateien nicht).

Weiterentwicklungen edit

GeoWikiDB II: Geplantes Nachfolgeprojekt des Projekts GeoWikiDB I. Dabei geht es um einen Geo-Webservice, bei dem man z.B. Koordinaten oder geographische Namen mit Wikipedia.de-Seiten verknüpfen kann.


Links edit

Siehe auch ... edit

Externe Links edit

Allgemeines:

Suchdienste mit Raumbezug (Geospatial Search Engines):

Grundlagen: Für euch wahrscheinlich nichts neues, aber ich fand diese Einleitung sehr interessant. -- Nichtich 10:11, 16 Dec 2004 (UTC)

Das ist die GITTA-Demo zu "Räumliche Abfragen": An diesem Projekt sind wir beteiligt... :-> --Sfk 15:10, 18 Dec 2004 (UTC)

de:Kategorie:Wikipedia de:Kategorie:Geoinformatik

Template:Geo.position