TT:ocpTT ocpsTT trainPart: Difference between revisions

From railML 2 Wiki
Jump to navigation Jump to search
[checked revision][checked revision]
(Hinweis entsprechend Ticket 235)
(added reference to other relevan semcons as requested by the tt-developers)
 
(39 intermediate revisions by 4 users not shown)
Line 8: Line 8:
{{Deu|Das Element {{TT:Doc|ocpTT}} beschreibt den einzelnen Punkt im Zuglauf. Der {{TT:Doc|ocpTT}} entspricht einem ''Fahrzeitmesspunkt''. Ein Fahrzeitmesspunkt kann, muss aber keine Betriebsstelle sein. Meist ist ein {{TT:Doc|ocpTT}} gleichzusetzen mit einen Bahnhof und der dortigen Ankunfts- und Abfahrtszeit. Es kann aber genauso gut ein Blocksignal mit oder ohne Durchfahrtszeit oder auch ein beliebiger Messpunkt auf der Strecke sein. Der jeweilige {{TT:Doc|ocpTT}} verweist immer auf einen in der Infrastruktur definierten {{IS:Doc|ocp}} und beschreibt dessen Verwendung im Fahrplan. Als Regel darf jeder {{TT:Doc|ocpTT}} nur einmal innerhalb eines {{TT:Doc|trainPart}}s auftauchen.}}
{{Deu|Das Element {{TT:Doc|ocpTT}} beschreibt den einzelnen Punkt im Zuglauf. Der {{TT:Doc|ocpTT}} entspricht einem ''Fahrzeitmesspunkt''. Ein Fahrzeitmesspunkt kann, muss aber keine Betriebsstelle sein. Meist ist ein {{TT:Doc|ocpTT}} gleichzusetzen mit einen Bahnhof und der dortigen Ankunfts- und Abfahrtszeit. Es kann aber genauso gut ein Blocksignal mit oder ohne Durchfahrtszeit oder auch ein beliebiger Messpunkt auf der Strecke sein. Der jeweilige {{TT:Doc|ocpTT}} verweist immer auf einen in der Infrastruktur definierten {{IS:Doc|ocp}} und beschreibt dessen Verwendung im Fahrplan. Als Regel darf jeder {{TT:Doc|ocpTT}} nur einmal innerhalb eines {{TT:Doc|trainPart}}s auftauchen.}}


|parent = {{TT:Tag|ocpsTT}}
|parent = {{TT:Tag|ocpsTT|trainPart}}
 
|childs = {{TT:Tag|times|ocpTT ocpsTT trainPart}}, {{TT:Tag|connections}}, {{TT:Tag|statistics}}, {{TT:Tag|sectionTT}}, {{tag|tt|alternativeSectionsTT}} {{intro|2.5}}, {{TT:Tag|stopDescription|ocpTT ocpsTT trainPart}}, {{tag|TT|originalTrackInfo}} {{intro|2.5}}, {{any}}
|childs = {{TT:Tag|times}}, {{TT:Tag|connections}}, {{TT:Tag|statistics}}, {{TT:Tag|sectionTT}}, {{TT:Tag|stopDescription}}, {{any}}
|maxocc=∞
|inheritedAttributes=''None''
|inheritedAttributes=''None''
|ownAttributes =
|ownAttributes =
Line 30: Line 30:
* {{Attr|ocpType}}: This is a mixture of two informations describing the action of the {{TT:Doc|train}} at this {{TT:Doc|ocpTT}}. Possible values are:
* {{Attr|ocpType}}: This is a mixture of two informations describing the action of the {{TT:Doc|train}} at this {{TT:Doc|ocpTT}}. Possible values are:
:* {{Enum|stop}} The {{TT:Doc|train}} is stopping at this {{TT:Doc|ocpTT}}.
:* {{Enum|stop}} The {{TT:Doc|train}} is stopping at this {{TT:Doc|ocpTT}}.
:* {{Enum|pass}} The {{TT:Doc|train}} is ''not'' stopping at this {{TT:Doc|ocpTT}}.
:* {{Enum|pass}} The {{TT:Doc|train}} is ''not'' stopping at this {{TT:Doc|ocpTT}} and will pass.
:* {{Enum|begin}} {{Depr|2.2}} If the {{TT:Doc|trainPart}} begins at this {{TT:Doc|ocpTT}} and is not part of a longer train path, this value is used. The start of a train path should be detected by parsing the {{TT:Doc|train}}s.
:* {{Enum|begin}} {{Depr|2.2}} If the {{TT:Doc|trainPart}} begins at this {{TT:Doc|ocpTT}} and is not part of a longer train path, this value is used. The start of a train path should be detected by parsing the {{TT:Doc|train}}s.
:* {{Enum|end}} {{Depr|2.2}} If the {{TT:Doc|trainPart}} ends at this {{TT:Doc|ocpTT}} and is not part of a longer train path, this value is used. The end of a train path should be detected by parsing the {{TT:Doc|train}}s.
:* {{Enum|end}} {{Depr|2.2}} If the {{TT:Doc|trainPart}} ends at this {{TT:Doc|ocpTT}} and is not part of a longer train path, this value is used. The end of a train path should be detected by parsing the {{TT:Doc|train}}s.
Line 36: Line 36:
* {{Attr|remarks}}: This is a free attribute for further descriptions.{{human}}
* {{Attr|remarks}}: This is a free attribute for further descriptions.{{human}}


* {{Attr|trainReverse}}: This is true if the {{TT:Doc|train}} changes its direction of travel at this station which is often shown by a '<->' sign in printouts. For indicating that the {{RS:Doc|formation}} starts in reversed order, you will have to set the attribute {{Attr|orientationReversed}} in the {{TT:Doc|formationTT}}. If the train reverses at an intermediate station and restarts in reversed order, you will have to build a new {{TT:Doc|trainPart}} with  
* {{Attr|trainReverse}}: This is true if the {{TT:Doc|train}} changes its direction of travel at this station which is sometimes shown by a sign "&harr;" in printouts for passengers. For indicating that the {{RS:Doc|formation}} starts in reversed order, you will have to set the attribute {{Attr|orientationReversed}} in the {{TT:Doc|formationTT}}. If the train reverses at an intermediate station and restarts in reversed order, you will have to build a new {{TT:Doc|trainPart}} with  
** {{Attr|trainReverse}} set at the last {{TT:Doc|ocpTT}} of the previous {{TT:Doc|trainPart}} and  
** {{Attr|trainReverse}} set at the last {{TT:Doc|ocpTT}} of the previous {{TT:Doc|trainPart}} and  
** {{Attr|trainReverse}} set at the first {{TT:Doc|ocpTT}} and the attribute {{Attr|orientationReversed}} set in the {{TT:Doc|formationTT}} of the new {{TT:Doc|trainPart}}.
** {{Attr|trainReverse}} set at the first {{TT:Doc|ocpTT}} and the attribute {{Attr|orientationReversed}} set in the {{TT:Doc|formationTT}} of the new {{TT:Doc|trainPart}}.
Line 49: Line 49:
* {{Attr|offset}}: This describes the offset of the stopping point in relation to the place on a {{IS:Doc|track}} referenced by {{Attr|ocpRef}} in metres. The default value is zero (no offset).
* {{Attr|offset}}: This describes the offset of the stopping point in relation to the place on a {{IS:Doc|track}} referenced by {{Attr|ocpRef}} in metres. The default value is zero (no offset).


* {{Attr|shuntingTime}}: This is the shunting time used inside a station in case the train is shunted there.  
* {{Attr|shuntingTime}}: {{Depr|2.5}} This is the shunting time used inside a station in case the train is shunted there.  


{{InheritAnyAttribute
{{InheritAnyAttribute
Line 59: Line 59:
* {{Attr|sequence}}: {{RailMLType|tPositiveCounter}}, mandatory
* {{Attr|sequence}}: {{RailMLType|tPositiveCounter}}, mandatory
* {{Attr|ocpRef}}: {{RailMLType|tGenericRef}}, mandatory
* {{Attr|ocpRef}}: {{RailMLType|tGenericRef}}, mandatory
{{note|No {{attr|ocpRef}} is allowed to occur more than one time in the same {{TT:Tag|trainPart}}!
{{Deu|Kein {{attr|ocpRef}} darf mehrmals im selben {{TT:Tag|trainPart}} verwendet werden!}}|reminder}}
* {{Attr|trackRef}}: {{RailMLType|tGenericRef}}, optional
* {{Attr|trackRef}}: {{RailMLType|tGenericRef}}, optional
* {{Attr|trackInfo}}: {{XsdType|string}}, optional
* {{Attr|trackInfo}}: {{XsdType|string}}, optional
Line 69: Line 66:
* {{Attr|alignment}}: {{RailMLType|tTrainAlignment}}, optional
* {{Attr|alignment}}: {{RailMLType|tTrainAlignment}}, optional
* {{Attr|offset}}: {{RailMLType|tLengthM}}, optional
* {{Attr|offset}}: {{RailMLType|tLengthM}}, optional
* {{Attr|shuntingTime}}: {{XsdType|duration}}, optional
* {{Attr|shuntingTime}}: {{XsdType|duration}}, optional {{Depr|2.5}}
The sequence of the {{TT:Doc|ocpTT}} elements inside a {{TT:Doc|trainPart}} has to be according to the train path. <br/> {{Deu|Die Reihenfolge der {{TT:Doc|ocpTT}} innerhalb eines Teilzuges {{TT:Doc|trainPart}} muss mit der Abfolge der Punkte im Zuglauf übereinstimmen.}}
|semcon=
{{semcon|The attribute sequence is shall be increasing according to the train path.<br/> {{Deu|Das Attribut sequence muss ansteigend entsprechend dem Zuglauf sein.}}|status=approved|proposed=2018-10-25|approved=2019-06-20|id=TT:002}}


|bestpractice =  
|bestpractice =  
In most cases, the {{TT:Doc|ocpTT}} references a ''macroscopic'' node ({{IS:Doc|ocp}}) within the infrastructure. Therefore the {{Attr|trackRef}} should reference to a ''macroscopic'' {{IS:Doc|track}} which could be described as track with type="''stationTrack''" being inside a node, connecting from and to the same macroscopic node.
===How to define track and platform usage in stations===
 
The {{Attr|trackRef}} can reference either a ''microscopic'' {{IS:Tag|track}} inside the {{IS:Tag|ocp}} (containing a {{IS:Tag|crossSection}}) or a ''macroscopic'' station track (one where {{IS:Tag|trackBegin}} and {{IS:Tag|trackEnd}} contain {{IS:Tag|macroscopicNode}}s referencing the same {{IS:Tag|ocp}}).


{{Deu|Meistens referenziert der {{TT:Doc|ocpTT}} einen makroskopischen Knoten {{IS:Doc|ocp}} innerhalb der Infrastruktur. Daher sollte das Attribut {{Attr|trackRef}} ebenfalls ein ''makroskopisches'' Bahnhofsgleis referenzieren. Dieses kann man als einen {{IS:Doc|track}} vom Typ ''stationTrack'' beschreiben, welcher innerhalb eines Bahnhofs, d.h. von und zu demselben makroskopischen Knoten verläuft.}}
See [[dev:How to define track usage of a train in stations|How to define track usage of a train in stations]] for further information about the indication of station track usage.  


<hr>
===Train reverses in a station===


The train is stopping in Zurich (referenced {{IS:Doc|ocp}}) on track 12 (no reference here). It is stopping with its head 10 meters before actually reaching the cross section of this {{IS:Doc|ocp}}, which is assumed to be located at the buffer stop in the main hall of this station. Then the train is changing direction and leaving. In this example the train path is split into two subsequent {{TT:Doc|trainPart}}s because the position of the train (attributes {{Attr|alignment}} and {{Attr|offset}}) is different for arrival and departure.  
The train is stopping in Zurich (referenced {{IS:Doc|ocp}}) on track 12 (no reference here). It is stopping with its head 10 meters before actually reaching the cross section of this {{IS:Doc|ocp}}, which is assumed to be located at the buffer stop in the main hall of this station. Then the train is changing direction and leaving. In this example the train path is split into two subsequent {{TT:Doc|trainPart}}s because the position of the train (attributes {{Attr|alignment}} and {{Attr|offset}}) is different for arrival and departure.  
See [[How to define track usage of a train in stations]] for further information about the indication of station track usage.


<syntaxhighlight lang=xml>
<syntaxhighlight lang=xml>
Line 103: Line 101:


</syntaxhighlight>
</syntaxhighlight>
|notes =
===Train(part)s with one <ocpTT> only===
Normally, each {{TT:Tag|train}} has at least one {{TT:Tag|trainPart}} with at least two {{TT:Tag|ocpTT}}s. However, it is allowed that a {{TT:Tag|trainPart}} has only one {{TT:Tag|ocpTT}}. In this special case, what is mentioned at [[TT:times‎]] concerning {{Attr|arrival}} at first and {{Attr|departure}} at last {{TT:Tag|ocpTT}} applies at the same time: The train arrives from outside and immediately departs to outside the railML file. In very rare cases, this is used, for instance, to express only an occupation of a station track by a train which is not considered further. You can imagine a whole railML file which only expresses the station timetable of one station: All trains arrive from and depart to "nowhere". You should keep that special case in mind if you handle railML files on import.


===Reversing trains and formations===
On the difference between {{TT:Doc|ocpTT}}/@{{Attr|trainReverse}} and {{TT:Doc|formationTT}}/@{{Attr|orientationReversed}}, see [[TT:Reversing_trains_and_formations | Reversing trains and formations]].<br>
On the difference between {{TT:Doc|ocpTT}}/@{{Attr|trainReverse}} and {{TT:Doc|formationTT}}/@{{Attr|orientationReversed}}, see [[TT:Reversing_trains_and_formations | Reversing trains and formations]].<br>
See also:
See also:
* [[TT:howToReferenceInfrastructure | How to reference infrastructure]]
* [[Dev:How_To_Reference_Infrastructure | How to reference infrastructure]]
* [[How to define track usage of a train in stations]]
* [[dev:How to define track usage of a train in stations|How to define track usage of a train in stations]]
 
===Depicting track changes===
{{Intro|2.5}}To see how to handle the case when the actual track differs from the originally scheduled track, see the description of [[TT:originalTrackInfo#Depicting_track_changes|depicting track changes]].
 
==={{@|ocpType}} at the first and last stop===
Software that reads a {{rml}} document should also be able to handle {{TT:Tag|trainPart}}'s whose first and/or last {{TT:Tag|ocpTT}} has the value {{@|ocpType}} specified as {{enum|pass}}. This situation can occur in different scenarios. If, for example, incoming or outgoing traffic is described in {{rml}}, it is often the case that the first {{IS:Tag|ocp}} does not represent a stop, but rather encodes the time at which a train enters or leaves the network. Another reason may be that data on the {{TT:Tag|trainPart}} changes and this must therefore be broken. You should therefore generally not make the assumption that a train has a stop at the beginning or end of the {{TT:Tag|trainPart}}.
 
According to the semantic constraint [[TT:times_ocpTT_ocpsTT_trainPart#Semantic_Constraints_/_Semantic_Bestraints|TT:014]], no arrival time is specified in such a case, neither on the last {{TT:Tag|ocpTT}} of the ending {{TT:Tag|trainPart}} nor on the first {{TT:Tag|ocpTT}} of the beginning {{TT:Tag|trainPart}}. Make sure that the times do not contradict each other, i.e. ensure that also the semantic constraints [[TT:times_ocpTT_ocpsTT_trainPart#Semantic_Constraints_/_Semantic_Bestraints|TT:015 and TT:016]] are taken into account.
 
{{Deu| Eine Software, die ein {{rml}} Dokument liest, sollte auch mit {{TT:Tag|trainPart}}'s umgehen können, deren erster und/oder letzter {{TT:Tag|ocpTT}} als {{@|ocpType}} den Wert {{enum|pass}} angegeben hat. Diese Situation kann in unterschiedlichen Szenarien auftreten. Wenn beispielsweise einbrechende oder ausbrechende Verkehre in {{rml}} beschrieben werden, kommt es häufig vor, dass der erste {{IS:Tag|ocp}} keinen Halt darstellt, sondern vielmehr die Zeit kodiert zu der ein Zug in das Netz eintritt, oder dieses wieder verlässt. Ein anderer Grund kann sein, dass sich Daten am {{TT:Tag|trainPart}} ändern, und dieser deswegen gebrochen werden muss. Man sollte also generell nicht die Annahme treffen, dass ein Zug am Anfang oder Ende es {{TT:Tag|trainPart}} einen Halt hat.
 
Entsprechend des semantic constraints [[TT:times_ocpTT_ocpsTT_trainPart#Semantic_Constraints_/_Semantische_Beschränkungen|TT:014]] wird in einem solchen Fall keine Ankunftszeit angegeben, weder am letzen {{TT:Tag|ocpTT}} des endenden {{TT:Tag|trainPart}} noch am ersten {{TT:Tag|ocpTT}} des beginnenden {{TT:Tag|trainPart}}. Es ist darauf zu achten, dass die Zeiten sich nicht widersprechen, die semantic constraints [[TT:times_ocpTT_ocpsTT_trainPart#Semantic_Constraints_/_Semantic_Bestraints|TT:015 und TT:016]] sind also ebenso zu beachten.}}
 
===Train(part)s with one <ocpTT> only===
Normally, each {{TT:Tag|train}} has at least one {{TT:Tag|trainPart}} with at least two {{TT:Tag|ocpTT}}s. However, it is allowed that a {{TT:Tag|trainPart}} has only one {{TT:Tag|ocpTT}}. In this special case, what is mentioned at [[TT:times‎]] concerning {{Attr|arrival}} at first and {{Attr|departure}} at last {{TT:Tag|ocpTT}} applies at the same time: The train arrives from outside and immediately departs to outside the {{rml}} file. In very rare cases, this is used, for instance, to express only an occupation of a station track by a train which is not considered further. You can imagine a whole {{rml}} file which only expresses the station timetable of one station: All trains arrive from and depart to "nowhere". You should keep that special case in mind if you handle {{rml}} files on import.
 
===Specifying shunting times===
As of version 2.5 the attribute {{@|shuntingTime}} of the {{TT:Tag|ocpTT}} was declared deprecated. In order to specify a shunting time at a stop please refer to the attribute {{@|shuntingTime|TT:stopTimes}} of {{TT:Tag|stopTimes}}.
}}
}}

Latest revision as of 17:09, 7 March 2024


ocpTT
 


Scheme description / Schemenbeschreibung

Position of ocpTT in the XML-Tree / Position von ocpTT im XML-Baum

Multiplicity / Anzahl

[1..∞]

Semantics / Bedeutung

The element ocpTT describes a single point along the train path. Normally, an ocpTT belongs to a station with an arrivial and departure time. But an ocpTT could also be a blocking signal with or without passing time, or some control point on the train path. It is always referencing a certain ocp defined in the infrastructure part, providing some timetable related information for it. In the British railway timetabling system the ocpTT is called TIPLOC by Network Rail, which is a contraction of TIming Point LOCation.

Das Element ocpTT beschreibt den einzelnen Punkt im Zuglauf. Der ocpTT entspricht einem Fahrzeitmesspunkt. Ein Fahrzeitmesspunkt kann, muss aber keine Betriebsstelle sein. Meist ist ein ocpTT gleichzusetzen mit einen Bahnhof und der dortigen Ankunfts- und Abfahrtszeit. Es kann aber genauso gut ein Blocksignal mit oder ohne Durchfahrtszeit oder auch ein beliebiger Messpunkt auf der Strecke sein. Der jeweilige ocpTT verweist immer auf einen in der Infrastruktur definierten ocp und beschreibt dessen Verwendung im Fahrplan. Als Regel darf jeder ocpTT nur einmal innerhalb eines trainParts auftauchen.
 
Please, be aware of the semantic constraint(s)!

Attributes of ocpTT / Attribute von ocpTT

  • ocpRef: This refers to the id attribute of the associated ocp element.
  • trackRef: This refers to the id attribute of the associated track element.
  • sequence: (introduced with version 2.2) This number defines the order of the ocpTT elements inside a trainPart which is supposed to be chronological.
  • trackInfo: Textual description of station track for information purposes. The real track and platform information can and should be identified via the trackRef attribute.
  • ocpType: This is a mixture of two informations describing the action of the train at this ocpTT. Possible values are:
  • stop The train is stopping at this ocpTT.
  • pass The train is not stopping at this ocpTT and will pass.
  • begin (deprecated with version 2.2) If the trainPart begins at this ocpTT and is not part of a longer train path, this value is used. The start of a train path should be detected by parsing the trains.
  • end (deprecated with version 2.2) If the trainPart ends at this ocpTT and is not part of a longer train path, this value is used. The end of a train path should be detected by parsing the trains.
  • remarks: This is a free attribute for further descriptions.
💡 Please take into account our references to human-intepretable data fields.

Bitte berücksichtigen Sie unsere Hinweise zu menschen-intepretierbaren Datenfeldern.


  • trainReverse: This is true if the train changes its direction of travel at this station which is sometimes shown by a sign "↔" in printouts for passengers. For indicating that the formation starts in reversed order, you will have to set the attribute orientationReversed in the formationTT. If the train reverses at an intermediate station and restarts in reversed order, you will have to build a new trainPart with
For more information, see Reversing trains and formations.
  • alignment: This describes the alignment of the arriving train in relation to the place on a track referenced by ocpRef. Possible values are:
  • head - The head of the train (front of first vehicle) is located at the <ocp> referenced by ocpRef, possibly shifted by offset metres.
  • center - The centre of the train (mid point concerning the train length) is located at the <ocp> referenced by ocpRef, possibly shifted by offset metres.
  • rear - The end of the train (back of last vehicle) is located at the <ocp> referenced by ocpRef, possibly shifted by offset metres.
The default value for alignment is center if the attribute is not specified.
  • offset: This describes the offset of the stopping point in relation to the place on a track referenced by ocpRef in metres. The default value is zero (no offset).
  • shuntingTime: (deprecated with version 2.5) This is the shunting time used inside a station in case the train is shunted there.
  • xs:anyAttribute: This provides an extension point for non-railML® attributes in a foreign namespace. How to use it?

Syntactic Constraints / Syntaktische Beschränkungen

  • sequence: xs:positiveInteger, mandatory
  • ocpRef: xs:IDREF, mandatory
  • trackRef: xs:IDREF, optional
  • trackInfo: xs:string, optional
  • ocpType: restriction of xs:sting; stop, pass, begin (deprecated with version 2.2), end (deprecated with version 2.2)
    Optional
  • remarks: xs:string, optional
  • trainReverse: xs:boolean, optional
  • alignment: restriction of xs:string; generic type for the alignment of a train relative to some objective in the used context (head, center, rear), optional
  • offset: xs:decimal, 6 fraction digits, length value measured in meter, optional
  • shuntingTime: xs:duration, optional (deprecated with version 2.5)

Semantic Constraints / Semantische Beschränkungen

Private-cloud-icon.png Semantic Constraint "TT:002":
 
The attribute sequence is shall be increasing according to the train path.
Das Attribut sequence muss ansteigend entsprechend dem Zuglauf sein.
 
Proposed on October 25th 2018
Approved on June 20th 2019
FIXME: add Link to discussion!
Please, recognize our guidelines on semantic constraints

Best practice & Examples / Empfohlene Anwendung & Beispiele

How to define track and platform usage in stations

The trackRef can reference either a microscopic <track> inside the <ocp> (containing a <crossSection>) or a macroscopic station track (one where <trackBegin> and <trackEnd> contain <macroscopicNode>s referencing the same <ocp>).

See How to define track usage of a train in stations for further information about the indication of station track usage.

Train reverses in a station

The train is stopping in Zurich (referenced ocp) on track 12 (no reference here). It is stopping with its head 10 meters before actually reaching the cross section of this ocp, which is assumed to be located at the buffer stop in the main hall of this station. Then the train is changing direction and leaving. In this example the train path is split into two subsequent trainParts because the position of the train (attributes alignment and offset) is different for arrival and departure.


  <trainPart id="...">
    <ocpsTT>
      ...
      <ocpTT sequence="35" ocpRef="_85ZUE" ocpType="stop" trackInfo="12" alignment="head" offset="-10">
        <times scope="scheduled" arrival="10:56:00.0"/>
      </ocpTT>
    </ocpsTT>
  </trainPart>
  <trainPart id="...">
    <ocpsTT>
      <ocpTT sequence="1" ocpRef="_85ZUE" ocpType="stop" trackInfo="12" alignment="rear" trainReverse="true" offset="10">
        <times scope="scheduled" departure="11:04:00.0"/>
      </ocpTT>
      ...
    <ocpsTT>
  </trainPart>

On the difference between ocpTT/@trainReverse and formationTT/@orientationReversed, see Reversing trains and formations.
See also:

Depicting track changes

(introduced with version 2.5)To see how to handle the case when the actual track differs from the originally scheduled track, see the description of depicting track changes.

@ocpType at the first and last stop

Software that reads a railML® document should also be able to handle <trainPart>'s whose first and/or last <ocpTT> has the value @ocpType specified as pass. This situation can occur in different scenarios. If, for example, incoming or outgoing traffic is described in railML®, it is often the case that the first <ocp> does not represent a stop, but rather encodes the time at which a train enters or leaves the network. Another reason may be that data on the <trainPart> changes and this must therefore be broken. You should therefore generally not make the assumption that a train has a stop at the beginning or end of the <trainPart>.

According to the semantic constraint TT:014, no arrival time is specified in such a case, neither on the last <ocpTT> of the ending <trainPart> nor on the first <ocpTT> of the beginning <trainPart>. Make sure that the times do not contradict each other, i.e. ensure that also the semantic constraints TT:015 and TT:016 are taken into account.

Eine Software, die ein railML® Dokument liest, sollte auch mit <trainPart>'s umgehen können, deren erster und/oder letzter <ocpTT> als @ocpType den Wert pass angegeben hat. Diese Situation kann in unterschiedlichen Szenarien auftreten. Wenn beispielsweise einbrechende oder ausbrechende Verkehre in railML® beschrieben werden, kommt es häufig vor, dass der erste <ocp> keinen Halt darstellt, sondern vielmehr die Zeit kodiert zu der ein Zug in das Netz eintritt, oder dieses wieder verlässt. Ein anderer Grund kann sein, dass sich Daten am <trainPart> ändern, und dieser deswegen gebrochen werden muss. Man sollte also generell nicht die Annahme treffen, dass ein Zug am Anfang oder Ende es <trainPart> einen Halt hat.

Entsprechend des semantic constraints TT:014 wird in einem solchen Fall keine Ankunftszeit angegeben, weder am letzen <ocpTT> des endenden <trainPart> noch am ersten <ocpTT> des beginnenden <trainPart>. Es ist darauf zu achten, dass die Zeiten sich nicht widersprechen, die semantic constraints TT:015 und TT:016 sind also ebenso zu beachten.

Train(part)s with one <ocpTT> only

Normally, each <train> has at least one <trainPart> with at least two <ocpTT>s. However, it is allowed that a <trainPart> has only one <ocpTT>. In this special case, what is mentioned at TT:times‎ concerning arrival at first and departure at last <ocpTT> applies at the same time: The train arrives from outside and immediately departs to outside the railML® file. In very rare cases, this is used, for instance, to express only an occupation of a station track by a train which is not considered further. You can imagine a whole railML® file which only expresses the station timetable of one station: All trains arrive from and depart to "nowhere". You should keep that special case in mind if you handle railML® files on import.

Specifying shunting times

As of version 2.5 the attribute @shuntingTime of the <ocpTT> was declared deprecated. In order to specify a shunting time at a stop please refer to the attribute @shuntingTime of <stopTimes>.

Notes / Anmerkungen

Not yet described. / Noch nicht beschrieben.

Open issues / Offene Punkte/Pendenzen

Not yet described. / Noch nicht beschrieben.