Serbia/Sophox

From OpenStreetMap Wiki
Jump to: navigation, search

Zanimljivi Sophox SPARQL upiti koji treba da nađu greške/poboljšaju srpsku lokalizaciju kako u Srbiji, tako i van Srbije.


Svaka pomoć je dobrodošla! Da biste pomogli, treba da kliknete na link na neku od stavki ispod koja Vam je zanimljiva, budete ulogovani na OSM i da ispravljate stvari. Neke mogu polu-automatizovano (preuzimanje sa wikidata) i onda Vi potvrdite, a neke moraju ručno da se peglaju. Ne pokrećite upite sa "Run it", nego sa "Edit query" i dobićete editor koji kad pokrenete, pustite ga (kliknete Play dugme) i radiće edit. Ne zaboravite da zatvorite changeset na kraju!

Ako imate neku drugi interesantan upit, dodajte ga ovde.

Dodavanje name:sr na gradove van Srbije

Ovaj SPARQL upit vraća sve gradove sa preko 100.000 stanovnika koji imaju wikidata i wikipedia vezu i postoji interwiki link na srpsku wikipediju (tako da imamo i srpsko ime grada). Automatski predlaže i ime sa wikipedije, tako da samo treba da kliknete i da potvdite:) Pazite sa ovim upitom, jer mora da se poštuje pravilo za transliteraciju imena. Drugim rečima, ne dodavati ako ima nije odomaćeno/u upotrebi kod nas.

Domen upita: ceo svet

#defaultView:Editor{ "comment":"add name:sr to place", "vote":false }
SELECT
  ?id ?loc
  ('name:sr' AS ?tag_1) (?label as ?val_1)
WHERE {
  ?id osmt:place ?place ;
      osmm:loc ?loc ;
      osmt:wikipedia ?wpTag ;
      osmt:wikidata ?wd .
  FILTER NOT EXISTS { ?id osmt:name:sr ?namesr . }

  ?wd rdfs:label ?label ;
      wdt:P1082 ?population .
  ?sitelink schema:isPartOf <https://sr.wikipedia.org/> ;
            schema:about ?wd .
  FILTER((?place = 'city' || ?place = 'town') &&
         BOUND(?label) &&
         ?population > 100000)
}
Run it (edit query)

Izmena name:sr da se poklapa sa Wikipedijom

Dešava se suprotna situacija - imamo name:sr, ali se name:sr razlikuje od imena sa Wikipedije. U tom slučaju, trebalo bi da se vidi koji je od dva naziva pravilniji. Ako je ispravniji onaj sa Wikipedije, onda ovaj upit može da se iskoristi da iskopira ime sa Wikipedije. Idealno, ovaj upit treba da vraća 0 redova.

Domen upita: ceo svet

#defaultView:Editor{ "comment":"fixing name:sr" }
SELECT
  ?id ?loc
  ('name:sr' AS ?tag_1) (?label as ?val_1)
WHERE {
  ?id osmt:place ?place;
      osmm:loc ?loc ;
      osmt:wikipedia ?wpTag ;
      osmt:wikidata ?wd ;
      osmt:name:sr ?namesr .

  ?wd rdfs:label ?label ;
      wdt:P1082 ?population .

  ?sitelink schema:isPartOf <https://sr.wikipedia.org/> ;
            schema:about ?wd .

  FILTER((?place = 'city' || ?place = 'town') &&
         lang(?label) = "sr" &&
         ?population > 0 &&
         STR(?namesr) != STR(?label))

  SERVICE wikibase:label { bd:serviceParam wikibase:language "sr". }
}
Run it (edit query)

Srpski naziv nije na ćirilici

Ovo skoro sigurno ne može biti ispravno:) Idealno, ovaj upit treba da vraća 0 redova. Nažalost, ovaj upit ne može da se automatizuje, čovek mora da oceni koji je ispravan naziv za dati OSM entitet.

Domen upita: ceo svet

#defaultView:Editor{ "comment":"fixing name:sr", "vote":false }
SELECT ?id ?loc ?namesr WHERE {
  ?id osmt:place ?place .
  FILTER(?place = 'city' || ?place = 'town')
  ?id osmm:loc ?loc .
  ?id osmt:name:sr ?namesr .
  FILTER (regex(str(?namesr), "a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z", "i"))
}
Run it (edit query)

Ime ulice u Srbiji je na latinici

Ovo je jako pipav upit. Kao prvo, pokušava da prebaci sve što je na latinici u ćirilicu i onda da podesi "name" na to. Em to nekad nije precizno (zbog nj->њ i sl.), em imamo neke nazive koje treba ostaviti na latinici, em imamo nekad ošišanu latinicu koja ne može da se prebaci nikako automatizovano. Zato ga koristiti uz veeeliki oprez. Dolenavedeni upit je podešen za Beograd, ali samo izmeniti koordinate centra kruga koji se gleda.

Domen upita: Beograd

#defaultView:Editor{ "comment":"Automatsko prebacivanje u cirilicu", "vote":false }
SELECT ?id ?loc ('name' AS ?tag_1) (?o63 as ?val_1) WHERE {
  ?id osmt:name ?name .
  ?id osmm:type ?mtype .
  ?id osmt:highway ?highway . # Ovim se filtriraju samo ulice. Zakomentarisati za sve entitete
  SERVICE wikibase:around {
    ?id osmm:loc ?loc .
    # Koordinata centra Beograda, zameni da dobijes krug sa centrom u drugoj tacki
    bd:serviceParam wikibase:center "Point(20.45340 44.79338)"^^geo:wktLiteral.
    # Precnik kruga u kilometrima, povecaj/smanji po zelji
    bd:serviceParam wikibase:radius "15" .
  }
  FILTER (regex(str(?name), "a|b|c|č|ć|d|đ|e|f|g|h|i|j|k|l|m|n|o|p|r|s|š|t|u|v|z|ž", "i")) . # Ovako filtriramo samo latinicna imena
  FILTER (!regex(str(?name), "x|y|w|q", "i")) . # Ovako filtriramo ocigledno engleska imena
  # FILTER (?mtype = 'w') . # Stavite 'n', 'w' ili 'r' ako zelite da filtrirate po tipu entiteta
  # Prvo duple
  BIND(REPLACE (?name, "lj", "љ") AS ?o1)
  BIND(REPLACE (?o1, "nj", "њ") AS ?o2)
  BIND(REPLACE (?o2, "dž", "џ") AS ?o3)
  BIND(REPLACE (?o3, "Lj", "Љ") AS ?o4)
  BIND(REPLACE (?o4, "LJ", "Љ") AS ?o5)
  BIND(REPLACE (?o5, "Nj", "Њ") AS ?o6)
  BIND(REPLACE (?o6, "NJ", "Њ") AS ?o7)
  BIND(REPLACE (?o7, "Dž", "Џ") AS ?o8)
  BIND(REPLACE (?o8, "DŽ", "Џ") AS ?o9)
  # Mala slova
  BIND(REPLACE (?o9, "a", "а") AS ?o10)
  BIND(REPLACE (?o10, "b", "б") AS ?o11)
  BIND(REPLACE (?o11, "v", "в") AS ?o12)
  BIND(REPLACE (?o12, "g", "г") AS ?o13)
  BIND(REPLACE (?o13, "d", "д") AS ?o14)
  BIND(REPLACE (?o14, "đ", "ђ") AS ?o15)
  BIND(REPLACE (?o15, "e", "е") AS ?o16)
  BIND(REPLACE (?o16, "ž", "ж") AS ?o17)
  BIND(REPLACE (?o17, "z", "з") AS ?o18)
  BIND(REPLACE (?o18, "i", "и") AS ?o19)
  BIND(REPLACE (?o19, "j", "ј") AS ?o20)
  BIND(REPLACE (?o20, "k", "к") AS ?o21)
  BIND(REPLACE (?o21, "l", "л") AS ?o22)
  BIND(REPLACE (?o22, "m", "м") AS ?o23)
  BIND(REPLACE (?o23, "n", "н") AS ?o24)
  BIND(REPLACE (?o24, "o", "о") AS ?o25)
  BIND(REPLACE (?o25, "p", "п") AS ?o26)
  BIND(REPLACE (?o26, "r", "р") AS ?o27)
  BIND(REPLACE (?o27, "s", "с") AS ?o28)
  BIND(REPLACE (?o28, "t", "т") AS ?o29)
  BIND(REPLACE (?o29, "ć", "ћ") AS ?o30)
  BIND(REPLACE (?o30, "u", "у") AS ?o31)
  BIND(REPLACE (?o31, "f", "ф") AS ?o32)
  BIND(REPLACE (?o32, "h", "х") AS ?o33)
  BIND(REPLACE (?o33, "c", "ц") AS ?o34)
  BIND(REPLACE (?o34, "č", "ч") AS ?o35)
  BIND(REPLACE (?o35, "š", "ш") AS ?o36)
  # Velika slova
  BIND(REPLACE (?o36, "A", "А") AS ?o37)
  BIND(REPLACE (?o37, "B", "Б") AS ?o38)
  BIND(REPLACE (?o38, "V", "В") AS ?o39)
  BIND(REPLACE (?o39, "G", "Г") AS ?o40)
  BIND(REPLACE (?o40, "D", "Д") AS ?o41)
  BIND(REPLACE (?o41, "Đ", "Ђ") AS ?o42)
  BIND(REPLACE (?o42, "E", "Е") AS ?o43)
  BIND(REPLACE (?o43, "Ž", "Ж") AS ?o44)
  BIND(REPLACE (?o44, "Z", "З") AS ?o45)
  BIND(REPLACE (?o45, "I", "И") AS ?o46)
  BIND(REPLACE (?o46, "J", "Ј") AS ?o47)
  BIND(REPLACE (?o47, "K", "К") AS ?o48)
  BIND(REPLACE (?o48, "L", "Л") AS ?o49)
  BIND(REPLACE (?o49, "M", "М") AS ?o50)
  BIND(REPLACE (?o50, "N", "Н") AS ?o51)
  BIND(REPLACE (?o51, "O", "О") AS ?o52)
  BIND(REPLACE (?o52, "P", "П") AS ?o53)
  BIND(REPLACE (?o53, "R", "Р") AS ?o54)
  BIND(REPLACE (?o54, "S", "С") AS ?o55)
  BIND(REPLACE (?o55, "T", "Т") AS ?o56)
  BIND(REPLACE (?o56, "Ć", "Ћ") AS ?o57)
  BIND(REPLACE (?o57, "U", "У") AS ?o58)
  BIND(REPLACE (?o58, "F", "Ф") AS ?o59)
  BIND(REPLACE (?o59, "H", "Х") AS ?o60)
  BIND(REPLACE (?o60, "C", "Ц") AS ?o61)
  BIND(REPLACE (?o61, "Č", "Ч") AS ?o62)
  BIND(REPLACE (?o62, "Š", "Ш") AS ?o63)
}
Run it (edit query)

Fali ime ulice u Srbiji na latinici

Upit dodaje name:sr-Latn ako fali ili ga menja (ako zaključi da prebacivanje sa ćirilice na latinicu nije ispravno). Generalno je bezbedan da se ide okolo i prebacuju stvari. Dobro je komentarisan, ako želite da izmenite nešto (drugi grad, da ne gleda puteve nego nešto treće itd.). Idealno, ovaj upit treba da vraća 0 redova.

Domen upita: Beograd

#defaultView:Editor{ "comment":"Automatsko dodavanje name:sr-Latn", "vote":false }
SELECT
  ?id ?loc
  ('name:sr-Latn' AS ?tag_1) (?correctLatinName as ?val_1)
WHERE {
  ?id osmt:name ?name ;
      osmt:highway ?highway ; # Ovim se filtriraju samo ulice. Zakomentarisati za sve entitete
      osmm:type ?mtype .

  FILTER (regex(str(?name), "а|б|в|г|д|ђ|е|ж|з|и|ј|к|л|љ|м|н|њ|о|п|р|с|т|ћ|у|ф|х|ц|ч|џ|ш", "i")) . # Ovako filtriramo samo cirilicna imena

  BIND(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    ?name,
    # Mala slova
    'а', 'a'), 'б', 'b'), 'в', 'v'), 'г', 'g'), 'д', 'd'), 'ђ', 'đ'), 'е', 'e'), 'ж', 'ž'), 'з', 'z'), 'и', 'i'),
    'ј', 'j'), 'к', 'k'), 'л', 'l'), 'љ', 'lj'), 'м', 'm'), 'н', 'n'), 'њ', 'nj'), 'о', 'o'), 'п', 'p'), 'р', 'r'),
    'с', 's'), 'т', 't'), 'ћ', 'ć'), 'у', 'u'), 'ф', 'f'), 'х', 'h'), 'ц', 'c'), 'ч', 'č'), 'џ', 'dž'), 'ш', 'š'),
    # Velika slova
    'А', 'A'), 'Б', 'B'), 'В', 'V'), 'Г', 'G'), 'Д', 'D'), 'Ђ', 'Đ'), 'Е', 'E'), 'Ж', 'Ž'), 'З', 'Z'), 'И', 'I'),
    'Ј', 'J'), 'К', 'K'), 'Л', 'L'), 'Љ', 'Lj'), 'М', 'M'), 'Н', 'N'), 'Њ', 'Nj'), 'О', 'O'), 'П', 'P'), 'Р', 'R'),
    'С', 'S'), 'Т', 'T'), 'Ћ', 'Ć'), 'У', 'U'), 'Ф', 'F'), 'Х', 'H'), 'Ц', 'C'), 'Ч', 'Č'), 'Џ', 'Dž'), 'Ш', 'Š')
  as ?correctLatinName)

  SERVICE wikibase:around {
    ?id osmm:loc ?loc .
    # Koordinata centra Beograda, zameni da dobijes krug sa centrom u drugoj tacki
    bd:serviceParam wikibase:center "Point(20.45340 44.79338)"^^geo:wktLiteral.
    # Precnik kruga u kilometrima, povecaj/smanji po zelji
    bd:serviceParam wikibase:radius "15" .
  }

  OPTIONAL { ?id osmt:name:sr-Latn ?currentLatinName . } # Uzmi trenutno latinicno ime, ako postoji
  FILTER (NOT EXISTS { ?id osmt:name:sr-Latn ?namesrlatn . } || ?correctLatinName != ?currentLatinName) # Napravi ime ako ne postoji ili ako se ne slaze
  # FILTER (?mtype = 'w') . # Stavite 'n', 'w' ili 'r' ako zelite da filtrirate po tipu entiteta
}
Run it (edit query)