SportsML 2.1 Tournament Structure

This is a proposal for 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.

  • Created: Feb. 21/09
  • Modified: March 02/09 (indicated by strikeouts and date marks)

Group Stage

Problem: Groups are divisions of a stage (Groups Stage), yet division is allowed only as a child of the “tournament” element. Groups stage needs to be properly represented.

Solution: Allow “tournament-division” as child of tournament-stage. Allow tournament-stage as child of tournament. (Stage was previously only allowed under division, which in turn was only allowed under tournament, thus making division a de facto required element.) Must be decided which is preferable: groups represented as stages or as rounds (or leave it open?). Both are now valid and illustrated in the following files: Euro 2008: Groups as stages | Euro 2008: Groups as rounds.

Standings

Problem: Standings are relevant at certain stages of some tournaments (eg. Groups Stage of Euro 2008). Yet they are allowed only under the tournament-division element.

Solution: Allow standings under tournament, tournament-stage and tournament-round. Also, an attribute to specify if advancement is based on elimination or standings points. A proposal:

tournament-stage-metadata/@stage-type (group | series | single-elimination | home-and-home)

tournament-round-metadata/@round-type (group | series | single-elimination | home-and-home) (added March 2/09)

Format mapping

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:

  • tournament-metadata/@minimum-stage-number
  • tournament-metadata/@maximum-stage-number
  • tournament-stage-metadata/@stage-number
  • tournament-stage-metadata/@minimum-division-number
  • tournament-stage-metadata/@maximum-division-number
  • tournament-stage-metadata/@maximum-stage-number (added March 2/09)
  • tournament-stage-metadata/@minimum-stage-number (added March 2/09)
  • tournament-stage-metadata/@maximum-round-number
  • tournament-stage-metadata/@minimum-round-number
  • tournament-stage-metadata/@minimum-event-number (added March 2/09)
  • tournament-stage-metadata/@maximum-event-number (added March 2/09)
  • tournament-division-metadata/@division-number
  • tournament-division-metadata/@minimum-event-number
  • tournament-division-metadata/@maximum-event-number
  • tournament-division-metadata/@minimum-stage-number (added March 2/09)
  • tournament-division-metadata/@maximum-stage-number (added March 2/09)
  • tournament-round-metadata
  • tournament-round-metadata/@minimum-event-number
  • tournament-round-metadata/@maximum-event-number
  • sports-event/event-metadata/@series-index

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 the examples.

Series Scores and Results

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

Conclusion

Because this is core-level modelling of important sports events, I urge all members of the IPTC and the mailing list to apply stress to this model. Is it still too restrictive? Does this model work for all tournaments you can think of? Are the elements and attributes too literal?