cesko-digital / obce

Strojově čitelný seznam všech českých obcí se základními metadaty

Home Page:https://data.cesko.digital/obce/1/obce.json

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Wikidata jako zdroj

kokes opened this issue · comments

Ahoj, v rámci Wikidat (strukturované DB, která částečně pohání Wikipedii) můžete najít spoustu ozdrojovaných informací. Je tam navíc link na ostatní systémy (např. IČO), takže to jde snadno prolinkovat s daty z OVM nebo odjinud.

Asi bych tam netahal souřadnice (tam bych místo API Talks bral RUIAN napřímo, je to stabilnější zdroj), ale třeba ty erby tam jsou (link na #12), případně webovky, který jste sháněli atd. atd.

Příklad query: https://w.wiki/PKc

Trochu jsem si pohrál s Wikidaty jak navrhoval @kokes. Vůbec jsem nevěděl, že se takhle dá s wikipedií pracovat! Po jemných úpravách jsem došel k SPARQL dotazu:

SELECT DISTINCT (REPLACE(STR(?lua), "CZ", "") as ?kodObce) ?ico ?population ?area ?firstRecord ?CoA ?flag ?website (?item as ?wikiLink) WHERE {
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "cs".
    ?website  rdfs:label ?websiteLabel.
  }
  #{ ?czechMunicipality wdt:P31 wd:Q5153359 . }
  OPTIONAL {
    # Select Municipalites with propper RÚIAN
    { ?item wdt:P31 wd:Q5153359; wdt:P7606 ?lua;  . }  
    UNION
    # as some of them don't have it, select Municipalities with Czech LUA (NUTS4)
    # !!! beware that in some cases data marked as LUA are districts
    #  => select only LUA with length greater then RUIAN ("CZxxxxxx")
    { ?item wdt:P31 wd:Q5153359; wdt:P782 ?lua . FILTER (STRLEN(STR(?lua)) > 6) }
  }
  # Select Municipalities in Czech republic
  OPTIONAL { ?item wdt:P4156 ?ico . }
  OPTIONAL { ?item wdt:P1082 ?population . }
  OPTIONAL { ?item wdt:P2046 ?area . }
  OPTIONAL { ?item wdt:P1249 ?firstRecord . }
  OPTIONAL { ?item wdt:P94 ?CoA . }
  OPTIONAL { ?item wdt:P41 ?flag . }
  OPTIONAL { ?item wdt:P856 ?website . }
}
#FILTER ( ?lua = 599100 || ?lua = "CZ599140" ) #Find specific result
#OFFSET 10000
LIMIT 10000

Zachytí o trochu více obcí jelikož některé neměly kód obce ale LUA případně by se to opravdu dalo chytat tím IČO.

Ale Wikidata jsou supr!

Jj, wikidata jsou príma, jen to teda neni primární zdroj, takže bych to bral jen na věci, který odjinud snadno nedostanem (např. ty erby nebo webovky) a nestahoval bych třeba RUIAN info.

Kdyby bylo potřeba pomoct s nějakejma specifikama tamních datových modelů, tak je na to super Facebooková skupina Wikidata CS.

@kokes jasně, jak říkáš pro ty erby (#12) a webovky (#19) supr (jen nevím jak vyřešit zatím ty duplicity, ale na to časem přídu)

Hlavně sem se na tom celkem jednoduše naučil SPARQL a teď ho můžu využít i pro to OVM, když jsem nějak vstřebal jak funguje (pro #17 - nepotřebujeme zbytečně celý 30Mb archiv)

Ty duplicity tam vznikaj zpravidla tak, že máš třeba dva erby nebo dva zdroje pro webovku, takže jelikož to převádí do tabulkového formátu, tak ti to roznásobí danej záznam do n řádků. Řešil jsem to mnohokrát, nikdy uspokojivě :-)

@kokes Jo, nejvíc duplicit sem v tom query pozoroval při webových stránkách, protože některé více uvědomělé zdroje uvádějí webovky pro různé jazykové mutace. Přemýšlel jsem jestli by to nešlo alespoň GROUP BY a vrátit pole ze kterého by se pak vybrala podle heuristiky nejkratší || obsahující jazyk (před|za lomítkem) .

Jen nějak jsem nebyl schopný to zagregovat měl jsem stále BAD AGGREGATION ...

@michto01 jestli chápu tu poznámku o RÚIAN správně, pokud by se těm obcím co ve Wikidatech RÚIAN nemají, doplnil, ten SQL dotaz by to výrazně zjednodušilo. Pokud někdo dá dokupy odpovídající query, které je vylistuje, klidně jim to ve Wikidatech fixnu.