[ Russian ] [ English ]

Функциональные методы обработки слабоструктурированных данных: возможности и реализация

К.Ю.Лисовский,
ИнБИТ Центр,
lisovsky@acm.org

Язык XML может рассматриваться как синтаксис для текстового представления S-выражений [1, 2], поэтому применение языков семейства Лисп для обработки XML-данных представляется логичным и естественным.

В докладе рассматриваются технологии обработки слабоструктурированных данных, основанные на применении языка Scheme, который традиционно используется для таких задач [3] и получил щирокое распространение в последние годы [4, 5, 6, 7, 8, 16, 17, 18, 19].

SXML реализует XML Information Set [10] в виде S-выражений языка Scheme [11, 12]. XML документ, представленный в SXML-виде, может рассматриваться [15] как программа Scheme, причем связывание XML-тегов с функциями предоставляет аналогичные XSLT возможности преобразования таких документов.

Функциональная реализация XPath [9] (SXPath [15]) основана на реализации шагов (steps) как функциональной комбинации операций выборки, проекции и транзитивного замыкания, и соединения/объединения шагов.

Функциональным является и язык запросов для XML данных Quilt [13], запросы Quilt являются функциями, преобразующими XML документы, их фрагменты или коллекции, в соотвествии с XML Query Data Model [14]. Такая замкнутость обеспечивает простую композицию запросов, подзапросы и вложенные запросы. Основной оператор Quilt, FOR-LET-WHEN-RETURN имеет ясную и естественную для Scheme семантику как композиция фунций: выборки FOR-LET, фильтра WHEN и конструктора RETURN.

Рекурсивные возможности Scheme допускают эффективную реализацию таких технологий, как DataGuide, что позволяет практически использовать концепцию описывающей схемы данных.

Применение языков XSLT, XPath, XQL, Quilt и т.д. для реализации реальных XML-приложений, как правило, требует использования языков программирования общего назначения, таких как Java или ЕСМА-script. Scheme может быть использована не только для реализации их функциональных аналогов, но и как интегрирующая среда, реализующая язык программирования высокого уровня с функциями обработки слабоструктурированных данных.

Литература:

[1]
P. Wadler. The Next 700 Markup Languages
// Second Conference on Domain Specific Languages (DSL'99), Austin, Texas, October 1999. http://cm.bell-labs.com/cm/cs/who/wadler/

[2]
J. McCarthy. The Common Business Communication Language In A. Endres and J. Reetz, editors, Textverarbeitung und Burosysteme. R. Oldenbourg Verlag, Munich and Vienna, 1982. http://www-formal.stanford.edu/jmc/cbcl2/cbcl2.html

[3]
Document Style Semantics and Specification Language. ftp://ftp.ornl.gov/pub/sgml/WG8/DSSSL/

[4]
Guile. Project GNU's extension language. http://www.gnu.ai.mit.edu/software/guile/guile.html

[5]
GNU Image Manipulation Program http://www.gimp.org/

[6]
Kurt Normark. "Programming World Wide Web pages in Scheme" Sigplan Notices, vol. 34, no. 12, 1999 http://www.cs.auc.dk/ normark/laml/

[7]
BRL, the Beautiful Report Language. http://brl.sourceforge.net/

[8]
K.Anderson, T.Hickey, P.Norvig. SILK, a Java-based dialect of Scheme. 27 July, 2000 http://www.cs.brandeis.edu/silk

[9]
XML Path Language (XPath) Version 1.0 W3C Recommendation 16 November 1999
http://www.w3.org/TR/xpath

[10]
XML Information Set W3C Working Draft 2 February 2001
http://www.w3.org/TR/xml-infoset/

[11]
Revised (5) Report on the Algorithmic Language Scheme
Revised5 Report on the Algorithmic Language Scheme, R. Kelsey, W. Clinger, J. Rees (eds.), Higher-Order and Symbolic Computation, Vol. 11, No. 1, September, 1998 http://www.schemers.org/Documents/Standards/R5RS/

[12]
IEEE Standard for the Scheme Programming Language http://standards.ieee.org/reading/ieee/std_public/description/busarch/1178-1990_desc.html

[13]
D. Chamberlin, J. Robie, and D. Florescu Quilt: An XML Query Language for Heterogeneous Data Sources
// Lecture Notes in Computer Science, Springer-Verlag, 2000.
http://www.almaden.ibm.com/cs/people/chamberlin/quilti_lncs.pdf

[14]
World Wide Web Consortium. XML Query Data Model. W3C Working Draft, May 11, 2000.
http://www.w3.org/TR/query-datamodel

[15]
Oleg Kiselev. XML and Scheme
Workshop on Scheme and Functional Programming 2000, Montreal, 2000
http://www.lh.com/ oleg/ftp/Scheme/SXML-short-paper.html

[16]
FramerD: Representing Knowledge in the Large
IBM Systems Journal (Volume 35, Numbers 3-4, 1996)
http://www.framerd.org

[17]
H. Abelson and G. Sussman with J. Sussman
Structure and Interpretation of Computer Programs
The MIT press 1996 http://mitpress.mit.edu/sicp/

[18]
Handbook of Programming Languages, Volume IV. Functional
and Logic Programming Languages. P.H.Salus, Series Editor in Chief 1998, Macmillian Technical Publishing,

[19]
The TeachScheme! Project
http://www.cs.rice.edu/CS/PLT/Teaching/
Supported by Synthesis Group