Hi all,
in our last timetable developer group meeting we discussed about a certain aspect of the modelling we wanted to get feedback from the community about. For this let me set the stage a little. The general idea of describing circulations in railML 3 is to define blocks and connections between these block (so no more intermediate layers). So far our solution was to simply create a so called <blockConnection> between two <block>'s, a block being a task like cleaning, shunting, or an operational train run.
When creating examples for this developers noted that it would be easier if such a connection was not just from one block to one other but rather from one block to multiple possible successors. Depending on the attached validity either on or the other successor would apply.
Let me show by example:
The one to one block connection would look like this:
<vehicleRosterings>
<!-- all blockConnections reference the same <block> in the <from> -->
<vehicleRostering ...>
<blockConnection>
<from blockRef="bl_4712_BA" validityRef="1101000" />
<to blockRef="bl_4711_A_B" dayOffset="1" />
</blockConnection>
<blockConnection>
<from blockRef="bl_4712_BA" validityRef="0000100" />
<to blockRef="bl_4711_A_B" dayOffset="3" />
</blockConnection>
<blockConnection>
<from blockRef="bl_4712_BA" validityRef="0010000" />
<to blockRef="bl_refuel" dayOffset="0" />
</blockConnection>
</vehicleRostering>
</vehicleRosterings>
The same would look like this with the alternative approach:
<vehicleRosterings>
<!-- Summary of all <to> elements for a blockRef -->
<vehicleRostering ...>
<blockConnection blockRefFrom="bl_4712_BA">
<to blockRef="bl_4711_A_B" validityRef="1101000" dayOffset="1" />
<to blockRef="bl_4711_A_B" validityRef="0000100" dayOffset="3" />
<to blockRef="bl_refuel" validityRef="0010000" dayOffset="0" />
</blockConnection>
</vehicleRostering>
</vehicleRosterings>
Both code snippets specify that following bl_4712_BA different blocks may follow depending on the validity.
The benefit is that the secondary approach reduced redundancy by a lot. However, it may be harder for people unfamiliar with circulations in general to understand the concept. Since reduction of redundancy was one goal we tried to achieve with railML 3 timetable and clarity of concepts another following our targets doesnt really help us decide in this case. That why we wanted to ask for the opinion of the community.
Please let us know what you think.