Um tradutor de consultas XQUERY/DUBLIN CORE para consultas SQL em bibliotecas digitais

83 

Loading....

Loading....

Loading....

Loading....

Loading....

Texto

(1)

UNIVERSIDADE FEDERAL DE SANTA CATARINA

UM TRADUTOR DE CONSULTAS XQUERY / DUBLIN CORE PARA CONSULTAS SQL EM BIBLIOTECAS DIGITAIS

(2)

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO

UM TRADUTOR DE CONSULTAS XQUERY / DUBLIN CORE PARA CONSULTAS SQL EM BIBLIOTECAS DIGITAIS

Autor :

Guilherme Cordeiro

Orientador :

Prof. Dr. Roberto Willrich

Banca Examinadora :

Prof. Dr. Vitório Bruno Mazzola Prof. Dr. Mário Dantas

Palavras-chave :

Dublin Core, XML, Java, bibliotecas digitais, XQuery

(3)

Dedicação

(4)

Agradecimentos

Agradeço a todos aqueles que me ajudaram, direta ou indiretamente, na realização deste trabalho.

(5)

Sumário Sumário 5 Resumo 7 Abstract 7 1 Introdução 8 1.1 Motivação 8 1.2 Objetivos do Projeto 8 1.3 Estrutura do Documento 9 2 Java 10

2.1 Origem e características da linguagem Java 10

2.2 JDBC : Java Database Connectivity 11

2.3 Java Servlets 12

3 Bancos de Dados Relacionais e MySQL 13

3.1 Conceitos básicos 13 3.2 MySQL 14 4 XML e XQuery 15 4.1 Origem do XML 15 4.2 Características básicas do XML 16 4.3 Validação de documentos XML 17

4.4 APIs para manipulação de XML : DOM e SAX 18

4.5 Estilo em documentos XML 19

4.6 Transformações de XML 20

4.7 Consultas em XML : XQuery 20

4.8 Consultas XQuery FLWR 21

5 Dublin Core 23

5.1 Dublin Core Metadata Initiative 23

5.2 Elementos de Metadados do Dublin Core 24

6 Bibliotecas Digitais 29 6.1 Definição 29 6.2 Vantagens 30 6.3 Requisitos 30 6.4 Implementação 31 7 Descrição do Projeto 34 7.1 Arquitetura e implementação 34 7.2 Software desenvolvido 35 8 Conclusão 42

(6)

9 Referências Bibliográficas 43 Anexos 49

(7)

Resumo

As tecnologias relacionadas à multimídia e à World Wide Web estão em contínuo aperfeiçoamento. Elas são cada vez mais usadas, em diversos campos, e várias pesquisas no meio acadêmico e empresarial estão sendo desenvolvidas nessa área. Torna-se importante estudar-se novos meios para busca e representação de metadados relacionados a essas tecnologias. Neste trabalho, procurou-se estudar a representação e manipulação de informações com XML e Dublin Core e o conceito de bibliotecas digitais. A principal contribuição deste trabalho é o desenvolvimento de um software que permita que uma biblioteca digital, que adote SQL como linguagem de consulta, receba solicitações de consultas XQuery adotando os metadados Dublin Core. Palavras-chave : Dublin Core, XML, Java, bibliotecas digitais, XQuery.

Abstract

Technologies related to multimedia and World Wide Web are in continuous improvement. They are used more and more, in many fields, and several academic and corporative researches are being developed in this area. It becomes important to study new ways for fetch and representation of metadata related to these technologies. In this work, we intended to study the representation and handling of informations in XML and Dublin Core and the concept of digital libraries. The main contribution of this work is the development of a software that allows a digital library, with SQL as its query language, to receive XQuery queries requests using Dublin Core metadata. Keywords : Dublin Core, XML, Java, digital libraries, XQuery.

(8)

1 Introdução

Neste capítulo apresentaremos a motivação do projeto, seus objetivos e a estrutura deste documento.

1.1 Motivação

Atualmente, as tecnologias relacionadas à multimídia e à World Wide Web estão em contínuo aperfeiçoamento, sendo cada vez mais utilizadas para atividades como comércio eletrônico, entretenimento, informação, ensino, correio eletrônico, etc.

Sendo a Web uma rede de alcance mundial e a maior rede de computadores do mundo, uma aplicação que funcione sobre ela tem alcance mundial. Assim, são criadas cada vez mais aplicações para a Web, sendo realizadas muitas pesquisas nessas áreas, no meio acadêmico e também no meio empresarial. Por sua vez, uso da multimídia oferece meios para representar vários tipos de informações, e os repositórios para esses dados são um avanço sobre os meios convencionais de armazenamento e busca de informação.

1.2 Objetivos do Projeto

Os objetivos gerais do projeto são estudar a representação de informações utilizando-se XML e Dublin Core, o conceito de bibliotecas digitais e tecnologias para manipulação de dados em XML e Dublin Core.

Como objetivos específicos, desenvolveu-se um software que possibilita a uma biblioteca digital, que emprega SQL como sua linguagem de consulta, responder a consultas XQuery, as quais empregam os metadados Dublin Core. Os metadados locais, do banco de dados da biblioteca digital, são traduzidos para o padrão Dublin Core. O resultado da consulta XQuery processada pelo programa é um arquivo XML.

(9)

1.3 Estrutura do Documento

O capítulo 2 apresenta a origem e características básicas da linguagem Java, além de apresentar as tecnologias JDBC e Java Servlets.

O capítulo 3 aborda conceitos básicos sobre a teoria de bancos de dados relacionais e também apresenta o servidor de banco de dados MySQL.

O capítulo 4 apresenta a tecnologia XML, mostrando sua origem, características básicas, validação de documentos XML, transformações e estilo em XML, além de tecnologias relacionadas com XML, como DOM, SAX e XQuery.

O capítulo 5 trata do padrão de metadados Dublin Core : origem, atividades da Dublin Core Metadata Initiative, características dos elementos de dados do Dublin Core e recomendações para sua representação em XML

O capítulo 6 apresenta o conceito de biblioteca digital, apresentando uma definição de bibliotecas digitais, suas vantagens em relação às bibliotecas convencionais, requisitos para bibliotecas digitais e as atividades básicas para sua implementação.

O capítulo 7 mostra a arquitetura do software do projeto, a estratégia de implementação e apresenta o software desenvolvido.

O capítulo 8 apresenta as conclusões sobre o que foi estudado e desenvolvido neste projeto de conclusão de curso.

(10)

2 Java

Este capítulo aborda a origem e características básicas da linguagem Java, além de apresentar as tecnologias JDBC (Java Database Connectivity) e Java Servlets.

2.1 Origem e características da linguagem Java

Em 1991, a Sun Microsystems iniciou um projeto de pesquisa com o codinome Green, relativo a dispositivos eletrônicos inteligentes destinados ao consumidor final. O projeto Green resultou numa linguagem baseada em C e C++, batizada de Oak por seu criador, James Gosling. Como já existia uma linguagem chamada Oak, seu nome foi mudado para Java (região de origem de um café vendido numa cafeteria local).

O mercado de dispositivos inteligentes não estava se desenvolvendo tão rapidamente e a Sun havia perdido um contrato importante pelo qual competia. Assim, o projeto Green estava em risco de cancelamento. Ele foi salvo pela enorme popularidade que a WWW (World Wide Web) estava adquirindo em 1993, e a Sun percebeu o enorme potencial de empregar Java para adicionar conteúdo dinâmico a páginas da WWW.

Em maio de 1995, a Sun Microsystems anunciou a linguagem Java formalmente em uma conferência, o que causou o interesse imediato da comunidade comercial por causa do grande interesse na WWW. Desde então, Java é utilizada para muitas finalidades, como criar páginas da WWW com conteúdo dinâmico ou desenvolver aplicativos comerciais de grande escala.

A linguagem Java é orientada a objeto, assim os programas Java são compostos de classes, as quais são compostas por métodos. Existem várias bibliotecas de classe, conhecidas como Java APIs (Application Programming Interfaces), que auxiliam na manipulação de strings, conexão em rede, leitura/escrita de arquivos etc. A seguir, é apresentado um programa simples em Java, que mostra uma mensagem ao usuário :

(11)

/* Programa Welcome.java */ public class Welcome {

public static void main (String args[]) { System.out.println(“Welcome to Java”); }

}

Os programas Java geralmente passam por cinco fases de programação :

• edição : criação do código-fonte (arquivo .java), pode ser realizada em um editor de texto como o Windows Notepad, ou num IDE (Integrated Development Environment) como o Java NetBeans.

• compilação : o programador utiliza o comando javac para compilar o programa. O programa é traduzido para bytecodes (linguagem entendida pelo interpretador Java), num arquivo .class.

• carga : o carregador de classe coloca os arquivos .class na memória. Há dois tipos de programas que podem ser carregados : aplicativos (normalmente armazenado e executado a partir do computador local do usuário) e applets (carregados no navegador WWW a partir de um computador remoto, executados no navegador e descartados quando é finalizada sua execução).

• verificação : o verificador de bytecode verifica se os bytecodes de um applet são válidos e não violam as restrições de segurança da linguagem Java.

• execução : o interpretador Java executa o aplicativo ou applet, um bytecode por vez, realizando assim a ação especificada pelo programa.

2.2 JDBC : Java Database Connectivity

A tecnologia JDBC (Java Database Connectivity) consiste numa API para conectividade independente do banco de dados, entre a linguagem Java e um grande número de sistemas de banco de dados. Ela permite a utilização de SQL para o acesso aos dados.

JDBC torna possível a realização de três tarefas: estabelecer uma conexão com um banco de dados, enviar declarações SQL e processar os resultados. Há drivers JDBC para

(12)

vários sistemas de banco dados, como ADABAS, Clipper, DB2, Microsoft SQL Server, MySQL, Oracle, PostgreSQL e Sybase.

De acordo com [Sun, 2003b], JDBC possui as seguintes vantagens :

• dados já existentes podem ser reaproveitados.

• desenvolvimento de aplicações torna-se simplificado.

• nenhuma configuração no computador cliente é necessária para estabelecimento de conexão.

2.3 Java Servlets

A tecnologia Java Servlets permite uma troca de informações entre um cliente e um servidor. O cliente solicita alguma ação e o servidor executa tal ação e responde ao cliente. O servlet extende a funcionalidade de um servidor. Os servlets são equivalentes, no lado do servidor, aos applets no lado do cliente [Deitel, 2001]. Eles são suportados pela maioria dos servidores Web disponíveis, como Microsoft IIS (Internet Information Server) e Apache.

Os servlets utilizam o protocolo HTTP (Hypertext Transfer Protocol) da WWW para a comunicação entre cliente e servidor. O cliente envia uma solicitação HTTP para o servidor. O servidor recebe a solicitação e a envia para ser processada pelo servlet adequado. Os servlets fazem o processamento e retornam os resultados para o cliente, geralmente no formato HTML, mas outros formatos podem ser usados, como imagens e dados binários.

Todos os servlets devem implementar a interface da API Servlet. Duas classes abstract implementam a interface da API Servlet : a classe GenericServlet (do pacote javax.servlet) e a classe HTTPServlet (do pacote javax.servlet.http). Essas classes fornecem implementações-padrão de todos os métodos da API Servlet. A maioria dos servlets estende GenericServlet e HTTPServlet e redefine alguns ou todos os seus métodos.

(13)

3 Bancos de Dados Relacionais e MySQL

Este capítulo aborda conceitos básicos sobre bancos de dados e apresenta algumas características do servidor de banco de dados MySQL.

3.1 Conceitos básicos

A tecnologia de banco de dados surgiu no momento em que o desenvolvimento de sistemas computacionais para grandes organizações passou a necessitar de uma forma mais eficiente para gerenciamento dos dados. O sistema de banco de dados fornece uma visão abstrata dos dados, ou seja, a tecnologia usada para sua implementação é transparente ao usuário.

Um sistema de banco de dados deve oferecer vários serviços aos seus usuários, como por exemplo : acesso concorrente, integridade, flexibilidade e facilidade no acesso aos dados, segurança e eliminação de redundância e inconsistência de dados,

Os modelos de dados são um método formal de representar logicamente os dados e a manipulação dos mesmos. O modelo de dados define os tipos de objetos comportados pelo banco de dados, os operadores válidos e as regras de integridade.

O modelo relacional representa dados e relacionamentos entre dados através de um conjunto de tabelas, onde cada tabela possui um número de colunas com nomes únicos. Um banco de dados relacional consiste numa coleção de tabelas, cada uma com um nome único. O banco de dados relacional pode ser expresso utilizando-se diagramas E-R (entidade-relacionamento).

Praticamente todos os sistemas de bancos de dados utilizam SQL (Structured Query Language) como a linguagem para definição de dados (DDL) e também como a linguagem para manipulação de dados (DML). SQL permite a definição de visões, transações, restrições de integridade e autorização de acesso. A seguir, é mostrado um exemplo de consulta SQL, que retorna os atributos “titulo” e “editora”, dos registros da tabela “livros” que obedeçam à

(14)

condição da cláusula WHERE. A consulta ordena os resultados pelo atributo “titulo” :

SELECT titulo, editora FROM livros WHERE autor = “Luís de Camões” ORDER BY titulo

3.2 MySQL

MySQL é um servidor de banco de dados, multi-thread, de código aberto, e que utiliza o modelo relacional, desenvolvido pela empresa MySQL AB [MySQL, 2003b]. Os principais objetivos do MySQL são velocidade, robustez e facilidade de uso.

O MySQL é um dos sistemas de código aberto mais utilizados atualmente. Ele é utilizado pelo fabricante com bancos de dados que possuem 50 milhões de registros. Há também relatos de usuários que utilizam o MySQL com 60 mil tabelas e cerca de 5 bilhões de registros.

A segurança também é um ponto forte do MySQL. Seu sistema de senhas é flexível e seguro, garantindo que cada usuário execute somente as ações que lhe são permitidas. O servidor decide os diferentes privilégios de acordo com o usuário, o banco de dados e o host. Os dados manipulados pelo MySQL trafegam criptografados pela rede.

O MySQL oferece APIs (Application Programming Interfaces) para as linguagens de programação C, C++, Eiffel, Java, Perl, PHP, Python, Ruby e Tcl. Ele funciona em várias plataformas e sistemas operacionais distintos, além de possuir interface para acesso via ODBC (Open Database Connectivity).

(15)

4 XML e XQuery

Este capítulo apresenta uma visão geral da tecnologia XML, abordando aspectos como sua origem, suas características básicas, validação de documentos XML e estilo em documentos XML. Além disso, este capítulo também aborda tecnologias relacionadas com XML, como DOM, SAX e XQuery.

4.1 Origem do XML

Em 1996, o World Wide Web Consortium (W3C) iniciou o projeto de uma linguagem de marcação abrangente, a qual seria capaz de combinar a ampla aceitação do HTML (HyperText Markup Language) com a flexibilidade e a capacidade da SGML (Standard Generalized Markup Language). A SGML havia sido adotada como padrão internacional de troca e armazenamento de dados em 1986 pela ISO (International Organization for Standardization), através da norma ISO8879. A linguagem que se transformou no XML usou como base as especificações da SGML, e foi especificada para ser um subconjunto desta linguagem. O XML 1.0 se tornou uma recomendação do W3C em fevereiro de 1998.

O uso da SGML como ponto de partida possibilitou que a equipe que desenvolvia o XML se concentrasse em transformar uma linguagem que já funcionava em algo mais simples. O SGML já fornecia uma linguagem aberta que poderia ser expandida por qualquer um com qualquer finalidade. Considerações sobre facilidade de uso motivaram a idéia de que o XML deveria ser mais simples que o SGML : leitura e digitação de linguagem de marcação por usuários de ferramentas amplamente disponíveis e simples, assim como a simplificação do processo de computação de documentos e intercâmbio de dados. Por suas muitas propriedades opcionais, o SGML é tão complexo que é difícil escrever parsers genéricos, entretanto construir parsers em XML é muito mais simples. O XML alavanca softwares e protocolos da Internet já existentes, buscando a facilidade de transmissão e processamento de dados, e sendo um subconjunto da SGML, proporciona compatibilidade retroativa com sistemas de orientação SGML, economizando em custos de conversão.

(16)

4.2 Características básicas do XML

Assim como o HMTL, o XML utiliza tags e atributos para definição dos dados. As tags são definidas utilizando-se “<” e “>”, sendo que o XML permite que o usuário defina suas próprias tags. Um exemplo de informação representada em XML é mostrada a seguir, que mostra como os documentos XML representam informações de maneira simples e auto-explicativa : <?xml version="1.0" encoding="ISO-8859-1"?> <recado> <para>Pedro</para>-<de>Maria</de> <titulo>Lembrete</titulo>

<assunto>Nao esqueca da reuniao amanha</assunto> </recado>

A primeira linha contém informações sobre a versão do XML utilizada, assim como o conjunto de caracteres empregado. As linhas seguintes fornecem as tags e os atributos que representam a informação propriamente dita, a partir do elemento raiz <recado>.

É importante fazer estas observações sobre o XML :

• ao contrário do HTML, as tags do XML são sensíveis a maiúsculas/minúsculas (case sensitive);

• no XML é ilegal omitir a tag de finalização (/>);

• todos os elementos devem ser apropriadamente aninhados;

• todos os documentos XML precisam ter um único par de tags que definem o elemento raiz;

• se forem utilizados conjuntos de nome/atributo, como no HTML, os atributos devem estar indicados por um par de aspas duplas (");

• os comentários em XML são definidos da mesma maneira que no HTML : iniciam com “<!--” e “-->”.

Os dados em XML são autodescritivos à medida em que cada elemento leva seu próprio nome que pode estar relacionado a um modelo externo para problemas do mundo real

(17)

que o documento descreve. Apesar de ser semelhante ao HTML, o XML proporciona um poder de representação muito maior ao permitir que o usuário defina suas próprias tags de acordo com suas necessidades, sem precisar ficar preso a padrões do W3C, como no caso do HTML.

4.3 Validação de documentos XML

A partir do momento em que o usuário tenha a necessidade de usar um conjunto próprio de tags para representar informação, surge a questão de como especificar regras para validar os documentos XML de acordo com tais especificações do usuário. A resposta para essa questão é fornecida pelo Document Type Definition (DTD), que é um conjunto de definições que capturam as regras que um usuário adiciona para ampliar as regras centrais da sintaxe XML e criar um vocabulário para descrever um problema ou situação. Utilizando DTDs, o usuário conta com uma ferramenta para validar os documentos que suas aplicações trocam, e pode descobrir novos vocabulários em tempo de operação. Um exemplo de DTD, para o documento XML mostrado anteriormente, é mostrado a seguir :

<?xml version="1.0"?> <!DOCTYPE recado [

<!ELEMENT recado (de,para,titulo,assunto)> <!ELEMENT de (#PCDATA)>

<!ELEMENT para (#PCDATA)> <!ELEMENT titulo (#PCDATA)> <!ELEMENT assunto (#PCDATA)> ]>

É possível notar que os DTDs seguem suas próprias regras sintáticas, mas permitem que o usuário faça sentenças bem definidas sobre o que é ou não um documento válido em uma determinada classe de documentos XML. Isto leva diretamente a uma distinção entre parsers de validação e não validação. Um parser de não validação apenas verifica o documento quanto à adequação às regras centrais da sintaxe XML. Um parser de validação verifica também um documento contra um DTD para decidir se este é válido de acordo com as regras do DTD.

(18)

4.4 APIs para manipulação de XML : DOM e SAX

A partir do momento em que o usuário definiu o vocabulário para sua necessidade, ele pode começar a decidir a respeito de outros aspectos da aplicação, que poderá envolver a manipulação de arquivos XML para se obter respostas, podendo também ser necessário gerar respostas no formato de arquivos XML. O Document Object Model (DOM) é uma API (Application Programming Interface) para fazer essa manipulação. Ele especifica um conjunto de objetos e interfaces para manipular documentos e interfaces HTML e XML. O W3C mantém a recomendação para o DOM, sendo esta uma das interfaces que mais possui suporte para trabalhar com documentos XML, junto com o Simple API for XML (SAX).

O DOM fornece uma visão do documento estruturada em árvore. Um parser compatível com DOM lê todo o documento e oferece uma visão construindo uma árvore de objetos na memória. As principais estruturas do componente do documento são nós na árvore objeto. Para acessar itens e manipulá-los, navega-se na árvore de análise utilizando as interfaces DOM. Segundo [DOM, 2003], o DOM é dividido em três partes :

• Core : fornece um conjunto de objetos de baixo nível que podem representar qualquer documento estruturado. Enquanto o DOM por si só é capaz de representar qualquer documento HTML ou XML, a interface Core é um projeto compacto e mínimo para manipular o conteúdo do documento. Dependendo do uso do DOM, a interface Core pode não ser conveniente ou apropriada para todos os usuários;

• HTML e XML : fornecem interfaces adicionais e de alto nível que são usadas com a interface Core para fornecer uma visão mais conveniente do documento. Estas duas interfaces consistem de objetos e métodos que fornecem acesso mais fácil e direto aos tipos específicos de documentos.

A outra principal API para manipulação de documentos XML é o Simple API for XML (SAX). Ao contrário do DOM, o SAX não é o produto de uma organização de padrões, mas sim um produto casual de um grupo de desenvolvedores de XML que necessitavam de uma API eficiente no início do XML. Inicialmente era uma API apenas para a linguagem Java e foi a primeira API empregada amplamente para manipulação de XML [SAX, 2003].

(19)

O SAX permanece popular porque tem uma abordagem diferente para oferecer o acesso a documentos XML. Ao invés de apresentar uma árvore com as informações do documento completo, o SAX fornece eventos à medida que analisa o documento. Um parser compatível com SAX não retém o documento, mas avisa ao programa utilizado à medida que processa cada parte do documento. A resposta a um evento fica por conta do programa que está usando o parser. Um programa tem total responsabilidade pela manutenção do estado do documento, podendo manter tanta informação quanto necessária para satisfazer os requisitos da aplicação. Assim, pode-se prever que o parser gerado seja bastante compacto, gerando pedidos mínimos aos recursos do sistema. O SAX é ideal para lidar com documentos XML muito grandes. Apesar de o DOM ser a API mais utilizada para XML hoje em dia, os parsers SAX já estão disponíveis.

4.5 Estilo em documentos XML

Embora o XML se concentre no armazenamento dos dados e no valor da conexão direta entre aplicações, separando-se da apresentação dos dados, muitas vezes pode ser necessário apresentar os dados XML a um usuário humano. A exibição de dados XML em Web browser é muito utilizada atualmente, em aplicações Web. O estilo em XML é uma ferramenta muito importante para desenvolvedores da Web, pois com essa ferramenta interfaces de usuários são implementadas rapidamente para dados XML.

As técnicas usadas para o estilo em XML variam em complexidade e sofisticação. As duas técnicas mais importantes são a Cascading Style Sheet (CSS) e a Extensible Stylesheet Language (XSL). A CSS é a técnica mais simples, mas não é estritamente uma técnica da comunidade XML. Na verdade, seu uso foi estendido à medida que os desenvolvedores XML as tomaram emprestadas do mundo de desenvolvimento Web, mais especificamente HTML. Fornece estilos simples para a apresentação de informações (tipo da fonte, cor da fonte, cor do fundo, etc), sendo capazes de atribuir determinadas informações sobre estilo a elementos XML identificados.

A outra técnica utilizada para estilos, a XSL, resulta do desenvolvimento do XML, e junta as preocupações de estilo do CSS com a natureza expressiva do XML. Os

(20)

programadores utilizam a XSL para especificar o mapeamento de dados XML em um conteúdo visual. Ao contrário do CSS, o XML permite que se atribua estilo baseado no contexto dos dados XML, podendo ainda executar o processamento embutindo códigos de script nas folhas de estilo XSL.

4.6 Transformações de XML

Uma das técnicas poderosas do XML é a transformação, que permite que um documento XML seja mapeado de um formato para outro, baseando-se num conjunto de regras aplicadas ao primeiro documento. As transformações do XML são usadas para a tradução entre vocabulários XML semelhantes, e também para a tradução de documentos XML para outros formatos de arquivo texto. A transformação em XML é uma técnica muito útil caso sejam necessárias transformações eficientes par se obter um formato comum, por exemplo.

O formato mais recente para transformações de XML faz parte da linguagem de estilo XSL, sendo chamado de XSL Transformation (XSLT). O propósito básico da linguagem XSLT é organizar um documento XML para ser usado com o estilo XSL. Embora não tenha sido projetada como uma linguagem de transformação com propósitos genéricos, a XSLT é bastante flexível e possibilita a execução da maioria das transformações, classificando e organizado tarefas em XML sem se escrever seu próprio código procedural. O usuário é que escreve as regras para transformar XML com base no contexto no qual os elementos aparecem.

4.7 Consultas em XML : XQuery

Com o grande aumento das informações armazenadas, trocadas ou apresentadas em XML, a capacidade de realizar eficientemente consultas em dados XML se torna muito importante. Uma das grandes virtudes do XML é sua flexibilidade em representar muitos tipos de informação, incluindo a informação tradicionalmente considerada como banco de dados, ou aquela considerada como documento. Para explorar essa flexibilidade, uma linguagem de consulta para XML precisa incluir as características que são necessárias para receber

(21)

informação destas diversas fontes.

A linguagem XQuery foi projetada para atender aos requisitos identificados pelo W3C XML Query Working Group. Foi projetada para ser uma linguagem pequena, facilmente implementável, na qual consultas são facilmente compreendidas. Também é flexível o bastante para realizar consultas em uma grande variedade de fontes de informação XML, incluindo tanto bancos de dados como documentos. O Query Working Group identificou duas necessidades : uma linguagem de consulta que possa ser facilmente lida por um usuário, e uma sintaxe de consulta baseada em XML. A XQuery foi projetada para atender a primeira necessidade. Uma sintaxe baseada em XML para a semântica da XQuery será definida separadamente.

A XQuery é uma linguagem funcional na qual uma consulta é representada por uma expressão. Vários tipos de expressão são suportados, assim as consultas podem tomar diversas formas. As várias formas de expressões em XQuery podem ser aninhadas, assim a noção de subconsulta (subquery) é natural na XQuery. A entrada e saída de uma consulta são instâncias de um modelo de dados, o XML Query Data Model, onde um documento é modelado como uma árvore de nodos. Um fragmento de um documento, ou uma coleção de documentos, podem necessitar de uma raiz comum, logo eles podem ser modelados como uma “floresta” ordenada de nodos de vários tipos, incluindo nodos elemento, nodos atributo e nodos texto.

O exemplo a seguir ilustra uma consulta em XQuery a uma base de dados em XML que armazena dados sobre livros. A consulta retorna todos os livros da editora Morgan Kaufmann publicados em 1998 :

FOR $b IN document("bib.xml")//book WHERE $b/publisher = "Morgan Kaufmann" AND $b/year = "1998"

RETURN $b/title

4.8 Consultas XQuery FLWR

(22)

FOR-LET-WHERE-RETURN, representam em XQuery as consultas SELECT-FROM-WHERE, da linguagem SQL.

A gramática da linguagem XQuery permite a criação de produções maleáveis, altamente recursivas e capazes de gerar um grande número de diferentes consultas, incluindo praticamente qualquer combinação imaginável de declarações FOR, LET, WHERE e RETURN.

A seguir, apresentamos um exemplo de consulta XQuery FLWR. Esta consulta seleciona os campos dc:title, dc:creator e dc:publisher, do arquivo “texto.xml”, que obedecem à condição da cláusula WHERE, e ordena o resultado pelo campo dc:title :

FOR $a IN document("texto.xml")/metadata/record WHERE $a/dc:language = pt ORDER BY $a/dc:title RETURN <metadata> { $a/dc:title } { $a/dc:creator } { $a/dc:publisher } </metadata>

(23)

5 Dublin Core

Este capítulo aborda o padrão de metadados Dublin Core, mostrando a origem e as atividades da organização responsável por este padrão, a Dublin Core Metadata Initiative. Serão apresentadas também as principais características dos elementos do Dublin Core, além de exemplos e recomendações para sua representação em XML.

5.1 Dublin Core Metadata Initiative

O Dublin Core Metadata Initiative (DCMI) é um projeto de desenvolvimento de padrões para metadados e para organização de informações, assim como catalogação e classificação dessas informações em meio eletrônico. Concebido em 1995, o DCMI conta com a participação de 800 pessoas de todo o mundo, representando mais de 45 países. O conjunto de elementos para metadados Dublin Core foi traduzido para 25 idiomas e adotado formalmente por 7 governos, com outros governos discutindo sua possível adoção.

As atividades do DCMI incluem :

• Desenvolvimento de padrões e manutenção das recomendações para metadados, através de workshops internacionais e reuniões de grupos de trabalho;

• Ferramentas, serviços e infra-estrutura, incluindo o registro de metadados DCMI para auxiliar no gerenciamento e manutenção dos metadados DCMI em vários idiomas; • Apoio ao setor educacional e divulgação para a comunidade, incluindo desenvolvimento

e distribuição de recursos educacionais e de treinamento, consultoria, e coordenação de atividades com outros projetos de metadados.

O DCMI é aberto à participação de todos os interessados. Possui atualmente 17 grupos de trabalho com 75 integrantes ou mais, e centenas de outros participantes que monitoram o progresso desses grupos. As atividades do DCMI são distribuídas globalmente, tanto em termos de participação em grupos de trabalho como na realização de encontros e workshops.

(24)

O padrão de metadados Dublin Core possui características que o diferenciam de outros padrões semelhantes :

• simplicidade na descrição dos recursos : pode ser usado por não-catalogadores, autores ou desenvolvedores da Web sem conhecimento prévio de todas as regras de catalogação; • interoperabilidade semântica : pessoas com níveis diferentes de conhecimento sobre um

determinado assunto terão o mesmo entendimento da importância do elemento palavra-chave, que afinal resume o assunto. A convergência sobre o entendimento comum, ligeiramente mais genérica, possibilita maior visibilidade e acessibilidade de todos os recursos;

• escopo internacional : a participação de representantes de vários continentes tem assegurado o desenvolvimento do padrão levando em conta a natureza multilíngüe e multicultural do universo de informação eletrônica;

• extensibilidade : além de balancear a necessidade de simplicidade na descrição de recursos digitais com a precisão na recuperação da informação, o Dublin Core conta com possibilidade de expansão do conjunto de elementos para cobrir necessidades adicionais de novos recursos.

5.2 Elementos de Metadados do Dublin Core

Cada elemento do Dublin Core é definido usando um conjunto de dez atributos da norma ISO/IEC 11179 [ISO/IEC 11179, 2003] para a descrição de elementos de dados. Estes atributos incluem :

• Nome : o rótulo atribuído ao elemento de dados;

• Identificador : o identificador único atribuído ao elemento; • Versão : a versão do elemento;

• Autoridade de Registro : entidade autorizada a registrar o elemento; • Linguagem : a linguagem na qual o elemento é especificado;

• Definição : uma frase que representa claramente o conceito e a natureza do elemento; • Obrigação : indica se o elemento precisa ou não estar sempre presente;

(25)

• Ocorrência Máxima : Indica um limite para a repetição do elemento; • Comentário : uma observação sobre a aplicação do elemento.

A seguir, apresentamos os elementos de dados do Dublin Core, as informações que são incluídas em cada elemento e exemplos de representação dos elementos em XML. Deve-se evitar repetir a mesma informação em mais de um elemento :

Elemento : Title

Nome dado ao documento, pelo qual será oficialmente conhecido. Inclui-se nesse elemento : nome do documento, subtítulo do documento, volume do documento e número do documento. Exemplo : <dc:title>Memórias Póstumas de Brás Cubas</dc:title>.

Elemento : Creator

Nome dado ao autor do conteúdo do documento. Este pode ser institucional ou pessoal. É incluído nesse elemento : nome do criador do documento. Exemplo: <dc:creator>Assis, Machado de</dc:creator>.

Elemento : Subject

Palavra(s) ou frase(s) que descreve(m) o assunto do documento. Inclui-se nesse elemento: palavras-chaves. Exemplo: <dc:subject>literatura brasileira, santa catarina, escritores brasileiros, biografia</dc:subject>.

Elemento : Description

Breve resumo do conteúdo do documento. Inclui-se nesse elemento: resumo do documento. Exemplo : <dc:description>Ilustrações de aves brasileiras do pintor naturalista Eduardo Brettas</ dc:description >.

(26)

Elemento : Publisher

A pessoa ou entidade responsável pela publicação do documento. É incluído nesse elemento: editor do documento. Exemplo : <dc:publisher>Ática</dc:publisher>.

Elemento : Contributor

Pessoa(s) ou entidade(s) que contribuiu(ram) de forma relevante para a conclusão do documento. Inclui-se nesse elemento : autor de prefácio, tradutor. Exemplo: <dc:contributor>Silva, Paulo C. Tradutor</ dc:contributor>.

Elemento : Date

Data da criação do documento. É incluído nesse elemento : data do documento. Exemplo: <dc:date>2002-10-11</dc:date>.

Elemento : Type

Descreve a natureza ou gênero do conteúdo do documento. Inclui-se nesse documento: tipo do documento. Exemplo : < dc:type >texto</dc:type>.

Elemento : Format

Descrição do formato digital do documento. Inclui-se nesse elemento : formato do documento, duração (no caso de vídeos e sons), dimensão (no caso de imagens), tamanho do documento. Exemplo : <dc:format>PDF; 2Mb</dc:format>.

Elemento : Identifier

Uma referência ao documento digital. Inclui-se nesse elemento : Uniform Resource Locator (URL), International Standard Book Number (ISBN), International Standard Serial Number (ISSN), Digital Object Identifier (DOI). Exemplo : <dc:identifier>http://catalog.loc.

(27)

gov/67-26020</dc:identifier>.

Elemento : Source

Referencia a fonte do qual o documento foi digitalizado e/ou onde esse original se encontra. São incluídos nesse elemento : título de periódico (no caso de artigos), a localização do documento na rede (URL), nome do título geral do documento, identificação da obra impressa (caso o documento tenha sido digitalizado). Exemplo: <dc:source> Journal of Research and Development, v. 40, n. 2</dc:source>.

Elemento : Language

Idioma em que se encontra o documento. Inclui-se nesse elemento: idioma do documento. Exemplo : <dc:language>pt-br</dc:language> (português do Brasil).

Elemento : Relation

Referência ao documento do qual é relacionado. Inclui-se nesse elemento : versão, edição, parte de outro documento, baseado em outro documento, referência a outro documento. Exemplo : <dc:relation>Anais do 9o Simpósio Brasileiro de Banco de Dados, São Paulo, 1994</dc:relation>.

Elemento : Coverage

Descreve a extensão ou a competência do conteúdo do documento. São incluídos nesse elemento: localização espacial, período temporal, jurisdição do documento. Exemplo: <dc:coverage>1998-2002</dc:coverage>.

Elemento : Rights

Descreve as informações dos direitos que uma pessoa ou entidade possui sobre o documento. Inclui-se nesse elemento: copyright, propriedade intelectual, URL do documento

(28)

original, permissão para modificar o documento. Exemplo: <dc:rights>Domínio Público</dc:rights>.

[Powell, 2002] fornece as recomendações para a implementação de Dublin Core em XML, que são as seguintes :

• basear aplicações XML em XML Schemas ao invés de XML DTDs;

• utilizar XML Namespaces para identificar unicamente os elementos, refinamentos dos elementos e esquemas de codificação;

• codificar propriedades como elementos XML e valores como o conteúdo desses elementos;

• os nomes das propriedades para os 15 elementos devem ser em letras minúsculas;

• valores múltiplos de propriedades devem ser codificados repetindo-se o elemento XML para essa propriedade;

• refinamentos dos elementos devem ser tratados da mesma maneira que outras propriedades;

• esquemas de codificação devem ser implementados usando o atributo ‘xsi:type’ do elemento XML para a propriedade;

• refinações de elementos e esquemas de codificação devem usar os nomes especificados na recomendação para qualificadores Dublin Core [DCMI, 2000];

(29)

6 Bibliotecas Digitais

Este capítulo apresenta o conceito de biblioteca digital, mostrando uma definição de bibliotecas digitais, suas vantagens em relação às bibliotecas convencionais, requisitos para uma biblioteca digital e as atividades básicas para sua implementação.

6.1 Definição

Há várias definições para a “biblioteca digital”, também chamada de “bibliotec a virtual” ou “biblioteca eletrônica”. De acordo com [Pulliam, 1996], uma biblioteca digital é uma infra-estrutura de informação eletrônica padronizada que permite armazenamento distribuído de dados, busca e recebimento de dados em uma grande região geográfica através de links e uma interface transparente ao usuário final.

Para a maioria das definições de bibliotecas digitais, têm sido identificados elementos comuns, que são os seguintes, segundo [ARL, 1995] :

• a biblioteca digital não é uma entidade única;

• a biblioteca digital necessita de tecnologia para interligar os vários recursos;

• as interligações entre as várias bibliotecas digitais e serviços de informação são transparentes aos usuários finais;

• o acesso universal às bibliotecas digitais e serviços de informação é um objetivo;

• coleções de bibliotecas digitais não estão limitadas a hospedagem de documentos, elas também armazenam dados digitais que não podem ser representados ou distribuídos em formatos impressos.

As bibliotecas digitais podem ser centralizadas ou distribuídas. As bibliotecas digitais distribuídas são representadas por várias bibliotecas digitais que podem ser acessadas através de uma única interface do cliente. Nas bibliotecas digitais distribuídas, cada organização é responsável por administrar de seu acervo. Em uma biblioteca centralizada os objetos que compõem as coleções podem ser armazenados em servidores diferentes, entretanto a administração é centralizada.

(30)

Para bibliotecas digitais distribuídas é necessário utilizar padrões que garantam a comunicação entre os diversos participantes do sistema. Podemos citar como exemplos de padrões o protocolo SDLIP (Simple Digital Library Interoperability Protocol) proposto no projeto Bibliotecas Digitais Stanford [SDLP, 2003], e os padrões ISO ILL (InterLibrary Loan Application Standards) [ILL, 2003]. Além destes, o padrão internacional Z39.50 [Z39.50 MA, 2003] é muito adotado para busca e acesso sobre mais que uma biblioteca digital.

6.2 Vantagens

Entre as vantagens das bibliotecas digitais em relação às bibliotecas convencionais, podemos citar :

• acesso disponível a partir de qualquer computador acessando a Web;

• pesquisa facilitada, pois é mais fácil pesquisar através do computador do que em uma biblioteca convencional;

• o armazenamento é mais simples, pois exige somente discos rígidos ao invés de salas enormes, prateleiras etc;

• o acervo, por não ser físico, não requer manutenção;

• os documentos magnéticos podem ser copiados por quantos usuários o desejarem, ao contrário dos documentos físicos, os quais sempre têm uma quantidade limitada de exemplares, o que limita o acesso à informação.

Em relação à web, as bibliotecas digitais possuem a vantagem de possuir suas informações bem organizadas em tabelas de bancos de dados, ao contrário da Web, onde as informações estão distribuídas de forma anárquica; assim, a busca de informações em bibliotecas digitais é enormemente facilitada.

6.3 Requisitos

Muitas pessoas pensam que uma biblioteca digital consiste de um imenso conjunto de informações espalhadas pela Internet e que podem ser acessadas por qualquer computador, a qualquer momento e por qualquer usuário. Há também aqueles que pensam que a World Wide

(31)

Web representa uma biblioteca digital. No entanto, esta quantidade de informações é muito volátil para ser considerada um verdadeiro repositório, e além disso as bibliotecas digitais são muito mais do que apenas repositórios de informações. A seguir, apresentamos as características que devem ser apresentadas por bibliotecas digitais, além dos dados digitalizados :

• Coerência : as bibliotecas digitais devem apresentar coerência, organização de seu conteúdo, classificando seu material por assunto, autor, etc. Especialistas em determinada área montam as coleções, que por sua vez são combinadas em um grande formulário das bibliotecas digitais. O ideal seria que diferentes instituições se responsabilizassem por criar coleções de variados tipos, compartilhariam essas coleções e assim otimizariam as vantagens da distribuição pela Internet;

• Infra-estrutura econômica : alguns projetos de bibliotecas digitais desenvolvidos por instituições acadêmicas estão procurando financiamento, e cobrando taxas de acesso de seus usuários;

• Pesquisabilidade : a capacidade de encontrar e utilizar materiais na Internet é a maior vantagem para a maioria dos usuários, mas meios rudimentares de pesquisa é fonte de desapontamento. A questão da acessibilidade está sendo alvo de pesquisas, visando o desenvolvimento de mecanismos de pesquisa mais avançados e métodos de filtragem de informações;

• Preservação : as bibliotecas, por definição, coletam e armazenam informações para atender a demandas de seus usuários, mas em relação a coleções digitais na Internet, existem grandes desafios para arquivamento. A preservação também deve garantir que as informações permaneçam intactas. Especialistas em segurança auxiliam na preservação, assegurando a autenticidade das informações;

• Serviço : as bibliotecas digitais podem oferecer serviços onde os usuários podem questionar, utilizar serviços para orientação e instrução, e obter respostas para seus problemas mais comuns.

6.4 Implementação

(32)

atividades básicas : criação e captura, armazenamento e gerenciamento, serviço de busca, distribuição e gerenciamento de direitos autorais. Estas cinco atividades serão discutidas a seguir.

Criação e captura :

Os dados multimídia que formarão a biblioteca digital necessitam logicamente ser digitalizados. Com a evolução tecnológica na informática e a redução dos custos de armazenamento, comunicação e processamento, tornou-se possível armazenar os dados digitalizados em grandes volumes e de acordo com a demanda dos usuários.

Armazenamento e gerenciamento :

Vários tipos de dados digitalizados necessitam de muito espaço de armazenamento e largura de banda, tornando-se necessária a compactação desses dados. Assim, a tecnologia de compressão de dados deve ser incorporada ao sistema da biblioteca digital, para minimizar custos de armazenamento e transmissão. O sistema de arquivos também deve ser suficientemente flexível para incorporar, a curto e médio prazo, novos dados multimídia que surgem constantemente.

Serviço de busca

Geralmente as informações multimídia não possuem informações de indexação internamente, mas em bibliotecas digitais os objetos multimídia podem ser associados a informações de indexação. Além disso, tipos diferentes de objetos podem ser classificados em categorias diferentes. Com estas informações de categorização e indexação, os usuários podem fazer buscas de informações usando consultas booleanas ou linguagem natural. Pesquisas estão sendo realizadas em reconhecimento de voz e imagens para que no futuro os usuários possam procurar informações de áudio ou materiais audiovisuais.

O ideal é que a ferramenta de busca seja construída sob uma base de reformulação de consulta e também seja capaz de incorporar buscas dependentes do contexto. Usuários finais

(33)

geralmente não têm tempo nem paciência para verificar uma lista muito grande de documentos após realizar uma consulta. Assim, a reformulação da consulta pode ser feita oferecendo-se termos de busca alternativos para o usuário final e enfatizando-se a participação do usuário na formação de uma ciclo de formulação de consultas e apresentação de resultados.

Distribuição

A rede para a transmissão de áudio e vídeo deve ter grande largura de banda, assim deve-se utilizar redes de computadores de alta velocidade, como ATM (Asynchronous Transfer Mode).

Gerenciamento de direitos autorais

O gerenciamento de direitos autorais normalmente é uma função chave em bibliotecas digitais que causa impactos nas outras quatro funções principais, impondo regras de uso definidas pelo proprietário da informação e a proteção dos dados multimídia disponíveis contra acessos e modificações não autorizadas.

Não existe uma única solução para o gerenciamentos dos direitos autorais, mas técnicas comuns como marca d’água (assinatura digital codificada nos objetos) e fingerprinting (identificação do usuário que acessou a informação) podem ser usadas para prevenir modificações e acessos não autorizados aos dados.

(34)

7 Descrição do Projeto

Este capítulo aborda as atividades desenvolvidas no projeto de conclusão de curso, mostrando a arquitetura do software desenvolvido, a estratégia de implementação e o seu funcionamento.

O objetivo principal do projeto é criar um software que possibilite a uma biblioteca digital, a qual adota SQL como linguagem de consulta, processar solicitações de consultas XQuery com metadados Dublin Core.

7.1 Arquitetura e implementação

O esquema geral de funcionamento do software é apresentado na Figura 1.

Figura 1 – Esquema geral de funcionamento do software

A primeira parte do projeto consiste num software que recebe uma consulta XQuery FLWR, e o wrapper (conversor de linguagens de consulta e de resultados de consultas) faz a conversão dessa consulta para SQL, traduzindo os metadados Dublin Core para metadados locais. A consulta SQL é executada e seu resultado é transformado para XML, de acordo com [Bos, 1997]. Caso seja de seu interesse, o usuário pode verificar qual a consulta SQL resultante da tradução da consulta XQuery FLWR. O usuário também pode configurar as traduções de metadados locais para metadados Dublin Core, e vice-versa.

(35)

A segunda parte do projeto consiste num servlet que responde às consultas XQuery FLWR, a partir de uma página HTML. Este servlet realiza somente consultas no mesmo estilo da primeira parte do software e responde ao usuário gerando uma página HTML. A configuração das traduções de metadados não pode ser feita através do servlet. Grande parte do trabalho desenvolvido para o software Java foi reaproveitada no desenvolvimento do servlet. O servlet pode ser usado num servidor Web, para responder a consultas através da Internet.

A tecnologia JDBC ajudou muito no desenvolvimento do software e possibilita uma tradução mais simplificada do código, caso seja necessário no futuro utilizar o software com outros sistemas de bancos de dados diferentes do MySQL. Num primeiro momento, pensou-se em utilizar tecnologias como SAX ou DOM para a tradução da consulta SQL para XML. Mas não foi necessário, poisa manipulação de strings e arquivos oferecida pelas bibliotecas Java foi suficiente, e talvez até mais eficiente do que a criação de árvores de nodos (DOM) ou de eventos (SAX).

7.2 Software desenvolvido

A interface inicial do software apresenta as opções ao usuário, e o programa já mostra uma consulta XQuery FLWR, que faz parte dos seis exemplos disponíveis, conforme mostra a Figura 2. O usuário pode alterar esta consulta para certos tipos de combinação de comandos FOR, WHERE e ORDER BY. Pelo que foi pesquisado na Internet, não se encontrou uma ferramenta ou biblioteca que pudesse auxiliar nessa tradução. Projetos como [Rainbow, 2003] estão na fase de testes e ainda não foram liberados.

(36)

Figura 2 – Interface inicial do programa

Escolhendo a opção “Consulta XQuery”, o usuário recebe o resultado da consulta SQL equivalente a consulta XQuery FLWR da interface inicial, traduzido para XML e usando metadados Dublin Core. O banco de dados utilizado possui uma estrutura simples, contendo dados sobre livros, autores e publicadores (ver Anexo 6). A Figura 3 mostra a janela com o resultado em XML.

(37)

Figura 3 – Resultado em XML da consulta XQuery FLWR

Se o usuário achar necessário, pode escolher a opção “Detalhes – Consulta SQL” para visualizar a consulta SQL equivalente à consulta XQuery FLWR, que é mostrada na Figura 4.

Figura 4 – Consulta SQL equivalente à consulta XQuery FLWR

Além de realizar consultas, o usuário também pode configurar a tradução de metadados do banco de dados local, para metadados Dublin Core. Por exemplo, configurar a tradução do metadado “autor”, para o metadado Dublin Core “Creator”, para a tabela “animacao”. A tradução de metadados Dublin Core para metadados do banco de dados local é realizada para os metadados Dublin Core “Language”, “Type” e “Format”. Segundo [DCMI, 2003a], esses metadados precisam respeitar certas regras de apresentação, utilizando códigos

(38)

especiais para representação de idiomas e tipos de arquivos.

As Figuras 5 e 6 mostram as janelas a partir das quais o usuário escolhe a tabela do banco de dados, ou o metadado Dublin Core, onde realizará a configuração.

Figura 5 – Seleção de tabela para configuração de tradução

Figura 6 – Seleção de metadado Dublin Core para configuração de tradução

Nas duas traduções, o usuário faz as modificações que julgar necessárias e pode salvá-las. As informações de tradução são salvas em arquivo texto (ver Anexos 2 e 3), o que facilita a configuração, pois não é necessário incluir estas informações no código-fonte do programa, o que necessitaria uma nova compilação a cada nova configuração de tradução. O usuário também pode editar diretamente os arquivos de configuração. As Figuras 7 e 8 mostram as janelas onde fazer a configuração das traduções e salvá-la.

(39)

Figura 7 – Configuração da tradução de metadados Dublin Core / locais

Figura 8 – Configuração da tradução de metadados locais / Dublin Core

No caso do servlet, para testar seu funcionamento utilizou-se o JSDK 2.1 (Java Servlet Development Kit 2.1). Executa-se o JSDK 2.1 e o arquivo HTML com a consulta ao servlet (ver Anexo 5) é aberto num navegador. O usuário digita sua consulta XQuery FLWR e clica no botão “Submeter consulta” para enviá-la ao servlet, conforme mostra a Figura 9.

(40)

Figura 9 – Arquivo HTML para consulta ao servlet

O servlet a seguir processa a consulta, da mesma forma que o programa em Java faz, e gera um arquivo HTML com a resposta em XML para o usuário, conforme é mostrado na Figura 10. Também é mostrada a consulta SQL equivalente a consulta XQuery submetida pelo usuário.

(41)
(42)

8 Conclusão

Os objetivos deste projeto foram alcançados. Realizou-se o estudo das tecnologias necessárias para a implementação do software, e criou-se o software que converte uma biblioteca digital, suportando SQL, em uma biblioteca digital que suporta a consulta XQuery traduzindo metadados proprietários em metadados Dublin Core. Este projeto contribuiu para a criação de bibliotecas digitais abertas seguindo uma interface padrão para acesso aos seus dados. O trabalho que foi realizado será utilizado no Projeto SIDIE – Sistema de Disponibilização de Informações para Ensino, cujo objetivo é a construção de uma infra-estrutura de digitalização, organização e disponibilização de conteúdos digitais voltados ao ensino e pesquisa [SIDIE, 2003].

Com este trabalho, foram revistos muitos conceitos e outros conhecimentos tiveram que ser aprendidos. A teoria de banco de dados relacionais e linguagem SQL foi um item revisado para a realização deste trabalho, de grande importância na atividade profissional. Um grande conjunto de tecnologias foi estudado, como XML, XQuery, JDBC, Java Servlets, e com certeza também ajudarão muito na vida profissional, pois tais tecnologias estão se tornando cada vez mais importantes. Também foi interessante aprender sobre os tópicos de biblioteca digital e metadados, que não são muito explorados nas disciplinas do curso de graduação.

A World Wide Web ajudou muito na realização deste trabalho, pois a maioria das tecnologias estudadas são recentes, em contínua evolução. Os tutoriais, manuais, bibliotecas e ferramentas utilizados no trabalho foram quase todos obtidos na Internet, o que facilitou muito o desenvolvimento do projeto, tanto pela gratuidade como pela atualização constante do material utilizado.

Para trabalhos futuros, sugere-se a aplicação do software aqui desenvolvido em algum projeto mais amplo relativo a bibliotecas digitais, além do próprio Projeto SIDIE, e projetos para geração e intercâmbio de metadados. Também pode-se sugerir a aplicação de outros padrões diferentes do Dublin Core, na criação e intercâmbio dos metadados entre diferentes sistemas.

(43)

9 Referências Bibliográficas

[Anderson, 2001] ANDERSON, Richard et al. Professional XML. Rio de Janeiro: Ciência

Moderna, 2001.

[ARL, 1995] Association of Research Libraries. Appendix II - Definition and Purposes of a Digital Library. In: Association of Research Libraries Proceedings of the 126th Annual

Meeting, Boston: 1995. Disponível em: <http://www.arl.org/arl/proceedings/126/2-defn.html>. Acesso em: 23 mai. 2003.

[BDB-IBICT, 2003] Site do Projeto Biblioteca Digital Brasileira - IBICT. Disponível em:

<http://www.ibict.br/bdb/inicio.htm>. Acesso em: 25 mai. 2003.

[BD-RMAV, 2003] Site da Biblioteca Digital da RMAV-FLN. Disponível em:

<http://www.rmav-fln.ufsc.br/projetos/biblioteca/>. Acesso em: 25 mai. 2003.

[Bos, 1997] BOS, Bert. XML representation of a relational database. Publicado em: 11 jul.

1997. Disponível em: <http://www.w3.org/XML/RDB.html>. Acesso em: 25 mai. 2003.

[Cover, 2001] The Cover Pages. Code for the Representation of the Names of Languages.

Publicado em: 29 ago. 2001. Disponível em: <http://www.oasis- open.org/cover/iso639a. html>. Acesso em: 25 mai. 2003.

[Cover, 2003a] The Cover Pages. Country Code List: ISO 3166-1993 (E). Disponível em:

<http://www.oasis-open.org/cover/country3166.html>. Acesso em: 25 mai. 2003.

[Cover, 2003b] The Cover Pages. W3C Document Object Model (DOM). Publicado em: 4

abr. 2003. Disponível em: <http://xml.coverpages.org/dom.html>. Acesso em: 23 mai. 2003.

[DCMI, 2003a] Dublin Core Metadata Initiative. Dublin Core Metadata Element Set, Version 1.1: Reference Description. Publicado em: 4 fev. 2003. Disponível em:

(44)

[DCMI, 2003b] Dublin Core Metadata Initiative. DCMI Type Vocabulary. Publicado em: 12

fev. 2003. Disponível em: <http://dublincore.org/documents/2003/02/12/dcmi-type-vocabulary/>. Acesso em: 23 mai. 20003.

[DCMI, 2003c] Dublin Core Metadata Initiative. DCMI Metadata Terms. Publicado em: 4

mar. 2003. Disponível em: <http://dublincore.org/documents/2003/03/04/dcmi-terms/>. Acesso em: 23 mai. 2003.

[Deitel, 2001] DEITEL, Harvey M.; DEITEL, Paul J. Java - Como Programar. 3. ed. Porto

Alegre: Bookman, 2001.

[D-Lib, 2003] Site da D-Lib Magazine. Disponível em: <http://www.dlib.org/>. Acesso em:

23 mai. 2003.

[ILL, 2003] Site da Interlibrary Loan Application Standards Maintenance Agency.

Disponível em: <http://www.nlc-bnc.ca/iso/ill/>. Acesso em: 23 mai. 2003.

[ISO/IEC 11179, 2003] Site da ISO/IEC 11179 Information Technology. Disponível em:

<http://metadata-stds.org/11179/>. Acesso em: 23 mai. 2003.

[Katz, 2001] KATZ, Howard. A quick intro to XQuery. Publicado em: 10 mai. 2001.

Disponível em: <http://www.fatdog.com/XQuery_Intro.html>. Acesso em: 25 mai. 2003.

[Manolescu, 2000] MANOLESCU, Ioana et al. Agora: Living with XML and Relational.

In: Proceedings of the 26th VLDB Conference, 2000, Cairo. Disponível em: <http://www.vldb.org/conf/2000/P623.pdf>. Acesso em: 23 mai. 2003.

[Manolescu, 2001] MANOLESCU, Ioana et al. Answering XML Queries over Heterogeneous Data Sources. In: Proceedings of the 27th VLDB Conference, 2001, Roma.

(45)

[Media, 2001] Media Types. Publicado em: 16 out. 2001. Disponível em:

<http://www.isi.edu/in-notes/iana/assignments/media-types/media-types>. Acesso em: 25 mai. 2003.

[Moeller, 2002] MOELLER, Anders; SCHWARTZBACH, Michael I. XQuery - information extraction and transformation. In: The XML Revolution - Technologies for the future Web.

Publicado em: out. 2002. Disponível em: <http://www.brics.dk/~amoeller/XML/querying/ index.html>. Acesso em 23 mai. 2003.

[MySQL, 2003a] MySQL AB. Download Connector/J 2.0. Disponível em: <http://www.

mysql.com/downloads/api-jdbc-old.html>. Acesso em: 25 mai. 2003.

[MySQL, 2003b] MySQL AB. MySQL Reference Manual. Disponível em: <http://www.

mysql.com/doc/en/index.html>. Acesso em: 25 mai. 2003.

[Powell, 2001] POWELL, Andy; WAGNER, Harry. Namespace Policy for the Dublin Core Metadata Initiative (DCMI). Publicado em: 26 out. 2001. Disponível em:

<http://dublincore.

org/documents/2001/10/26/dcmi-namespace/>. Acesso em: 23 mai. 2003.

[Powell, 2002] POWELL, Andy; JOHNSTON, Pete. Guidelines for implementing Dublin Core in XML. Publicado em: 9 set. 2002. Disponível em: <http://www.dublincore.org/

documents/2002/09/09/dc-xml-guidelines/>. Acesso em: 23 mai. 2003.

[Pulliam, 1996] PULLIAM, Donnie et al. Digital Libraries - A Technology Assessment by Benjamin Franklin Scholars. In: The Benjamin Franklin Capstone Course (E 497S),

Raleigh: North Carolina State University, 1996. Disponível em: <http://www4.ncsu.edu/~jherkert/

(46)

[Rainbow, 2003] Site do Rainbow - XQuery Processing System Using Relational Technology. Disponível em: <http://davis.wpi.edu/dsrg/rainbow/index.htm>. Acesso em: 25

mai. 2003.

[SAX, 2003] Site do SAX Project. Disponível em: <http://www.saxproject.org/>. Acesso

em: 23 mai. 2003.

[SDLP, 2003] Site do Stanford Digital Libraries Project. Disponível em:

<http://www-diglib.stanford.edu/diglib/>. Acesso em: 23 mai. 2003.

[SIDIE, 2003] Site do Projeto SIDIE – Sistema de Disponibilização de Informações para o Ensino. Disponível em: <http://www.sidie.nurcad.ufsc.br/>. Acesso em: 4 jul. 2003.

[Sun, 2002a] Sun Microsystems. Class PrintWriter - java.io. In: Java 2 Platform, Standard

Edition, v1.4.1 API Specification. Publicado em: 2002. Disponível em: <http://java.sun.com/j2se/1.4.1/docs/api/java/io/PrintWriter.html>. Acesso em: 25 mai. 2003.

[Sun, 2002b] Sun Microsystems. Class XmlDocument - com.sun.xml.tree. In: Java 2

Platform, Standard Edition, v1.4.1 API Specification. Publicado em: 2002. Disponível em: <http://java.sun.com/xml/jaxp/dist/1.0.1/docs/api/internal/com/sun/xml/tree/XmlDocument. html>. Acesso em: 25 mai. 2003.

[Sun, 2002c] Sun Microsystems. Generating XML from an Arbitrary Data Structure. In:

The Java Webservices Tutorial. Publicado em: 7 ago. 2002. Disponível em: <http://java.sun.com/webservices/docs/1.0/tutorial/doc/JAXPXSLT6.html>. Acesso em: 25 mai. 2003.

[Sun, 2002d] Sun Microsystems. Interface Document - org.w3c.dom. In: Java 2 Platform,

Standard Edition, v1.4.1 API Specification. Publicado em: 2002. Disponível em: <http://java.sun.com/j2se/1.4.1/docs/api/org/w3c/dom/Document.html>. Acesso em: 25 mai. 2003.

(47)

[Sun, 2002e] Sun Microsystems. Interface ResultSet - java.sql. In: Java 2 Platform,

Standard Edition, v1.4.1 API Specification. Publicado em: 2002. Disponível em: <http://java.sun.com/j2se/1.4.1/docs/api/java/sql/ResultSet.html>. Acesso em: 25 mai. 2003.

[Sun, 2002f] Sun Microsystems. Interface ResultSetMetaData - java.sql. In: Java 2

Platform, Standard Edition, v1.4.1 API Specification. Publicado em: 2002. Disponível em: <http://java.sun.com/j2se/1.4.1/docs/api/java/sql/ResultSetMetaData.html>. Acesso em: 25 mai. 2003.

[Sun, 2002g] Sun Mycrosystems. Reading XML Data into a DOM. In: The Java

Webservices Tutorial. Publicado em: 7 ago. 2002. Disponível em: <http://java.sun.com/ webservices/docs/1.0/tutorial/doc/JAXPDOM3.html>. Acesso em: 23 mai. 2003.

[Sun, 2003a] Sun Microsystems. Use of ResultSet.getXXX: Table-Free Versions. In: The

Java Tutorial. Publicado em: 2003. Disponível em: <http://java.sun.com/docs/books/tutorial/ jdbc/basics/_retrievingTable.html>. Acesso em: 25 mai. 2003.

[Sun, 2003b] Sun Microsystems. The JDBC API Universal Data Access for the Enterprise.

Publicado em: 12 abr. 2003. Disponível em: < http://java.sun.com/products/jdbc/overview.html >. Acesso em: 25 mai. 2003.

[W3 Schools, 2003] Site da W3 Schools Online Web Tutorials. Disponível em:

<http://www.w3schools.com/>. Acesso em: 25 mai. 2003.

[XEAR, 2002] Site do XEAR - The XML To SQL Translation System. Disponível em:

<http://davis.wpi.edu/dsrg/WEB_DB/XQuery/>. Acesso em: 25 mai. 2003.

[XML, 2000] W3C XML Core Working Group (WG). Extensible Markup Language (XML) 1.0 (Second Edition). Publicado em: 6 out. 2000. Disponível em:

(48)

[XQuery, 2001] W3C XML Query Working Group. XQuery: A Query Language for XML.

Publicado em 15 fev. 2001. Disponível em: <http://www.w3.org/TR/2001/WD-xquery-20010215/>. Acesso em: 23 mai. 2003.

[XQuery, 2002a] W3C XML Query Working Group. XQuery Grammar. Publicado em: nov.

2002. Disponível em: <http://www.w3.org/2002/11/xquery-xpath-applets/xquery-bnf.html>. Acesso em: 25 mai. 2003.

[XQuery, 2002b] W3C XML Query Working Group. XML Query Use Cases. Publicado em

15 nov. 2002. Disponível em: <http://www.w3.org/TR/2002/WD-xmlquery-use-cases-20021115/>. Acesso em: 23 mai. 2003.

[XQuery, 2003] W3C XML Query Working Group. XQuery 1.0: An XML Query Language. Publicado em 2 mai. 2003. Disponível em:

<http://www.w3.org/TR/2003/WD-xquery-20030502/>. Acesso em: 23 mai. 2003.

[Z39.50 MA, 2003] Site da Z39.50 Maintenance Agency. Disponível em:

(49)

Anexos

Anexo 1 : Código-fonte do software - arquivo “SQLXML.java” /* Versão JDBC/MySQL */ import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.xml.parsers.*; import java.io.*;

public class SQLXML extends JFrame {

private JTextArea inputXQuery; private JComboBox exemplosXQuery;

private JButton submitXQuery, traducaoDCLocal, traducaoLocalDC, sair; private JScrollPane sp;

private String ex[] = {"Exemplo 1","Exemplo 2","Exemplo 3","Exemplo 4", "Exemplo 5","Exemplo 6"};

private XMLResult resposta; private DCLocal configDCLocal; private LocalDC configLocalDC;

private String consultaXQuery, consultaSQL, resultadoDC; private Connection connection;

private Statement statement; private ResultSet resultSet; private ResultSetMetaData rsmd; private JTable table;

private String bdbuDC[][] = new String[15][6]; private String ident[], local[], dc[];

private int sizeDC;

final int Title = 0, Creator = 1, Subject = 2, Description = 3, Publisher = 4, Contributor = 5, Date = 6, Type = 7,

Format = 8, Identifier = 9, Source = 10, Language = 11, Relation = 12, Coverage = 13, Rights = 14;

final String stringsDC[] = {"title", "creator", "subject", "description", "publisher", "contributor", "date", "type", "format", "identifier", "source", "language", "relation", "coverage", "rights"};

/* Tabelas do BD bdbu */

final int animacao = 0, audio = 1, bdmm = 2, imagem = 3, texto = 4, video = 5; final String stringsBD[] = {"animacao","audio","bdmm","imagem","texto","video"}; final String xq[] =

{"FOR $a IN document(\"texto.xml\")/metadata/record\n" + "WHERE $a/dc:language = pt\n" + "ORDER BY $a/dc:language\n" +

"RETURN\n" + " <metadata>\n { $a/dc:title }\n { $a/dc:creator }\n" + " { $a/dc:publisher }\n </metadata>",

"FOR $a IN document(\"texto.xml\")/metadata/record\n" + "ORDER BY $a/dc:language\n" +

"RETURN\n" + " <metadata>\n { $a/dc:title }\n { $a/dc:creator }\n" + " { $a/dc:publisher }\n </metadata>",

"FOR $a IN document(\"texto.xml\")/metadata/record\n" + "WHERE $a/dc:format = text/html\n" +

"RETURN\n" + " <metadata>\n { $a/dc:title }\n { $a/dc:creator }\n" + " { $a/dc:publisher }\n </metadata>",

"FOR $a IN document(\"texto.xml\")/metadata/record\n" +

"RETURN\n" + " <metadata>\n { $a/dc:title }\n { $a/dc:creator }\n" + " { $a/dc:publisher }\n </metadata>",

"FOR $a IN document(\"texto.xml\")/metadata/record\n" + "WHERE $a/dc:language = pt\n" +

"RETURN\n" + " <metadata>\n { $a }\n </metadata>", "FOR $a IN document(\"texto.xml\")/metadata/record\n" + "RETURN\n" + " <metadata>\n { $a }\n </metadata>"};

final String identDC[] = {"Title", "Creator", "Subject", "Description", "Publisher", "Contributor", "Date", "Type", "Format", "Identifier", "Source", "Language", "Relation","Coverage", "Rights"};

public SQLXML() {

super("SQLXML v1.4");

(50)

String username = "root"; String password = "senha"; try {

Class.forName("com.mysql.jdbc.Driver");

connection = DriverManager.getConnection(url, username, assword); }

catch (ClassNotFoundException cnfex) {

System.err.println("Falha ao carregar driver JDBC/MySQL."); cnfex.printStackTrace();

System.exit(1); }

catch (SQLException sqlex) {

System.err.println("Impossível conectar"); sqlex.printStackTrace();

System.exit(1); }

inputXQuery = new JTextArea(xq[0],15,30); exemplosXQuery = new JComboBox(ex); exemplosXQuery.setMaximumRowCount(6);

submitXQuery = new JButton("Consulta XQuery");

traducaoDCLocal = new JButton("Tradução DC para BD local"); traducaoLocalDC = new JButton("Tradução BD Local para DC"); sair = new JButton("Sair");

resposta = new XMLResult(); configDCLocal = new DCLocal(); configLocalDC = new LocalDC(); exemplosXQuery.addItemListener(

new ItemListener() {

public void itemStateChanged(ItemEvent e) {

inputXQuery.setText(xq[exemplosXQuery.getSelectedIndex()]); } } ); submitXQuery.addActionListener( new ActionListener() {

public void actionPerformed(ActionEvent e) { setBD_DC(); setElements(); consultaXQuery = inputXQuery.getText(); consultaSQL = converterXQuerySQL(consultaXQuery); getTable(); try { resultadoDC = DC_Output(); resposta.showResult(resultadoDC,consultaSQL); }

catch (NullPointerException ex) { ex.printStackTrace();

JOptionPane.showMessageDialog(null,"ResultSet não possui registros");

setTitle("Sem registros para exibir"); } } } ); traducaoDCLocal.addActionListener( new ActionListener() {

public void actionPerformed(ActionEvent e) { configDCLocal.show(); } } ); traducaoLocalDC.addActionListener( new ActionListener() {

public void actionPerformed(ActionEvent e) { configLocalDC.show(); } } ); sair.addActionListener( new ActionListener() {

public void actionPerformed(ActionEvent e) { shutDown(); System.exit(0); } } );

Imagem

Referências