TT:trainGroup

From railML 2 Wiki
Revision as of 17:53, 23 September 2024 by RailML Coord Documentation (talk | contribs) (Linkfix)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


trainGroup
 


Scheme description / Schemenbeschreibung

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

Multiplicity / Anzahl

[1..∞]

Semantics / Bedeutung

The Element <trainGroup> is linking different individual trains to a group. This could for instance be used for an interval group of trains belonging together in a train path allocation process. All trains referenced by a trainGroup must be valid by themselves. No additional information can be inferred for any of those train by their membership in the same train group. This is necessary so that a railML® document including trainGroups can also be understood by systems that do not support reading of trainGroups in their use case.
Das Element <trainGroup> verknüpft verschiedene Einzelzüge zu einer Gruppe. Dies könnten beispielsweise die Züge einer Taktfamilie sein, die innerhalb einer Trassenanmeldung gemeinsam betrachtet werden sollen. Alle Züge, die von einer trainGroup referenziert werden, müssen für sich selbst stehen könne. Aus der Zugehörigkeit zu einer trainGroup können keine zusätzlichen Informationen für einen dieser Züge abgeleitet werden. Dies ist notwendig, damit ein railML®-Dokument, das trainGroups enthält, auch von Systemen verstanden werden kann, die das Lesen von trainGroups in ihrem Anwendungsfall nicht unterstützen.

Attributes of trainGroup / Attribute von trainGroup

  • id: XML-file-wide unique, machine-interpretable identity, required for later referencing that element internally. For a detailed explanation see Dev:identities.
    XML-Datei-weit eindeutige, maschineninterpretierbare Identität, die für die spätere interne Referenzierung dieses Elements erforderlich ist. Für eine detaillierte Erklärung siehe Dev:identities.
  • code (introduced with version 2.1): Machine-interpretable string (e.g. an abbreviation) used for identification of the object across exchange partners, usecase specific uniqueness constraints may apply. Please see our description of the differences between id, code and human-readable identifiers.
    Maschineninterpretierbare Zeichenkette (z.B. Abkürzung), die zur Identifizierung des Objekts auch bei Austauschpartnern verwendet wird, wobei spezifische Eindeutigkeitsbeschränkungen gelten können. Bitte beachten Sie unsere Erläuterung zu den Unterschieden zwischen id, code and menschenlesbaren Kennzeichnungen.
  • name: Established, human-readable short string, giving the object a name. Not intended for machine interpretation, please see our notice on human interpretable data fields.
    Etablierte, menschenlesbare kurze Zeichenkette, die das Objekt benennt. Nicht zur maschinellen Interpretation bestimmt, siehe Hinweise zu menschenlesbaren Datenfeldern.
  • description: Human-readable, more detailed description as addition to the name. It should give additional explanations or hints to the contents of this element. Not intended for machine interpretation, please see our notice on human interpretable data fields.
    Menschenlesbare, detailliertere Beschreibung als Ergänzung zu name. Sie soll zusätzliche Erläuterungen oder Hinweise auf den Inhalt dieses Elements geben. Nicht zur maschinellen Interpretation bestimmt, siehe Hinweise zu menschenlesbaren Datenfeldern.
  • xml:lang (introduced with version 2.1): This is a unique identifier of language. It uses basically the language standard IETF BCP 47 (external link) which may be different to ISO 639-1 (external link) or ISO 639-2 (external link). For mapping hints see relation to other standards (external link).
    This defines the language used for name and description. Use <additionalName> to provide a name and/or description in other languages.
  • type: This attribute can be used to specify the reason why the trains were combined into a train group. Possible values are:
  • interval: The trains run in a periodic interval; i.e. all trains are scheduled with the same or similar times on the stations, different operating days or lengths of the running routes are permissible. Please also refer to the notes section below for further information. For further background information about interval timetables you may refer to Clock-face scheduling (Wiki banner.png 🇬🇧) too.
    Die Züge verkehren in einem periodischen Intervall; daß heisst alle Züge verkehren mit gleichen oder ähnlichen Zeiten auf den Stationen, unterschiedliche Verkehrstage oder Längen der Laufwege sind dabei zulässig. Weitere Informationen finden Sie unter "Anmerkungen". Weitere Hintergrund-Infomationen hierzu sind auf der zugehörigen Wikipedia-Seite zu Taktfahrplänen (Wiki banner.png 🇩🇪) zu finden.
  • other:anything: Any value that does not fit any value from the previous enumeration list, fulfilling the constraint: at minimum two characters, whitespace is not allowed. Please, apply Dev:usingAny accordingly.
  • trainNumber: This attribute is used to specify a number identifying the <trainGroup>, not to be confused with <train>@trainNumber. An example of usage would be the number of a family of trains that run in intervals, where all those trains are collected in the enclosing <trainGroup>, another example would be the trainnumber of a train that runs in different configurations within the schedule, where all variants are grouped in the enclosing <trainGroup>.
    Dieses Attribut spezifiziert die Nummer der <trainGroup> und darf nicht mit <train>@trainNumber verwechselt werden. Ein Beispiel für die Verwendung wäre die Nummer einer Familie von Zügen, die in Intervallen verkehren, wobei alle diese Züge in der umschließenden <trainGroup> zusammengefasst werden. Ein anderes Beispiel wäre die Zugnummer eines Zuges, der in verschiedenen Konfigurationen innerhalb des Fahrplans verkehrt, wobei alle Varianten in der umschließenden <trainGroup> zusammengefasst werden.
🗒️ The semantics of the attribute values for @trainNumber have not been fully defined in the past. In general the attribute shall provide a means of identifying a <trainGroup>, although its name suggests otherwise. The usage of this attribute is disencouraged.


  • processStatus: It describes the trainGroup status in relation to a working process. (deprecated with version 2.5)
🗒️ The semantics of the attribute values for @processStatus have not been fully defined in the past. In general the attribute shall describe a state of the process supported by railML®. Therefore the precise semantics shall be clarified between data provider and the data consumer.
Examples:
If an updated version of a timetable is transferred, the @processStatus is used by some systems to indicate if a train was changed compared to the previous data transfer by providing @processStatus=changed.
For the use case slot ordering the attribute is used with the value planned by some systems to describe that a train has been planned in the scheduling tool, but hasn’t been taken into account for the slot ordering process.

Possible values are:

  • planned
  • actual
  • calculated
  • toBeChecked
  • changed
  • imported
  • other:anything: Any value that does not fit any value from the previous enumeration list, fulfilling the constraint: at minimum two characters, whitespace is not allowed. Please, apply Dev:usingAny accordingly.
  • patternTrainRef (introduced with version 2.5): Reference to a <patternTrain> that is the basis for the trains in the <trainGroup>.
  • parentRef (introduced with version 2.5): Reference to a superordinate trainGroup. Allows the composition of hierarchies of trainGroups. In order to compose trainGroups that only consist of (further) trainGroups, "empty" trainGroups without trainRefs may also exist starting with railML® 2.5.
    Referenz zu einer übergeordneten trainGroup. Ermöglicht die Bildung von Hierarchien aus trainGroups. Um auch trainGroups bilden zu können, die nur aus (weiteren) trainGroups bestehen, dürfen ab railML® 2.5 auch "leere" trainGroups ohne trainRefs existieren.

Syntactic Constraints / Syntaktische Beschränkungen

  • id: xs:ID, required
    a string, starting with a letter (a..zA..Z) or an underscore (_),
    followed by a non-colonized and non-spaced string consisting of letters, digits, points (.), dashes (-) or underscores (_)
  • code: xs:string, optional
  • name: xs:string, optional
  • description: xs:string, optional
  • xml:lang: xs:language, language identification, optional
  • type: union of (restriction of xs:string, tOtherEnumerationValue); tOtherEnumerationValue is an arbitrary string starting with 'other:' followed by at minimum two characters, white space not allowed for extending railML® enumeration lists, optional
  • processStatus: union of (restriction of xs:string, tOtherEnumerationValue); tOtherEnumerationValue is an arbitrary string starting with 'other:' followed by at minimum two characters, white space not allowed for extending railML® enumeration lists optional

Best practice & Examples / Empfohlene Anwendung & Beispiele

Three Thalys trains (9304, 9306, 9308) driving during a day belonging to the same family of an interval train (9300)

<trainGroups>
  <!-- Interval trains -->
  <trainGroup id="THA_9300" type="interval" description="Bruxelles - Paris" trainNumber="9300">
    <trainRef sequence="1" ref="o9304"/>
    <trainRef sequence="2" ref="o9306"/>
    <trainRef sequence="3" ref="o9308"/>
  </trainGroup>
</trainGroups>

Example for attribute @parentRef

<trainGroups>
  <trainGroup id="trg_1" name="parent trainGroup for trainGroups A and B"/>
  <trainGroup id="trg_2" name="trainGroup A" parentRef="trg_1">
    <trainRef ref="..." sequence="1" />
    <trainRef ref="..." sequence="2" />
  </trainGroup>
  <trainGroup id="trg_3" name="trainGroup B" parentRef="trg_2">
    <trainRef ref="..." sequence="1" />
    <trainRef ref="..." sequence="2" />
    <trainRef ref="..." sequence="3" />
  </trainGroup>
</trainGroups>

Notes / Anmerkungen

In principle, <trainGroup> was intended to be able to group trains that have similarities and could therefore be processed together. However, it must be pointed out that this cannot be ensured by railML®. It is therefore possible that trains are grouped together in <trainGroup> whose relationship may not be readable from the data coded in railML®. Even when specifying the type as interval, it cannot be assumed that, for example, all trains follow the same route or necessarily contain the same departure times, although of course that is what <trainGroup> with type=interval was intended for. However, the definition of what constitutes an interval is outside of railML®.
It is also important to note that membership in a trainGroup does not encode any information regarding the trains circulation. This kind of information is specified using the element <rostering> and its children.
<trainGroup>s can for example be used to group together trains that have been scheduled as a replacement for trains that have been cancelled due to construction work. The fact that these trains are a replacement however is encoded using the element <replacementOf> at the level of the individual cancelled trains.
Grundsätzlich war <trainGroup> dafür gedacht, Züge, die Gemeinsamkeiten aufweisen und daher gemeinsam verarbeitet werden könnten, gruppieren zu können. Es muss aber darauf hingewiesen werden, dass dies durch railML® nicht sichergestellt werden kann. Es ist also möglich, dass Züge in <trainGroup> zusammengefasst werden, deren Zusammenhang u. U. nicht aus den in railML® kodierten Daten ablesbar ist. Auch bei der Angabe des type als interval kann nicht davon unbesehen ausgegangen werden, dass beispielsweise alle Züge dem selben Streckenverlauf folgen, oder zwingend gleiche Abfahrtszeiten enthalten, auch wenn dies natürlich die intendierte Bedeutung einer solchen <trainGroup> ist. Die Definition, was ein interval ausmacht liegt jedoch ausserhalb von railML®.
Es ist auch wichtig anzumerken, dass die Mitgliedschaft in einer trainGroup keine Informationen über den Umlauf der Züge kodiert. Diese Art von Information wird mit dem Element <rostering> und seinen Subelementen abgebildet.
Ein weiteres Beispiel für den Einsatz von <trainGroup>s ist die Zusammenfassung von Zügen, die als Ersatzleistungen für andere geplant werden. Es ist allerdings zu beachten, dass die Information, dass es sich um Ersatzzüge handelt, mit dem Element <replacementOf> auf der Ebene der einzelnen ausgefallenen Züge kodiert wird.

Open issues / Offene Punkte/Pendenzen

Not yet described. / Noch nicht beschrieben.