SCHEMA Unfall;

REFERENCE FROM Strassennetz (oertliche_Zuordnung);

REFERENCE FROM Administration (verwaltungstechn_Zuordnung);

REFERENCE FROM Allgemeine_Objekte (Stundenkilometer, Anzahl_zweistellig, Uhrzeit, Wochentag, Datum);

ENTITY Unfall;
--- Attribute :
--- Relationen :
    hat_Angaben_zum_Unfall: SET [1: ?] OF Angaben_zum_Unfall;
    hat_Angaben_zur_Unfallzeit: Angaben_zur_Unfallzeit;
    hat_Unfallnummer: OPTIONAL Unfallnummer;
    hat_Freiziffern: SET [1: 2] OF Freiziffern;
    hat_Angaben_zum_Unfallort: Angaben_zum_Unfallort;
    hat_Unfallumstaende: SET [1: ?] OF Unfallumstaende;
    hat_Beteiligte: OPTIONAL SET [1: ?] OF Beteiligte;
    hat_Angaben_z_Unfalleinteilung: Angaben_zur_Unfalleinteilung;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Angaben_zum_Unfall;
--- Attribute :
    Anzahl_der_Beteiligten: Anzahl_zweistellig;
    Anzahl_der_Getoeteten: Anzahl_zweistellig;
    Anzahl_Schwerverletzte: Anzahl_zweistellig;
    Anzahl_Leichtverletzte: Anzahl_zweistellig;
--- Relationen :
INVERSE
    von_Unfall: SET [0: ?] OF Unfall FOR hat_Angaben_zum_Unfall;
WHERE
    mindestens_ein_Beteiligter: Anzahl_der_Beteiligten>=1;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Angaben_zur_Unfallzeit;
--- Attribute :
    Wochentag_Unfall: OPTIONAL Wochentag;
    Datum_Unfall: Datum;
    Uhrzeit: Uhrzeit;
--- Relationen :
INVERSE
    von_Unfall: SET [0: ?] OF Unfall FOR hat_Angaben_zur_Unfallzeit;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Unfallnummer;
--- Attribute :
    Satzmerkmale: INTEGER;
    Paginier_Nummer: OPTIONAL INTEGER;
--- Relationen :
INVERSE
    von_Unfall: SET [0: ?] OF Unfall FOR hat_Unfallnummer;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Freiziffern;
--- Attribute :
    Ziffer_1: INTEGER;
    Ziffer_2: INTEGER;
--- Relationen :
INVERSE
    von_Unfall: SET [0: ?] OF Unfall FOR hat_Freiziffern;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Angaben_zum_Unfallort;
--- Attribute :
    Fahrtrichtung_WB: STRING(30);
    Ortslage: Ortslage;
--- Relationen :
    hat_Angaben_z_einmuend_Strasse: OPTIONAL SET [1: ?] OF Angaben_zur_einmuend_Strasse;
    hat_verwaltungstechn_Zuordnung: verwaltungstechn_Zuordnung_UO;
    hat_oertliche_Zuordnung: oertliche_Zuordnung_UO;
INVERSE
    von_Unfall: SET [0: ?] OF Unfall FOR hat_Angaben_zum_Unfallort;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Angaben_zur_einmuend_Strasse;
--- Attribute :
    Klasse_Nr_1: INTEGER;
    Klasse_Nr_2: INTEGER;
    Schluessel: OPTIONAL INTEGER;
--- Relationen :
INVERSE
    von_Angaben_zum_Unfallort: SET [0: ?] OF Angaben_zum_Unfallort FOR hat_Angaben_z_einmuend_Strasse;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Ortslage;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (1,'innerorts')
   (2,'außerorts')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Unfallumstaende;
--- Attribute :
    Witterungsverhaeltnisse: OPTIONAL SET [1: 3] OF Witterungsverhaeltnisse;
    Strassenzustand: SET [1: 2] OF Strassenzustand;
    Strassenbefestigung: OPTIONAL Strassenbefestigung;
    Geschwindigkeitsbegrenzung: OPTIONAL Stundenkilometer;
    Lichtzeichenanlage: OPTIONAL Lichtzeichenanlage;
    Lichtverhaeltnisse: OPTIONAL Lichtverhaeltnisse;
--- Relationen :
    hat_Charakterist_der_Unfallst: SET [2: 6] OF Charakterist_der_Unfallstelle;
    hat_Besonderheiten_d_Unfallst: OPTIONAL SET [1: ?] OF Besonderheiten_d_Unfallstelle;
INVERSE
    von_Unfall: SET [0: ?] OF Unfall FOR hat_Unfallumstaende;
WHERE
    Geschwindigkeitsbegr_sinnvoll: { 5<=Geschwindigkeitsbegrenzung<=130};
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Witterungsverhaeltnisse;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (7,'Regen')
   (8,'Schneefall/Hagel')
   (9,'Nebel/Dunst')
   (0,'Sturm')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Strassenzustand;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (0,'trocken')
   (1,'feucht')
   (2,'Glatteis')
   (3,'Schneeglätte')
   (4,'gestreut')
   (5,'Schlüpfrigkeit')
   (6,'schadhafte Fahrbahn')
   (7,'winterglatt')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Strassenbefestigung;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (5,'Beton')
   (6,'Schwarzdecke')
   (7,'Pflaster')
   (8,'sonstige befestigte Straße')
   (9,'unbefestigte Straße')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Lichtzeichenanlage;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (0,'keine LZA')
   (1,'LZA vorhanden')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Lichtverhaeltnisse;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (0,'Tageslicht')
   (1,'Dämmerung')
   (2,'Dunkelheit')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Charakterist_der_Unfallstelle;
--- Attribute :
    Charakteristik_1: Charakteristik_Unfst;
    Charakteristik_2: Charakteristik_Unfst;
    Charakteristik_3: Charakteristik_Unfst;
--- Relationen :
INVERSE
    von_Unfallumstaenden: SET [0: ?] OF Unfallumstaende FOR hat_Charakterist_der_Unfallst;
WHERE
    Charakteristik_3_mindestens_3: Charakteristik_3>=3;
    Charakteristik_2_mindestens_2: Charakteristik_2>=2;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Charakteristik_Unfst;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (1,'Kreuzung')
   (2,'Einmündung')
   (3,'Ein-/Ausfahrt Grundstück')
   (4,'Steigung/Gefälle')
   (5,'Kuppe')
   (6,'Kurve')
   (7,'frei')
   (8,'Steigung')
   (9,'Gefälle')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Besonderheiten_d_Unfallstelle;
--- Attribute :
    Besonderheit_1: Besonderheiten_Unfst;
    Besonderheit_2: Besonderheiten_Unfst;
    Besonderheit_3: Besonderheiten_Unfst;
--- Relationen :
INVERSE
    von_Unfallumstaenden: SET [0: ?] OF Unfallumstaende FOR hat_Besonderheiten_d_Unfallst;
WHERE
    Besonderheit_3_mindestens_3: Besonderheit_3>=3;
    Besonderheit_2_mindestens_2: Besonderheit_2>=2;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Besonderheiten_Unfst;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (1,'unübersichtlich')
   (2,'schiengleicher Wegübergang')
   (3,'Zebrastreifen')
   (4,'Fußgängerfurt')
   (5,'Haltestelle')
   (6,'Arbeitsstelle')
   (7,'verkehrsberuhigter Bereich')
   (8,'Querungshilfe')
   (9,'Kreisverkehr')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Beteiligte;
--- Attribute :
    Unfallursachen: SET [1: 3] OF Unfallursache;
    Art_der_Verkehrsbeteiligung: OPTIONAL Art_der_Verkehrsbeteiligung;
    Alter_Beteiligter: OPTIONAL INTEGER;
    Geschlecht_Beteiligter: Geschlecht;
    Anzahl_Fahrzeugbenutzer: Anzahl_zweistellig;
--- Relationen :
    hat_Mitfahrerangaben: SET [1: ?] OF Mitfahrerangaben;
    hat_weitergehende_Angaben: OPTIONAL SET [1: ?] OF weitergehende_Angaben;
INVERSE
    von_Unfall: SET [0: 1] OF Unfall FOR hat_Beteiligte;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Geschlecht;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (1,'w')
   (2,'m')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Mitfahrerangaben;
--- Attribute :
    getoetete_Mitfahrer: Anzahl_zweistellig;
    schwerverletzte_Mitfahrer: Anzahl_zweistellig;
    leichtverletzte_Mitfahrer: Anzahl_zweistellig;
--- Relationen :
    hat_Angaben_z_Alter_und_Geschl: SET [1: ?] OF Angaben_z_Alter_und_Geschlecht;
INVERSE
    zu_Beteiligtem: SET [0: 1] OF Beteiligte FOR hat_Mitfahrerangaben;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Angaben_z_Alter_und_Geschlecht;
--- Attribute :
    Alter_Mitfahrer: INTEGER;
    Geschlecht_Mitfahrer: Geschlecht;
--- Relationen :
INVERSE
    von_Mitfahrerangaben: SET [0: ?] OF Mitfahrerangaben FOR hat_Angaben_z_Alter_und_Geschl;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY weitergehende_Angaben;
--- Attribute :
    Kennzeichen: INTEGER;
    Ortskenntnisse: BOOLEAN;
    Auslaenderkennung: INTEGER;
    Art_der_Verletzung: Art_der_Verletzung;
    Angaben_zum_Fahrzeug: INTEGER;
--- Relationen :
INVERSE
    zu_Beteiligtem: SET [0: ?] OF Beteiligte FOR hat_weitergehende_Angaben;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Art_der_Verletzung;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (1,'getötet')
   (2,'schwerverletzt')
   (3,'leichtverletzt')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Angaben_zur_Unfalleinteilung;
--- Attribute :
    allgemeine_Unfallursache_1: allgemeine_Unfallursache;
    allgemeine_Unfallursache_2: OPTIONAL allgemeine_Unfallursache;
    Unfalltyp: INTEGER;
    Unfallart: INTEGER;
    Unfallkategorie: INTEGER;
--- Relationen :
    hat_Aufprall_auf_Hindernis: OPTIONAL Aufprall_auf_Hindernis;
INVERSE
    von_Unfall: SET [0: ?] OF Unfall FOR hat_Angaben_z_Unfalleinteilung;
WHERE
    Unfallkategorie_sinnvoll: { 1<=Unfallkategorie<=9};
    Unfallart_sinnvoll: { 0<=Unfallart<=9};
    Unfalltyp_sinnvoll: { 100<=Unfalltyp<=799};
    allgem_Unfallursache_2_mind_71: allgemeine_Unfallursache_2>=71;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Aufprall_auf_Hindernis;
--- Attribute :
    Hindernisart: Hindernisart;
    Fahrzustand: OPTIONAL Fahrzustand;
--- Relationen :
INVERSE
    von_Angaben_zur_Unfalleinteilg: SET [0: ?] OF Angaben_zur_Unfalleinteilung FOR hat_Aufprall_auf_Hindernis;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Hindernisart;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (0,'Baum')
   (1,'Mast')
   (2,'Widerlager')
   (3,'Schutzplanke')
   (4,'sonstiges Hindernis')
   (5,'kein Aufprall')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Fahrzustand;
--- Attribute :
    Kennung: INTEGER;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (0,'Fahrzeug fahrbereit')
   (1,'nicht fahrbereites Kfz')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY verwaltungstechn_Zuordnung_UO
SUBTYPE OF (verwaltungstechn_Zuordnung);
--- Attribute :
--- Relationen :
INVERSE
    von_Angaben_zum_Unfallort: SET [0: ?] OF Angaben_zum_Unfallort FOR hat_verwaltungstechn_Zuordnung;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY oertliche_Zuordnung_UO
SUBTYPE OF (oertliche_Zuordnung);
--- Attribute :
--- Relationen :
INVERSE
    von_Angaben_zum_Unfallort: SET [0: ?] OF Angaben_zum_Unfallort FOR hat_oertliche_Zuordnung;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

TYPE Unfallursache = INTEGER;
WHERE
    Unfallschluessel_gemaess_EUDAS: { 1<=SELF<=69};
END_TYPE;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

TYPE Art_der_Verkehrsbeteiligung = INTEGER;
WHERE
    Art_d_Verkbeteil_gemaess_EUDAS: { 1<=SELF<=93};
END_TYPE;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

TYPE allgemeine_Unfallursache = INTEGER;
WHERE
    allgem_Unfallursache_gem_EUDAS: { 70<=SELF<=89};
END_TYPE;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

END_SCHEMA; -- Unfall