This article presents XSimilarity, a tool for executing similarity queries embedded in XQuery language. Relevant similarity functions for database and information retrieval fields are implemented in the tool. The main contribution of this article is presenting a tool for similarity queries in XML databases. This allows for information retrieval optimization in these databases. Besides that, as many different similarity functions were implemented, the tool allows comparing the effectiveness of these funcions in different contexts. The examples are constructed over Computer Science scientific articles data provided by the DBLP digital library. Resumo. Este artigo apresenta o XSimilarity, uma ferramenta para a realização de consultas por similaridade embutidas na linguagem XQuery. São implementadas funções de similaridade relevantes na área de banco de dados e recuperação de informações. A principal contribuição desse artigo é apresentar uma ferramenta que permite consultas por similaridade em bases de dados no formato XML, possibilitando a melhora da recuperação de informações nessas bases de dados. Além disso, como foram implementadas várias funções de similaridade diferentes, a ferramenta também permite comparar a eficácia dessas funções para diferentes contextos de utilização. A ferramenta é validada através de experimentos com dados de artigos científicos da área da Ciência da Computação oriundos da biblioteca digital DBLP. 1. Introdução Os mecanismos tradicionais de pesquisa em banco de dados [Groff and Weinberg 2002] utilizam uma busca por coincidência exata. Em uma base de dados de cidades, por exemplo, “Rio Grande” e “R. Grande” são considerados objetos diferentes. Mas ambos os objetos fazem referência a uma mesma cidade. A recuperação da informação por meio de consultas exatas pode ser ineficaz neste caso. Portanto, torna-se necessária a utilização de um mecanismo de pesquisa mais elaborado, com suporte a consultas imprecisas ou aproximadas, também conhecidas como consultas por similaridade [Jagadish, Mendelzon and Milo 1995]. A linguagem XML (Extensible Markup Language) [W3C 2006] foi criada em 1996 pelo W3C (World Wide Web Consortium). A principal característica da linguagem XML é a flexibilidade da linguagem, possibilitando ao usuário definir suas próprias tags e suas próprias linguagens de marcação, porém de uma forma bem mais simples, gerando uma aceitação parecida com o HTML (Hypertext Markup Language), e leve, possibilitando o uso da linguagem na Web. Durante os últimos anos, devido à sua simplicidade, flexibilidade, independência de plataforma, e outras vantagens, a linguagem XML tem sido o principal mecanismo para representação de dados semiestruturados e troca de informações por aplicações Web. A XQuery [W3C s.d.] é uma linguagem criada a partir da necessidade de se realizar consultas sobre documentos XML. XQuery está para o XML assim como SQL está para os bancos de dados relacionais, pois embora suas sintaxes sejam diferentes, a semântica é a mesma. Entretanto, a sintaxe XQuery permite a realização de pesquisas mais complexas e de leitura mais fácil que a sintaxe SQL. Algumas abordagens foram propostas para permitir que consultas aproximadas fossem executadas em SGBDs relacionais [Calado 2000, Borges e Cony 2005, Borges e Dorneles 2006]. Outros trabalhos estendem as linguagens de consulta a documentos XML [Padilha 2005]. Entretanto, existe uma lacuna nos SGBDs XML, como, por exemplo, eXist, Tamino, XIndice, entre outros, quanto ao suporte a consultas aproximadas. Torna-se evidente, portanto, o interesse em desenvolver mecanismos de consulta por similaridade em bases XML. A linguagem XQuery, desenvolvida especificamente para trabalhar sobre XML, é uma excelente alternativa para a inclusão de tal mecanismo. Este artigo descreve o projeto e a implementação da ferramenta XSimilarity, que permite executar consultas por similaridade em documentos XML, considerando documentos armazenados em um sistema de arquivos. As funções de similaridade são embutidas na linguagem de consulta XQuery. A ferramenta é validada através de experimentos com dados de artigos científicos da área da Ciência da Computação oriundos da biblioteca digital DBLP [Trier s.d.]. A principal contribuição deste artigo é apresentar uma ferramenta que permite consultas por similaridade em bases de dados no formato XML, possibilitando a melhora da recuperação de informações nessas bases de dados. Além disso, como foram implementadas várias funções de similaridade diferentes, a ferramenta também permite comparar a eficácia dessas funções para diferentes contextos de utilização. O presente trabalho pode ser aplicado na consulta a informações em ambientes integrados na Web como CiteSeer e bibliotecas digitais. Tais ambientes integram metadados de várias fontes, os quais geralmente estão estruturados em documentos XML, e consultas exatas não seriam suficientes para mostrar resultados satisfatórios. Além disso, a ferramenta desenvolvida soluciona uma das deficiências dos SGBD XML no que tange a execução de consultas por similaridade utilizando XQuery. O restante do artigo está estruturado da seguinte forma: A seção 2 apresenta os trabalhos relacionados. A seção 3 descreve detalhadamente a ferramenta XSimilarity enquanto a seção 4 apresenta um estudo de caso com experimentos com dados oriundos da biblioteca digital DBLP. A seção 5 encerra o trabalho com considerações finais, relacionando trabalhos futuros. 2. Trabalhos relacionados Algumas abordagens foram propostas para permitir que consultas aproximadas fossem executadas em SGBDs relacionais. Calado et al. [Calado 2000] desenvolveu uma interface que requisita dados de um SGBD relacional através de consultas exatas e calcula, de maneira independente do SGBD, a aproximação destas tuplas em relação à resposta ideal. [Borges e Cony 2005] anexam funções de similaridade ao SGBD PostgreSQL e criam novos operadores que implementam estas funções. A similaridade é processada internamente ao SGBD, facilitando o uso e agilizando o cálculo das funções. O pacote de funções e operadores de similaridade são disponibilizados através da ferramenta PgSimilar [Borges e Dorneles 2006]. Além das propostas para bases relacionais, outros trabalhos estendem as linguagens de consulta a documentos XML. Padilha [Padilha 2005] faz uma extensão do processador da linguagem XPath para suportar funções de similaridade como operadores booleanos, possibilitando a execução de consultas aproximadas. No presente trabalho, buscou-se preencher uma lacuna dos SGBDs XML, como Tamino [Software Ag s.d.], por exemplo, implementando uma ferramenta para a execução de consultas aproximadas, inexistente nos atuais SGBDs. O trabalho proposto neste artigo difere dos demais relacionados nos seguintes aspectos: (i) foi desenvolvida uma ferramenta para consultas por similaridade em documentos XML; (ii) as funções de similaridade são embutidas na linguagem XQuery que é mais dinâmica e poderosa do que XPath; (iii) o XSimilarity implementa funções de similaridade que atuam de formas variadas, sendo uma ferramenta muito útil para realizar buscas; (iv) o conjunto de funções de similaridade implementado envolve métricas baseadas em caracteres, palavras (tokens) ou híbridas. Isto torna a ferramenta bastante abrangente, permitindo maior flexibilidade para experimentos dos mais diversos tipos. Além disso, o XSimilarity implementa algumas das principais funções de similaridade utilizadas nas áreas de bancos de dados e recuperação de informações. 3. XSimilarity Uma ferramenta para consultas por similaridade embutidas na linguagem XQuery XSimilarity é uma ferramenta desenvolvida para a realização de consultas por similaridade embutidas na linguagem XQuery. Esta seção apresenta uma visão geral da ferramenta e as tecnologias usadas para a sua implementação. Também são apresentadas mais detalhadamente as principais funcionalidades da ferramenta XSimilarity. 3.1 Arquitetura da ferramenta A ferramenta foi implementada em Java, sendo utilizada a biblioteca NUX [Berkeley Lab s.d.] como mecanismo de execução XQuery e a biblioteca SimMetrics [Chapman s.d.] como fonte de funções de similaridade. Também é utilizado o pacote Java swing para a definição da interface. Internamente, é construída uma classe para permitir a disponibilização das funções de similaridade em um namespace da XQuery. O nome desta classe aparece na declaração do namespace, que fica como “java:xsimilarity.Similaridade”. Na Figura 1 apresenta, de forma gráfica, a arquitetura da ferramenta. Considerando que a ferramenta utiliza a API Java Swing para a sua interface e a Nux como mecanismo de execução XQuery e ambas são externas a ferramenta, elas são representadas abaixo do módulo XSimilarity. Como não há comunicação direta entre as bibliotecas Swing e Nux, elas não são ligadas entre si na arquitetura. A ferramenta implementa um namespace, denominado Similaridade, que utiliza a biblioteca de funções SimMetrics que é externa à ferramenta. Figura 1: Arquitetura da Ferramenta. 3.2 Descrição da ferramenta A ferramenta XSimilarity foi desenvolvida para suprir a necessidade de um mecanismo de consulta por similaridade em bases de dados XML. Para tanto, a ferramenta permite a execução de consultas XQuery em que funções de similaridade podem ser embutidas através de um mecanismo de namespace. O uso das funções de similaridade possibilita a melhora da recuperação de informações nessas bases de dados. As funcionalidades incluídas na interface de usuário podem ser vistas na Figura 2, a qual apresenta o diagrama de casos de uso da ferramenta. A ferramenta apresenta as funcionalidades de criar nova consulta, abrir consulta, salvar consulta, editar consulta, executar consulta, inserir função de similaridade e ajuda. As principais funcionalidades constantes no diagrama de casos de uso são detalhadas a seguir. Figura 2: Funcionalidades da ferramenta. A funcionalidade de “Editar consulta” permite que a consulta se
[1]
Richard W. Hamming,et al.
Error detecting and error correcting codes
,
1950
.
[2]
Daniela Florescu,et al.
Quilt: An XML Query Language for Heterogeneous Data Sources
,
2000,
WebDB.
[3]
Matthew A. Jaro,et al.
Advances in Record-Linkage Methodology as Applied to Matching the 1985 Census of Tampa, Florida
,
1989
.
[4]
Alberto H. F. Laender,et al.
BDBComp: building a digital library for the Brazilian computer science community
,
2004,
Proceedings of the 2004 Joint ACM/IEEE Conference on Digital Libraries, 2004..
[5]
Pradeep Ravikumar,et al.
A Comparison of String Distance Metrics for Name-Matching Tasks
,
2003,
IIWeb.
[6]
L. R. Dice.
Measures of the Amount of Ecologic Association Between Species
,
1945
.
[7]
Alberto O. Mendelzon,et al.
Similarity-based queries
,
1995,
PODS '95.
[8]
Alvaristo Bernardes do Amaral Padilha.
Suporte a argumentos de consulta vagos através da linguagem XPath
,
2005
.
[9]
William E. Winkler,et al.
String Comparator Metrics and Enhanced Decision Rules in the Fellegi-Sunter Model of Record Linkage.
,
1990
.
[10]
Vladimir I. Levenshtein,et al.
Binary codes capable of correcting deletions, insertions, and reversals
,
1965
.
[11]
Alin Deutsch,et al.
A Query Language for XML
,
1999,
Comput. Networks.
[12]
Paul N. Weinberg,et al.
SQL, the complete reference
,
1999
.
[13]
David Jordan,et al.
The Object Database Standard: ODMG 2.0
,
1997
.
[14]
Charles Elkan,et al.
The Field Matching Problem: Algorithms and Applications
,
1996,
KDD.