V rokoch 2017 až 2019 realizoval ÚSV ROS projekt "Podpora partnerstva a dialógu v oblasti participatívnej tvorby verejných politík". Jeho súčasťou bol aj projekt participatívneho rozpočtu pre Mesto Hlohovec, na ktorom spolupracoval aj Mestský úrad v Hlohovci a OZ Utopia. Vrámci projektu participatívneho rozpočtu boli realizované aj aktivity ohľadom zverejňovania otvorených údajov. Zverejňovanie započalo plánom, ktorého súčasťou bolo spustenie katalógu otvorených údajov a následné postupné pridávanie automatizovane zverejňovaných datasetov (autonmatizovane = pravidelnou replikáciou z back-end systému).
Medzi zverejnenými údajmi je aj programový rozpočet mesta, keďže je dôležitým vstupom pre participáciu občanov. A aby sme občanom uľahčili preskúmavanie rozpočtu, boli pripravené aj jeho vizualizácie:
Základný prehľad rozpočtu sú plánované výdavky zoskupené podľa aktivity formou rozklikávacieho rozpočtu alebo tzv. "sankey diagramu":
Podľa použitej klasifikácie je možné jednotlivé položky rozpočtu rozkliknúť do nižšej úrovne a získať tak prehľad o tom, ako sa celkový rozpočet "rozmieňa" na menšie časti. Pre zvolený pohľad je potom možné aj stiahnuť údaje vo formáte CSV. (Pozor, toto sú sumárne údaje pre práve zobrazenú vizualizáciu. Po získaní základného prehľadu sa potom občan môže "vrhnúť" aj na úplne presné dáta stiahnuté rovno z portálu mesta, kde sú údaje s presnosťou na konkrétne položky.)
Okrem klasifikácie podľa aktivity sú k dispozícii aj rôzne ďalšie, napr. ekonomická klasifikácia, stačí si vybrať vľavo v menu:
A po rozkliknutí môžeme ísť hlbšie:
- bežné výdavky:
- tovary a služby:
Pár technických detailov:
- na vizualizáciu je použitá služba OpenSpending.org
- údaje mesta vo formáte JSON sú skriptom sťahované, rozdelené po rokoch a konvertované do formátu Fiscal Data Package (CSV so samotnými údajmi a JSON s metaúdajmi a mapovaním)
- po importe sú pripravené základné vizualizácie (viď linky v úvode), každý si však môže dáta preklikať "po svojom" a pripraviť aj iné typy vizualizácií
- vytvorené vizualizácie je potom možné aj ďalej zdieľať či vkladať do ďalších stránok
A čo ďalej? Určite udržiavať vizualizácie aktuálne a prípadne priniesť viac. Napr. využiť to, že programové rozpočty už zverejňuje viac obcí a teda spustiť klon služby CityVizor.cz aj pre Slovensko (CityVizor je Open Source).
Peter Hanečák
Keďže sa v SR v súčasnosti rozbieha činnosť dátových kancelárií a dátových kurátorov (viď povedzme položku "Zriadenie dátovej kancelárie vo verejnej správe" v Národnáňej koncepcii informatizácie verejnej správy (NKIVS)), tak o.i. vyvstala drobná praktická otázka, čo si má čerstvý nový dátový kurátor, alebo laik, predstaviť pod pojmom "čistenie dát"? Pojem to je vlastne veľmi dôležitý, keďže konzument údajov vie málokedy použiť údaje rovno v takej forme, v akej ich získal. Údaje totiž treba takmer vždy skonvertovať, prečistiť, spárovať a pod., aj preto idú mnohé štátne či súkromné investície to tzv. ETL nástrojov (ETL = Extract Transform Load), pričom práve krok "transform" má na starosti o.i. čistenie dát.
Čistenie obnáša mnohé veci, od jednoduchých (konverzie znakovej sady alebo použitých rozdeľovacích znakov, atď.) až po zložité (detekcia duplicít a preklepov, ich následná oprava, prepojenie údajov z jedného zdroja s údajmi z iného zdroja, atď.). Na začiatok si ukážme zopár jednoduchých príkladov. A aby príspevok nebol až taký "suchý", ilustrujem ich na otvorených údajoch z Elektronického kontraktačného systému (EKS), ktorých kópiu si môžete zadovážiť napr. na adrese https://github.com/OpenDataSk/eks-od-data .
Príklad EKS: ZoznamZakaziekReport_2018-12_.csv
Obsah súboru vyzerá nasledovne (prvé tri riadky):
"IdentifikatorZakazky","ZakazkaUrl","StavZakazky","PouzityPostup","ObjednavatelDruh","ObjednavatelObchodneMeno","ObjednavatelICO","ObjednavatelStat","ObjednavatelObec","ObjednavatelPSC","ObjednavatelUlica","DatumVyhlasenia","DatumZazmluvnenia","OpisnyFormularNazov","OpisnyFormularKlucoveSlova","OpisnyFormularCpv","OpisnyFormularDruh","OpisnyFormularKategoriaSluzieb","OpisnyFormularFunkcnaSpecifikacia","OpisnyFormularTechnickaSpecifikaciaTextova","OpisnyFormularTechnickaSpecifikaciaCiselna","MiestoPlneniaStat","MiestoPlneniaKraj","MiestoPlneniaOkres","MiestoPlneniaObec","MiestoPlneniaUlica","LehotaPlneniaOd","LehotaPlneniaDo","LehotaPlneniaPresne","MnozstvoJednotka","MnozstvoHodnota","MaximalnaVyskaZdrojov","ZmluvnyVztah","FinancovanieEU","HodnotiaceKriterium","LehotaNaPredkladaniePonuk","PocetNotifikovanychDodavatelov","VstupnaCena","PocetSutaziacich","PocetPredlozenychPonuk","ZaciatokAukcie","TrvanieAukcie_Minut","PredlzovanieAukcie_Minut","ProtokolOPriebehuZadavaniaZakazky","Priloha_c1_ZmluvnyFormularZakazky","Priloha_c2_VyslednePoradieDodavatelov","Priloha_c3_Zmluva","Priloha_c4A_ZaznamOSystemovychUdalostiachZakazky","Priloha_c4B_ZaznamOSystemovychUdalostiachElektronickejAukcie","AnonymnyZmluvnyFormularZakazky","ObjednavkovyFormularZakazky", "Z201850369","https://portal.eks.sk/SpravaZakaziek/Zakazky/Detail/213294","zazmluvnená","§ 110 ZVO","§ 7 ods. 1 písm. d)","Národný onkologický ústav","00165336","Slovenská republika","Bratislava","83110","Klenová 1","21.11.2018 11:48:06","6.12.2018 12:10:00","Lieky ATC skupiny - N02BB02 Metamizol 500mg/ml, 1000mg/2ml","Metamizol 500mg/ml","33661200-3 Analgetiká; 60000000-8 Dopravné služby (bez prepravy odpadu)","Tovar; Služba","","Analgetiká","Technické vlastnosti: ATC skupina, Hodnota / charakteristika: N02BB02; Technické vlastnosti: názov účinnej látky, Hodnota / charakteristika: Metamizol; Technické vlastnosti: cesta podania, Hodnota / charakteristika: parenterálne; Technické vlastnosti: lieková forma, Hodnota / charakteristika: Injekčný roztok; Technické vlastnosti: doplnok, Hodnota / charakteristika: sol inj 10x2 ml/1000 mg","Technické vlastnosti: celkový obsah liečiva v celkovom objeme roztoku, Jednotka: mg, Minimum: , Maximum: , Presná hodnota: 1000; Technické vlastnosti: celkový objem roztoku, Jednotka: ml, Minimum: , Maximum: , Presná hodnota: 2","Slovenská republika","Bratislavský","Bratislava III","Bratislava - mestská časť Nové Mesto","Klenová 1","","","","bal","750,0000","2706,820","Rámcová dohoda","False","Cena bez DPH","6.12.2018 9:32:00","265","2706,820","3","181","6.12.2018 9:47:00","20","2","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=f050ab3a-0530-4034-a593-bd3d8b8ead69","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=1ef5f3f1-f214-420a-9657-89e377635bd3","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=442e98da-0b27-41cc-8df2-cae803bdf475","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=b8f00118-89f5-4ec2-aadd-845437332e27","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=534fde1f-e471-4711-bef1-2959b09ed466","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=224a89cc-11c7-4b9e-9b2e-aaaab68c5cde","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=e3e4c60e-d064-4c0f-b018-3b9fce8c89db","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=64d2fc59-ac09-4e0e-bf0c-cb8dfc55d49f", "Z201851359","https://portal.eks.sk/SpravaZakaziek/Zakazky/Detail/214284","zazmluvnená","§ 110 ZVO","§ 7 ods. 1 písm. a)","Okresný súd Nové Mesto nad Váhom","42025524","Slovenská republika","Nové Mesto nad Váhom","91519","Hviezdoslavova 37","21.11.2018 15:12:43","3.12.2018 15:44:00","Zabezpečenie stravovania zamestnancov prostredníctvom stravných lístkov.","Stravné poukážky, dodanie stravných poukážok, zabezpečenie stravovania v zmluvných stravovacích zariadeniach","30199770-8 Stravné poukážky; 55520000-1 Služby hromadného stravovania; 60000000-8 Dopravné služby (bez prepravy odpadu)","Tovar; Služba","","Zabezpečenie stravovania zamestnancov objednávateľa formou stravných poukážok vo vybraných stravovacích zariadeniach zmluvných partnerov dodávateľa, ktorí sú oprávnení tieto služby poskytovať.; Poskytovanie predmetu zákazky musí byť v súlade s ustanovením §152 ods.2 zák. č. 311/2011 Z.z. Zákonníka práce v znení neskorších predpisov.; Počas platnosti zmluvy je dodávateľ povinný mať uzatvorené zmluvy na využitie stravných poukážok s minimálne 10 zariadeniami v sídle verejného obstarávateľa. V prípade, že dodávateľ danú podmienku počas účinnosti zmluvy nebude spĺnať je verejný obstarávateľ oprávnený od zmluvy odstúpiť. ","Technické vlastnosti: Stravná poukážka obsahuje, Hodnota / charakteristika: názov a logo dodávateľa; Technické vlastnosti: Stravná poukážka obsahuje, Hodnota / charakteristika: ochranné prvky proti falšovaniu používané pre tlač cenných papierov; Technické vlastnosti: Stravná poukážka obsahuje, Hodnota / charakteristika: rok platnosti stravnej poukážky; Technické vlastnosti: Stravná poukážka obsahuje, Hodnota / charakteristika: nominálnu hodnotu stravnej poukážky","Technické vlastnosti: Nominálna hodnota jednej stravnej poukážky, Jednotka: €, Minimum: , Maximum: , Presná hodnota: 4,80; Technické vlastnosti: Predpokladané množstvo odobratých stravných poukážok, Jednotka: ks, Minimum: 40000, Maximum: 41666, Presná hodnota: ","Slovenská republika","Trenčiansky","Nové Mesto nad Váhom","Nové Mesto nad Váhom","Hviezdoslavova 37","1.1.2019 15:04:00","31.12.2021 15:04:00","","ks","41666,0000","199999,000","Zmluva o poskytovaní služieb","False","Cena bez DPH","3.12.2018 15:06:00","545","199999,000","5","8","3.12.2018 15:21:00","20","2","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=26e3343a-bad5-405b-a492-1c0d3bbba5b1","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=e8b6daec-b993-4539-8d33-701613d72962","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=27cc2092-4223-4532-ae03-ad59a978048e","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=0391480a-65bf-4ab3-9ce7-12c97dbdebab","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=afd84937-dae0-4a7b-a288-c0c8b4e23262","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=da8f5cb6-ceaf-4f09-aab6-5d8123b93db1","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=0f897ab4-6962-4c06-8405-6dc5598cfa95","https://portal.eks.sk/Zakazky/StiahniZmluvnuPrilohuZakazky?correlationId=ef3690e6-f63c-4fb7-924b-dcb2cbd2f375", ...
Prvý riadok je hlavička, vďaka ktorej máme lepší prehľad, ktorý stĺpec čo obsahuje. Super.
Ďalšie dva riadky sú príkladom obsahu. Je v nich však niekoľko položiek, ktoré síce nie sú zlé (sú v súlade so štandardom RFC 4180), ale mierne komplikujú ďalšiu prácu s údajmi (ak ich chcem povedzme spracúvať v Python skripte a neskôr v databáze):
položka | EKS údaj | čo potrebujem v Python-e resp. neskôr v DB | poznámka |
---|---|---|---|
DatumVyhlasenia | "21.11.2018 11:48:06" | 21.11.2018T11:48:06 | o.i. konvertujeme formát dátumu, aby bol dátum v tzv. ISO formáte a teda vedel som ho použiť priamo ako premennú typu 'datetime' (t.j. dátum s časom) |
MnozstvoHodnota | "750,0000" | 750.0 | o.i. konvertujeme čiarku (používaná podľa slovenského pravopisu) na bodku (programátorská konvencia), aby bola hodnota priamo použiteľná ako premenná typu 'float' (t.j. desatinné číslo) |
PocetNotifikovanychDodavatelov | "250" | 250 | odstraňujeme úvodzovky, aby bola hodnota priamo použiteľná ako premenná typu 'integer' (t.j. celé číslo) |
Príklad, ako potom vyzerá reálny (a nie úplne dokonalý) Python skript, ktorý také čistenie robí, možno nájsť tu:
https://github.com/OpenDataSk/eks-od-datastore-pusher/blob/master/datastore_updater.py#L291,L331
Úryvok:
def convert_date(eks_date): """Convert date used by EKS to ISO date, e.g.: '5.3.2018 9:00:00' -> '2018-03-05T09:00:00' """ if len(eks_date) <= 0: return None date = datetime.datetime.strptime(eks_date, '%d.%m.%Y %H:%M:%S') return date.isoformat()
(Kód je k dispozícii ako Open Source - BSD licencia, takže ho môžete kľudne použiť ďalej, či už celý alebo po kúskoch.)
A čo si z tohto príkladu môžeme odniesť? V tomto jednoduchom prípade až tak veľmi nevadí, ak by X (X > 0) konzumentov údajov robilo dokola tie isté drobné "čistiace" operácie. Mnohí by sa ale aj tak potešili, ak by časť týchto operácií robiť nemuseli. To by sa dalo, v tomto konkrétnom prípade, dosiahnuť drobnými úpravami v spôsobe, akým EKS zverejňuje údaje (všetko v súlade so štandardom):
- používať úvodzovky len keď naozaj treba, t.j. tam, kde sú v hodnote použité čiarky (t.j. nie v číslach a krátkych reťazcoch, a pod.)
- v desatinných číslach používať bodku (nie čiarku) ako oddeľovač desatinných miest
Význam toho, ako presne sú údaje publikované stúpa s tým, ako veľmi a ako zložito treba údaje čistiť. Čím je čistenie zložitejšie, tým konzumenti údajov viac uvítajú úpravy zverejňovania, ktoré čistenie eliminujú alebo uľahčia. A tiež, čím viac je konzumentov (čím väčšie vyššie spomenuté X), tým väčší dopad majú aj malé zmeny.
Toť teda krátke priblíženie pre dátových kurátorov alebo aj laikov, ktorí by neskôr mohli zlepšiť zverejňovanie niektorých otvorených údajov.
(Niektoré zložitejšie prípady popíšem možno nabudúce.)
Peter Hanečák, 19.12.2018
obrázok: NASA: "Goddard Engineers Prepare Hubble's New Batteries"
V nadväznosti na ostatný blog post zo série "Porovnania s inými" (za jún 2015) dnes ponúkam po dvoch rokoch aktualizáciu porovnania Slovenska s niekoľkými ďalšími krajinami pokiaľ ide o počet zverejnených datasetov. Počty datasetov nie je úplne presná či všeobjímajúca metrika, ale ako čiastkový indikátor poslúži (nie je dataset ako dataset, niektoré sa dajú použiť viac a na dôležitejšie veci, iné menej, ale to sa tiež ťažko meria - ale ak datasetov pribúda, zvyčajne je to dobre). Zaujímavý je teda najmä vývoj v čase a tak v tomto porovnaní pribudol graf.
Porovnám konkrétne Slovensko (SR), Rakúsko (AT), Bulharsko (BG), Maďarsko (HU) a Rumunsko (RO) čo do počtu zverejnených datasetov a ich licencií (k 15.6.2017):
SR | AT | BG | HU | RO | |
---|---|---|---|---|---|
počet datasetov | 1136 | 2399 | 2193 | 52 | 987 |
počet zdrojov (resources) | 5320 | 9533 | 5772 | 108 | 20218 |
počet datasetov s otvorenou licenciou | 1017 (89.5%) | 1957 (81.6%) | 1882 (85.8%) | 7 (13.5%) | 850 (86.1%) |
počet datasetov s nie otvorenou licenciou | 119 | 442 | 311 | 45 | 137 |
"Živá" verzia grafu (s priebežne aktualizovanými údajmi) je k dispozícii na adrese https://opendatask.gitlab.io/viz-data_catalog_stats-dataset_count-sk_comparison/ .
Pozorovania
- (nové) Bulharsko spustilo svoj katalóg s prvým datasetom v máji 2015 (viď Bulgarian government publishes first open datasets). Začiatky boli pomalšie, o rok neskôr však zvýšili tempo pridávania datasetov a udržujú ho na vyššej úrovni než SR.
- (nové) Maďarsko naďalej nemá oficiálny dátový portál, a tak monitorujem aspoň ten, ktorý spustili dobrovoľníci a neziskové organizácie. Keďže ho prevádzkuje komunita, obsahuje informácie nie len o vládnych, ale aj komunitných zdrojoch údajov.
- Rumunsko a SR udržiavajú zhruba podobnú úroveň: v oboch portáloch pribúdajú datasety priebežne, zhruba rovnakým tempom, v SR nastal väčší skok smerom hore zhruba v novembri 2015, v Rumunsku v septembri 2016.
- V SR "hladina vody stúpa" naďalej, veľký podiel má na tom má stále aktivita Štatistického úradu, ktorý má aktuálne na konte 606 datasetov (viď https://data.gov.sk/dataset?organization=f4787c6f-9fa3-406c-b8d5-d374f1e1f2d3).
- V Rakúsku taktiež naďalej stúpa počet datasetov a drží sa na prvej priečke z porovnávaných (aj napriek nejakému upratovaniu vo februári, kedy ubudlo zhruba 500 datasetov).
- Počty datasetov s otvorenou licenciou sa vo väčšine prípadov držia vcelku vysoko (medzi 80 a 90%), čo je dôležité kvôli ich reálnemu použitiu ("Whoever wants to use existing data needs to know whether they have the right to do so", viď The state of open licensing in 2017).
- Oproti ostatnému porovnaniu vypadli údaje za ČR, Taliansko a UK, ktorých zber mi prestal fungovať (či už kvôli zmene technológie portálu alebo kvôli chybám v SSL certifikátoch).
- V ČR zhruba v čase písania ostatného porovnania (jún 2015) spustili novú verziu katalógu otvorených údajov z ktorej zatiaľ údaje o počtoch cez API zbierať neviem. Katalóg eviduje rádovo 130 tisíc datasetov, drvivú väčšinu z nich publikuje Český úřad zeměměřický a katastrální.
Možné vylepšenia tohto porovnania
- Bolo by zaujímavé porovnať aj zastúpenie použitých formátov a API. Je tam však veľká variabilita a navyše aj niektoré CSV je lepšie ako iné CSV a pod. Toť téma na ďalšie skúmanie.
- Bolo by zaujímavé vyčísľovať aj počty aplikácií postavených nad dátami. Takéto údaje však zatiaľ ucelene vedené nie sú.
Zdroje a metodika
Zdrojmi údajov sú API jednotlivých data katalógov:
- http://data.gov.sk/sk/api/
- http://www.data.gv.at/katalog/api
- http://opendata.government.bg/api/
- http://opendata.hu/api/
- http://data.gov.ro/api/
Počty položiek sú získané jednoduchými "list
" a "search
" dotazmi, bez filtrovania či vyhodnocovania.
Čo je a čo nie je "otvorená licencia" je na rozhodnutí kurátorov daných katalógov. Dôležité totiž je, či a ako vyplnili položku "isopen
" k jednotlivým datasetom. Pre potreby tohto porovnania je "isopen=true" brané ako "otvorená licencia" a zbytok ako "nie otvorená licencia".
Aktuálne údaje vo forme CSV si môžete stiahnuť na adrese https://gitlab.com/opendatask/data-catalog-stats . Kód harvestera údajov je na adrese https://gitlab.com/opendatask/harvester-data-catalog-stats a kód vizualizácie na https://gitlab.com/opendatask/viz-data_catalog_stats-dataset_count-sk_comparison . Návrhy či pull-requesty s vylepšeniami sú vítané.
Predchádzajúce vydania
15.11.2016 sme vypustili novú verziu Open Data Node (ODN) 1.6.0 . Tzv. Release Notes sú dostupné na adrese:
Release obsahuje drobné nové funkcie (tzv. DPU pre ETL časť: e-t-excelToCSV na extrakciu údajov z XLS súborov a q-sparqlAsk na validáciu Linked Data) a niekoľko bugfixov (v takmer všetkých častiach ODN, prebraté z upstream projektov).
Naposledy som o Open Data Node (ODN) v tejto Wiki písal 1.3.2016 o verzii 1.2.4 . Odvtedy sme vypustili aj ďalšie nové verzie:
Použitie ODN a ďalších výstupov projektu COMSODE vrámci data.gov.sk vyzerá pomohlo SR v hodnotení EUDP, takže dúfam, že ODN si čoskoro nájde uplatnenie aj v ďalších krajinách.
Peter Hanečák, 13.10.2016
1.3.2016 sme vypustili novú verziu Open Data Node (ODN) 1.2.4 . Tzv. Release Notes sú dostupné na adrese:
Popri tom sme zverejnili aj ukážkovú aplikáciu na harvestovanie datasetov cez API, viď:
- blog post: http://opendatanode.org/efficient-dataset-replication-with-odn/
- kód: https://github.com/OpenDataNode/poc-harvester-app/
Keďže báza pre API je v ODN aj data.gov.sk rovnaká, t.j. CKAN Data Store, tak možno ukážkovú aplikáciu kombinovať s tým, čo je popísané v týchto blogoch: