Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wikidata jako zdroj #28

Open
kokes opened this issue Apr 28, 2020 · 6 comments
Open

Wikidata jako zdroj #28

kokes opened this issue Apr 28, 2020 · 6 comments

Comments

@kokes
Copy link

kokes commented Apr 28, 2020

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

@michto01
Copy link
Contributor

michto01 commented Apr 29, 2020

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!

@kokes
Copy link
Author

kokes commented Apr 29, 2020

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.

@michto01
Copy link
Contributor

michto01 commented Apr 29, 2020

@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)

@kokes
Copy link
Author

kokes commented Apr 29, 2020

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ě :-)

@michto01
Copy link
Contributor

@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 ...

@zoul zoul mentioned this issue Aug 5, 2020
@jan-tosovsky-cz
Copy link

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants