SCHEMA Allgemeine_Objekte;

REFERENCE FROM Historisierung (historisches_Objekt);

ENTITY Wochentag;
--- Attribute :
   Langtext : STRING(10);
--- Relationen :
END_ENTITY;
 
Zulässige Werte:
   (1,'Sonntag')
   (2,'Montag')
   (3,'Dienstag')
   (4,'Mittwoch')
   (5,'Donnerstag')
   (6,'Freitag')
   (7,'Samstag')

Referenziert von:
   Wochentagsganglinien_q : Eigenschaft Wochentag
   Angaben_zur_Unfallzeit : Eigenschaft Wochentag
 

ENTITY einfacher_Zeitraum
SUBTYPE OF (Zeitraum);
--- Attribute :
--- Relationen :
   hat_Startdatum : Startdatum;
   hat_Dauer : Dauer;
END_ENTITY;
 

ENTITY Startdatum;
--- Attribute :
   Jahr : OPTIONAL INTEGER;
   Monat_im_Jahr : OPTIONAL INTEGER;
   Woche_im_Jahr : OPTIONAL INTEGER;
   Tag_im_Monat : OPTIONAL INTEGER;
   vorwaerts_oder_rueckwaerts : OPTIONAL BOOLEAN;
   Woche_im_Monat : OPTIONAL INTEGER;
   Tag_in_der_Woche : OPTIONAL INTEGER;
   Stunde_am_Tag : OPTIONAL INTEGER;
   Minute_in_der_Stunde : OPTIONAL INTEGER;
   Sekunde_in_der_Minute : OPTIONAL INTEGER;
--- Relationen :
INVERSE
   von_einfachem_Zeitraum : SET [0:?] OF einfacher_Zeitraum FOR hat_Startdatum;
END_ENTITY;
 

ENTITY Dauer;
--- Attribute :
   Jahre : OPTIONAL INTEGER;
   Monate : OPTIONAL INTEGER;
   Wochen : OPTIONAL INTEGER;
   Tage : OPTIONAL INTEGER;
   Stunden : OPTIONAL INTEGER;
   Minuten : OPTIONAL INTEGER;
   Sekunden : OPTIONAL INTEGER;
--- Relationen :
INVERSE
   von_einfachem_Zeitraum : SET [0:?] OF einfacher_Zeitraum FOR hat_Dauer;
END_ENTITY;
 

ENTITY komplexer_Zeitraum
SUBTYPE OF (Zeitraum);
--- Attribute :
--- Relationen :
   hat_ersten_Zeitraum : Zeitraum;
   hat_zweiten_Zeitraum : Zeitraum;
   hat_Operator : Operator;
END_ENTITY;
 

ENTITY Operator;
--- Attribute :
   Kennung : STRING(1);
   Langtext : STRING;
--- Relationen :
END_ENTITY;
 
Zulässige Werte:
   ('+','Vereinigung')
   ('*','Durchschnitt')
   ('-','Differenz')

Referenziert von:
   komplexer_Zeitraum : Eigenschaft hat_Operator
 

ENTITY Zeitraum
ABSTRACT SUPERTYPE OF (ONEOF(einfacher_Zeitraum, komplexer_Zeitraum))
SUBTYPE OF (historisches_Objekt);
--- Attribute :
--- Relationen :
INVERSE
   erster_in : SET [0:?] OF komplexer_Zeitraum FOR hat_ersten_Zeitraum;
   zweiter_in : SET [0:?] OF komplexer_Zeitraum FOR hat_zweiten_Zeitraum;
END_ENTITY;
 

TYPE Datum = STRING(10) FIXED;
WHERE
   Datums_Format : SELF LIKE '##.##.####';
END_TYPE;
 

TYPE Uhrzeit = STRING(12);
WHERE
   Uhrzeit_Format : SELF LIKE '##:##' OR SELF LIKE '##:##:##' OR SELF LIKE '##:##:##:###'( SELF LIKE '##:##' ) OR ( SELF LIKE '##:##:##' ) OR ( SELF LIKE '##:##:##:###' );
END_TYPE;
 

TYPE Jahr = INTEGER;
WHERE
   Jahr_sinnvoll : { 1900 <= SELF <= 2099 };
END_TYPE;
 

TYPE Monat = INTEGER;
WHERE
   Monat_sinnvoll : { 1 <= SELF <= 12 };
END_TYPE;
 

TYPE Woche = INTEGER;
WHERE
   Woche_sinnvoll : { 1 <= SELF <= 53 };
END_TYPE;
 

TYPE Tag = INTEGER;
WHERE
   Monat_sinnvoll : { 1 <= SELF <= 31 };
END_TYPE;
 

TYPE Stunde = INTEGER;
WHERE
   Stunde_sinnvoll : { 1 <= SELF <= 12 };
END_TYPE;
 

TYPE Minute = INTEGER;
WHERE
   Minute_sinnvoll : { 1 <= SELF <= 12 };
END_TYPE;
 

TYPE Anzahl = INTEGER;
WHERE
   Anzahl_nicht_negativ : SELF >= 0;
END_TYPE;
 

TYPE Anzahl_zweistellig = INTEGER;
WHERE
   Anzahl_zweistellig : { 0 <= SELF <= 99 };
END_TYPE;
 

TYPE Groesse = REAL;
WHERE
   Groesse_nicht_negativ : SELF >= 0;
END_TYPE;
 

TYPE Tage = Anzahl;
END_TYPE;
 

TYPE Millisekunden = Anzahl;
END_TYPE;
 

TYPE Meter = Groesse;
END_TYPE;
 

TYPE Dezimeter = Groesse;
END_TYPE;
 

TYPE Zentimeter = Groesse;
END_TYPE;
 

TYPE Millimeter = Groesse;
END_TYPE;
 

TYPE Mikrometer = Groesse;
END_TYPE;
 

TYPE Kilometer = Groesse;
END_TYPE;
 

TYPE Meter_ueber_NN = REAL;
END_TYPE;
 

TYPE Quadratmeter = Groesse;
END_TYPE;
 

TYPE Quadratmillimeter = Groesse;
END_TYPE;
 

TYPE Tonnen = Groesse;
END_TYPE;
 

TYPE Prozent = REAL;
END_TYPE;
 

TYPE Gon = Groesse;
END_TYPE;
 

TYPE Winkel = REAL;
END_TYPE;
 

TYPE Grad = INTEGER;
WHERE
   Grad_sinnvoll : { 0 <= SELF <= 359 };
END_TYPE;
 

TYPE Newton_pro_Quadratmillimeter = Anzahl;
END_TYPE;
 

TYPE Kilonewton = Groesse;
END_TYPE;
 

TYPE Kilogramm = Groesse;
END_TYPE;
 

TYPE Kilogramm_pro_Quadratmeter = Groesse;
END_TYPE;
 

TYPE cd_pro_Quadratmeter = Anzahl;
END_TYPE;
 

TYPE Lux = Anzahl;
END_TYPE;
 

TYPE Kilowatt = Anzahl;
END_TYPE;
 

TYPE Grad_Celsius = Groesse;
END_TYPE;
 

TYPE Hektopascal = INTEGER;
WHERE
   Hektopascal_sinnvoll : { 800 <= SELF <= 1200 };
END_TYPE;
 

TYPE Stundenkilometer = Anzahl;
END_TYPE;
 

TYPE Meter_pro_Sekunde = Groesse;
WHERE
   Meter_pro_Sekunde_nicht_neg : SELF >= 0;
END_TYPE;
 

TYPE Millimeter_pro_Stunde = Groesse;
WHERE
   Millimeter_pro_Stunde_n_neg : SELF >= 0;
END_TYPE;
 

TYPE DM = Groesse;
END_TYPE;
 

TYPE Euro = Groesse;
END_TYPE;
 

TYPE Anzahl_einstellig = INTEGER;
WHERE
   Anzahl_zweistellig : { 0 <= SELF <= 9 };
END_TYPE;
 

TYPE Kubikzentimeter = Groesse;
END_TYPE;
 

TYPE Promille = Groesse;
END_TYPE;
 

TYPE Waehrung = Groesse;
END_TYPE;
 

END_SCHEMA; -- Allgemeine_Objekte