INTERLIS 2.3; /** !!------------------------------------------------------------------------------ * !! Version | wer | Änderung * !!------------------------------------------------------------------------------ * !! 2023-11-09 | sz | Ersterfassung * !!============================================================================== */ !!@ technicalContact=mailto:stefan.ziegler.de@gmail.com !!@ furtherInformation=CH_BFS_Wahlresultate_20231109.uml !!@ Name=Value MODEL CH_BFS_Wahlresultate_20231109 (de) AT "http://blog.sogeo.services" VERSION "2023-11-09" = IMPORTS Math; TOPIC Resultate = OID AS INTERLIS.UUIDOID; /** Gemeinderesultate */ CLASS Gemeinde = /** Gemeindename */ Name : MANDATORY TEXT*512; /** Gemeindenummer (aka BfS-Nummer) */ Nummer : MANDATORY 0 .. 19999; /** Wahlberechtige Personen */ wahlberechtigt : MANDATORY 0 .. 2000000; /** Wahlberechtige Männer */ Maenner : MANDATORY 0 .. 2000000; /** Wahlberechtigte Frauen */ Frauen : MANDATORY 0 .. 2000000; /** Eingelegte Wahlzettel */ eingelegte_Wahlzettel : MANDATORY 0 .. 2000000; /** Leere Wahlzettel */ leere_Wahlzettel : MANDATORY 0 .. 2000000; /** Ungültige Wahlzettel */ ungueltige_Wahlzettel : MANDATORY 0 .. 2000000; /** In Betracht gezogene Wahlzettel */ in_Betracht_Wahlzettel : MANDATORY 0 .. 2000000; !!@ name=eindeutigeGemeindenummer !!@ ilivalid.msg="Keine eindeutige Gemeindenummern: {Nummer}" UNIQUE Nummer; !!@ name=korrekteAnzahlStimmen !!@ ilivalid.msg="Eingelegte Wahlzettel ungleich Summe leere, ungültige und in Betracht gezogene Wahlzettel." MANDATORY CONSTRAINT Math.add(Math.add(leere_Wahlzettel, ungueltige_Wahlzettel), in_Betracht_Wahlzettel) == eingelegte_Wahlzettel; !!@ name=korrekteSummeMaennerFrauen !!@ ilivalid.msg="Anzahl Stimmberechtigte ungleich Summe Maenner und Frauen." MANDATORY CONSTRAINT Math.add(Maenner, Frauen) == wahlberechtigt; END Gemeinde; /** Kandidat(resultat) */ CLASS Kandidat = /** Offizielle Nummer */ Nummer : MANDATORY 0 .. 99999; /** Nachname */ Nachname : MANDATORY TEXT*512; /** Vorname */ Vorname : MANDATORY TEXT*512; /** Ist Kandidat gewählt? */ gewaehlt : MANDATORY BOOLEAN; /** Partei */ Partei : MANDATORY TEXT*512; !!@ name=eindeutigeKandidatennummer !!@ ilivalid.msg="Keine eindeutige Kandidatenummern: {Nummer}" UNIQUE Nummer; END Kandidat; /** Stimmen eines Kandidates in einer Gemeinde */ ASSOCIATION Gemeinde__Kandidatenstimmen = Gemeinde_R -- {1..*} Gemeinde; Kandidat_R -- {0..*} Kandidat; Stimmen : MANDATORY 0 .. 1000000; END Gemeinde__Kandidatenstimmen; END Resultate; END CH_BFS_Wahlresultate_20231109.