• Nenhum resultado encontrado

Processamento de Consultas XML usando Máquinas de Inferência

N/A
N/A
Protected

Academic year: 2021

Share "Processamento de Consultas XML usando Máquinas de Inferência"

Copied!
8
0
0

Texto

(1)

Processamento de Consultas XML usando Máquinas de

Inferência

Fábio G. Santos, Rafael de Araújo M. Pinheiro, Vanessa Braganholo Universidade Federal Fluminense

fabiogomes@id.uff.br, {rpinheiro, vanessa}@ic.uff.br

Resumo. Processamento de consultas XML sobre grandes bases de dados pode sofrer de problemas de desempenho. Em trabalhos anteriores, mostramos que algumas consultas XML, quando executadas usando uma máquina de inferência, são processadas mais rapidamente do que sua equivalente em XQuery. No entanto, para se beneficiar desse bom desempenho, é necessário traduzir consultas XML para a linguagem lógica, de forma que elas possam ser processadas de forma transparente. Este artigo descreve uma abordagem de conversão de consultas XML para consultas em Prolog. Inicialmente, apresentamos uma solução para tradução de consultas XPath.

Categories and Subject Descriptors: H. Information Systems [H.m. Miscellaneous]: Databases Keywords: Prolog, XML, XPath

1. INTRODUÇÃO

As linguagens de consulta XQuery [Boag et al. 2010] e XPath [Clark and DeRose 1999] foram projetadas com o propósito de possibilitar consultas em documentos XML. Contudo, em ambientes com volumes de dados cada vez maiores, as consultas nem sempre têm um tempo de resposta razoável. Além disso, alguns tipos de consultas podem ser extremamente complexas de serem especificadas.

Com o objetivo de simplificar as consultas sobre bases de dados XML, alguns trabalhos propõem o uso de linguagens de inferência para processar consultas XML [Almendros-Jiménez et al. 2008; Lima et al. 2012]. Nesses trabalhos, documentos são traduzidos para fatos e regras Prolog, e consultas podem ser executadas diretamente em Prolog. Supreendentemente, um experimento realizado por Lima [2012] mostrou que algumas consultas executadas em Prolog eram mais eficientes do que suas equivalentes em XQuery. No entanto, embora o trabalho de Lima et al. [2012] tenha contribuído consideravelmente para criar uma solução alternativa às ferramentas de consulta XML já existentes, algumas lacunas dessa solução ainda necessitam ser preenchidas. O objetivo deste trabalho é apresentar uma abordagem que possa ajudar a resolver duas dessas questões.

Tradução automática da consulta XML para Prolog - Como integrar processadores de consulta

XML com máquinas de inferência Prolog a fim de evitar que o usuário tenha de alternar entre os dois ambientes para submeter a sua consulta?

Tradução automática do resultado Prolog para XML - Como apresentar ao usuário o resultado

de uma consulta Prolog, realizada após um processo de inferência, de forma transparente e que obedeça todas as restrições descritas na consulta XML?

Desta forma, a proposta é usar uma máquina de inferência Prolog para processar consultas XML de forma totalmente transparente para o usuário. A linguagem escolhida para esta primeira solução é a XPath. A escolha deve-se principalmente a dois motivos: (i) XPath é um subconjunto da XQuery; (ii) a linguagem é bem mais simples do que a XQuery, e servirá como base para uma futura abordagem

(2)

que tratará da tradução de consultas XQuery. Desta forma, a abordagem proposta é capaz de traduzir consultas XPath que usam os operadores /, // e filtros. Os filtros podem utilizar operadores lógicos AND e OR e composições de expressões.

O restante desse artigo está organizado da seguinte forma. A Seção 2 descreve a abordagem elaborada por Lima et al. [2012], na qual esse trabalho se baseia. A Seção 3 apresenta a abordagem de tradução proposta, de forma a disponibilizar ao usuário processamento de consultas XPath de forma transparente, utilizando inferência. A Seção 4 apresenta a implementação da abordagem proposta. Por fim, a Seção 5 discute os trabalhos relacionados e a Seção 6 conclui.

2. BACKGROUND

A utilização de linguagem de programação lógica para a manipulação e representação de dados tem sido adotada há bastante tempo [Ceri et al. 1990]. Com o surgimento da linguagem XML, foram criadas algumas abordagens para realizar as mesmas manipulações em documentos XML. Lima et al. [2012] propôs uma abordagem com o objetivo de fornecer mecanismos para utilizar as vantagens da linguagem de programação lógica em consultas sobre os documentos XML. A abordagem proposta por Lima et al. [2012] consiste de três etapas. A primeira etapa consiste na geração de regras Prolog de forma automática a partir do esquema do documento XML. Nesta etapa, um especialista pode incluir regras manuais, caso seja necessário. Na segunda etapa, o documento XML é utilizado para gerar fatos Prolog. Já a terceira etapa consiste na realização de consultas Prolog pelos usuários finais.

A Fig. 1 mostra um exemplo de documento XML que possui informações relacionando pais e seus respectivos filhos. Este documento será utilizado como base para explicar todo o processo de tradução. Os usuários podem submeter consultas XPath, como por exemplo, retornar todos os pares pai e filho. A consulta //pessoa é bastante simples, e obtém os pares pai/filho sem necessitar de um grande conhecimento da linguagem de consulta e do documento XML.

<pessoas> <pessoa> <nome>João</nome> <filho>Pedro</filho> </pessoa> <pessoa> <nome>Pedro</nome> <filho>Mário</filho> </pessoa> <pessoa> <nome>Mário</nome> <filho>Ricardo</nome> </pessoa> </pessoas>

Fig. 1 Documento XML com informações de pai e filhos.

Mesmo sem a utilização de técnicas para otimização da base de fatos, em alguns casos a linguagem Prolog possui um desempenho superior quando comparado com a execução de consultas similares em XQuery [Lima 2012]. Porém, a escrita das consultas Prolog exige dos usuários que utilizam as linguagens de consulta XML bons conhecimentos da estrutura de execução das consultas Prolog e das funções disponibilizadas pela máquina de inferência para a construção de funções que retornam os dados conforme a necessidade do usuário.

Por exemplo, ao submeter o documento acima ao protótipo de Lima et al. [2012], é gerada uma base de fatos e regras. A Fig. 2 apresenta a base de fatos e regras gerada a partir do documento XML acima. Neste cenário, para obter os pares pai/filho equivalentes à consulta XPath utilizada anteriormente, o usuário precisaria submeter uma consulta Prolog similar que retorne os mesmos

(3)

resultados. Neste caso, um exemplo de consulta Prolog que pode ser submetida é pessoa(ID, NOME, FILHO). O resultado dessa consulta, no entanto, é dado em Prolog.

pessoa(ID, NOME, FILHO) :- nome(ID, NOME), filho(ID, FILHO). pessoas(ID, PESSOA) :- pessoa(ID, PESSOA).

pessoas(id1). pessoa(id1, id2). nome(id2, 'joao'). filho(id2, 'pedro'). pessoa(id1, id3). nome(id3, 'pedro'). filho(id3, 'mario'). pessoa(id1, id4). nome(id4, 'mario'). filho(id4, 'ricardo').

Fig. 2 Base de regras e fatos prolog.

3. ABORDAGEM DE CONVERSÃO DA CONSULTA E RESULTADO

Em geral, usuários XML precisam que as respostas das suas consultas estejam também em XML. Além disso, um usuário XML pode não ter conhecimento sobre a linguagem Prolog, o que dificulta o uso da abordagem de Lima et al. [2012]. Estes fatos motivaram a proposta de tradução automática apresentada neste trabalho. A tradução é feita em duas etapas: primeiro, a consulta XPath é traduzida para Prolog. Depois, o resultado da consulta Prolog é traduzido novamente para XML, de forma que o processo fique totalmente transparente para o usuário. A seguir, apresentamos as etapas de tradução em detalhes.

3.1 TRADUÇÃO DE CONSULTAS XPATH PARA PROLOG

A abordagem para a tradução consiste em processar consultas XPath e transformá-las em uma regra equivalente em Prolog, utilizando o esquema do documento XML como base para todo o processo. Esta regra é submetida à base de fatos Prolog para que seja executada e, em seguida, os dados são retornados para o usuário.

Utilizando o documento XML da Fig. 1, o usuário pode submeter uma consulta XPath para retornar todos os nomes dos filhos que aparecem no documento. Uma possível consulta XPath para isso é //filho. Com a submissão da consulta, inicia-se a fase de obtenção das informações dos elementos utilizados na consulta através do esquema do documento XML.

Após a etapa de obtenção de todas as informações, a etapa de geração da consulta Prolog é iniciada. Como o elemento utilizado na consulta não possui um tipo complexo associado, a geração da consulta Prolog é mais simples e basta associar à regra uma variável com o mesmo nome do elemento usado na consulta. Por exemplo, o elemento filho utilizado na consulta XPath é utilizado para gerar a variável FILHO. Portanto, a consulta Prolog gerada é filho(_, FILHO). O uso do underline no lugar da primeira variável indica que ela não deve ser retornada pela consulta (note que isso corresponde ao id na base de fatos da Fig. 2).

As consultas que utilizam elementos de tipo complexo exigem um processamento particular para gerar a consulta Prolog equivalente. Neste caso, são identificados os elementos e todos os subelementos associados. Os subelementos são utilizados para a criação das variáveis utilizadas na regra. Por exemplo, a consulta XPath //pessoa referencia um elemento de tipo complexo (pessoa). Os

(4)

subelementos associados ao elemento pessoa são nome e filho. Portanto, a regra Prolog gerada é pessoa(_, NOME, FILHO).

As consultas XPath que possuem filtro passam por um outro processo à parte para a geração das consultas Prolog. Por exemplo, se o usuário submeter a consulta //pessoa[nome = 'pedro'], o elemento pessoa e os subelementos associados são utilizados para montar a consulta Prolog, no qual o subelemento utilizado no filtro corresponde à variável que será utilizada na consulta. Portanto, a consulta Prolog gerada é pessoa(_, NOME, FILHO), NOME = 'pedro'.

A tradução do operador lógico AND utiliza o operador correspondente em Prolog. Por exemplo, a consulta //pessoa[nome=’joão’ and filho=’mario’] é traduzida para pessoa(ID, NOME, FILHO), NOME=’joao’ , FILHO=’mario’. No caso do operador lógico OR, a tradução é mais complexa porque exige uma concatenação de consultas Prolog e a utilização de uma função disponibilizada pelo Prolog para que os dados repetidos possam ser retirados do resultado da consulta. Por exemplo, a consulta //pessoa[nome=’joão’ or filho=’mario’] é traduzida para setof(PESSOA,(pessoa(ID, NOME, FILHO), (NOME=’joao’ ; FILHO=’mario’)),_).

3.2 TRADUÇÃO DA RESPOSTA DA CONSULTA PROLOG PARA XML

Uma vez que a consulta tenha sido traduzida, ela é executada pela máquina de inferência Prolog. O próximo passo é então traduzir o resultado Prolog de volta para XML. Existem dois pontos importantes nessa questão. Devemos levar em consideração as restrições feitas na consulta XPath, e precisamos converter as variáveis e seus valores em Prolog para os correspondentes elementos e seus conteúdos em XML. Além da consulta XPath, nossa abordagem pode se basear também em informações da consulta Prolog gerada pelo passo anterior. Com essas informações obtidas, o próximo passo é varrer todo o arquivo ou stream gerado como resultado da consulta, e para cada par

elemento/valor gerar um correspondente “<elemento>valor</elemento>” como saída do

procedimento.

O procedimento de conversão do resultado do processo de inferência é guiado por dois passos principais descritos a seguir. A descrição é baseada nos exemplos da Fig. 3, Fig. 4 e Fig. 5. A Fig. 3 mostra a consulta XPath original. A Fig. 4(a) mostra a tradução Prolog da consulta da Fig. 3, enquanto a Fig. 4(b) mostra o resultado da execução da consulta Prolog da Fig. 4(a). Finalmente, a Fig. 5 mostra o resultado da tradução do resultado da consulta Prolog para XML.

/catalog/item/title | /catalog/item/author Fig. 3 Consulta XPath

(a) Consulta Prolog

item(X,ID),title(X,TITLE),author(X,AUTHOR)

(b) Resultado Prolog

TITLE/A Moreninha AUTHOR/Joaquim M. Macedo

Fig. 4 Consulta Prolog e resultado em Prolog

<result>

<title>A Moreninha</title>

<author>Joaquim M. Macedo</author> </result>

Fig. 5 Resultado da conversão do resultado Prolog ilustrado na Fig. 3(b)

Identificação dos elementos de retorno na consulta. O primeiro passo da abordagem tem como

objetivo “varrer” a consulta XPath procurando pelos elementos que deverão ter seu valores retornados. Os elementos encontrados são inseridos numa lista para serem utilizadas em passos posteriores. No

(5)

caso da consulta da Fig. 3(a), após a execução do passo de identificação dos elementos, a lista contém os valores title e author.

Extração dos elementos XML. Com o resultado gerado pela consulta Prolog da Fig. 4(a)

disponibilizado como mostrado na Fig. 4(b) e a lista montada no passo anterior, uma busca é realizada pelos elementos desta lista. Os valores dos elementos encontradas na consulta são extraídos um a um e convertidos para elementos XML. O resultado dessa operação pode ser visto na Fig. 5.

Como mencionado no início dessa seção, o mesmo processo realizado para a consulta XPath da Fig. 3 pode também ser executado quando se tem como entrada uma consulta Prolog tal como a consulta mostrada na Fig. 4(a). Este tipo de tradução pode ser útil quando o usuário deseja utilizar Prolog diretamente, pelo fato da consulta ser mais simples de ser construída em linguagem lógica do que a equivalente em XQuery ou XPath. Neste caso, se ele, apesar de executar uma consulta Prolog, desejar resultados em XML, a abordagem proposta está apta a atuar. Para traduzir o resultado, também são executadas duas etapas. A lista montada no primeiro passo irá conter os elementos TITLE e AUTHOR, já que estas variáveis correspondem aos elementos de retorno na consulta. O segundo passo é executado de forma idêntica quando temos como entrada a consulta XPath e o resultado é também o mesmo, tendo como elemento raiz o elemento default “<result>”.

4. IMPLEMENTAÇÃO

4.1 TRADUÇÃO DE CONSULTAS XPATH PARA PROLOG

(6)

O protótipo implementado neste trabalho é uma extensão do trabalho de Lima et. al [2012], que foi construído utilizando a linguagem de programação Java e disponibiliza uma interface para a submissão de consultas XPath e consultas em Prolog. Os módulos internos do protótipo utilizam técnicas importantes de tradução de consultas como Wrapper e o padrão de desenvolvimento de software chamado Interpreter [Gamma et al. 1994].

As consultas XPath submetidas ao protótipo são enviadas diretamente ao Wrapper. Este módulo tem papel fundamental na tradução das consultas, porque ele orquestra todas as etapas de tradução e processamento dos dados obtidos na consulta. Para o processamento da árvore do esquema XML, foi utilizado a API DOM, que disponibiliza todos os mecanismos necessários para que sejam feitas diversas operações na árvore do XML.

A Fig. 6 apresenta uma visão geral da arquitetura utilizada para a tradução de consultas XPath para Prolog. A consulta XPath é submetida ao sistema e é enviada diretamente ao Parser, que junto com o esquema do documento XML, identifica todos os elementos utilizados na consulta. Após a identificação dos elementos, os mesmos são enviados ao interpretador para que sejam geradas as consultas equivalentes em Prolog. No final desta etapa, a consulta Prolog é retornada.

4.2 TRADUÇÃO DA RESPOSTA DA CONSULTA PROLOG PARA XML

Primeiramente, devemos levar em consideração a forma como o resultado da consulta Prolog é apresentado. Nossa abordagem foi elaborada em cima da saída gerada pelas consultas feitas através da máquina de inferência tuProlog, que é a utilizada na implementação original de Lima et al. [2012]. A Fig. 7 mostra um exemplo de retorno de uma consulta Prolog submetida ao tuProlog. Sendo assim, implementamos nosso protótipo esperando como entrada um conjunto de caracteres que obedeçam esse formato. Além disso, como nossa abordagem avalia ou a consulta Prolog ou a consulta XPath para formar o resultado em XML, devemos nos preocupar em como tais consultas podem ser escritas para que seja possível realizar a conversão com sucesso.

TITLE/O Andar do Bêbado PUBLISHER/Zahar PAGES/261 AUTHOR/Leonard Mlodinow TITLE/Como Programar em Java PUBLISHER/PrenticeHall PAGES/1110 AUTHOR/Harvey e Paul Deitel

Fig. 7 de resultado de uma consulta em tuProlog.

4.2.1 AVALIAÇÃO DA CONSULTA

Dada uma consulta XPath como a da Fig. 3, é feito primeiramente uma quebra da consulta com relação ao caractere “|” a fim de verificar a existência de ramos alternativos de busca. Dessa forma, após a “quebra” da consulta mostrada na Fig. 3 teremos as frações /catalog/item/title e /catalog/item/author. A partir destas frações, é feita uma busca pela última ocorrência do caractere “/” para ambas as frações. Sabendo a posição da última ocorrência do caractere “/” é possível extrair o elemento alvo da consulta, já que consultas XPath sempre retornam o último ”passo” do caminho. Contudo, como juntamente ao elemento alvo da consulta podem existir caracteres que definem filtros, seleção de atributo e etc., é feito uma última análise para desconsiderar tais caracteres. Esse é o procedimento Identificação dos elementos de retorno da consulta descrito na Seção 3.

Já tomando como entrada uma consulta Prolog como a da Fig. 4(a) é feita uma busca pelo caractere “(”. A partir desse ponto, todo conteúdo contido entre este caractere e o caractere “)” são avaliados. Através das posições desses caracteres é separada a string compreendida entre essa posições. Nessa string é realizada uma operação de “quebra” das substrings separadas pelo caractere “,”. Para cada elemento retornado pela operação de “quebra” é feito uma análise a fim de verificar casos de aninhamento. Caso isso ocorra, o procedimento descrito deve ser executado de forma recursiva.

(7)

Deve-se atentar para o fato que dependendo da consulta que estamos avaliando, Prolog ou XPath, a extração é feita de forma apropriada. Para cada uma das formas que são feitas as extrações deve-se levar em consideração as suas “características”. Quando estamos avaliando a consulta Prolog, por exemplo, a cláusula findall deve ser identificada e descartada para não ser classificada como elemento erroneamente. Outro problema freqüente na avaliação das consultas em Prolog é o aninhamento das consultas.

4.2.2 AVALIAÇÃO DO RESULTADO

Essa avaliação é independente se estamos nos baseando em uma consulta Prolog ou uma consulta XPath. A partir do resultado da consulta tuProlog são feitas extrações das variáveis, que são usadas para posteriormente formar a estrutura XML. Vamos tomar o resultado da Fig. 7 como exemplo. Para cada linha do resultado gerado pelo tuProlog é realizada uma busca pelo conjunto “variável/valor”. Para cada conjunto encontrado é feita uma operação de “quebra”. Os valores retornados por essa operação são armazenados em listas diferentes e associados a partir dos seus índices. Esse é o procedimento Extração dos elementos XML descrito na seção 3. Sendo assim, através do resultado mostrado na Fig. 7 seriam extraídas as variáveis TITLE, PUBLISHER, PAGES e AUTHOR e seus respectivos valores.

5. TRABALHOS RELACIONADOS

Em 2006, Almendros-Jiménez et al. [2006] propôs um trabalho para conversão de documentos XML em fatos e o esquema em regras, como também uma abordagem para tradução de consultas XPath para linguagem de programação lógica. O autor apresenta uma abordagem chamada Magic sets que corresponde a um conjunto de transformações para que consultas XPath possam ser executadas em uma base de fatos e regras.

Em seguida, Almendros-Jiménez et al. [2007a] propôs um outro trabalho que apresenta uma abordagem para implementar a linguagem de consulta XPath em linguagem de programação lógica. Além da abordagem para a realização de consultas, os autores apresentam o modo como geram a base de fatos e regras para executar as consultas e como criar índices de documentos XML em programação lógica.

Utilizando a linguagem de consulta XQuery, Almendros-Jiménez et al. [2007b] propôs uma integração com a linguagem de programação lógica. Neste trabalho, é apresentada a técnica utilizada para converter consultas XQuery que utilizam for-let-where em expressões de linguagem de programação lógica.

As abordagens apresentadas acima propõem técnicas interessantes para a utilização de máquina de inferência para a consulta em documentos XML. Entretanto, esses trabalhos não apresentam a eficiência dos seus métodos através da obtenção dos tempos de execução das consultas no ambiente XML e no ambiente Prolog. Acreditamos que os tempos de execução das consultas nessas abordagens não sejam tão eficientes quanto os obtidos por Lima [2012], já que eles utilizam manipulação de listas Prolog.

Com relação ao processo de conversão de Prolog para XML, Jan Wielemaker et al. [2012] propuseram uma ferramenta chamada SWI Prolog. SWI Prolog é um ambiente amplamente usado na esfera acadêmica e comercial e possui bibliotecas que fornecem inúmeras maneiras de se trabalhar com Prolog. Através de uma dessas bibliotecas disponibilizadas, é possível instanciar um parser XML para analisar e alterar um documento XML qualquer. Ao fazermos testes com tais bibliotecas no ambiente interativo do SWI Prolog, conseguimos fazer a conversão de listas Prolog para documentos XML. Contudo, para se alcançar tal objetivo, os métodos fornecidos pela biblioteca XML do SWI

(8)

Prolog esperam como entrada uma lista Prolog em um formato muito específico, o que gera a necessidade de um pré-processamento para utilizá-los.

6. CONCLUSÃO

Este artigo descreve uma abordagem para a tradução de consultas realizadas na linguagem de consulta XPath para Prolog e de resultados Prolog para documentos XML. As abordagens visam adicionar transparência ao processamento de consultas, quando se utiliza a linguagem de inferência Prolog para consultar bases XML.

A abordagem proposta para a tradução das consultas XPath apresenta algumas limitações, como a falta de suporte para alguns tipos de recursões como /pessoa//nome, para funções XPath (postion(), avg(), etc), e não aceita filtros múltiplos na consulta. Por exemplo, a consulta XPath //pessoa[position() mod 2]/filho[nome = ‘João’] não é traduzida para uma consulta equivalente em Prolog. Essas limitações serão tratadas em trabalhos futuros.

No futuro, pretendemos trabalhar também com linguagem de consulta XQuery e fazer com que a conversão de Prolog para XML converta os resultados gerados por diferentes máquinas de inferência. Pretendemos também, elaborar um plano de experimentos e executar os mesmos a fim de obter o desempenho das consultas geradas pelo nosso tradutor. Além disso, pretendemos realizar uma avaliação para gerar heurísticas que ajudem a decidir quando vale a pena traduzir a consulta para Prolog, aplicando a abordagem proposta neste trabalho, e quando vale a pena executar a consulta original em XPath/XQuery, de forma a utilizar sempre a abordagem que acarretará em melhor desempenho.

Agradecimentos. Os autores agradecem ao CNPq e FAPERJ pelo financiamento parcial deste

trabalho. REFERÊNCIAS

ALMENDROS-JIMÉNEZ, J., BECERRA-TERÓN, A., ENCISO-BANOS, F. Magic Sets for the XPath Language. Journal of Universal Computer

Science 12(11): 1651–1678, 2006.

ALMENDROS-JIMÉNEZ, J., BECERRA-TERÓN, A., ENCISO-BANOS, F. Querying XML Documents in Logic Programming. The Computing

Research Repository (CoRR) abs/0710.4780, 2007a.

ALMENDROS-JIMÉNEZ, J., BECERRA-TERÓN, A., ENCISO-BANOS, F. Integrating XQuery and Logic Programming. In Applications of

Declarative Programming and Knowledge Management, Springer-Verlag Berlin, Heidelberg, pp. 117–135, 2007b.

ALMENDROS-JIMÉNEZ, J. M., BECERRA-TERÓN, A., ENCISO-BANOS, F. J. Querying XML documents in Logic Programming. Journal of

Theory and Practice of Logic Programming 8(03): 323–361, 2008.

BOAG, S., CHAMBERLIN, D., FERNANDEZ, M. F., FLORESCU, D., ROBIE, J., SIMÉON, J. XQuery 1.0: An XML Query Language., 2010. CERI, S., GOTTLOB, G., TANCA, L. Logic programming and databases. Berlin: Springer-Verlag, 1990.

CLARK, J., DEROSE, S. XML Path Language (XPath) Version 1.0., 1999.

JAN WIELEMAKER, TORBJORN LAGER, TOM SCHRIJVERS, MARKUS TRISKA. SWI-Prolog. Theory and Practice of Logic Programming

12(1-2): 67–96, 2012.

LIMA, D. XMLInference: agregando inferência à consultas a dados XML. Dissertação de Mestrado em Informática, Universidade Federal do Rio de Janeiro, Rio de Janeiro, Brasil, 2012.

LIMA, D., DELGADO, C., MURTA, L., BRAGANHOLO, V. Towards querying implicit knowledge in XML documents. Journal of Information and Data Management 3(1): 51–60, 2012.

Referências

Documentos relacionados

Num estudo clínico realizado em doentes com diabetes tipo 2 e nefropatia, a incidência de hipercaliémia foi superior no grupo tratado com Cozaar em comparação com o grupo do

Hoje o gasto com a saúde equivale a aproximada- mente 8% do Produto Interno Bruto (PIB), sendo que, dessa porcentagem, o setor privado gasta mais que o setor público (Portal

A participação foi observada durante todas as fases do roadmap (Alinhamento, Prova de Conceito, Piloto e Expansão), promovendo a utilização do sistema implementado e a

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

No sentido de reverter tal situação, a realização deste trabalho elaborado na disciplina de Prática enquanto Componente Curricular V (PeCC V), buscou proporcionar as

Capítulo 7 – Novas contribuições para o conhecimento da composição química e atividade biológica de infusões, extratos e quassinóides obtidos de Picrolemma sprucei

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças