SCHEMA Verkehr;

REFERENCE FROM Strassennetz (Streckenobjekt_stat);

REFERENCE FROM Strassenzustandsdaten (ZEB_Objekt);

REFERENCE FROM Bauliche_Strasseneigenschaften (Querschnittstreifen);

REFERENCE FROM Bauwerke (Bauwerk_Netzzuordnung);

REFERENCE FROM Historisierung (historisches_Objekt);

REFERENCE FROM Allgemeine_Objekte (Zeitraum, Meter_ueber_NN, Stundenkilometer, Tonnen, Dezimeter, Meter);

REFERENCE FROM Geometrieschema (Flaechenobjekt_Modell);

ENTITY Fahrstreifen_Nummer
SUBTYPE OF (Flaechenobjekt_Modell, historisches_Objekt);
--- Attribute :
    Fahrstreifennummer: OPTIONAL INTEGER;
--- Relationen :
    auf_Querschnittstreifen: SET [1: ?] OF Querschnittstreifen;
    hat_Verkehrsrichtung: Verkehrsrichtung;
INVERSE
    von_Beschraenkung_verkehrlich: SET [0: ?] OF Beschraenkung_verkehrlich FOR gilt_fuer_Fahrstreifen;
    von_Strassenbeschr_verkehrlich: SET [0: ?] OF Strassenbeschreibung_verkehrl FOR gilt_fuer_Fahrstreifen;
    von_ZEB_Objekt: SET [0: ?] OF ZEB_Objekt FOR gilt_fuer_Fahrstreifen;
END_ENTITY;

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

ENTITY Verkehrsrichtung;
--- Attribute :
    Kennung: STRING(1);
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


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

   ('B','Verkehr in beiden Richtungen')
   ('R','Einbahnverkehr in ' ||
    'Stationierungsrichtung')
   ('G','Einbahnverkehr gegen ' ||
    'Stationierungsrichtung')

*)

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

ENTITY Anzahl_Fahrstreifen
SUBTYPE OF (Streckenobjekt_stat);
--- Attribute :
    Fahrstreifen_Gegenrichtung: OPTIONAL INTEGER;
    Fahrstreifen_beide_Richtungen: OPTIONAL INTEGER;
    Fahrstreifen_Richtung: OPTIONAL INTEGER;
    hat_Verkehrsrichtung: Verkehrsrichtung;
--- Relationen :
INVERSE
    von_Bauwerk_Netzzuordnung: SET [0: ?] OF Bauwerk_Netzzuordnung FOR hat_Anzahl_Fahrstreifen;
END_ENTITY;

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

ENTITY Fahrzeugart;
--- Attribute :
    Langtext: STRING(12);
--- Relationen :
END_ENTITY;


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

   (1,'LKW')
   (2,'BUS')
   (3,'PKW')
   (4,'Krad')
   (5,'Fahrrad')
   (6,'Fußgänger')

*)

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

ENTITY Beschraenkung_verkehrlich
ABSTRACT SUPERTYPE OF (ONEOF(Insassen_min_Anzahl , max_Geschwindigkeit , max_Hoehe , max_Breite , max_Laenge , max_Gewicht , max_Achsgewicht , Ueberholverbot , Zugangsbeschraenkung , Gesperrt ))
SUBTYPE OF (Streckenobjekt_stat);
--- Attribute :
    gilt_fuer_Verkehrsrichtung: OPTIONAL SET [1: ?] OF Verkehrsrichtung;
    gilt_fuer_Fahrzeugart: OPTIONAL SET [1: ?] OF Fahrzeugart;
--- Relationen :
    im_Zeitraum: OPTIONAL SET [1: ?] OF Zeitraum;
    gilt_fuer_Fahrstreifen: OPTIONAL SET [1: ?] OF Fahrstreifen_Nummer;
END_ENTITY;

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

ENTITY Insassen_min_Anzahl
SUBTYPE OF (Beschraenkung_verkehrlich);
--- Attribute :
    Anzahl_Insassen: INTEGER;
--- Relationen :
END_ENTITY;

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

ENTITY Ueberholverbot
SUBTYPE OF (Beschraenkung_verkehrlich);
--- Attribute :
    Ueberholverbot: BOOLEAN;
--- Relationen :
END_ENTITY;

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

ENTITY max_Hoehe
SUBTYPE OF (Beschraenkung_verkehrlich, historisches_Objekt);
--- Attribute :
    Fahrzeughoehe: Dezimeter;
--- Relationen :
END_ENTITY;

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

ENTITY max_Breite
SUBTYPE OF (Beschraenkung_verkehrlich);
--- Attribute :
    Fahrzeugbreite: Dezimeter;
--- Relationen :
END_ENTITY;

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

ENTITY max_Laenge
SUBTYPE OF (Beschraenkung_verkehrlich);
--- Attribute :
    max_Laenge: Meter;
--- Relationen :
END_ENTITY;

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

ENTITY max_Gewicht
SUBTYPE OF (Beschraenkung_verkehrlich);
--- Attribute :
    max_Fahrzeuggewicht: Tonnen;
--- Relationen :
END_ENTITY;

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

ENTITY max_Achsgewicht
SUBTYPE OF (Beschraenkung_verkehrlich);
--- Attribute :
    max_Achsgewicht: Tonnen;
--- Relationen :
END_ENTITY;

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

ENTITY max_Geschwindigkeit
SUBTYPE OF (Beschraenkung_verkehrlich);
--- Attribute :
    max_kmh: Stundenkilometer;
--- Relationen :
END_ENTITY;

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

ENTITY Zugangsbeschraenkung
SUBTYPE OF (Beschraenkung_verkehrlich);
--- Attribute :
    Zugangsbeschraenkung: BOOLEAN;
--- Relationen :
END_ENTITY;

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

ENTITY Gesperrt
SUBTYPE OF (Beschraenkung_verkehrlich);
--- Attribute :
    Sperrung: BOOLEAN;
--- Relationen :
END_ENTITY;

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

ENTITY Strassenbeschreibung_verkehrl
ABSTRACT SUPERTYPE OF (ONEOF(Fkt_d_Verb_im_Knotenpktber , Bergpass , Verkehrsbedeutung , Spur_fuer_Rettungsfahrzeuge , Strassenfunktion , Aussichtswert , gebuehrenpflichtig , Staugefahr , Durchschnittsgeschwindigkeit ))
SUBTYPE OF (Streckenobjekt_stat);
--- Attribute :
    gilt_fuer_Verkehrsrichtung: OPTIONAL SET [1: ?] OF Verkehrsrichtung;
    gilt_fuer_Fahrzeugart: OPTIONAL SET [1: ?] OF Fahrzeugart;
--- Relationen :
    im_Zeitraum: OPTIONAL SET [1: ?] OF Zeitraum;
    gilt_fuer_Fahrstreifen: OPTIONAL SET [1: ?] OF Fahrstreifen_Nummer;
END_ENTITY;

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

ENTITY Fkt_d_Verb_im_Knotenpktber
SUBTYPE OF (Strassenbeschreibung_verkehrl, historisches_Objekt);
--- Attribute :
    Funktion: Tab_Funktion;
--- Relationen :
END_ENTITY;

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

ENTITY Tab_Funktion;
--- Attribute :
    Kennung: STRING(2) FIXED;
    Langtext: STRING;
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


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

   ('01','Ausfahrt')
   ('02','Einfahrt')
   ('03','Parallelfahrbahn (baulich getrennt)')
   ('04','Verflechtungsspur')
   ('05','Verzögerungsspur')
   ('06','Beschleunigungsspur')

*)

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

ENTITY Bergpass
SUBTYPE OF (Strassenbeschreibung_verkehrl);
--- Attribute :
    Hoehe_ueber_NN: OPTIONAL Meter_ueber_NN;
    Anhaenger: OPTIONAL BOOLEAN;
--- Relationen :
END_ENTITY;

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

ENTITY Verkehrsbedeutung
SUBTYPE OF (Strassenbeschreibung_verkehrl);
--- Attribute :
    Verkehrsbedeutung: STRING(30);
--- Relationen :
END_ENTITY;

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

ENTITY Spur_fuer_Rettungsfahrzeuge
SUBTYPE OF (Strassenbeschreibung_verkehrl);
--- Attribute :
    Spur_fuer_Rettungsfahrzeuge: BOOLEAN;
--- Relationen :
END_ENTITY;

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

ENTITY Strassenfunktion
SUBTYPE OF (Strassenbeschreibung_verkehrl);
--- Attribute :
    Strassenfunktion: STRING(80);
--- Relationen :
END_ENTITY;

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

ENTITY Aussichtswert
SUBTYPE OF (Strassenbeschreibung_verkehrl);
--- Attribute :
    Aussichtswert: BOOLEAN;
--- Relationen :
END_ENTITY;

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

ENTITY Staugefahr
SUBTYPE OF (Strassenbeschreibung_verkehrl);
--- Attribute :
    Staugefahr: BOOLEAN;
--- Relationen :
END_ENTITY;

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

ENTITY gebuehrenpflichtig
SUBTYPE OF (Strassenbeschreibung_verkehrl);
--- Attribute :
    Gebuehrenpflicht: BOOLEAN;
--- Relationen :
END_ENTITY;

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

ENTITY Durchschnittsgeschwindigkeit
SUBTYPE OF (Strassenbeschreibung_verkehrl);
--- Attribute :
    km_h: Stundenkilometer;
--- Relationen :
END_ENTITY;

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

END_SCHEMA; -- Verkehr