Abstrakt

Tento dokument je otevřenou formální normou ve smyslu § 3 odst. 9 zákona č. 106/1999 Sb., o svobodném přístupu k informacím, pro zveřejňování informací o hlasováních ze zastupitelstev, parlamentu a podobných organizací. Ukazuje, jak reprezentovat informace o hlasováních, členstvích, a dalších. Vychází z mezinárodního datového standardu Popolo. Norma je ilustrována příklady dat ze Sněmovny a zastupitelstev ve formátu JSON [[!ECMA-404]].

Přehled

Data o hlasování a o složení zastupitelstva a podobných organizací (parlamentu, soudy, atd.) v nich lze publikovat v různých úrovních detailu, podle toho co umožňují systémy poskytovatele obsahující zdrojová data a jaký je cíl zveřejňování dat.

Jednotlivé prvky datového modelu nejsou povinné a lze je rozšiřovat o další dle konkrétní aplikace.

Diagram datového schématu
Diagram datového modelu.

Specifikace

V této sekci jsou definovány jednotlivé třídy a jejich vlastnosti potřebné pro popis parlamentních a obdobných dat o hlasováních a na ně navázaných dat. Pro každou vlastnost je uveden její identifikátor, který je pro její reprezentaci použit ve všech datových formátech, její název, datový typ, popis a příklad.

Návrh (Motion)

Tato třída reprezentuje jednotlivý návrh. Návrh je "formální krok, kterým se uvádí nějaký záměr pro zvážení a rozhodnutí nějakou skupinou" (viz Wikipedia).

Návrh může být komplexní (např. sněmovní tisk, o kterém může být několik hlasování) nebo jednoduchý (návrh na usnesení, o kterém je právě jedno hlasování). Záleží na organizaci a konkrétním použití, který způsob se použije.

ID návrhu (Motion ID)

Vlastnost
id
Typ
Řetězec
Jméno
ID návrhu
Popis
Jednoznačný identifikátor návrhu v rámci daného kontextu (např. v rámci organizace).
Příklad
395/0 (Sněmovní tisk, v rámci jednoho volebního období, může se ho týkat více hlasování),
61212 (konkrétní návrh, o kterém se hlasovalo - identifikátor odvozený z čísla hlasování ve Sněmovně),
1-13 (konkrétní návrh, o kterém se hlasovalo - identifikátor odvozený z čísla zasedání a pořadového čísla hlasování v rámci zasedání zastupitelstva).

ID organizace (Organization ID)

Vlastnost
organization_id
Typ
Řetězec
Jméno
ID organizace
Popis
Jednoznačný identifikátor organizace v rámci daného kontextu (např. v rámci Sněmovny nebo zastupitelstva).
Příklad
1305 (Rozpočtový výbor Sněmovny 2017-),
financni-vybor (Finanční výbor zastupitelstva)

ID zasedání (Legislative Session ID)

Vlastnost
legislative_session_id
Typ
Řetězec
Jméno
ID zasedání
Popis
Jednoznačné označení (často číslo) zasedání či schůze v rámci daného kontextu (např. v rámci Sněmovny).
Příklad
29 (29. schůze Sněmovny),
1 (1. zasedání zastupitelstva)

Text návrhu (Text)

Vlastnost
text
Typ
Řetězec
Jméno
Text návrhu
Popis
Text návrhu.
Příklad
"Poslanecká sněmovna vyslovuje souhlas s vládním návrhem zákona, kterým se mění zákon č. 106/1999 Sb., o svobodném přístupu k informacím, ve znění pozdějších předpisů, podle sněmovního tisku 395, ve znění schváleném Poslaneckou sněmovnou."
"Zastupitelstvo schvaluje měsíční odměnu pro neuvolněné členy zastupitelstva ve výši 600 Kč."

Klasifikace (Classification)

Vlastnost
classification
Typ
Řetězec
Jméno
Klasifikace
Popis
Klasifikace návrhu.
Příklad
Návrh zákona, Návrh usnesení

Datum návrhu (Proposal Date)

Vlastnost
date
Typ
Datum
Jméno
Datum návrhu
Popis
Datum, kdy byl návrh předložen.
Příklad
2015-01-30

Požadovaná většina (Requirement)

Vlastnost
requirement
Typ
Řetězec
Jméno
Požadovaná většina
Popis
Požadovaná většina, aby byl návrh schválen.
Příklad
Nadpoloviční většina přítomných, Nadpoloviční většina všech členů, Ústavní většina

Výsledek (Result)

Vlastnost
result
Typ
Řetězec
Jméno
Výsledek
Popis
Výsledek návrhu.
Seznam hodnot. Lze použít i další hodnoty mimo tento seznam.
pass,
fail
Příklad
pass, neusnášeníschopná organizace

ID hlasování (Vote Events IDs)

Vlastnost
vote_events_ids
Typ
Řetězec
Jméno
ID hlasování (množné číslo)
Popis
ID hlasování týkající se návrhu.
Příklad
["61211", "61212"] (návrhu se týkala 2 hlasování),
["1-13-2"] (návrhu se týkalo 1 hlasování)

Vazba: Organizace (Organization)

Vlastnost
organization
Typ
Organizace
Jméno
Organizace
Popis
Organizace, v které je návrh předložen.
Příklad reprezentovaný v JSON
{
    "id": "172",
    "name": "Poslanecká sněmovna Parlamentu ČR"
}
                            
{
    "id": "1305",
    "parent_id": "172",
    "name": "Rozpočtový výbor"
}
                            

Vazba: Hlasování (Vote Events)

Vlastnost
vote_events
Typ
Hlasování
Jméno
Hlasování (množné číslo)
Popis
Hlasování, která se týkají návrhu.
Příklad reprezentovaný v JSON
[
    {
        "identifier": "61211",
    },
    {
        "identifier": "61212"
    }
]
                            

Hlasování (Vote Event)

Tato třída reprezentuje jedno hlasování v organizaci.

ID hlasování (Vote Event ID)

Vlastnost
id
Typ
Řetězec
Jméno
ID hlasování
Popis
Unikátní identifikátor hlasování v rámci kontextu, přidělený nebo vytvořený.
Příklad
61212 (číslo - id - hlasování ve Sněmovně),
1-13-2 (vytvořený identifikátor "Zasedání 1, návrh 13, hlasování 2")

ID organizace (Organization ID)

Vlastnost
organization_id
Typ
Řetězec
Jméno
ID organizace
Popis
ID organizace, v které proběhlo hlasování.
Příklad
172, financni-vybor

ID návrhu (Motion ID)

Vlastnost
motion_id
Typ
Řetězec
Jméno
ID návrhu
Popis
ID návrhu, kterého se hlasování týkalo.
Příklad
395, 1-13

ID zasedání (Legislative Session ID)

Vlastnost
legislative_session_id
Typ
Řetězec
Jméno
ID zasedání
Popis
Jednoznačné označení (často číslo) zasedání či schůze v rámci daného kontextu (např. v rámci Sněmovny), během kterého proběhlo hlasování.
Příklad
29 (29. schůze Sněmovny),
1 (1. zasedání zastupitelstva)

Klasifikace (Classification)

Vlastnost
classification
Typ
Řetězec
Jméno
Klasifikace
Popis
Klasifikace hlasování.
Příklad
závěrečné hlasování o zákoně

Datum (End Date)

Vlastnost
end_date
Typ
Date
Jméno
Datum
Popis
Datum hlasování.
Příklad
2015-08-08

Čas (Time)

Vlastnost
time
Typ
Čas
Jméno
Čas
Popis
Čas hlasování.
Příklad
10:48:00

Výsledek (Result)

Vlastnost
result
Typ
Řetězec
Jméno
Výsledek
Popis
Výsledek hlasování.
Seznam hodnot. Lze použít i další hodnoty mimo tento seznam.
pass,
fail
Příklad
pass, zmatečné

Vazba: Návrh (Motion)

Vlastnost
motion
Typ
Návrh
Jméno
Návrh
Popis
Návrh, kterého hlasování bylo součástí.
Příklad reprezentovaný v JSON
{
    "id": "395",
    "name": "Poslanecká sněmovna Parlamentu ČR"
}
                            

Vazba: Organizace (Organization)

Vlastnost
organization
Typ
Organizace
Jméno
Organizace
Popis
Organizace, v které hlasování proběhlo.
Příklad reprezentovaný v JSON
{
    "id": "172",
    "name": "Poslanecká sněmovna Parlamentu ČR"
}
                            
{
    "id": "1305",
    "parent_id": "172",
    "name": "Rozpočtový výbor"
}
                            

Vazba: Počty (Counts)

Vlastnost
counts
Typ
Počet
Jméno
Počty
Popis
Počet hlasů pro jednotlivou možnost.
Příklad reprezentovaný v JSON
{
    {
        "option": "yes",
        "value": 153
    },
    {
        "option": "abstain",
        "value": 13
    },
    {
        "option": "absent",
        "value": 34
    }
}
                            

Vazba: Hlasy (Votes)

Vlastnost
votes
Typ
Hlasy
Jméno
Hlasy
Popis
Hlasy jednotlivých volitelů.
Příklad reprezentovaný v JSON
[
    {
        "voter_id": "467",
        "option": "yes"
    },
    {
        "voter_id": "5891",
        "option": "abstain"
    }
]
                            

Počet (Count)

Tato třída reprezenuje počet hlasů pro jednu možnost v hlasování.

Možnost (Option)

Vlastnost
option
Typ
Řetězec
Jméno
Možnost
Popis
Možnost v hlasování.
Seznam hodnot. Lze použít i další hodnoty mimo tento seznam.
yes (Ano),
no (Ne),
abstain (Zdržet se),
absent (Nepřítomen),
not voting (Nehlasoval),
paired (Vypárován)
Příklad
yes, omluven

Počet (Value)

Vlastnost
value
Typ
Celé číslo
Jméno
Počet
Popis
Počet hlasů pro danou možnost.
Příklad
153

ID skupiny (Group ID)

Vlastnost
group_id
Typ
Řetězec
Jméno
ID skupiny
Popis
ID skupiny volitelů.
Příklad
6601

Vazba: Skupina (Group)

Vlastnost
group
Typ
Organizace
Jméno
Skupina
Popis
Skupina volitelů.
Příklad reprezentovaný v JSON
{ "name": "Poslanecký klub České pirátské strany" }

Hlas (Vote)

Tato třída reprezenuje jeden hlas jednoho volitele v jednom hlasování.

ID hlasu (Vote ID)

Vlastnost
id
Typ
Řetězec
Jméno
Id
Popis
Jednoznačný identifikátor jednoho hlasu, přidělený nebo odvozený.
Příklad
61212-467 (odvozený z čísla hlasování a ID volitele)

ID hlasování (Vote Event ID)

Vlastnost
vote_event_id
Typ
Řetězec
Jméno
Id hlasování
Popis
Identifikátor hlasování.
Příklad
61212, 1-13-2

ID volitele (Voter's ID)

Vlastnost
voter_id
Typ
Řetězec
Jméno
Id volitele
Popis
Identifikátor volitele.
Příklad
467, mirek-dusin

Možnost (Option)

Vlastnost
option
Typ
Řetězec
Jméno
Možnost
Popis
Zvolená možnost.
Seznam hodnot. Lze použít i další hodnoty mimo tento seznam.
yes (Ano),
no (Ne),
abstain (Zdržet se),
absent (Nepřítomen),
not voting (Nehlasoval),
paired (Vypárován)
Příklad
yes, omluven

ID skupiny (Group ID)

Vlastnost
group_id
Typ
Řetězec
Jméno
ID skupiny
Popis
ID primární politické skupiny volitele (volební strana, klub).
Příklad
6601, nezavisli

Vazba: Hlasování (Vote Event)

Vlastnost
vote_event
Typ
Hlasování
Jméno
Hlasování (jednotné číslo)
Popis
Hlasování, jehož součástí je daný hlas.
Příklad reprezentovaný v JSON
{
    "identifier": "61212"
}
                            

Vazba: Volitel (Voter)

Vlastnost
voter
Typ
Osoba
Jméno
Volitel
Popis
Volitel, který hlasoval tento hlas.
Příklad reprezentovaný v JSON
{
    "id": "467",
    "name": "Mirek Dušín"
}
                            

Vazba: Skupina (Group)

Vlastnost
group
Typ
Organizace
Jméno
Skupina
Popis
Primární skupina, jejíž členem byl volitel, který hlasoval daný hlas.
Příklad reprezentovaný v JSON
{ "name": "Poslanecký klub České pirátské strany" }

Osoba (Person)

Tato třída reprezentuje osobu.

ID osoby (Person's ID)

Vlastnost
id
Typ
Řetězec
Jméno
Id
Popis
Jednoznačný identifikátor osoby v rámci daného kontextu.
Příklad
6477, mirek-dusin

Jméno (Name)

Vlastnost
name
Typ
Řetězec
Jméno
Jméno
Popis
Celé jméno osoby.
Příklad
Mirek Dušín, Juliet Capulet

Příjmení (Family Name)

Vlastnost
family_name
Typ
Řetězec
Jméno
Příjmení
Popis
Příjmení osoby (jedno nebo více).
Příklad
Dušín, McMillan Astra

Křestní jméno (Given Name)

Vlastnost
given_nmae
Typ
Řetězec
Jméno
Křestní jméno
Popis
Křestní jméno (jedno nebo více).
Příklad
Mirek, Tricia Marie

Titul před jménem (Honorific Prefix)

Vlastnost
honorific_prefix
Typ
Řetězec
Jméno
Titul před jménem
Popis
Titul před jménem (jeden nebo více).
Příklad
Mgr.

Titul za jménem (Honorific Suffix)

Vlastnost
honorific_suffix
Typ
Řetězec
Jméno
Titul za jménem
Popis
Titul za jménem (jeden nebo více).
Příklad
Ph.D.

Pohlaví (Gender)

Vlastnost
gender
Typ
Řetězec
Jméno
Pohlaví
Popis
Pohlaví osoby.
Seznam hodnot. Lze použít i další hodnoty mimo tento seznam.
female,
male
Příklad
male, jiné

Datum narození (Date of Birth)

Vlastnost
birth_date
Typ
Datum
Jméno
Datum narození
Popis
Datum narození osoby.
Příklad
1976-02-20

Datum úmrtí (Date of Death)

Vlastnost
death_date
Typ
Datum
Jméno
Datum úmrtí
Popis
Datum úmrtí osoby.
Příklad
1994-03-03

Fotografie (Image)

Vlastnost
image
Typ
URL
Jméno
Fotografie
Popis
Fotografie osoby.
Příklad
http://www.example.com/i6477.jpg

Vazba: Členství (Membership)

Vlastnost
memberships
Typ
Členství
Jméno
Členství (množné číslo)
Popis
Členství osoby.
Příklad reprezentovaný v JSON
[
    {
        "id": "5501-172",
        "organization_id": "172",
        "name": "Poslanecká sněmovna Parlamentu ČR",
        "role": "Člen"
    }
]
                            

Vazba: Návrhy (Motions)

Vlastnost
motions
Typ
Návrhy
Jméno
Návrhy
Popis
Návrhy, které osoba předložila v rámci daného kontextu.
Příklad reprezentovaný v JSON
[
    {
        "id": "395/0"
    }
]
                            

Vazba: Hlasy (Votes)

Vlastnost
votes
Typ
Hlasy
Jméno
Hlasy
Popis
Hlasy, jak osoba hlasovala v rámci daného kontextu (např. ve Sněmovně).
Příklad reprezentovaný v JSON
[
    {
        "vote_event_id": "61212",
        "option": "yes"
    },
    {
        "vote_event_id": "61211",
        "option": "no"
    }
]
                            

Organizace (Organization)

Tato třída reprezentuje organizaci nebo skupinu osob.

ID organizace (Organization ID)

Vlastnost
id
Typ
Řetězec
Jméno
Id
Popis
Jednoznačný identifikátor organizace v rámci daného kontextu.
Příklad
172 (Sněmovna 2017-),
1305 (Rozpočtový výbor Sněmovny 2017-),
financni-vybor (Finanční výbor zastupitelstva)

Jméno (Name)

Vlastnost
name
Typ
Řetězec
Jméno
Jméno
Popis
Hlavní (preferované) jméno organizace.
Příklad
Poslanecká sněmovna Parlamentu ČR, Rozpočtový výbor

Klasifikace (Classification)

Vlastnost
classification
Typ
Řetězec
Jméno
Klasifikace
Popis
Klasifikace organizace.
Příklad
Poslanecký klub, Výbor zastupitelstva

ID nadřízené organizace (Parent ID)

Vlastnost
parent_id
Typ
Řetězec
Jméno
ID nadřízené organizace
Popis
ID nadřízené organizace, jejíž je tato součástí.
Příklad
172

Datum založení (Founding Date)

Vlastnost
founding_date
Typ
Datum
Jméno
Datum založení
Popis
Datum založení organizace.
Příklad
2017-10-22 (Ustanovení poslaneckého klubu)

Datum ukončení činnosti (Dissolution Date)

Vlastnost
dissolution_date
Typ
Datum
Jméno
Datum ukončení činnosti
Popis
Datum ukončení činnosti organizace.
Příklad
2013-08-28 (Konec funkčního období poslaneckého klubu)

Vazba: Nadřízená organizace (Parent)

Vlastnost
parent
Typ
Organizace
Jméno
Nadřízená organizace
Popis
Nadřízená organizace, jejíž je tato součástí.
Příklad reprezentovaný v JSON
[
    {
        "id": "172",
        "name": "Poslanecká sněmovna Parlamentu ČR"
    }
]
                            

Vazba: Členství (Membership)

Vlastnost
memberships
Typ
Členství
Jméno
Členství (množné číslo)
Popis
Členství v rámci organizace.
Příklad reprezentovaný v JSON
[
    {
        "id": "5501-172",
        "person_id": "5501",
        "role": "Člen"
    }
]
                            

Vazba: Návrhy (Motions)

Vlastnost
motions
Typ
Návrhy
Jméno
Návrhy
Popis
Návrhy, které byly v organizaci.
Příklad reprezentovaný v JSON
[
    {
        "id": "395/0"
    }
]
                            

Vazba: Hlasování (Vote Events)

Vlastnost
vote_events
Typ
Hlasování
Jméno
Hlasování (množné číslo)
Popis
Hlasování, která proběhla v organizaci.
Příklad reprezentovaný v JSON
[
    {
        "identifier": "61211",
    },
    {
        "identifier": "61212"
    }
]
                            

Vazba: Hlasy (Votes)

Vlastnost
votes
Typ
Hlasy
Jméno
Hlasy
Popis
Hlasy, které byly zaznamenány v organizaci.
Příklad reprezentovaný v JSON
[
    {
        "vote_event_id": "61212",
        "voter_id": "467",
        "option": "yes"
    },
    {
        "vote_event_id": "61211",
        "voter_id": "467",
        "option": "no"
    }
]
                            

Vazba: Suborganizace (Children)

Vlastnost
children
Typ
Organizace
Jméno
Suborganizace (množné číslo)
Popis
Sub-organizace, které jsou součástí dané organizace.
Příklad reprezentovaný v JSON
[
    {
        "id": "1305",
        "name": "Rozpočtový výbor"
    }
]
                            

Členství (Membership)

Tato třída reprezenuje členství osoby v organizaci.

V některých případech tato třída není nutná a lze použít přímo propojení mezi organizací a osobami (všechny osoby jsou jednoduše členy dané organizace). Tato třída se použije v případě složitější struktury, kdy je snaha zachytit např. více rolí (předseda, řadový člen), data členství (od - do), apod.

ID členství (Membership ID)

Vlastnost
id
Typ
Řetězec
Jméno
ID členství
Popis
Unikátní ID členství, přidělené nebo odvozené.
Příklad
5501-172

Popis (Label)

Vlastnost
label
Typ
Řetězec
Jméno
Popis
Popis
Popis členství osoby v organizaci.
Příklad
Člen Poslanecké sněmovny Parlamentu ČR, Zastupitel obce

Role (Role)

Vlastnost
role
Typ
Řetězec
Jméno
Role
Popis
Role v organizaci.
Příklad
člen, předseda

ID osoby (Person ID)

Vlastnost
person_id
Typ
Řetězec
Jméno
ID osoby
Popis
ID osoby, jíž se týká dané členství.
Příklad
5501, mirek-dusin

ID organizace (Organization ID)

Vlastnost
organization_id
Typ
Řetězec
Jméno
ID organizace
Popis
ID organizace, které se týká dané členství.
Příklad
172, financni-vybor

Počátek (Start Date)

Vlastnost
start_date
Typ
Datum
Jméno
Počátek
Popis
Počátek daného členství.
Příklad
2017-10-22

Konec (End Date)

Vlastnost
end_date
Typ
Datum
Jméno
Konec
Popis
Konec daného členství.
Příklad
2013-08-28

Vazba: Osoba (Person)

Vlastnost
person
Typ
Osoba
Jméno
Osoba
Popis
Osoba, jíž se týká dané členství.
Příklad reprezentovaný v JSON
{
    "id": "467",
    "name": "Mirek Dušín"
}
                            

Vazba: Organizace (Organization)

Vlastnost
organization
Typ
Organizace
Jméno
Organizace (jednotné číslo)
Popis
Organizace, které se týká dané členství.
Příklad reprezentovaný v JSON
{ "name": "Poslanecký klub České pirátské strany" }

Příklady

V této sekci jsou uvedeny příklady reprezentace jednotlivých datových struktur. Datová schémata, která jsou použita v příkladech, lze přímo použít a zahrnout do publikačních plánů, případně rozšířit dle vlastních potřeb. Doporučenými formáty pro publikaci dat z úředních desek jsou JSON a XML. Pro formát JSON jsou k dispozici příslušná schémata v jazyce JSON Schema [[!json-schema]]:

Jednoduchý návrh

Velice jednoduše zapsaný návrh, kde jsou jen základní informace. Ačkoliv všechny atributy jsou nepovinné, bez těchto základních atributů publikace dat pomalu ztrácí smysl, jelikož by je nebylo jak použít.

Složitější návrh s přidanými vlastními atributy

Do schémat si lze v případě potřeby přidávat další atributy. V následujícím příkladě jsou nad rámec normy přidány atributy eurovoc (deskriptory EUROVOCu) a zákon (číslo zákona, pod kterým byl schálený návrh nakonec zveřejněn).

V tomto případu je použit způsob, kdy jeden návrh může mít zahrnovat hlasování.

Jednoduché hlasování

Velice jednoduché hlasování může obsahovat třeba jen označení (id) hlasování a výsledek.

Komplexní hlasování

Komplexní výsledek hlasování může obsahovat velký počet informací, některé i nad rámec tohoto standardu.

Tento příklad ukazuje, jak lze zapsat hlasování ze Sněmovny (jde o toto konkrétní hlasování o novele zákona o svobodném přístupu k informacím). Pro jednoduchost, aby příklad nebyl moc dlouhý, je zde pouze naznačeno, jak lze přidat všechny počty za jednotlivé strany nebo všechny individuální hlasy poslanců (nejsou tam všechny počty za jednotlivé strany ani všechny hlasy poslanců - vždy jen 1 na ukázku).

Nad rámec tohoto dokumentu jsou v příkladě přidány atributy present (počet přítomných poslanců), needed (počet potřebných hlasů ke schválení), requirement (obdobně jako u Návrhu (Motion)), sources (zdroje informací) a motion:name (název návrhu).

Osoba a členství

Příklad zápisu osoby a jejích členství v organizacích. Tento příklad je zjednodušený (pro jednoduchost vynechává některé informace) zápis těchto dat ze Sněmovny

Organizace a členství

Příklad zápisu organizace a jejích členů. Tento příklad pro jednoduchost uvádí jen jednoho člena (namísto reálných 15)

Zároveň tento příklad ukazuje možnosti vnořování o další úrovně, zde je postupně vnořováno organization (zastupitelstvo) -> membership -> person (členové zastupitelstva) -> membership -> organization (volební strana).