Технология Wiki все чаще используется как средство организации групповой работы. В основе этой технологии лежит, как известно, представление данных в виде набора текстовых "листков" с простым форматированием, связанных между собой гиперссылками. Такое представление очень удобно для редактирования в режиме online и чрезвычайно просто в освоении, однако для многих областей может оказаться совершенно неадекватным. Примером такой области является представление лингвистической информации - как собственно исследуемых текстов, так и лингвистических статей. Отметим главные особенности этого вида данных, которые не могут адекватно выражены с помощью существующих Wiki-решений:
Первый пункт не составляет, в принципе, большой проблемы, так как расширить инвентарь средств форматирования какой-либо Wiki-системы достаточно просто. Однако если сделать набор условных знаков слишком большим, то теряется главное преимущество Wiki - легкость в использовании (а количество обозначений действительно может стать очень большим, если учесть что рекомендации TEI определяют около 450 различных тегов - против 90 в спецификации HTML 4). Дополнительная трудность состоит в том, что многие приемы форматирования, необходимые лингвисту, с трудом могут быть выражены с помощью средств HTML, а это значит, что Wiki-система для лингвиста должна предусматривать альтернативное представление (например, с помощью встроенных изображений, генерируемых из исходного материала).
Второй и третий пункты представляют уже трудность концептуальную, поскольку существующие Wiki-системы рассматривают Wiki-страницы как данные, но не как представление данных - иными словами, элементам Wiki-форматирования нельзя в общем случае приписать никакого специального значения, кроме собственно визуального эффекта.
В нашем институте разрабатывается система, которая должна решить перечисленные проблемы, сохранив при этом все характерные особенности Wiki-систем. Отличительными чертами нашей системы являются:
Хочется подчеркнуть, что в нашей системе используется именно SGML, а не более популярный ныне XML. Связано это с тем, что "полный" SGML предоставляет широкие средства сокращенной разметки. В частности, имеется возможность сопоставлять теги определенным символам или группам символов, а это позволяет легко имитировать традиционный "wikitext". Задача же интеграции с TEI или любым другим XML/SGML-форматом становится и вовсе тривиальной.
Алгебраический тип данных, если говорить коротко - это тип, значениями которого являются деревья с помеченными листьями и узлами. В принципе, алгебраические типы могут быть реализованы в любом языке программирования, однако полноценная их поддержка есть только в функциональных языках, в частности, в языке Haskell (http://www.haskell.org), на котором наша система и написана. Алгебраические типы для нас, очевидно, удобны тем, что их значения очень легко могут быть представлены в виде SGML, а следовательно - и в виде Wiki-страниц Более того, поскольку структура алгебраического типа сама является алгебраическим типом, появляется возможность редактировать структуру данных в точности теми же средствами, что и сами данные.
Таким образом, пользователю-лингвисту достаточно только задать тип данных, соответствующий его конкретным потребностям и описать желаемое визуальное представление, чтобы получить Wiki-систему, которая позволяет решать вполне определенные задачи, но с которой в то же время можно работать как с обычной Wiki.
Разумеется, наша разработка являются полностью свободной (распространяется на условиях лицензии GPL, http://claws.sourceforge.net), так же как и используемая нами реализация языка Haskell (http://www.haskell.org/ghc).