The GAME FAQ

1. General

    What does GAME stand for?
    What is GAME?

2. Versioning

    What versions of GAME exist?
    Which version should I use?
    Will there be more versions?

3. Design Questions

    Why did you use DTDs instead of schema?
    What is the structure of the GAME2 DTDs?
    GAME2 is missing feature x. Can I add it and maintain compatability?
What does GAME stand for?

Genome Annotation Marup Elements

What is GAME?

GAME is an XML format which can be used to represent information about specific regions of a sequence. To facilitate discussion, I will call them features through the rest of this FAQ. GAME allows the differentiation between different types of features, such as those genertaed by a sequence analysis program and those generated by a human professional.

What versions of GAME exist?

The first version of GAME that came into wide usage is version 1.001. This version was created at the BDGP (Berkeley Drosophila Genome Project) by Suzanna Lewis and Erwin Frise. Version 1.001 can be found here. Version 1.001 is currently in use at BDGP and several other places as a data exchange format. The BDGP Gadfly (by Chris Mungall) perl modules have several modules for parsing and producing GAME 1.001. You can find info about the modules and Wiki Discussion at the BDGP site. In particular, the WebReports::*Out modules can all produce GAME 1.001 xml through their to_xml methods.

The newest version, game 2, is hosted here on the bioxml site. Game 2 seeks to improve upon GAME in several ways:
It's parsable. Game 1.001 was never parsable and thus, is impossible to validate against.
A simplified format. Game2 sticks to the core features.
More modular specification. Game 2 provides several entities which can be "subclassed" to create DTDs. As many or as few of these entities can be used as one wishes. They can also be extended locally for ones own purposes.
A more flexible linking system. Game 2 adds several ways to connect information. These include simple xlinks, idrefs, rdf connections and dbxrefs. This allows an annotation to connect to a sequence in a different document or database, for instance.
rdf support. The addition of rdf attributes allow you to link your data to an external meta-data repository.
NOTE: SInce Game 2 is a new standard it is not in wide use as of yet.

Which version should I use?

That depends upon your needs. If all you need is a data transport layer and you'd like to bootstrap off existing code, version 1.001 may be fine for your needs. However, if you need the ability to validate your documents, link between documents, add rdf hooks, etc, game 2 is probably the way to go. Additionally, it is expected that much more software for Game 2 will be coming on line shortly, including a parsing module for bioperl, gadfly modules, etc.

Will there be more versions?

Probably. In particular, when there is more software support fopr xml schema, expect a schema-based release.

Why did you use DTDs instead of schema?

Basically, this is because the XML schema software support isn't there yet. We'd like to see schema parsers in perl and python before taking that step.

What is the structure of the GAME2 DTDs?

Most of the elements and entities live in http://www.bioxml.org/dtds/game2/game2.ent . The full dtds are basically just wrappers which pull these in.
The major structural entities in game2.ent are seq, link, seq_relationship, feat, feat_set, computational_analysis amd computation. All of these entities can be extended when building stand-alone dtds. In fact, feat and feat_set are extended in the building of computational_analysis and annotation. The standard stand alone dtds are listed at http://www.bioxml.org/dtds/game2/index.html

GAME2 is missing feature x. Can I add it and maintain compatability?

Yes, usually you can. The major entities in game2.ent are meant to be extendable. If you'd like your documents to validate, you'll need to build an extended dtd, but relatively little work is needed to do this. For an example, see the computational_analysis and annotation entities in game2.ent, which both extend feat and feat_set. For more info, see the wiki pages. An important thing to note is the use of the implements attribute of several entities, which allows you to specify which base type your current element is derived from. If you extend an element, use this tag!