LINGUAGEM DE CONSULTA PARA DOCUMENTOS XML M. SCHUENCK1, D. B. SACCOL2 III Congresso Científico do CEULP/ULBRA RESUMO: Este artigo realiza uma análise sobre as principais linguagens de consulta para dados XML, levantando suas principais características. A partir disso, é proposta uma linguagem de consulta que está em desenvolvimento no projeto PROICT dos referidos autores. PALAVRAS CHAVE: dados XML, linguagens de consulta para XML ARVORE DO CONHECIMENTO: Engenharias, Ciência da Computação, Metodologias e Técnicas da Computação. ABSTRACT: This paper analysis the main XML query languages, pointing to your main characteristics. Therefore, it is proposed a query language being developed in PROICT project. KEYWORDS: XML data, XML query languages INTRODUÇÃO: A Internet é considerada a maior fonte de informações atualmente. Normalmente, estas informações estão representadas na linguagem HTML (HyperText Markup Language) (HTML, 2003). Esta linguagem é caracterizada pela existência de tags pré-definidas e pela preocupação com a formatação dos dados. Com o objetivo de dar maior ênfase ao conteúdo das informações, além da representação dos dados da Internet, foi proposta a XML (eXtensible Markup Language) (XML, 2003). A característica principal desta linguagem é a possibilidade de se criar novas estruturas de linguagens de marcação através da definição de tags pelo usuário. Os dados XML são denominados semi-estruturados, e representam um paradigma diferente do já consagrado modelo relacional, dentre outros. Segundo (Baru, 1998), atualmente as linguagens de consulta a dados XML se dividem em dois paradigmas: de banco de dados, em que a sintaxe das consultas é semelhante à sintaxe das consultas a bancos de dados relacionais; e funcional, cujas linguagens se baseiam em expressões de caminho, e são eficientes na realização de consultas em profundidade. Diversas abordagens têm sido propostas para a realização de consultas, dentre elas, destacam-se: XQL, XML-QL, Lorel, UnQl, XML-GL, XQuery. MATERIAIS E MÉTODOS: O desenvolvimento deste trabalho constituiu-se de consultas na Internet, para busca de informações sobre as linguagens de consulta a dados XML já propostas. Em seguida, partiu-se para um estudo e comparativo das principais linguagens, o que permitiu definir as vantagens e desvantagens de cada uma e selecionar as melhores características. Foi realizado um estudo sobre a linguagem SQL, para obtenção de detalhes sobre a linguagem de consulta a dados relacionais mais utilizada na área comercial. Posteriormente, foi realizado um breve aprofundamento teórico sobre linguagens formais, para posterior definição da sintaxe da linguagem proposta, utilizando-se EBNF (Extended Backus-Naur Form). A pesquisa atualmente encontra-se na fase de construção de um parser para validação das consultas, o qual está sendo desenvolvido utilizando-se a linguagem JavaCC (Java Compiler Compiler). RESULTADOS E DISCUSSÃO: Um número tão expressivo de linguagens para atender o mesmo objetivo indica que certamente algumas possuem características que outras não possuem. Logicamente, existem características que são mais usuais ou que são mais fáceis de se utilizar. Por isto, foi realizado um estudo sobre as linguagens mais destacadas antes de se definir a gramática da linguagem proposta a fim de identificar as características mais desejáveis. Ambos são apresentados a seguir. XML-QL (XML Query Language) foi proposta por (Deutsch, 1999) e suas consultas permitem a construção de novos documentos XML sob a mesma estrutura do documento XML original. É uma 1 Aluno de Iniciação científica do PROICT no curso de Engenharia Agrícola no CEULP/ULBRA. 2 Professor orientador no curso de Engenharia Agrícola no CEULP/ULBRA. linguagem eficaz para lidar com dados de diferentes fontes, executa operações de seleção, redução, joins, mas não as típicas de bancos de dados relacionais, relacionadas com alteração do documento principal. Sua sintaxe é parecida com a da SQL, consistindo basicamente das cláusulas WHERE e CONSTRUCT, em que a primeira seleciona as fontes e os parâmetros da consulta, e a segunda, as opções de formação do documento resultante. Lorel (Goldman, 1999) é a linguagem de consulta natural do Lore, um dos primeiros SGBD’s para dados XML, desenvolvido pela Universidade de Stanford. Por ser projetada para ser utilizada sob um contexto de SGBD’s, a Lorel suporta todas as operações que uma linguagem de consulta relacional suporta, tais como seleção, extração, criação, inserção. É uma linguagem baseada em expressões de caminho, onde é apresentada a seqüência de elementos necessária para se chegar ao nó objetivo. Por exemplo: congresso.artigo.autor.sobrenome. A sintaxe das consultas é geralmente do tipo SELECT-FROM-WHERE, semelhante à SQL. XQL (XML Query Language) (XSL Working Group, 1998) consiste de uma extensão da XSL, a linguagem utilizada para apresentação de documentos XML. Ao contrário das outras já vistas, ela representa uma linguagem do paradigma funcional, possuindo assim, algumas características diferentes. Ela utiliza a idéia de contexto, que representa um conjunto-domínio de nós a serem trabalhados nas consultas. Geralmente, o contexto é delimitado por expressões de caminho com um pouco mais de flexibilidade que as da Lorel. A XQL não suporta o uso de variáveis, o que impede a realização de consultas com joins. Além disso, não permite consultas de várias fontes, e os resultados das consultas herdam a estrutura e a ordem do documento original. Segundo (Kade, 1999), sob a ótica de bancos de dados existem sete características desejáveis a uma linguagem de consulta a XML, são elas: resultados em XML; independência de DTD; manutenção da ordem dos elementos nos resultados de consultas; conhecimento de namespaces, XLink e XPointer; capacidade de consulta aos metadados (DTD, RDF, XML Schema); realização de operações de seleção, extração, redução, reestruturação, combinação e joins; existência de álgebra equivalente à sintaxe da linguagem. Além disso, é recomendável que a sintaxe seja simples, e para isto, uma sintaxe semelhante à SQL é conveniente, já que trata-se da linguagem de consulta mais utilizada. Baseado nestas características, está sendo desenvolvida uma linguagem de consulta, a OntoQuery, que tem a gramática básica para consultas apresentada a seguir, sob a forma de EBNF: consulta ::= select from where <EOF> select ::= 'SELECT' contexto (‘,’ contexto)* contexto ::= <VAR> qualificador <VAR> qualificador ::= '/'|'#'|'@' from ::= 'FROM' contextoFonte+ contextoFonte ::= <VAR> contexto <VAR>? (‘,’ contexto <VAR>?)* where ::= 'WHERE' (contexto operador valor) (‘,’ contexto operador valor)* operador ::= '='|'>'|'<'|'>='|'<='|'<>' valor ::= <VAR> | contexto Figura 1 – EBNF das consultas na linguagem OntoQuery O qualificador “#” (cerquilha) indica que na formação do contexto, o próximo objeto da expressão deve ser um elemento, enquanto que o qualificador “@” (arroba) refere-se a um atributo. Já na utilização do qualificador “/” (barra) o próximo objeto pode ser um elemento ou um atributo. Assim como a XQL, esta linguagem irá trabalhar com o conceito de contexto. A formação das consultas será do tipo: SELECT L/titulo, L/autor FROM C:\XML\livraria.xml livraria.livro as L WHERE L@preco < 70,00 Figura 2 – Consulta utilizando a linguagem OntoQuery Nota-se que a sintaxe é semelhante à da SQL, com diferença marcante apenas pelo fato de que ao invés de lidar com tabelas, esta linguagem lida com contextos. A princípio, existirá a necessidade de ser informada a localização e o nome do(s) arquivo(s) a ser(em) consultado(s), já que apenas em um outro momento, será feita a integração com as demais partes do SGBD para XML em construção pelo grupo de Pesquisa de Tecnologia da Informação. CONCLUSÃO: Existe um bom número de propostas para linguagens de consultas para documentos XML, porém a maioria delas acessa dados armazenados em arquivo texto e de apenas uma fonte por vez. Portanto, agregar uma linguagem de consulta à funcionalidade de um SGBD torna-se primordial, principalmente se for considerada a necessidade crescente de se trabalhar com grandes quantidades de dados XML. Neste trabalho é apresentada então, a linguagem de consulta denominada OntoQuery, que tem uma sintaxe semelhante à da SQL. Entre seus objetivos principais, destacam-se: trabalhar sob o contexto de um SGBD e formular consultas válidas para documentos XML com estruturas diferentes mas referentes ao mesmo domínio. O primeiro objetivo será alcançado em conjunto com as demais frentes de estudos do grupo de Pesquisa de Tecnologia da Informação, enquanto que o segundo será alcançado por meio de estudo e aplicação de ontologias. A partir da definição da sintaxe da linguagem, sucede-se a criação de um parser para validação das consultas, fase esta que já se encontra em execução. REFERÊNCIAS BIBLIOGRÁFICAS WORLD WIDE WEB CONSORTIUM. W3C HTML Home Page. Disponível na Internet no endereço: http://www.w3.org/MarkUp/, Acesso em: Março de 2003. WORLD WIDE WEB CONSORTIUM. Extensible Markup Language (XML). Disponível na Internet no endereço: http://www.w3.org/XML/, Acesso em: Março de 2003. BARU, C.; LUDÄSCHER, B.; PAPAKONSTANTINOU, Y.; VELIKHOV, P. VIANU, V. Features and requirements for na XML view definition language: lessons from XML information mediation. W3C Workshop on Query Languages (QL’98), 1998, Boston. Disponível na Web em http://www.w3.org/TandS/QL/QL98/pp/xmas.html. DEUTSCH, A.; FERNANDEZ, M.; FLORESCU, D; LEVY, A.; SUCIU, D. A query language for XML. Computer Networks, Amsterdam, Netherlands, 1999. GOLDMAN, R.; McHUGH, J.; WIDOM J. From Semistructured Data to XML: Migrating the Lore Data Model and Query Language. Proceedings of the 2nd International Workshop on the Web and Databases (WebDB '99), Philadelphia, Pennsylvania, June 1999. XSL WORKING GROUP. XML Query Language (XQL). Disponível na Internet no endereço: http://www.w3.org/TandS/QL/QL98/pp/xql.html, Acesso em: Março de 2003. KADE, A.M. – Linguagens de Consulta para Documentos XML. 1999. Trabalho Individual (Mestrado em Ciência da Computação) – Programa de Pós-Graduação em Computação, Universidade Federal do Rio Grande do Sul, Porto Alegre. ABITEBOUL, S.; QUASS, D.; MCHUGH, J.; WIDOM, J.; WIENER, J.L. - The Lorel Query Language for Semistructured Data. International Journal on Digital Libraries, v.1, n.1, p.6888, Apr. 1997.