Diskussion:RelatedTerms
Projekt RelatedTerms in OSM 2011
Idee/Koordination: Stefan
Dies ist die Realisierung des Lösungsansatzes Ende 2011.
Das Projektvorhaben lässt sich in folgende Teilprojekte gliedern:
- Teilprojekt RelatedTerm-Ersterfassung .
- Teilprojekt Taginfo API 'relatedterms'.
- Teilprojekt Verbesserte Tag-Suche im TagFinder / POI-Service.
Auf diesen Arbeiten aufbauend - insbesondere dem Taginfo API 'relatedterms' und der laufenden Aktualisierung durch die OSM-Community - kann dann z.B. auch in JOSM eine verbesserte Tags- bzw. Presets-Suche realisiert werden.
Teilprojekt RelatedTerm-Ersterfassung
Projekt-Teilnehmer/innen:
- Daniela
- Marc
Das Ziel dieses Teilprojekts ist das Erfassen von Synonymen, bzw. alltemein verwandte Begriffe als RelatedTerm-Templates (v.a. englisch) von häufigsten OSM-Tags im Wiki (ca. 1000).
Etappierung:
- In einer ersten Phase werden nur dort RelatedTerms erfasst, wo (englische oder deutsche) Wiki-Seiten vorhanden sind.
- In einer späteren Phase wird aufgrund z.B. eine Liste das OSM Wiki gezielt mit neuen Wiki-Seiten ergänzt, die das dokumentieren, was schon in den Daten ist und verwandte Begriffe (Related Terms) dazu erfasst.
Stand: Fortschrittsanzeige: http://wiki.openstreetmap.org/wiki/Special:WhatLinksHere/Template:RelatedTerm
Infos/Regelungen:
- Wenn immer möglich, sind englische Synonyme zu erfassen.
- Die offizielle Dokumentation der RelatedTerms ist auf dem OSM Wiki dokumentiert: http://wiki.openstreetmap.org/wiki/Taginfo/RelatedTerm
- Hier das zugehörige Template: http://wiki.openstreetmap.org/wiki/Template:RelatedTerm .
- Auf http://wiki.openstreetmap.org/wiki/Tag:amenity=place_of_worship sieht man eine erste 'echte' Anwendung.
Quellen:
- Die Hauptinformationsquelle über vorhandene Tags in OSM ist schon http://wiki.openstreetmap.org/wiki/Special:Search und http://taginfo.openstreetmap.ch/ (weitere Tipps hier: http://www.gis.hsr.ch/wiki/POI-Service#POIs_finden_und_visualisieren ).
- Wenn immer möglich, sind englische Synonyme zu erfassen. Dict.cc und Beolingus bieten solche Services an: Vgl. die Links auf http://www.openthesaurus.de/synonyme/Kirche rechts unten.
- Zur möglichen Automatisierung hier das Thesaurus API (deutsch): http://www.openthesaurus.de/about/api . Ein API zu MediaWiki gibt es. Die wichtigsten Infos sind hier http://www.mediawiki.org/wiki/API:Main_page und v.a. das Bot-Howto: http://en.wikipedia.org/wiki/Wikipedia:Creating_a_bot .
Help:Template on MediaWiki.
Projekt-Teilnehmer/innen:
- Michel
- Mirko
Extrahieren/Preprocessing:
- Idee: pro Wiki-Seite wird nach der Vorlage 'RelatedTerm' geparst und in die wiki-Tabelle der taginfo-db abgelegt.
- taginfo-wiki.db um ein weiteres Feld "related_terms" (o.ä.) erweitern und dort die Terms Strichpunkt-separiert ablegen ("de:Schloss, de:Prachtbau, en:castle"). Ruby-Code erweitern ([1]), wo MediaWiki-Templates schon ausgelesen werden, zurzeit jedoch nur die Templates "Key" und "Tag".
- API 1 sucht nach Synonymen und gibt Liste von Tags (= Key/Values) zurück. Dabei soll das existierende Ruby-Script erweitert werden. Vgl. ([2]).
- API 2 gibt alle Synonyme zurück.
- Taginfo-Suche mit Synonym-Lookup erweitern.
Stand: offen.
Task List:
- Preprocessing
- Erweitern der DB-Tabelle "wikipages" um ein Attribut "related_terms"
- Ergänzen des "INSERT"-Statements im get_wiki_data.rb Script (Methode: def insert(db))
- evtl. Anpassung von weiteren Methoden.
- API 1
- Anbieten einer neuen API-Methode (bspw. 'wiki/kvrp' oder ähnliches)
- Input: q -> String (required), lang -> ISO (optional), rp -> integer(optional), page -> Integer (optional), sortorder -> {asc, desc} (optional), sortname -> String (optional)
- q = Query String
- rp = Results per Page
- sortname = one of the result attribute
- Output: (tags_linked attribute muss zusätzlich berücksichtigt werden)
- Anbieten einer neuen API-Methode (bspw. 'wiki/kvrp' oder ähnliches)
{"total":INT, "rp":INT, "page":INT, "data":[{ {"key":"historic","value":"castle"}, {"key":"amenity","value":"building"}, ... }] }
- API 2
- (bspw. 'wiki/relatedterms')
- Input: q -> String (required), lang -> ISO (optional), rp -> integer(optional), page -> Integer (optional), sortorder -> {asc, desc} (optional), sortname -> String (optional)
- Output:
- (bspw. 'wiki/relatedterms')
{"total":INT, "rp":INT, "page":INT, "data":[{ {"term":"castle","lang":"EN"}, {"term":"Schloss","lang":"DE"}, ... }] }