Formato PGN (Portable Game Notation)


I programmi vengono realizzati per lavorare con dati: nel nostro caso con partite di scacchi. Software libero senza una versione libera del formato con il quale vengono immagazzinate e trasmesse le partite impedirebbe un effettivo uso dei programmi. La definizione del formato PGN obbedisce a questo scopo.
I criteri utilizzati nella specificazione del formato sono i seguenti (http://www.tim-mann.org/Standard):
  • dettagli pubblicamente disponibili e liberi da qualsiasi complessità non necessaria;
  • formato non proprietario;
  • possibilità di lavorare sulla più ampia gamma di piattaforme;
  • facilità di espansione futura;
  • internazionale;
  • capacità di poter accogliere le informazioni normalmente usate nei software scacchistici e nelle riviste specializzate.

Un file PGN è un file ASCII che contiene una o più partite con la seguente struttura:

[Event "F/S Return Match"]
[Site "Belgrade, Serbia JUG"]
[Date "1992.11.04"]
[Round "29"]
[White "Fischer, Robert J."]
[Black "Spassky, Boris V."]
[Result "1/2-1/2"]

1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3
O-O 9. h3 Nb8 10. d4 Nbd7 11. c4 c6 12. cxb5 axb5 13. Nc3 Bb7 14. Bg5 b4 15.
Nb1 h6 16. Bh4 c5 17. dxe5 Nxe4 18. Bxe7 Qxe7 19. exd6 Qf6 20. Nbd2 Nxd6 21.
Nc4 Nxc4 22. Bxc4 Nb6 23. Ne5 Rae8 24. Bxf7+ Rxf7 25. Nxf7 Rxe1+ 26. Qxe1 Kxf7
27. Qe3 Qg5 28. Qxg5 hxg5 29. b3 Ke6 30. a3 Kd6 31. axb4 cxb4 32. Ra5 Nd5 33.
f3 Bc8 34. Kf2 Bf5 35. Ra7 g6 36. Ra6+ Kc5 37. Ke1 Nf4 38. g3 Nxh3 39. Kd2 Kb5
40. Rd6 Kc5 41. Ra6 Nf2 42. g4 Bd3 43. Re6 1/2-1/2

Si deve pensare al formato PGN come ad un sistema per scambiare dati e per far si che questi possano essere letti facilmente da un umano (una partita in formato PGN ha per le mosse una struttura quasi identica alla normale notazione algebrica usata per trascrivere le partite, per cui è possibile facilmente riprodurre e studiare una partita sulla scacchiera a partire da essa), e non per trattare i dati.
Essendo un formato ASCII, non è pensabile poter immagazzinare e fare ricerche su file che contengono centinaia di migliaia di partite; per fare questo ci serve un database. Lo scopo di quest'ultimo è poter esportare/importare grandi quantità di partite tra le basi di dati appositamente progettate per questo scopo. Possiamo dire che il formato PGN è l'equivalente per gli scacchi di quello che il DXF è per i programmi CAD o la notazione SMILES in ambito chemioinformatico/bioinformatico.

La partita Fischer-Spassky usata come esempio contiene la struttura tipica di una partita in formato PGN. Essa è composta da una serie di tag racchiusi tra parentesi quadre, seguita da una linea vuota e dalla sezione delle mosse; ogni linea di tale sezione deve contenere al massimo 80 colonne.

Ci sono sette tag obbligatori (noti come i Seven Tag Roster):

  • Event: il nome del torneo o del match.
  • Site: in genere la città dove si è giocata la partita.
  • Date: la data di inizio della partita.
  • Round: il numero del turno della partita nel torneo.
  • White: il giocatore che conduce il Bianco.
  • Black: il giocatore che conduce il Nero.
  • Result: il risultato della partita.

Il risultato viene ripetuto alla fine della sezione delle mosse. Ci sono altri tag aggiuntivi per specificare informazioni come Elo dei giocatori, controllo di tempo, variazioni, ecc., ma sono opzionali. Tra questi forse un tag importante è ECO, che specifica il codice ECO (Encyclopaedia of Chess Openings) dell'apertura, e FEN, che specifica la notazione Forsyth-Edwards (Forsyth-Edwards Notation) se la posizione di partenza è diversa dalla posizione iniziale (usato per studi o problemi).
Un problema del formato PGN, derivato dalla sua natura ASCII è il fatto che in seguito a errori di battitura o abbreviazioni ci possono essere partite con diciture diverse per giocatori, città, date, ecc. Le basi di dati moderne hanno la possibilità, una volta importata la raccolta PGN, di correggere questi difetti in diversi modi.

Indietro      Home