SCHEMA Entwurf;

REFERENCE FROM Strassennetz (Knotenpunktsform, Netzknoten_abstrakt);

REFERENCE FROM Ingenieurbauwerke (Bauwerkseinzelheiten);

REFERENCE FROM Ausstattung (Schutz_und_Leiteinrichtungen, Fahrbahnmarkierungen, Beschilderung_Lichtsignalanl);

REFERENCE FROM Geometrieschema (Linienobjekt_Modell, Punktobjekt_Modell);

REFERENCE FROM Allgemeine_Objekte (Stundenkilometer, Winkel, Groesse, Meter);

REFERENCE FROM Allgemeine_Geometrieobjekte (allgemeines_Flaechenobjekt, allgemeines_Linienobjekt, allgemeines_Punktobjekt, Dreieck);

REFERENCE FROM Kataster (ALKIS_Objekt_Flaeche, ALKIS_Objekt_Linie, ALKIS_Objekt_Punkt);

ENTITY Trasse
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    hat_Netzknoten: OPTIONAL Netzknoten_abstrakt;
    hat_Achse: OPTIONAL SET [1: ?] OF Achse;
    hat_Entwurfsparameter: OPTIONAL SET [1: ?] OF Entwurfsparameter;
    hat_Laengsschnitt: OPTIONAL SET [1: ?] OF Laengsschnitt;
    hat_Trassenkoerper: OPTIONAL SET [1: ?] OF Trassenkoerper;
    hat_Sichtweiten: OPTIONAL SET [1: ?] OF Sichtweiten;
END_ENTITY;

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

ENTITY Achse
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    hat_Achselement: LIST [1: ?] OF Achselement;
INVERSE
    gehoert_zu_Trasse: SET [0: ?] OF Trasse FOR hat_Achse;
    hat_Laengsschnitt: SET [0: ?] OF Laengsschnitt FOR gehoert_zu_Achse;
    hat_Trassenkoerper: SET [0: ?] OF Trassenkoerper FOR gehoert_zu_Achse;
    hat_Sichtweiten: SET [0: ?] OF Sichtweiten FOR gehoert_zu_Achse;
    von_Kreuzungs_o_Einmuend_plang: SET [0: ?] OF Kreuzungs_o_Einmuendungsplang FOR hat_Achse;
END_ENTITY;

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

ENTITY Achselement
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
    Elementtyp: Achselementtyp;
    Anfangsstation_rechnerisch: Meter;
    Verwaltungsstation_Betriebskm: Groesse;
    Laenge: Meter;
    Richtung: Winkel;
    Parameter: REAL(16);
    Radius_zu_Beginn: Meter;
    Radius_am_Ende: Meter;
--- Relationen :
    beginnt_bei_Achshauptpunkt: Achshauptpunkt;
    endet_bei_Achshauptpunkt: Achshauptpunkt;
INVERSE
    gehoert_zu_Achse: SET [0: 1] OF Achse FOR hat_Achselement;
END_ENTITY;

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

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


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

   (0,'reserviert')
   (1,'Gerade')
   (2,'Kreisbogen, tangentialer Abschluß')
   (3,'Kreisbogen, 3 Punkte')
   (4,'Kreisbogen aus Mittelpunkt und Radius')
   (5,'Spline, tangentialer Abschluß')
   (6,'Spline')
   (7,'Spline-Ende, tangentialer Abschluß')
   (8,'Spline-Ende')
   (9,'Spline-Ende und -Anfang mit '+
    'Knickpunkt Spline')
   (10,'reserviert')
   (11,'reserviert')
   (12,'Klothoide')
   (13,'quadratische Parabel')
   (14,'kubische Parabel, langer Ast links')
   (15,'kubische Parabel, langer Ast rechts')

*)

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

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


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

   (0,'reserviert')
   (1,'Gerade')
   (2,'Kreisbogen, tangential')
   (11,'Klothoide')

*)

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

ENTITY Achshauptpunkt
SUBTYPE OF (Punktobjekt_Modell);
--- Attribute :
--- Relationen :
INVERSE
    Beginn_von_Achselement: SET [0: ?] OF Achselement FOR beginnt_bei_Achshauptpunkt;
    Ende_von_Achselement: SET [0: ?] OF Achselement FOR endet_bei_Achshauptpunkt;
    zu_Kreuzungs_o_Einmuendplanung: SET [0: ?] OF Kreuzungs_o_Einmuendungsplang FOR hat_Achshauptpunkt;
END_ENTITY;

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

ENTITY Kreuzungs_o_Einmuendungsplang
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
    Netzknotennummer: STRING(7);
    Knotenpunktsform: Knotenpunktsform;
--- Relationen :
    hat_Achse: SET [1: ?] OF Achse;
    hat_DGM: OPTIONAL DGM;
    hat_Achshauptpunkt: Achshauptpunkt;
END_ENTITY;

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

ENTITY DGM
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    hat_Dreiecke: OPTIONAL SET [1: ?] OF Dreieck;
INVERSE
    gehoert_zu_Kreuz_o_Einmplang: SET [0: ?] OF Kreuzungs_o_Einmuendungsplang FOR hat_DGM;
    gehoert_zu_Laengsschnittlinie: SET [0: ?] OF Laengsschnittlinie FOR hat_DGM;
END_ENTITY;

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

ENTITY Laengsschnitt
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
    abs_Abstand: OPTIONAL REAL(16);
--- Relationen :
    gehoert_zu_Achse: Achse;
    hat_Breite: OPTIONAL SET [1: ?] OF Breite;
    hat_kreuzende_Bauw_o_baul_Anl: OPTIONAL SET [1: ?] OF kreuzende_Bauwerke_o_baul_Anl;
    hat_Gelaendehorizonte: OPTIONAL SET [1: ?] OF Gelaendehorizonte;
    hat_Gradiente: OPTIONAL SET [1: ?] OF Gradiente;
INVERSE
    gehoert_zu_Trasse: SET [0: ?] OF Trasse FOR hat_Laengsschnitt;
END_ENTITY;

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

ENTITY Gelaendehorizonte
SUBTYPE OF (Laengsschnittlinie);
--- Attribute :
--- Relationen :
INVERSE
    gehoert_zu_Laengsschnitt: SET [0: ?] OF Laengsschnitt FOR hat_Gelaendehorizonte;
END_ENTITY;

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

ENTITY Gradiente
SUBTYPE OF (Laengsschnittlinie);
--- Attribute :
--- Relationen :
INVERSE
    gehoert_zu_Laengsschnitt: SET [0: ?] OF Laengsschnitt FOR hat_Gradiente;
END_ENTITY;

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

ENTITY kreuzende_Bauwerke_o_baul_Anl
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    hat_Tunnel_Kanal_Strasse_etc: OPTIONAL Tunnel_Kanal_Strasse_Durchlass;
    hat_Schnittgeometrie: SET [1: ?] OF Schnittgeometrie;
INVERSE
    gehoert_zu_Laengsschnitt: SET [0: ?] OF Laengsschnitt FOR hat_kreuzende_Bauw_o_baul_Anl;
END_ENTITY;

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

ENTITY Tunnel_Kanal_Strasse_Durchlass;
--- Attribute :
--- Relationen :
INVERSE
    von_kreuz_Bauwerken_o_baul_Anl: SET [0: ?] OF kreuzende_Bauwerke_o_baul_Anl FOR hat_Tunnel_Kanal_Strasse_etc;
    hat_Schnittgeometrie: SET [0: ?] OF Schnittgeometrie FOR abgel_von_Tunnel_Kanal_Str_etc;
END_ENTITY;

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

ENTITY Schnittgeometrie;
--- Attribute :
    Schnittstation: Meter;
    Schnitthoehe: Meter;
    Schnittwinkel_horizontal: Winkel;
    Laengsneigung_kreuzend_Bauwerk: Winkel;
--- Relationen :
    abgel_von_Tunnel_Kanal_Str_etc: Tunnel_Kanal_Strasse_Durchlass;
    hat_Schnittpolygone: SET [1: ?] OF Schnittpolygone;
    hat_Mindestabstandspolygone: OPTIONAL SET [1: ?] OF Mindestabstandspolygon;
    hat_Maximalabstandspolygone: OPTIONAL SET [1: ?] OF Maximalabstandspolygon;
INVERSE
    geh_zu_kreuz_Bauw_o_baul_Anl: SET [0: ?] OF kreuzende_Bauwerke_o_baul_Anl FOR hat_Schnittgeometrie;
END_ENTITY;

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

ENTITY Schnittpolygone
SUBTYPE OF (Polygon);
--- Attribute :
--- Relationen :
INVERSE
    gehoert_zu_Schnittgeometrie: SET [1: ?] OF Schnittgeometrie FOR hat_Schnittpolygone;
END_ENTITY;

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

ENTITY Mindestabstandspolygon
SUBTYPE OF (Polygon);
--- Attribute :
--- Relationen :
INVERSE
    gehoert_zu_Schnittgeometrie: SET [1: ?] OF Schnittgeometrie FOR hat_Mindestabstandspolygone;
END_ENTITY;

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

ENTITY Maximalabstandspolygon
SUBTYPE OF (Polygon);
--- Attribute :
--- Relationen :
INVERSE
    gehoert_zu_Schnittgeometrie: SET [1: ?] OF Schnittgeometrie FOR hat_Maximalabstandspolygone;
END_ENTITY;

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

ENTITY Polygon
ABSTRACT SUPERTYPE OF (ONEOF(Schnittpolygone , Maximalabstandspolygon , Mindestabstandspolygon ));
--- Attribute :
--- Relationen :
    hat_QP_Punkte: LIST [1: ?] OF QP_Punkte;
END_ENTITY;

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

ENTITY Laengsschnittlinie
SUPERTYPE OF (ONEOF(Gelaendehorizonte , Gradiente ))
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    hat_LS_Koor: LIST [1: ?] OF LS_Koor;
    hat_Spurbezeichnung: OPTIONAL Spurbezeichnung;
    hat_DGM: OPTIONAL DGM;
END_ENTITY;

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

ENTITY LS_Koor
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
    Station: Meter;
    Hoehe: Meter;
--- Relationen :
    folgt_auf_LS_Koor: OPTIONAL Punktfolge;
INVERSE
    gehoert_zu_Laengsschnittlinie: SET [0: ?] OF Laengsschnittlinie FOR hat_LS_Koor;
END_ENTITY;

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

ENTITY Punktfolge;
--- Attribute :
--- Relationen :
    hat_Tangente_Gerade: Tangente_Gerade;
INVERSE
    LS_Koor_Nachfolger: LS_Koor FOR folgt_auf_LS_Koor;
END_ENTITY;

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

ENTITY Tangentenfolge;
--- Attribute :
--- Relationen :
    hat_Ausrundung: OPTIONAL Ausrundung;
INVERSE
    Tangente_Gerade_Nachfolger: Tangente_Gerade FOR folgt_auf_Tangente_Gerade;
END_ENTITY;

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

ENTITY Ausrundung;
--- Attribute :
    Ausrundungstyp: OPTIONAL Ausrundungstyp;
    Ausrundungsparameter: OPTIONAL REAL(16);
--- Relationen :
INVERSE
    gehoert_zu_Tangentenfolge: SET [0: 1] OF Tangentenfolge FOR hat_Ausrundung;
END_ENTITY;

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

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


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

   (12,'Parabel 2. Grades')
   (13,'Parabel 3. Grades mit langem Teil '+
    'vor TS')
   (14,'Parabel 3. Grades mit langem Teil '+
    'hinter TS')

*)

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

ENTITY Tangente_Gerade;
--- Attribute :
--- Relationen :
    folgt_auf_Tangente_Gerade: OPTIONAL Tangentenfolge;
INVERSE
    gehoert_zu_Punktfolge: SET [0: 1] OF Punktfolge FOR hat_Tangente_Gerade;
END_ENTITY;

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

ENTITY Volumen_aus_QP
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
    Station_1: Meter;
    Station_2: Meter;
--- Relationen :
    wird_begrenzt_von_Profillinie: Profillinien;
INVERSE
    von_Trassenkoerper: SET [0: ?] OF Trassenkoerper FOR hat_Volumen;
END_ENTITY;

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

ENTITY Oberflaeche
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
    Art_der_Oberflaeche: INTEGER;
    Station_1: Meter;
    Station_2: Meter;
--- Relationen :
    liegt_auf_Profillinie: Profillinien;
    beginnt_bei_QP_Punkt: QP_Punkte;
    endet_bei_QP_Punkt: QP_Punkte;
INVERSE
    von_Trassenkoerper: SET [0: ?] OF Trassenkoerper FOR hat_Oberflaeche;
END_ENTITY;

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

ENTITY Trassenkoerper;
--- Attribute :
--- Relationen :
    hat_Volumen: OPTIONAL SET [1: ?] OF Volumen_aus_QP;
    hat_Oberflaeche: OPTIONAL SET [1: ?] OF Oberflaeche;
    hat_Deckenbuch: OPTIONAL SET [1: ?] OF Deckenbuch;
    hat_Querprofil: OPTIONAL SET [1: ?] OF Querprofil;
    hat_Ausgangsdaten: OPTIONAL SET [1: ?] OF Ausgangsdaten;
    hat_Bildungsgesetze: OPTIONAL SET [1: ?] OF Bildungsgesetze;
    gehoert_zu_Achse: Achse;
INVERSE
    gehoert_zu_Trasse: SET [0: ?] OF Trasse FOR hat_Trassenkoerper;
END_ENTITY;

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

ENTITY Querprofil;
--- Attribute :
    Station: Meter;
--- Relationen :
    von_Ausgangsdaten_Bildungsges: OPTIONAL SET [1: ?] OF Ausgangsdaten_Bildungsgesetze;
    hat_Schnittebene: OPTIONAL Schnittebene;
    hat_Profillinien: SET [1: ?] OF Profillinien;
    hat_QP_Punkte: SET [1: ?] OF QP_Punkte;
    folgt_auf_Querprofil: OPTIONAL Querprofil;
INVERSE
    gehoert_zu_Trassenkoerper: SET [1: ?] OF Trassenkoerper FOR hat_Querprofil;
    von_Ausgangsdaten: SET [0: ?] OF Ausgangsdaten FOR hat_Querprofil;
    vor_Querprofil: SET [0: 1] OF Querprofil FOR folgt_auf_Querprofil;
END_ENTITY;

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

ENTITY Bildungsgesetze;
--- Attribute :
--- Relationen :
    hat_Ausgangsdaten_Bildungsges: SET [1: ?] OF Ausgangsdaten_Bildungsgesetze;
INVERSE
    von_Trassenkoerper: SET [0: ?] OF Trassenkoerper FOR hat_Bildungsgesetze;
END_ENTITY;

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

ENTITY Ausgangsdaten_Bildungsgesetze;
--- Attribute :
--- Relationen :
INVERSE
    Bildungsgesetze: Bildungsgesetze FOR hat_Ausgangsdaten_Bildungsges;
    Ausgangsdaten: Ausgangsdaten FOR mit_Bildungsgesetzen;
    hat_Querprofil: SET [1: ?] OF Querprofil FOR von_Ausgangsdaten_Bildungsges;
END_ENTITY;

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

ENTITY Ausgangsdaten;
--- Attribute :
--- Relationen :
    mit_Bildungsgesetzen: OPTIONAL SET [1: ?] OF Ausgangsdaten_Bildungsgesetze;
    hat_Querprofil: OPTIONAL SET [1: ?] OF Querprofil;
    hat_Breite: OPTIONAL SET [1: ?] OF Breite;
    hat_Querneigung: OPTIONAL SET [1: ?] OF Querneigung;
    hat_Hoehendifferenz: OPTIONAL SET [1: ?] OF Hoehendifferenz;
    hat_Hoehenzuege: OPTIONAL SET [1: ?] OF Hoehenzuege;
    hat_Achsstationswerte: OPTIONAL SET [1: ?] OF Achsstationswerte;
INVERSE
    von_Trassenkoerper: SET [0: ?] OF Trassenkoerper FOR hat_Ausgangsdaten;
END_ENTITY;

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

ENTITY Hoehenzuege;
--- Attribute :
--- Relationen :
INVERSE
    von_Ausgangsdaten: SET [0: ?] OF Ausgangsdaten FOR hat_Hoehenzuege;
    von_Spur_aus_Ausgangsdaten: SET [0: ?] OF Spur_aus_Ausgangsdaten FOR hat_Hoehenzuege;
END_ENTITY;

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

ENTITY QP_Punkte
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
    Abstand_zur_Achse: REAL(16);
    Hoehe_NN: REAL(16);
--- Relationen :
    hat_Querprofilpunkt: OPTIONAL Querprofilpunkt;
INVERSE
    gehoert_zu_Profillinien: SET [0: ?] OF Profillinien FOR hat_QP_Punkte;
    gehoert_zu_Querprofil: SET [0: ?] OF Querprofil FOR hat_QP_Punkte;
    Beginn_von_Oberflaeche: SET [0: ?] OF Oberflaeche FOR beginnt_bei_QP_Punkt;
    Ende_von_Oberflaeche: SET [0: ?] OF Oberflaeche FOR endet_bei_QP_Punkt;
    Beginn_von_Spur_aus_Querprof: SET [0: ?] OF Spur_aus_Querprofilen FOR beginnt_bei_QP_Punkt;
    Ende_von_Spur_aus_Querprof: SET [0: ?] OF Spur_aus_Querprofilen FOR endet_bei_QP_Punkt;
    gehoert_zu_Polygon: SET [0: ?] OF Polygon FOR hat_QP_Punkte;
END_ENTITY;

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

ENTITY Querprofilpunkt;
--- Attribute :
--- Relationen :
INVERSE
    von_QP_Punkten: SET [0: ?] OF QP_Punkte FOR hat_Querprofilpunkt;
END_ENTITY;

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

ENTITY Profillinien
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    hat_QP_Punkte: LIST [1: ?] OF QP_Punkte;
INVERSE
    gehoert_zu_Querprofil: SET [0: ?] OF Querprofil FOR hat_Profillinien;
    gehoert_zu_Oberflaeche: SET [0: ?] OF Oberflaeche FOR liegt_auf_Profillinie;
    begrenzt_Volumen_aus_QP: SET [0: 4] OF Volumen_aus_QP FOR wird_begrenzt_von_Profillinie;
    von_Spur_aus_Querprofilen: SET [0: ?] OF Spur_aus_Querprofilen FOR liegt_auf_Profillinie;
END_ENTITY;

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

ENTITY Schnittebene;
--- Attribute :
--- Relationen :
    hat_SNT_Punkte: OPTIONAL LIST [1: ?] OF SNT_Punkt;
INVERSE
    gehoert_zu_Querprofil: SET [1: ?] OF Querprofil FOR hat_Schnittebene;
END_ENTITY;

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

ENTITY SNT_Punkt;
--- Attribute :
    Abstand: Meter;
    Richtungsaenderung: REAL(16);
    korrespondierende_Achse: OPTIONAL STRING(255);
    Naeherungsstation: OPTIONAL Meter;
--- Relationen :
INVERSE
    gehoert_zu_Schnittebene: SET [0: ?] OF Schnittebene FOR hat_SNT_Punkte;
END_ENTITY;

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

ENTITY Deckenbuch
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
    Station_1: Meter;
    Station_2: Meter;
--- Relationen :
    hat_Spur_aus_Ausgangsdaten: OPTIONAL LIST [1: ?] OF Spur_aus_Ausgangsdaten;
    hat_Spur_aus_Querprofilen: OPTIONAL LIST [1: ?] OF Spur_aus_Querprofilen;
INVERSE
    gehoert_zu_Trassenkoerper: SET [1: ?] OF Trassenkoerper FOR hat_Deckenbuch;
END_ENTITY;

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

ENTITY Spurfolge_Ausgangsdaten;
--- Attribute :
    Hoehendifferenz: Meter;
--- Relationen :
INVERSE
    Spur_aus_Ausgangsdaten: Spur_aus_Ausgangsdaten FOR folgt_auf_Spur_aus_Ausgangsdat;
END_ENTITY;

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

ENTITY Spur_aus_Ausgangsdaten
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    folgt_auf_Spur_aus_Ausgangsdat: OPTIONAL Spurfolge_Ausgangsdaten;
    hat_Querneigung: OPTIONAL Querneigung;
    hat_Hoehendifferenz: OPTIONAL Hoehendifferenz;
    hat_Breite: Breite;
    hat_Hoehenzuege: OPTIONAL SET [1: ?] OF Hoehenzuege;
INVERSE
    von_Deckenbuch: SET [0: ?] OF Deckenbuch FOR hat_Spur_aus_Ausgangsdaten;
END_ENTITY;

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

ENTITY Spur_aus_Querprofilen
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    liegt_auf_Profillinie: Profillinien;
    beginnt_bei_QP_Punkt: QP_Punkte;
    endet_bei_QP_Punkt: QP_Punkte;
INVERSE
    von_Deckenbuch: SET [0: ?] OF Deckenbuch FOR hat_Spur_aus_Querprofilen;
END_ENTITY;

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

ENTITY Breite
SUPERTYPE OF (ONEOF(Parallele_Breite_z_Achse_zwei , Parallele_Breite_z_Achse_eins ))
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    hat_Spurbezeichnung: OPTIONAL Spurbezeichnung;
    hat_BR_Punkt: LIST [1: ?] OF BR_Punkt;
INVERSE
    von_Ausgangsdaten: SET [0: ?] OF Ausgangsdaten FOR hat_Breite;
    von_Spur_aus_Ausgangsdaten: SET [1: ?] OF Spur_aus_Ausgangsdaten FOR hat_Breite;
    gehoert_zu_Laengsschnitt: SET [0: ?] OF Laengsschnitt FOR hat_Breite;
END_ENTITY;

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

ENTITY BR_Punktfolge;
--- Attribute :
--- Relationen :
    hat_Aufweitg_Verbreit_Verbind: SET [1: ?] OF Aufweitung_Verbreit_Verbind;
INVERSE
    vor_BR_Punkt: BR_Punkt FOR folgt_auf_BR_Punkt;
END_ENTITY;

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

ENTITY BR_Punkt;
--- Attribute :
    Breite: OPTIONAL Meter;
    Station: Meter;
--- Relationen :
    hat_Abstand_Achse_Achse: OPTIONAL Abstand_Achse_Achse;
    hat_Abstand_Achse_Linie: OPTIONAL Abstand_Achse_Linie;
    folgt_auf_BR_Punkt: OPTIONAL BR_Punktfolge;
INVERSE
    gehoert_zu_Breite: SET [0: ?] OF Breite FOR hat_BR_Punkt;
END_ENTITY;

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

ENTITY Aufweitung_Verbreit_Verbind;
--- Attribute :
--- Relationen :
    hat_Parabelfolge_zweit_Grades: OPTIONAL Parabelfolge_zweiten_Grades;
    hat_Bogenfolge: OPTIONAL Bogenfolge;
    hat_Parabelf_zw_Grad_zw_Gerade: OPTIONAL Parabelf_zw_Grades_zw_Gerade;
    hat_Gerade: OPTIONAL Gerade;
INVERSE
    gehoert_zu_Breite_BR_Punkt: SET [1: ?] OF BR_Punktfolge FOR hat_Aufweitg_Verbreit_Verbind;
END_ENTITY;

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

ENTITY Parabelfolge_zweiten_Grades;
--- Attribute :
--- Relationen :
INVERSE
    gehoert_zu_Aufweitg_Verbr_Verb: SET [0: ?] OF Aufweitung_Verbreit_Verbind FOR hat_Parabelfolge_zweit_Grades;
END_ENTITY;

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

ENTITY Bogenfolge;
--- Attribute :
--- Relationen :
INVERSE
    gehoert_zu_Aufweitg_Verbr_Verb: SET [0: ?] OF Aufweitung_Verbreit_Verbind FOR hat_Bogenfolge;
END_ENTITY;

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

ENTITY Parabelf_zw_Grades_zw_Gerade;
--- Attribute :
    Tangentenlaenge: Meter;
--- Relationen :
INVERSE
    gehoert_zu_Aufweitg_Verbr_Verb: SET [0: ?] OF Aufweitung_Verbreit_Verbind FOR hat_Parabelf_zw_Grad_zw_Gerade;
END_ENTITY;

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

ENTITY Gerade;
--- Attribute :
--- Relationen :
INVERSE
    gehoert_zu_Aufweitg_Verbr_Verb: SET [0: ?] OF Aufweitung_Verbreit_Verbind FOR hat_Gerade;
END_ENTITY;

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

ENTITY Abstand_Achse_Achse;
--- Attribute :
--- Relationen :
    hat_Lage_der_Knicklinie: Lage_der_Knicklinie;
    hat_zweite_Achse: zweite_Achse;
    hat_Naehergsstat_auf_zw_Achse: Naeherungsstation_auf_zw_Achse;
INVERSE
    von_BR_Punkt: SET [0: ?] OF BR_Punkt FOR hat_Abstand_Achse_Achse;
END_ENTITY;

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

ENTITY Abstand_Achse_Linie
SUBTYPE OF (Linienobjekt_Modell);
--- Attribute :
--- Relationen :
INVERSE
    von_BR_Punkt: SET [0: ?] OF BR_Punkt FOR hat_Abstand_Achse_Linie;
END_ENTITY;

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

ENTITY Lage_der_Knicklinie;
--- Attribute :
--- Relationen :
    hat_Parall_Breite_z_Achse_zwei: OPTIONAL Parallele_Breite_z_Achse_zwei;
    hat_Parall_Breite_z_Achse_eins: OPTIONAL Parallele_Breite_z_Achse_eins;
    ist_mittig_m_Abst_z_Knicklinie: OPTIONAL mittig_m_Abstand_z_Knicklinie;
INVERSE
    von_Abstand_Achse_Achse: SET [0: ?] OF Abstand_Achse_Achse FOR hat_Lage_der_Knicklinie;
END_ENTITY;

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

ENTITY zweite_Achse;
--- Attribute :
--- Relationen :
INVERSE
    von_Abstand_Achse_Achse: SET [0: ?] OF Abstand_Achse_Achse FOR hat_zweite_Achse;
END_ENTITY;

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

ENTITY Naeherungsstation_auf_zw_Achse;
--- Attribute :
--- Relationen :
INVERSE
    von_Abstand_Achse_Achse: SET [0: ?] OF Abstand_Achse_Achse FOR hat_Naehergsstat_auf_zw_Achse;
END_ENTITY;

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

ENTITY Parallele_Breite_z_Achse_zwei
SUBTYPE OF (Breite);
--- Attribute :
--- Relationen :
INVERSE
    von_Lage_der_Knicklinie: SET [0: ?] OF Lage_der_Knicklinie FOR hat_Parall_Breite_z_Achse_zwei;
END_ENTITY;

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

ENTITY Parallele_Breite_z_Achse_eins
SUBTYPE OF (Breite);
--- Attribute :
--- Relationen :
INVERSE
    von_Lage_der_Knicklinie: SET [0: ?] OF Lage_der_Knicklinie FOR hat_Parall_Breite_z_Achse_eins;
END_ENTITY;

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

ENTITY mittig_m_Abstand_z_Knicklinie;
--- Attribute :
--- Relationen :
INVERSE
    von_Lage_der_Knicklinie: SET [0: ?] OF Lage_der_Knicklinie FOR ist_mittig_m_Abst_z_Knicklinie;
END_ENTITY;

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

ENTITY Querneigung
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    hat_QN_Punkte: LIST [1: ?] OF QN_Punkt;
    hat_Spurbezeichnung: OPTIONAL Spurbezeichnung;
INVERSE
    von_Ausgangsdaten: SET [0: ?] OF Ausgangsdaten FOR hat_Querneigung;
    von_Spur_aus_Ausgangsdaten: SET [0: ?] OF Spur_aus_Ausgangsdaten FOR hat_Querneigung;
END_ENTITY;

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

ENTITY Querneigungswechsel;
--- Attribute :
    Verziehungsform: Verziehungsform;
--- Relationen :
INVERSE
    vor_QN_Punkt: QN_Punkt FOR folgt_auf_QN_Punkt;
END_ENTITY;

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

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


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

   (0,'reserviert')
   (1,'normale Verziehung')
   (2,'Verziehung mit Gratlinie '+
    '(Schrägverwindung)')

*)

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

ENTITY QN_Punkt
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
    Station: Meter;
    Querneigung: REAL;
--- Relationen :
    folgt_auf_QN_Punkt: OPTIONAL Querneigungswechsel;
INVERSE
    gehoert_zu_Querneigung: Querneigung FOR hat_QN_Punkte;
END_ENTITY;

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

ENTITY Spurbezeichnung
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
INVERSE
    von_Laengsschnittlinie: SET [1: ?] OF Laengsschnittlinie FOR hat_Spurbezeichnung;
    von_Breite: SET [0: ?] OF Breite FOR hat_Spurbezeichnung;
    von_Querneigung: SET [0: ?] OF Querneigung FOR hat_Spurbezeichnung;
    von_Hoehendifferenz: SET [0: ?] OF Hoehendifferenz FOR hat_Spurbezeichnung;
    von_Sichtweiten: SET [0: ?] OF Sichtweiten FOR hat_Spurbezeichnung;
END_ENTITY;

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

ENTITY Achsstationswerte
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    hat_AW_Koor: LIST [1: ?] OF AW_Koor;
INVERSE
    von_Ausgangsdaten: SET [0: ?] OF Ausgangsdaten FOR hat_Achsstationswerte;
END_ENTITY;

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

ENTITY AW_Koor;
--- Attribute :
    Station: Meter;
    Character_Kennwert: STRING;
    Integer_Kennwert: INTEGER;
    Real_Kennwert: REAL;
--- Relationen :
INVERSE
    gehoert_zu_Achsstationswerten: SET [0: ?] OF Achsstationswerte FOR hat_AW_Koor;
END_ENTITY;

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

ENTITY Entwurfsparameter;
--- Attribute :
    Strassenkategorie: STRING(255);
    Verkehrsbelastung: INTEGER;
    Dokumentenverweis: STRING(255);
    Regelquerschnitt: STRING(255);
--- Relationen :
    hat_Geschwindigkeitsband: OPTIONAL SET [1: ?] OF Geschwindigkeitsband;
INVERSE
    gehoert_zu_Trasse: SET [0: ?] OF Trasse FOR hat_Entwurfsparameter;
END_ENTITY;

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

ENTITY Geschwindigkeitsband
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    hat_V_Koor: LIST [1: ?] OF V_Koor;
INVERSE
    von_Entwurfsparameter: SET [0: ?] OF Entwurfsparameter FOR hat_Geschwindigkeitsband;
END_ENTITY;

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

ENTITY V_Koor;
--- Attribute :
    Station: Meter;
    Geschwindigkeit: Stundenkilometer;
--- Relationen :
INVERSE
    gehoert_zu_Geschwindigkeitsbd: SET [0: ?] OF Geschwindigkeitsband FOR hat_V_Koor;
END_ENTITY;

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

ENTITY Sichtweiten
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
    Sichtweite: REAL(16);
--- Relationen :
    gehoert_zu_Achse: Achse;
    hat_Spurbezeichnung: OPTIONAL Spurbezeichnung;
    hat_SW_Koor: LIST [1: ?] OF SW_Koor;
INVERSE
    gehoert_zu_Trasse: SET [0: ?] OF Trasse FOR hat_Sichtweiten;
END_ENTITY;

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

ENTITY SW_Koor;
--- Attribute :
    Station: Meter;
    Sichtweite: Meter;
--- Relationen :
INVERSE
    von_Sichtweite: SET [0: ?] OF Sichtweiten FOR hat_SW_Koor;
END_ENTITY;

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

ENTITY Hoehendifferenz
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
--- Relationen :
    hat_HD_Punkt: LIST [1: ?] OF HD_Punkt;
    hat_Spurbezeichnung: OPTIONAL Spurbezeichnung;
INVERSE
    von_Ausgangsdaten: SET [0: ?] OF Ausgangsdaten FOR hat_Hoehendifferenz;
    von_Spur_aus_Ausgangsdaten: SET [0: ?] OF Spur_aus_Ausgangsdaten FOR hat_Hoehendifferenz;
END_ENTITY;

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

ENTITY HD_Punkt
SUBTYPE OF (allgemeine_Eigenschaften);
--- Attribute :
    Station: Meter;
    Differenz: Meter;
--- Relationen :
INVERSE
    gehoert_zu_Hoehendifferenz: Hoehendifferenz FOR hat_HD_Punkt;
END_ENTITY;

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

ENTITY allgemeine_Eigenschaften
ABSTRACT SUPERTYPE OF (ONEOF(Beschilderung_Lichtsignalanl , Fahrbahnmarkierungen , Schutz_und_Leiteinrichtungen , Bauwerkseinzelheiten , Trasse , Achse , Achselement , Kreuzungs_o_Einmuendungsplang , Laengsschnitt , kreuzende_Bauwerke_o_baul_Anl , Laengsschnittlinie , LS_Koor , Spurbezeichnung , Profillinien , QP_Punkte , Volumen_aus_QP , Oberflaeche , Deckenbuch , Spur_aus_Ausgangsdaten , Spur_aus_Querprofilen , Breite , QN_Punkt , Querneigung , Achsstationswerte , Geschwindigkeitsband , Sichtweiten , DGM , Hoehendifferenz , HD_Punkt , allgemeines_Punktobjekt , allgemeines_Linienobjekt , allgemeines_Flaechenobjekt , ALKIS_Objekt_Punkt , ALKIS_Objekt_Linie , ALKIS_Objekt_Flaeche ));
--- Attribute :
    Bezeichnung: OPTIONAL STRING;
    fachliche_Bedeutung: STRING;
    Informationstext: OPTIONAL SET [1: ?] OF STRING;
--- Relationen :
END_ENTITY;

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

END_SCHEMA; -- Entwurf