User:Christian Rößiger: Difference between revisions

From railML 2 Wiki
Jump to navigation Jump to search
mNo edit summary
(Text about semantic constraints moved to https://wiki3.railml.org/index.php?title=TT:PreliminaryDocumentation)
 
(29 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Below the this line begins the proposal for a railML usecase
{{Under construction|date=2017-12-04|topic=Adjust layout|user=Coordination --[[User:Coordination|Coordination]] ([[User talk:Coordination|talk]]) 10:13, 4 December 2017 (CET)}}
----
'''Use case / {{Deu|Anwendungsfall}} / {{Fra|Scénario d’utilisation}}:'''


Exchange of formation data; {{Deu|Austausch von Wagenreihungen/Behängungsdaten}}; {{Fra|???}}
= Specifying the stop position of a train within a station / {{Deu|Angabe der Halteposition eines Zuges in einer Betriebsstelle}} =
== General / {{Deu|Allgemeines}} ==
In general there is two ways of specifying the stop position within a station/operational stop:
# Direct specification of the stop position within the train part
# Referring to a {{IS:Tag|stopPost}}-element of the infrastructure


'''Description / {{Deu|Beschreibung}} / {{Fra|Description}}'''
If a railML file already includes the definition of {{IS:Tag|stopPost}}-elements as part of the infrastructure, these stopPosts should also be used to specify the stop position.
Within one railML file only one approach to specifying stop positions should be used consistently.


The usecase describes the exchange of data between a software tool for short term formation planning to a timetable database, which contains data of the whole timetable periode. The software for short term planning allows to add or delete train parts of already existing trains and to define a (potentially different) formation for a train part on each of its operating days. The assigned formation must match the restrictions of the train path (maximum speed, length and weight, driving and braking characteristics, etc.), i.e. a change of the formation data does not affect the running times of the trains. Furthermore, a change of the formation data should not affect the operating days of the train (a decrease of operating days is allowed).
{{Deu|Grundsätzlich bestehen zwei alternative Möglichkeiten zur Abbildung der Halteposition innerhalb einer Betriebsstelle:}}
# {{Deu|Angabe der Halteposition direkt im Zuglauf}}
# {{Deu|Referenzierung eines {{IS:Tag|stopPost}}-Elements der Infrastruktur}}
{{Deu|Sind in einer railML-Datei {{IS:Tag|stopPost}}-Elemente definiert, so sollten diese auch referenziert werden. Innerhalb einer railML-Datei sollte die Abbildung der Halteposition einheitlich in einer der beiden Varianten erfolgen.}}


'''Data Flows and Interfaces / {{Deu|Datenflüsse und Schnittstellen}} / {{Fra|Flux de données et interfaces}}'''
== Direct specification of the stop position within the train part / {{Deu|Angabe der Halteposition direkt im Zuglauf}} ==


The usecase covers the exchange of the following data:
For this approach the stop position of a train is specified with the attribute {{Attr|offset}} of the {{TT:Tag|ocpTT}}. It describes the offset to the center of the operation control point measuring from a reference point of the train indicated by the attribute {{Attr|alignment}}. In this case the direction of the train - which be required for evaluating this information - can only be determined by analyzing the the train part and its underlying topology.
* the composition of <trainPart>s of <vehicle>s (using <formation>s)
* <operatingPeriod>s of <trainPart>s
* commercial and technical properties of <trainPart>s/<formation>s
* added and removed <trainPart>s within a <train>


The usecase does not cover the exchange of data concerning the <train>, in particular:
{{Deu|In dieser Abbildungsvariante wird die Halteposition des Zuges in der {{TT:Tag|ocpTT}} durch eine Entfernung ({{Attr|offset}}) zur Betriebsstellenmitte sowie den Bezugspunkt des Zuges ({{Attr|alignment}}) darauf definiert. Die Fahrtrichtung des Zuges an diesem Halteplatz kann dabei nur implizit durch Analyse des Zug-Laufwegs und der Strecken-Topologie ermittelt werden.}}
* changes of the train path or times (<ocpsTT>)
* added or removed <train>s


As a consequence, it is assumed that both source and target system of the exchanged data must refer to the same set of <train>s, i.e. the <train>s in both system must have the same external identifier and identical (macroscopic) train paths. Since the usecase mainly modifies existing objects in the target system, it is necessary that the railML data can be assigned to the corresponding objects in the target system. This applies for the following railML object types:
<syntaxhighlight lang=xml>
* <train>
  <ocp id="_85ZUE" code="85ZUE" name="Zürich HB" />
* <trainPart>
  ...
* <ocp>
  <ocpTT ocpRef="_85ZUE" alignment="head" offset="-10">
* <vehicle>
    <times scope="scheduled" arrival="10:59:00" departure="11:04:00"/>
All those object types must contain a key expression, that is unique within the railML data set and which also exists in the target system. This key expression may be one single attribute or a combination of several attributes of the respective object type.
  </ocpTT>
</syntaxhighlight>


'''Interference with other railML<sup>®</sup> schemas / {{Deu|Interferenz mit anderen railML<sup>®</sup>-Schemen}} / {{Fra|Interaction avec autres schemas railML<sup>®</sup>}}'''
In the above example the stop position of a train at the station "Zürich HB" is specified with 10 m in front of the center of the station measured from the head of the train ({{Attr|alignment}}<nowiki>=head</nowiki>).


infrastructure, rolling stock
{{Deu|Das Beispiel beschreibt einen Zug, der in der Betriebsstelle "Zürich HB" mit der Zugspitze ({{Attr|alignment}}<nowiki>=head</nowiki>) 10m vor der Betriebsstellen-Mitte hält.}}


'''Characterizing Data / {{Deu|Charakterisierung der Daten}} / {{Fra|Caractérisation des données}}'''
== Referring to a {{IS:Tag|stopPost}}-element of the infrastructure / {{Deu|Referenzierung eines Halteplatzes (<stopPost>) der Infrastruktur}} ==


This section serves to specify the required data regarding certain aspects.
With this approach the stop position is not specified within the {{TT:Tag|trainPart}}s. Instead, {{IS:Tag|stopPost}} elements are included in the infrastructure which can be referred to from an {{TT:Tag|ocpTT}} using the attribute {{Attr|stopPostRef}}.


<u>How often do the data change (update)?</u>
A {{IS:Tag|stopPost}} is defined as a child element of a {{IS:Tag|track}}. This implies that for each {{IS:Tag|stopPost}} required, a corresponding {{IS:Tag|track}} needs to be specified as part of the infrastructure. In order to specify a designation for a {{IS:Tag|stopPost}} the attributes {{Attr|code}} and {{Attr|name}} can be supplied. {{Attr|code}} should be used to indicate an external key, used to identify a corresponding object in an infrastructure database. {{Attr|name}} can be used to specify a display name which for example could be used for passenger information.
In order to specify the exact position of the {{IS:Tag|stopPost}} on the containing {{IS:Tag|track}} the attribute {{Attr|pos}} is used.


weekly-yearly
{{Deu|Bei dieser Abbildungsvariante wird der Halteort nicht innerhalb des {{TT:Tag|trainPart}}s angegeben, stattdessen wird in der Infrastruktur ein {{IS:Tag|stopPost}}-Element angelegt, welches über das Attribut {{Attr|stopPostRef}} der jeweiligen {{TT:Tag|ocpTT}} referenziert wird.}}


<u>How big are the data fragments to be exchanged (complexity)?</u>
{{Deu|Ein {{IS:Tag|stopPost}} wird als Unterelement eines {{IS:Tag|track}} abgebildet, d.h. für jeden {{IS:Tag|stopPost}} muss auch ein entsprechender {{IS:Tag|track}} in der Infrastruktur angelegt werden. Die Bezeichnung des {{IS:Tag|stopPost}} kann mit Hilfe der Attribute {{Attr|code}} bzw. {{Attr|name}} definiert werden, wobei {{Attr|code}} für einen externen Schlüssel (bspw. in einer Infrastruktur-Datenbank) vorgesehen ist, während {{Attr|name}} einen Anzeigenamen enthalten kann. Die genaue Halteposition des Zuges kann über die Eigenschaft {{Attr|pos}} des {{IS:Tag|stopPost}} auf dem übergeordneten {{IS:Tag|track}} definiert werden.}}


* infrastructure: big
<syntaxhighlight lang=xml>
* timetable: small (operatingPeriod: tiny)
  <track id="_tr" code="12" name="12">
* rolling stock: big (formation: tiny)
    <trackTopology>
      <trackBegin id="_tb" pos="0">
        <macroscopicNode ocpRef="_85ZUE" />
      </trackBegin>
      <trackEnd id="_te" pos="647">
        <macroscopicNode ocpRef="_85ZUE" />
      </trackEnd>
    </trackTopology>


<u>Which views are represented by the data (focus)?</u>
    <ocsElements>
      <stopPosts>
        <stopPost id="_sp" code="B" name="Sektor B" pos="10"/>
      </stopPosts>
    </ocsElements>
  </track>
  ...
  <ocp id="_85ZUE" code="85ZUE" name="Zürich HB" />
  ...
  <ocpTT ocpRef="_85ZUE" stopPostRef="_stp" trackRef="_tr">
    <times scope="scheduled" arrival="10:59:00" departure="11:04:00"/>
  </ocpTT>
</syntaxhighlight>


Mid and short term planning
In the above example a train stops at the station "Zürich HB" at the stop post with the external key "B". The display name of the stop post is given as "Sektor B".
{{Deu|Das Beispiel beschreibt einen Zug, der in der Betriebsstelle "Zürich HB" am Halteplatz mit dem externen Schlüssel "B" hält. Der Anzeigename dieses Halteplatzes ist "Sektor B".}}


<u>Which specific timetable data do you expect to receive/send (elements)?</u>
== Additional information / {{Deu|Weitere Informationen}} ==
* [[TT:How_To_Reference_Infrastructure|How To Reference Infrastructure]]
* Todo: Link auf Angabe Bahnhofsgleisnutzung/Bahnsteigkante
 
 
<hr>
 
= Default values of stop description and their dependencies =
{| class="wikitable" <!-- generated with [[w:de:Wikipedia:Technik/Text/Basic/EXCEL-Tabellenumwandlung]] V2.0 -->
|- style="background-color:#E7E6E6;font-size:11pt;font-weight:bold" align="center" valign="bottom"
| width="29" rowspan="2" height="15" | Nr.
| width="46" | <ocpTT>
| width="118" colspan="5" | <stopDescription>
| width="263" | Description
 
|- style="background-color:#E7E6E6;font-size:11pt;font-weight:bold"
| align="center" valign="bottom" | ocpType
|  valign="bottom" | guaranteedPass
|  valign="bottom" | commercial
|  valign="bottom" | onOff
|  valign="bottom" | stopOnRequest
|  valign="bottom" | operationalStopordered
| align="right"  valign="bottom" | &nbsp;
 
|- style="font-size:11pt"
| align="right" height="15" align="right" valign="bottom" | 1.1
| rowspan="2" align="center" | pass
|  valign="bottom" | true
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|  valign="bottom" | guaranteed pass
 
|- style="font-size:11pt"
| align="right" height="16" align="right" valign="bottom" | 1.2
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | false
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|  valign="bottom" | non-guaranteed pass
 
|- style="font-size:11pt"
| align="right" height="15" align="right" valign="bottom" | 2.1
| rowspan="8" align="center" | stop, begin, end
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | true
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | both
|  valign="bottom" | true
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|  valign="bottom" | commercial stop on request for on and off
 
|- style="font-size:11pt"
| align="right" height="15" align="right" valign="bottom" | 2.2
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | true
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | both
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | false
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|  valign="bottom" | commercial stop for on and off
 
|- style="font-size:11pt"
| align="right" height="15" align="right" valign="bottom" | 2.3
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | true
|  valign="bottom" | on
|  valign="bottom" | true
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|  valign="bottom" | commercial stop on request for on only
 
|- style="font-size:11pt"
| align="right" height="15" align="right" valign="bottom" | 2.4
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | true
|  valign="bottom" | on
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | false
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|  valign="bottom" | commercial stop for on only
 
|- style="font-size:11pt"
| align="right" height="15" align="right" valign="bottom" | 2.5
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | true
|  valign="bottom" | off
|  valign="bottom" | true
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|  valign="bottom" | commercial stop on request for off only
 
|- style="font-size:11pt"
| align="right" height="16" align="right" valign="bottom" | 2.6
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | true
|  valign="bottom" | off
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | false
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|  valign="bottom" | commercial stop for off only
 
|- style="font-size:11pt"
| align="right" height="15" align="right" valign="bottom" | 2.7
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|  valign="bottom" | false
|style="background-color:#FFC000"  valign="bottom" | currently not supported
|style="background-color:#FFC000"  valign="bottom" | currently not supported
|  valign="bottom" | true
|  valign="bottom" | operational stop ordered by the TOC
 
|- style="font-size:11pt"
| align="right" height="16" align="right" valign="bottom" | 2.8
|style="background-color:#FF0000;font-style:Italic;color:#F2F2F2"  valign="bottom" | attribute not to be used
|  valign="bottom" | false
|style="background-color:#FFC000"  valign="bottom" | currently not supported
|style="background-color:#FFC000"  valign="bottom" | currently not supported
|style="background-color:#00B050;color:#FFFFFF"  valign="bottom" | false
|  valign="bottom" | operational stop introduced by the IM


Used elements:
{|
|-
!Element !! Mandatory !!Remarks
|-
| <infrastructure><operationControlPoints><ocp> || x || used for referencing an existing ocp within the target system
|-
| <infrastructure><operationControlPoints><ocp><designator> ||  || used for referencing an existing ocp within the target system
|-
| <rollingstock><formations><formation> || x
|-
| <rollingstock><formations><formation><trainOrder><vehicleRef> || x
|-
| <rollingstock><vehicles><vehicle> || x || used for referencing an existing vehicle within the target system
|-
| <rollingstock><vehicles><vehicle><classification><operator> || || used for referencing an existing vehicle within the target system
|-
| <rollingstock><vehicles><vehicle><classification><manufacturer> || || used for referencing an existing vehicle within the target system
|-
| <timetable><timetablePeriods><timetablePeriod> ||
|-
| <timetable><timetablePeriods><timetablePeriod><holidays><holiday>
|-
| <timetable><operatingPeriods><operatingPeriod> || x
|-
| <timetable><categories><category> || || used for referencing an existing category within the target system; used for the creation of new train parts that so far not existed in the target system
|-
| <timetable><trainParts><trainPart> || x || used for referencing an existing train part within the target system and to identify removed or added trainParts
|-
| <timetable><trainParts><trainPart><formationTT> || x
|-
| <timetable><trainParts><trainPart><formationTT><passengerUsage><places>
|-
| <timetable><trainParts><trainPart><formationTT><passengerUsage><service>
|-
| <timetable><trainParts><trainPart><operatingPeriodRef> || x
|-
| <timetable><trainParts><trainPart><ocpsTT><ocpTT> || x || used for referencing an existing train part within the target system; mandatory are only the first and last <ocpTT> of the train part and their references to the <ocp>
|-
| <timetable><trains><train> || x || used for referencing an existing train within the target system
|-
| <timetable><trains><train><trainPartSequence> || x
|-
| <timetable><trains><train><trainPartSequence><trainPartRef> || x
|-
|}
|}


Additional requirements:
==== Comments: ====
* Values "begin" and "end" of the attribute "ocpType" are deprecated with railML2.2
* green cells are default values
* if no <stopDescription> is given, then it is either a non-guaranteed pass (1.2) or a stop with undefined properties, depending on the attribute "ocpType"
* The term "commercial" of the attribute in railML traditionally refers to the contractual relationship between TOC and end-customer, not to the contractual relationship between IM and TOC.
* The term "ordered" in the attribute operationalStopOrdered refers to the contractual relationship between IM and TOC.
 
= Sand box =
 
=== Diskussion timetable Treffen Wien 16.03.2015 ===
* <trainPart>.trainNumber: nichts oder (redundant) Nummer des verkehrlichen/commercial Zugs wie <train>.trainNumber
* <trainPart>.code: Nummer des Zugteils (wie "61458" für Praha - Erfurt) -> Verwendung unklar
* <trainPart>.name: optional Name des Zugteils (wie "Canopus")
 
An einem operational train sollte kein Znr-Wechsel modelliert werden. trainNumber vom <trainPart> sollte nicht verwendet werden, zur Abbildung von Zugnummerwechseln bei durchlaufenden Zügen. Hierfür müsste ein neues Attribut an der trainPartsequence vorgesehen werden.
 
Offen ist, ob ein Wechsel der Zugnummern bei betrieblichen Zügen praktisch vorkommen kann.
 
trainNumber und name sollen inhaltlich zum commercial train verschoben werden -> evtl. in 2.3. als deprecated erklären. code soll am trainPart erhalten bleiben.
 
operational trains:
* <train>.trainNumber/scope/additionalTrainNumber: wie bekannt in der "Summe" (als Tripel) Eindeutigkeitskriterum über alle operational trains
* <train>.code: frei für eine Art Schlüssel des Zuges, der über die railML-Datei hinaus Bedeutung haben kann
* <train>.name: nicht verwendet


It must be possible to chain all <trainPart> elements that model one run through group of vehicles. Each of this sequences of <trainPart> elements must have a key that is unique in the railML data set as well as in the target system.
commercial trains:
* <train>.trainNumber/scope/additionalTrainNumber: wie bekannt in der "Summe" (als Tripel) Eindeutigkeitskriterum über alle commercial trains (Besonderheit FBS: hier nur trainNumber benutzt, scope/additionalTrainNumber immer leer)
* <train>.code: frei für eine Art Schlüssel des Zuges, der über die railML-Datei hinaus Bedeutung haben kann
* <train>.name: optional Name des Zuges (wie "Canopus")


Improvements for further versions:
==== trainNumber vs. code im Allgemeinen: ====


In the current implementation of railML 2.x it is not clearly defined how two <trainPart> elements in succeding <trainPartSequence>s must be chained, to model a run through group of vehicles. One approach is to chain all <trainPart> elements with the same key (code, name, etc.) in an order that the last referenced <ocp> of the current <trainPart> is the same as the first <ocp> of the following <trainPart>. A better modeling for this aspect is in my opinion to use the concept of commercial trains in another way as described in the wiki: Each commercial train should model exactly one sequence of <trainPart> elements. Today it may contain several "parallel" sequences of <trainPart> elements at the same time, which makes it impossible to figure out which <trainPart> elements of two succeding <trainPartSequence>s must be linked together.
code soll für jeden Tag eine eindeutige Bezeichnung eines Zuges herstellen (im Gegensatz zur trainNumber, die an einem Tag mehrfach vorkommen kann, z.B. verschiedene EVU, etc.). code soll eine eindeutige Id für den Zug darstellen und darf deswegen nicht Zugeigenschaften, wie Verkehrstage, Laufweg etc. abbilden.  


Used terms and expressions:
für die "Betitelung" (Vermarktung) von commercial trains dem Reisenden gegenüber = Spaltenüberschrift im Kursbuch gilt: wenn <commercial train>.trainNumber angegeben ist, wird diese verwendet. Ansonsten wird <commercial train>.name verwendet. Eines von beiden muss angegeben sein.
* target system: the system, in which the railML data is imported
* data set: a set of railML data that is transfered to the target system within one transaction, usually the content of one railML file


Open Issues:
besondere Bedingungen für das Einlesen von RailML-Dateien in FBS:
* Referencing <ocp>s via "code" or <designator>
- <commercial train>.trainNumber/scope/additionalTrainNumber/name werden nicht ausgewertet
* Modelling defined and undefined timetable periods
* One commercial train for each trainPart sequence or only multiple trainParts in each sequence of commercial train allowed; moving the key attribute (code or name) from trainPart to the commercial train
* referencing trains (via "code" or trainNumber/scope/additionalTrainNumber>
* referencing categories

Latest revision as of 07:10, 13 June 2020

UnderConstruction.png This page is under construction since December 04th 2017. Task: Adjust layout. Sorry for temporary problems. See the discussion page to find a summary of the tasks and to coordinate the work on this page. Recognize that the content of this page may change quickly. Coordination --Coordination (talk) 10:13, 4 December 2017 (CET)

Specifying the stop position of a train within a station / Angabe der Halteposition eines Zuges in einer Betriebsstelle

General / Allgemeines

In general there is two ways of specifying the stop position within a station/operational stop:

  1. Direct specification of the stop position within the train part
  2. Referring to a <stopPost>-element of the infrastructure

If a railML file already includes the definition of <stopPost>-elements as part of the infrastructure, these stopPosts should also be used to specify the stop position. Within one railML file only one approach to specifying stop positions should be used consistently.

Grundsätzlich bestehen zwei alternative Möglichkeiten zur Abbildung der Halteposition innerhalb einer Betriebsstelle:

  1. Angabe der Halteposition direkt im Zuglauf
  2. Referenzierung eines <stopPost>-Elements der Infrastruktur

Sind in einer railML-Datei <stopPost>-Elemente definiert, so sollten diese auch referenziert werden. Innerhalb einer railML-Datei sollte die Abbildung der Halteposition einheitlich in einer der beiden Varianten erfolgen.

Direct specification of the stop position within the train part / Angabe der Halteposition direkt im Zuglauf

For this approach the stop position of a train is specified with the attribute offset of the <ocpTT>. It describes the offset to the center of the operation control point measuring from a reference point of the train indicated by the attribute alignment. In this case the direction of the train - which be required for evaluating this information - can only be determined by analyzing the the train part and its underlying topology.

In dieser Abbildungsvariante wird die Halteposition des Zuges in der <ocpTT> durch eine Entfernung (offset) zur Betriebsstellenmitte sowie den Bezugspunkt des Zuges (alignment) darauf definiert. Die Fahrtrichtung des Zuges an diesem Halteplatz kann dabei nur implizit durch Analyse des Zug-Laufwegs und der Strecken-Topologie ermittelt werden.

  <ocp id="_85ZUE" code="85ZUE" name="Zürich HB" />
  ...
  <ocpTT ocpRef="_85ZUE" alignment="head" offset="-10">
    <times scope="scheduled" arrival="10:59:00" departure="11:04:00"/>
  </ocpTT>

In the above example the stop position of a train at the station "Zürich HB" is specified with 10 m in front of the center of the station measured from the head of the train (alignment=head).

Das Beispiel beschreibt einen Zug, der in der Betriebsstelle "Zürich HB" mit der Zugspitze (alignment=head) 10m vor der Betriebsstellen-Mitte hält.

Referring to a <stopPost>-element of the infrastructure / Referenzierung eines Halteplatzes (<stopPost>) der Infrastruktur

With this approach the stop position is not specified within the <trainPart>s. Instead, <stopPost> elements are included in the infrastructure which can be referred to from an <ocpTT> using the attribute stopPostRef.

A <stopPost> is defined as a child element of a <track>. This implies that for each <stopPost> required, a corresponding <track> needs to be specified as part of the infrastructure. In order to specify a designation for a <stopPost> the attributes code and name can be supplied. code should be used to indicate an external key, used to identify a corresponding object in an infrastructure database. name can be used to specify a display name which for example could be used for passenger information. In order to specify the exact position of the <stopPost> on the containing <track> the attribute pos is used.

Bei dieser Abbildungsvariante wird der Halteort nicht innerhalb des <trainPart>s angegeben, stattdessen wird in der Infrastruktur ein <stopPost>-Element angelegt, welches über das Attribut stopPostRef der jeweiligen <ocpTT> referenziert wird.

Ein <stopPost> wird als Unterelement eines <track> abgebildet, d.h. für jeden <stopPost> muss auch ein entsprechender <track> in der Infrastruktur angelegt werden. Die Bezeichnung des <stopPost> kann mit Hilfe der Attribute code bzw. name definiert werden, wobei code für einen externen Schlüssel (bspw. in einer Infrastruktur-Datenbank) vorgesehen ist, während name einen Anzeigenamen enthalten kann. Die genaue Halteposition des Zuges kann über die Eigenschaft pos des <stopPost> auf dem übergeordneten <track> definiert werden.

  <track id="_tr" code="12" name="12">
    <trackTopology>
      <trackBegin id="_tb" pos="0">
        <macroscopicNode ocpRef="_85ZUE" />
      </trackBegin>
      <trackEnd id="_te" pos="647">
        <macroscopicNode ocpRef="_85ZUE" />
      </trackEnd>
    </trackTopology>

    <ocsElements>
      <stopPosts>
        <stopPost id="_sp" code="B" name="Sektor B" pos="10"/>
      </stopPosts>
    </ocsElements>
  </track>
  ...
  <ocp id="_85ZUE" code="85ZUE" name="Zürich HB" />
  ...
  <ocpTT ocpRef="_85ZUE" stopPostRef="_stp" trackRef="_tr">
    <times scope="scheduled" arrival="10:59:00" departure="11:04:00"/>
  </ocpTT>

In the above example a train stops at the station "Zürich HB" at the stop post with the external key "B". The display name of the stop post is given as "Sektor B". Das Beispiel beschreibt einen Zug, der in der Betriebsstelle "Zürich HB" am Halteplatz mit dem externen Schlüssel "B" hält. Der Anzeigename dieses Halteplatzes ist "Sektor B".

Additional information / Weitere Informationen



Default values of stop description and their dependencies

Nr. <ocpTT> <stopDescription> Description
ocpType guaranteedPass commercial onOff stopOnRequest operationalStopordered  
1.1 pass true attribute not to be used attribute not to be used attribute not to be used attribute not to be used guaranteed pass
1.2 false attribute not to be used attribute not to be used attribute not to be used attribute not to be used non-guaranteed pass
2.1 stop, begin, end attribute not to be used true both true attribute not to be used commercial stop on request for on and off
2.2 attribute not to be used true both false attribute not to be used commercial stop for on and off
2.3 attribute not to be used true on true attribute not to be used commercial stop on request for on only
2.4 attribute not to be used true on false attribute not to be used commercial stop for on only
2.5 attribute not to be used true off true attribute not to be used commercial stop on request for off only
2.6 attribute not to be used true off false attribute not to be used commercial stop for off only
2.7 attribute not to be used false currently not supported currently not supported true operational stop ordered by the TOC
2.8 attribute not to be used false currently not supported currently not supported false operational stop introduced by the IM

Comments:

  • Values "begin" and "end" of the attribute "ocpType" are deprecated with railML2.2
  • green cells are default values
  • if no <stopDescription> is given, then it is either a non-guaranteed pass (1.2) or a stop with undefined properties, depending on the attribute "ocpType"
  • The term "commercial" of the attribute in railML traditionally refers to the contractual relationship between TOC and end-customer, not to the contractual relationship between IM and TOC.
  • The term "ordered" in the attribute operationalStopOrdered refers to the contractual relationship between IM and TOC.

Sand box

Diskussion timetable Treffen Wien 16.03.2015

  • <trainPart>.trainNumber: nichts oder (redundant) Nummer des verkehrlichen/commercial Zugs wie <train>.trainNumber
  • <trainPart>.code: Nummer des Zugteils (wie "61458" für Praha - Erfurt) -> Verwendung unklar
  • <trainPart>.name: optional Name des Zugteils (wie "Canopus")

An einem operational train sollte kein Znr-Wechsel modelliert werden. trainNumber vom <trainPart> sollte nicht verwendet werden, zur Abbildung von Zugnummerwechseln bei durchlaufenden Zügen. Hierfür müsste ein neues Attribut an der trainPartsequence vorgesehen werden.

Offen ist, ob ein Wechsel der Zugnummern bei betrieblichen Zügen praktisch vorkommen kann.

trainNumber und name sollen inhaltlich zum commercial train verschoben werden -> evtl. in 2.3. als deprecated erklären. code soll am trainPart erhalten bleiben.

operational trains:

  • <train>.trainNumber/scope/additionalTrainNumber: wie bekannt in der "Summe" (als Tripel) Eindeutigkeitskriterum über alle operational trains
  • <train>.code: frei für eine Art Schlüssel des Zuges, der über die railML-Datei hinaus Bedeutung haben kann
  • <train>.name: nicht verwendet

commercial trains:

  • <train>.trainNumber/scope/additionalTrainNumber: wie bekannt in der "Summe" (als Tripel) Eindeutigkeitskriterum über alle commercial trains (Besonderheit FBS: hier nur trainNumber benutzt, scope/additionalTrainNumber immer leer)
  • <train>.code: frei für eine Art Schlüssel des Zuges, der über die railML-Datei hinaus Bedeutung haben kann
  • <train>.name: optional Name des Zuges (wie "Canopus")

trainNumber vs. code im Allgemeinen:

code soll für jeden Tag eine eindeutige Bezeichnung eines Zuges herstellen (im Gegensatz zur trainNumber, die an einem Tag mehrfach vorkommen kann, z.B. verschiedene EVU, etc.). code soll eine eindeutige Id für den Zug darstellen und darf deswegen nicht Zugeigenschaften, wie Verkehrstage, Laufweg etc. abbilden.

für die "Betitelung" (Vermarktung) von commercial trains dem Reisenden gegenüber = Spaltenüberschrift im Kursbuch gilt: wenn <commercial train>.trainNumber angegeben ist, wird diese verwendet. Ansonsten wird <commercial train>.name verwendet. Eines von beiden muss angegeben sein.

besondere Bedingungen für das Einlesen von RailML-Dateien in FBS: - <commercial train>.trainNumber/scope/additionalTrainNumber/name werden nicht ausgewertet