Думаю, нет любителя шахмат в интернете, который не знал бы, что такое PGN
[1]. Это сравнительно простой текстовый формат для описания шахматных партий и позиций
[2]. Однако меня, как шахматного композитора и программиста данный формат не может удовлетворять. Ниже я хочу представить проблемы, которые PGN не решает, предложить своё решение и спросить совета.
I. автор, публикация и т.д.
Первое, что важно и нужно, и что отсутствует в PGN, это сопроводительная информация к позиции. В этом случае каждый автор изгаляется, как может: имя прописывается в теге White, задание - в тегах Black, Result, информация об издании в тегах Site и Event. Строго говоря, указанные теги имеют другое назначение, и они не годятся для описания задачи или этюда. В стандарте PGN строго указана последовательность из обязательных 7 тегов, определяющих партию
REF. Но в случае описания позиции последовательность тегов должна быть другой. За основу взят формат olv
[3]:
[Authors "Valuska, Ján"]
[Source "Al Hamishmar"]
[Date "1987"]
[FEN "8/8/8/8/8/8/8/8"]
[Stipulation "#2"]
В примере приведены обязательные элементы. Естественно, существуют и дополнительные: Distinction, Source-id, Twins, Country...
II. что в имени?!
Другая проблема - стандартизация записи имен, названий. Естественно, все понимают, что "Valuska=J" и "Valuska Jan" это один и тот же человек. Но компьютеру это не так очевидно. Поэтому необходимо стандартизировать и форму записи имен, отличий и т.д. чтобы не плодить количество виртуальных композиторов в различных базах. Лично у меня при работе с базой данных это вызывает определенные проблемы.
III. параллельные варианты
В шахматной партии запись ходов однозначна. Добавление вариантов понятно. Но описание этюда и задачи не может выражаться тем механизмом, который используется в PGN. Поэтому, при записи решения в данном формате, пользуются комментариями. Однако, я считаю, что необходим механизм описания равнозначных вариантов. К сожалению, пока не представляю, как это можно реализовать на основе стандарта PGN, разве что помечать вариант некоторым специальным символом, например, *.
Пример записи этюда:
[Event "?"]
[Source"Magyar Sakkélet"]
[Distinction "2nd special HM"]
[Date "1981"]
[Authors "Costeff Gady"]
[FEN "2r1R3/8/3P4/1B1p4/3p4/3P4/1R2pp2/1r3k1K w - - 0 1"]
[Stipulation "White wins"]
1. d7 Rxe8 2. Rxb1+ { with three variations:}
(* 2... e1=Q! 3. dxe8=Q! Qxb1 4. Bd7 Qxd3 5. Bb5 1-0)
(* 2... e1=B! 3. dxe8=B! ( 3. dxe8=N Ke2 4. Rb2+ Bd2 5. Rb1 Be1 )
3... Ke2 4. Bh5+ Ke3 5. Kg2 1-0)
(* 2... e1=N! 3. dxe8=N! ( 3. dxe8=B Ke2 4. Rb2+ Ke3 )
3... Ke2 4. Rb2+ Ke3 5. Rxf2 Kxf2 6. Nf6 Ke2 7. Nxd5 Kd2
8. Nf4 Ke3 9. Ng2+ 1-0) { 3/4 Babson task. }
выводы
Конечно, можно не задумываться и использовать уже существующие форматы для описания композиций. Однако, мне формат PGN нравится, и хотелось бы его использовать. В частности, для работы с этюдами, так как он в основном и используется. Но возможности формата неудовлетворительны, так почему же не предложить соответствующие изменения?!
Ссылки
- Portable Game Notation: WIKI
- Standard: Portable Game Notation Specification and Implementation Guide
- YACPDB: Wiki Help / Guidelines