The following are improvements to the SportsML tournament structure. We use the example of Champions League and Euro 2008 to illustrate some of the following problems and solutions. The samples are here.
Problem: Standings are relevant at certain stages of some tournaments (eg. Groups Stage of Euro 2008). Yet they were previously allowed only under the tournament-division element.
Solution: Allow standings under tournament-stage and tournament-round. Also, an attribute to specify if advancement is based on elimination or standings points. As follows:
tournament-stage-metadata/@stage-type (group | series | single-elimination | home-and-home)
tournament-round-metadata/@round-type (group | series | single-elimination | home-and-home)
Problem: There is no means of specifying the exact format of a tournament. For example, how do you say of a tournament event “This is the second leg of the second round of a knockout stage”? Another way of asking this is “What leg of the semi-finals is Arsenal playing tomorrow?”
Solution: Introduce a number of attributes which specify format. They are as follows:
An xpath answer to the Arsenal question would be:
tournament/tournament-division/tournament-stage[tournament-stage-metadata/@stage-number=2]/tournament-round[tournament-round-metadata/@round-number=3]/sports-event[event-metadata/@series-index=3][@event-number=2]
Note: New element tournament-round-metadata requires deprecating all attributes of tournament-round.
Another question: Which Euro 2008 group is Portugal a member of? Answer:
tournament/tournament-division/tournament-stage[tournament-stage-metadata/@stage-number=1]/tournament-stage[tournament-stage-metadata/@stage-number=1], i.e. Group A
or:
tournament/tournament-division/tournament-stage[tournament-stage-metadata/@stage-key='group']/tournament-stage[tournament-stage-metadata/@stage-key='group-a']
Both of these are illustrated in an example.
Problem: How can the status of a playoff or tournament series be determined i.e. San Antonio Spurs lead their NBA semi-finals playoff series 3-1
Solution: Create new attributes “series-score” and “series-score-opposing” for statAttributes. Examples:
team[team-metdata/name/@full='San Antonio Spurs']/team-stats/@series-score=3
team[team-metdata/name/@full='San Antonio Spurs']/team-stats/@series-score-opposing=1
Problem: Groups stage needs to be properly represented.
Solution: No changes necessary: individual groups can be represented as stages or rounds within a stage. Both are valid and illustrated in the following files: Euro 2008: Groups as stages | Euro 2008: Groups as rounds. (This addresses an initial erroneous assumption that an individual group was best cast as a "tournament-division". Casting as stage or round is deemed sufficient and requires no modifications to the spec.)
This solves a number of problems related to the structure of some typical soccer competitions. Further work is required to test it against other tournament formats such as Swiss and Page.