The Total Chess Library
Being a database programmer, perhaps I shouldn't have been surprised when I recently dreamt I had to develop a chess database. But it wasn't an ordinary chess database. Carceri XIV - Giovanni Battista PiranesiI was told by a faceless person to make a chess database of all chess games ever played. If that doesn't sound like much, it's because that was not all. The man told me it must also contain all chess analyses ever made, as well as every comment, opinion or text ever written about any move. It would be a database of all existing chess knowledge -an endless chess library. It was like making the chess version of Jorge Luis Borges' Total Library. The ultimate Mega Database - an entire chess universe.I started by collecting all existing chess books ever written - both ancient manuscripts and newly printed books. I visited all chess libraries in the world and went through all privately owned chess book collections. But this clearly wasn't enough. I had to visit every chess player in person to ask for any scoresheets of games that they had in their possession. Then, I went through all local club magazines and internet blogs to find games I missed. This reminded me that I had to get all chess magazines as well. And, of course, I downloaded all digital books, DVD's, game analyses and instruction guides on chess.When I had rubricized all material and put it in a more or less logical order, I started thinking about how to put everything in a database. It didn't take me long to realize I wouldn't be able to use existing chess database software. It would just be too impractical. For 1.e4 alone, hundreds if not thousands of comments somehow had to be entered in the database, and this can't be done with a regular database program. While it is possible to add comments in different languages in some software, you can't add comments by different sources - at least not dynamically.So I started thinking about how to develop this chess database myself. Basically it had to contain many more dimensions than the current ones - in fact, it had to have an infinite amount of possible entries for comments and analyses. All published praise of 47...Bh3!! and 23...Qg3!! had to be entered into the database somehow. Actually, it should also be possible to add multiple annotation symbols, because perhaps some commentators had awarded these moves not with two, but only with one exclamation mark (a grave sin, I must say). The database design must take this into account as well.With the help of data warehouse design techniques, I was able to establish which dimensions my database should have. Obviously there should be dimensions with information about the sources (the books themselves), and information related to the games, or game fragments. This could be players' names, the year in which it was played, where it was played, and so on. The moves and sub variations (including move number, to keep track of things) should be stored in a different dimension (or, in its technical term, a 'fact table'). Any game, including its sub-lines, could develop like a garden of forking paths, leading to an infinite amount of moves.
'Datavault' model of a data warehouse
At that time it was also hoped that a clarification of humanity's basic mysteries -- the origin of the Library and of time -- might be found. It is verisimilar that these grave mysteries could be explained in words: if the language of philosophers is not sufficient, the multiform Library will have produced the unprecedented language required, with its vocabularies and grammars.For four centuries now men have exhausted the hexagons ... There are official searchers, inquisitors. I have seen them in the performance of their function: they always arrive extremely tired from their journeys; they speak of a broken stairway which almost killed them; they talk with the librarian of galleries and stairs; sometimes they pick up the nearest volume and leaf through it, looking for infamous words.Obviously, no one expects to discover anything.