Функциональные методы обработки слабоструктурированных данных: возможности и реализация
Язык 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/
|