Mapeamento de Bancos de Dados para Domínios - INF

Propaganda
U NIVERSIDADE F EDERAL DE G OIÁS
I NSTITUTO DE I NFORMÁTICA
JÁDERSON A RAÚJO G ONÇALVES DA C RUZ
Mapeamento de Bancos de Dados para
Domínios Semânticos
Goiânia
2015
JÁDERSON A RAÚJO G ONÇALVES DA C RUZ
Mapeamento de Bancos de Dados para
Domínios Semânticos
Dissertação apresentada ao Programa de Pós–Graduação do
Instituto de Informática da Universidade Federal de Goiás,
como requisito parcial para obtenção do título de Mestre em
Ciências da Computação.
Ciências da
Área de concentração: Sistemas
de Computação
Informação.
Orientador: Prof. Cedric Luiz de Carvalho
Goiânia
2015
Ficha catalográfica elaborada automaticamente
com os dados fornecidos pelo(a) autor(a), sob orientação do Sibi/UFG.
Araújo Gonçalves da Cruz, Jáderson
Mapeamento de Bancos de Dados para Domínios Semânticos
[manuscrito] / Jáderson Araújo Gonçalves da Cruz. - 2015.
XVII, 126 f.
Orientador: Prof. Dr. Cedric Luiz de Carvalho.
Dissertação (Mestrado) - Universidade Federal de Goiás, Instituto de
Informática (INF) , Programa de Pós-Graduação em Ciência da
Computação, Goiânia, 2015.
Inclui algoritmos, lista de figuras, lista de tabelas.
1. Repositório Semântico. 2. Dado Aberto Ligado. 3. Mapeamento
Semântico. I. Luiz de Carvalho, Cedric, orient. II. Título.
Todos os direitos reservados. É proibida a reprodução total ou parcial do
trabalho sem autorização da universidade, do autor e do orientador(a).
Jáderson Araújo Gonçalves da Cruz
Graduou–se em Engenharia de Computação na UFG - Universidade Federal
de Goiás. Durante sua graduação, atuou com pesquisa em aplicações baseadas
em localização no Instituto de Informática da UFG. Nos últimos dois anos
atuou num projeto de melhoramento da qualidade do leite, em parceria com
a FAPEG e com o LQL - Laboratório da Qualidade do Leite; desde o ano
de 2014 atua no projeto de visão computacional AFAD em parceria com
a FINEP/FAPEG. Atualmente é coordenador de desenvolvimento em uma
empresa especializada em integração de dados e aplicações de Big Data e
Business Intelligence
Dedico este trabalho primeiramente a Deus.
Aos meus pais, João e Maria, por terem sempre me apoiado na minha busca pelo
conhecimento, mesmo nos momentos mais difíceis.
Agradecimentos
A realização deste trabalho em muito se deve à colaboração e apoio de diversas
pessoas, às quais transmito meus mais singelos agradecimentos:
Ao professor Cedric L. de Carvalho, pela orientação, conselhos, sugestões,
atenção e críticas construtivas.
Ao meu ex-chefe Thiago Borges de Oliveira, hoje professor da UFG no Campus
Jataí, pelos valiosos conselhos e orientações.
Aos colegas do mestrado e professores, que considero, pessoas extraordinárias e
do qual tenho orgulho de ter conhecido.
Aos aos meus familiares, pelo apoio em todos os sentidos. Sem eles, eu não teria
conseguido chegar até aqui.
À todos os amigos que colaboraram de alguma forma para a concretização deste
trabalho, seja por sua amizade e paciência ou simplesmente por aguentarem o meu mal
humor durante esse período tão complicado da minha vida.
Dê-me uma alavanca e um ponto de apoio e levantarei o mundo
Arquimedes de Siracusa,
Exclamação realizada por Arquimedes segundo Pappus de Alexandria.
Resumo
da Cruz, Jáderson A. G.. Mapeamento de Bancos de Dados para Domínios
Semânticos. Goiânia, 2015. 124p. Dissertação de Mestrado. Instituto de Informática, Universidade Federal de Goiás.
Este trabalho apresenta uma proposta de mapeamento de bancos de dados para um domínio semântico. Esse processo consiste em mapear um conjunto de banco de dados,
relacional ou NoSQL, para uma ontologia preexistente e definida pelo usuário. Subsequentemente os elementos desses bancos de dados são ligados a repositórios semânticos,
a fim de produzir uma representação em formato de dado aberto ligado.
Palavras–chave
Repositório Semântico, Dado Aberto Ligado, Mapeamento Semântico.
Abstract
da Cruz, Jáderson A. G.. Database Mapping for Semantic Domains. Goiânia,
2015. 124p. MSc. Dissertation. Instituto de Informática, Universidade Federal
de Goiás.
This paper proposes a database mapping to a semantic domain. This process consists of
mapping a set of database, relational or NoSQL, for a pre-existing user-defined ontology.
Subsequently the elements of these databases are linked to semantic repositories in order
to produce a representation as linked open data.
Keywords
Semantic Repository, Open Linked Data, Semantic Mapping.
Sumário
Lista de Figuras
13
Lista de Tabelas
14
Lista de Códigos de Programas
15
1
16
17
19
19
20
Introdução
1.1
1.2
1.3
1.4
2
Motivação
Objetivo
Metodologia
Organização da Dissertação
Fundamentos Teóricos
2.1
2.2
2.3
Modelos de Bancos de Dados
2.1.1
Bancos de Dados Relacionais
2.1.2
Bancos de Dados Orientados a Objetos
2.1.3
Bancos de Dados Chave-Valor
2.1.4
Bancos de Dados Orientados a Colunas
2.1.5
Bancos de Dados de Documentos
2.1.6
Bancos de Dados Orientados a Grafos
Web Semântica
2.2.1
Unicode e Uniform Resource Identifiers (URIs)
2.2.2
Extensible Mark-up Language (XML)
2.2.3
Resource Description Framework (RDF)
2.2.4
Resource Description Framework Schema (RDFS)
2.2.5
Web Ontology Language (OWL)
2.2.6
Lógica, Prova e Validação
Dados Abertos
2.3.1
2.3.2
Dados Abertos Científicos
Dados Abertos Governamentais
Princípios dos Dados Abertos Governamentais
Leis dos Dados Abertos Governamentais
Dados Abertos no Mundo
Dados Abertos no Brasil
2.3.3
2.4
Dados Abertos Ligados
Sobre o Capítulo
22
22
23
23
24
25
26
27
28
29
29
29
29
30
30
30
31
31
31
32
32
33
34
36
3
Bases de Conhecimento e suas Ontologias
3.1
3.2
3.3
3.4
3.5
3.6
3.7
4
3.1.1
Ontologia DBPedia
3.1.2
Acessando a DBPedia
GeoNames
3.2.1
Ontologia GeoNames
3.2.2
Acessando o GeoNames
WordNet
3.3.1
Ontologia WordNet
3.3.2
Acessando o WordNet
YAGO2
3.4.1
Ontologia YAGO2
3.4.2
Acessando o YAGO2
Freebase
3.5.1
Ontologia Freebase
3.5.2
Acessando o Freebase
Interligando Dados Abertos
Sobre o Capítulo
Trabalhos Relacionados
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
5
DBPedia
Morph RDB
RDOTE
RDB2OWL
MARSON
RONTO
AuReLi
StdTrip
MASTRO
Resumo dos Sistemas Analisados
Sobre o Capítulo
Solução Proposta
5.1
5.2
Mapeamento Semântico de Banco de Dados
Etapas da Solução
5.2.1
Mapeando entre Bancos de Dados e Ontologia
Classificação Sintática
Definindo Candidatos
Filtrando Candidatos
5.2.2
Mapeamento para Repositórios Semânticos
Categorizando o Acesso a Repositórios Semânticos
Analisando Agrupadores Primários
Lematização
Associando Categorias com Agrupadores Primários
Analisando Agrupadores Secundários
5.2.3
5.3
Gerando Formatos Abertos de Mapeamento de Dados
Sobre o Capítulo
37
39
40
40
41
41
42
42
43
43
43
44
44
45
45
46
46
48
49
49
50
51
52
52
53
53
54
55
56
57
58
59
59
60
60
61
64
65
68
68
68
69
70
71
6
Projeto do Sistema de Mapeamento de Banco de Dados
6.1
6.2
6.3
Atores
Requisitos da Aplicação
6.2.1
Requisitos Funcionais
6.2.2
Requisitos Não Funcionais
Modelagem, Arquitetura e Arquivo de Resultado
6.3.1
Arquitetura
Interface
Motor de Execução
Analisador Léxico/Sintático
Extrator
Cliente SPARQL
6.4
6.5
7
6.3.2
Arquivo de Resultado
6.3.3
Modelagem
Desenvolvimento da Aplicação
6.4.1
Tecnologias Empregadas
6.4.2
Bases de Dados Linguísticas
6.4.3
Categorias Utilizadas
6.4.4
Exemplo de Utilização
Sobre o Capítulo
Análise de Resultados
7.1
7.2
7.3
7.4
Resultados da Aplicação - Agrupadores Primários
7.1.1
Experimento 1
7.1.2
Experimento 2
7.1.3
Experimento 3
Resultados da Aplicação - Agrupadores Secundários
7.2.1
Experimento 1
7.2.2
Experimento 2
7.2.3
Experimento 3
Resultados da Aplicação - Associação Semântica
Sobre o Capítulo
72
73
73
73
75
76
77
77
77
78
79
80
82
83
85
86
86
88
90
96
97
97
98
99
100
101
101
102
103
104
105
Contribuições
Trabalhos Futuros
106
107
107
Referências Bibliográficas
109
A
116
117
117
8
Conclusão e Trabalhos Futuros
8.1
8.2
Bancos de Dados Relacionais e NoSQL
A.1
A.2
B
O Modelo Relacional - ACID
O Modelo NoSQL - BASE
Ontologias
B.1
Elementos Básicos
B.1.1
Classe
B.1.2
Indivíduos ou Instâncias
B.1.3
Propriedades ou Relações
118
118
118
118
119
C Ferramentas Utilizadas
C.1
C.2
C.3
Apache Jena
JAWS
GTranslate
D Modelo de Dados
D.1
D.2
D.3
Tabelas Utilizadas pelo Cliente SPARQL
Tabelas Utilizadas pelo Extrator
Tabelas Utilizadas pelo Analisador Léxico/Sintático
120
120
121
121
122
122
123
123
Lista de Figuras
1.1
Diagrama de Fluxo do Projeto
20
2.1
2.2
2.3
2.4
2.5
2.6
2.7
Um exemplo de bancos de dados relacional
Um exemplo de bancos de dados orientado a objetos
Um exemplo de bancos de dados do tipo chave valor
Um exemplo de bancos de dados orientado a colunas
Um exemplo de bancos de dados de documentos
Um exemplo de bancos de dados do tipo grafos
Arquitetura da Web Semântica
23
24
25
25
26
27
28
3.1
3.2
Linguagens Utilizadas na Web
Modelo Adaptado de Integração de Dados de Beners-Lee
37
39
4.1
Esquema de Mapeamento do RD2OWL[22]
51
5.2
5.3
5.4
5.5
5.6
5.7
58
58
58
Tabelas x Colunas
62
Processo de Associação do Banco de Dados com Ontologia de Referência 62
Tabela x Colunas
63
Complementação de Colunas
64
Complementação de Linhas
65
Modelo de Acesso de Dados por Ontologia
70
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
6.10
6.11
6.12
6.13
6.14
Casos de Uso do Sistema
Arquitetura Proposta
Analisador Léxico/Sintático
Módulo Extrator
Módulo Cliente SPARQL
Exemplo de Resultado da Aplicação
Mapeando Bancos de Dados e Ontologia
Vinculando Categoria a um Domínio
Vinculando Categoria a um Domínio
Exemplo de dicionário do pacote de francês
Exemplo de regras do pacote de inglês
Nuvem de Dados Abertos Ligados, Abril de 2014[32]
Ontologia de Exemplo
Adicionando um Banco de Exemplo
5.1
Mapeamento Semântico de Banco de Dados
(a)
(b)
Tabelas para Nodos
Banco de Dados Mapeado
74
77
78
80
81
82
84
84
85
87
87
88
90
92
Lista de Tabelas
2.1
2.2
2.3
2.4
2.5
2.6
As 5 estrelas do modelo Gov 2.0
Custos e benefícios do modelo de ? dados web
Custos e benefícios do modelo de ? ? dados web
Custos e benefícios do modelo de ? ? ? dados web
Custos e benefícios do modelo de ? ? ? ? dados web
Custos e benefícios do modelo de ? ? ? ? ? dados web
34
35
35
35
35
35
3.1
3.2
3.3
Exemplo de Relações Léxicas na WordNet
Ligações da DBPedia para outros repositórios[51]
Os 10 repositórios com mais ligações para a DBPedia[51]
43
47
48
4.1
Resumo Trabalhos Relacionados
55
5.1
5.2
Modos de agrupamento de dados por paradigma de banco de dados
Relação entre synsets da ontologia com synsets do banco de dados
60
61
6.1
6.2
Categorias Extrator
Categorias Cliente SPARQL
89
91
7.1
7.2
Banco de Dados x Ontologias
Entrada e Saída Agrupador Primário - Experimento 1
(a)
(b)
7.3
Entrada e Saída Agrupador Primário - Experimento 2
(a)
(b)
7.4
Entradas
Saídas
Entrada/Saída Agrupador Secundário - Experimento 3
(a)
(b)
7.8
Entradas
Saídas
Entrada/Saída Agrupador Secundário - Experimento 2
(a)
(b)
7.7
Entradas
Saídas
Entrada/Saída Agrupador Secundário - Experimento 1
(a)
(b)
7.6
Entradas
Saídas
Entrada e Saída Agrupador Primário - Experimento 3
(a)
(b)
7.5
Entradas
Saídas
Entradas
Saídas
Categorias X Experimentos
98
98
98
98
99
99
99
100
100
100
101
101
101
102
102
102
103
103
103
104
Lista de Códigos de Programas
5.1
5.2
6.1
6.2
6.3
6.4
D.1
D.2
D.3
Consulta SPARQL a DBPedia
Consulta SPARQL a Dailymed
Exemplo de Consulta SPARQL
Tabela Verbetes
Individual x Colunas
SQL Individual x Colunas
Tabela de Categorias por SPARQL Endpoint
Tabela de Categorias por Extrator
Tabela de palavras traduzidas por idioma
66
67
81
88
94
95
122
123
124
CAPÍTULO 1
Introdução
O surgimento da World WideWeb mudou a forma como os negócios são conduzidos, como as pessoas interagem entre si, e como o conhecimento é disseminado. Muitas
são as ferramentas que utilizam a Web em seu formato atual, estando essas ferramentas
sujeitas às limitações dessa.
Dentre as limitações mais conhecidas da web atual cita-se sua baixa precisão nas
buscas, seus resultados são muito dependentes do vocabulário utilizado, as informações
são localizadas e não recuperadas, suas principais ferramentas para busca de informação
são inteiramente voltadas para a interação humana, não sendo legíveis para outras ferramentas de software.
É possível dividir a web em algumas fases, sendo a primeira fase representada
por uma web de conteúdo sintático (Web 1.0 ou Web Sintática). Nessa primeira versão da
web os documentos eram indexados, endereçados e acessados de qualquer computador
a partir de um navegador. Existia nesse momento uma certa divisão entre aqueles que
produziam os documentos disponibilizados e aqueles que os liam. Esse modelo foi o
proposto por Tim Berners-Lee[9].
Em um segundo momento, a web evoluiu para um modelo onde surgiram
aplicações dentro dessa. Nesse novo modelo, os usuários da web passaram a interagir
e a atuarem tanto como produtores quanto consumidores de conteúdo. Esse modelo de
web, também conhecido como Web 2.0, ou mesmo Web Social, é o modelo predominante
nos dias atuais.
Dentre as várias possibilidades que vêm surgindo com a evolução da web,
uma delas possui um importante destaque. Promovida pelo idealizador da web, Tim
Berners-Lee e pelo W3C Consortium, a Web Semântica ou Web 3.0, propõem um
modelo onde a web não seja legível somente para os seres humanos, mas também para
os computadores. Nesse modelo, a informação é disponibilizada de forma estruturada,
padronizada, interligada e em formato não proprietário (Dados Abertos Ligados ou Dados
Abertos Conectados[58]).
Ao longo dos últimos anos, um número crescente de provedores de dados
começaram a adotar os princípios dos Dados Abertos Conectados, levando à criação de
1.1 Motivação
17
um espaço global de dados contendo bilhões de afirmações sobre localizações geográficas,
pessoas, empresas, livros, publicações científicas, filmes, músicas, programas de rádio e
televisão, genes, proteínas, medicamentos e ensaios clínicos, comunidades online, dados
estatísticos, os resultados do censo, entre outros[14].
Dentre as fontes para a geração de dados abertos, merece destaque a geração
de dados abertos a partir de bancos de dados. A maior parte dos dados que sustentam
a Web e em domínios como as ciências naturais, gerenciamento de dados espaciais são
armazenados em bancos de dados relacionais, por seu histórico comprovado de escalabilidade, armazenamento eficiente, execução de consultas otimizadas e confiabilidade[68].
Nos últimos anos, entretanto, vem aumentando a demanda pelo uso de bancos de dados
não relacionais, ou NoSQL[55], em domínios específicos.
A capacidade de mapear bancos de dados, seja relacional ou NoSQL, para um
formato de dados abertos que favoreça a integração e leitura por máquina, é um dos
passos a serem dados para a evolução da web. Este trabalho, apresenta algumas técnicas
de mapeamento de banco de dados, assim como propõe uma nova técnica de mapeamento
que permita uma análise semântica na formulação de consultas à base de dados sendo
mapeada.
1.1
Motivação
A web em seus dias atuais, vivencia um momento de transição. Neste momento, a
web possui a maior parte de seu conteúdo voltado à compreensão de informações por parte
dos seres humanos. Entretanto, a nova geração da web busca a criação de um ambiente de
conteúdo compreensível não somente pelo ser humano, mas também por computadores.
O novo modelo da web, conhecido por Web Semântica, favorece principalmente
a modificação da forma como os dados são estruturados. O principal objetivo desse novo
modelo da web é permitir uma melhor interpretação dos recursos da web por parte dos
computadores, e consequentemente o aumento do poder de resposta computacional sobre
a massa de dados crescente encontrada na web.
A Web Semântica pode ser vista como uma extensão da web atual, onde a consolidação desse novo paradigma depende não somente da disponibilização dos novos dados
segundo suas especificações, mas também de formas de inserir nesse os dados existentes
modelados sobre o paradigma atual. Dessa forma, torna-se importante o desenvolvimento
de sistemas capazes de realizarem a análise dos dados modelados sobre esse paradigma e
convertê-lo para o paradigma da Web Semântica.
Dentre as várias fontes de dados utilizadas na web, os bancos de dados são algumas das mais importantes existentes. Bancos de dados são utilizados por praticamente
todos os domínios e aplicações encontrados na web, sendo que seus dados de interesse
1.1 Motivação
18
são disponibilizados, principalmente, na forma de tabelas e gráficos voltados à visualização por parte dos usuários. Além disso, os formatos apresentados muitas vezes possuem
características que inviabilizam sua leitura por máquinas, tomando como exemplo formatos como o PDF1 . Logo, a integração dos bancos de dados no modelo da Web Semântica,
mostra-se como uma tarefa de grande importância para o desenvolvimento contínuo desse
novo paradigma da web.
Bancos de dados relacionais possuem uma estrutura sintática mínima, onde o
conteúdo é armazenado em uma divisão pré-definida de estrutura de entidades e relacionamento entre essas, assim como definição de tipos específicos para as propriedades
dessas entidades. Mesmo possuindo essa estrutura mínima, esses bancos de dados não
apresentam a semântica de seus dados e relacionamentos entre esses de modo explícito,
de tal forma que a semântica de tratamento desses dados é detida pelos especialistas responsáveis pela manutenção dos bancos de dados em questão.
Outro aspecto sobre a Web Semântica é a relação explícita existente entre os
dados, de forma que as informações de um domínio possam ser utilizadas por outros
domínios a fim de produzir resultados mais significativos. Uma informação sobre a
evolução do nível de renda da população brasileira por região do país, contida em um
banco de dados do ministério do desenvolvimento, poderia ser enriquecida através da
integração desses dados com estatísticas encontradas em bancos de dados de outros
ministérios, de secretarias estaduais e municipais, entidades paraestatais ou instituições
privadas sobre educação, saneamento, preferências políticas, entre outros.
Este trabalho busca o desenvolvimento de técnicas para a integração de sistemas
de bancos de dados ao novo paradigma, trazido pela Web Semântica, assim como desenvolver uma ferramenta que compatibilize esses sistemas permitindo assim a coexistência
entre esses modelos, até o dia que a web esteja pronta para desenvolver-se unicamente
sobre o paradigma semântico.
Em resumo, as motivações para este trabalho consistem nos seguintes tópicos:
• Apresentar técnicas para viabilizar o processo de mapeamento de bancos de dados,
de modo que os dados dessas fontes de dados até então isoladas possam ser vistos
de forma integrada, segundo um modelo definido numa ontologia.
• Permitir que a informação proveniente dessas fontes de dados mapeadas referenciem outros domínios, permitindo o enriquecimento dos dados desses bancos de
dados.
1 Portable
Document Format[45]
1.2 Objetivo
1.2
19
Objetivo
Segundo o Dicionário Oxford do Inglês, podemos definir mapeamento da seguinte forma: uma operação que associa a cada elemento de um dado conjunto (domínio)
um ou mais elementos de um segundo conjunto (o contradomínio)[75].
O principal objetivo deste trabalho é definir um método para o mapeamento
automático, entre bancos de dados, relacionais e NoSQL, e uma ontologia que possuam
domínios correlacionados. Esta proposta tem como objetivo facilitar o desenvolvimento
da Web Semântica.
Um foco adicional deste trabalho é de disponibilizar o mapeamento entre os
bancos de dados e a ontologia de referência em formato de Dado Aberto Conectado. Essa
representação utiliza padrões preestabelecidos e formalizados pelas entidades competentes.
A ideia por trás desse projeto é construir um mecanismo para a disponibilização
dos dados provenientes de bancos de dados, utilizando como referência a ontologia. Dessa
forma, um usuário pode acessar os dados dessas bases, mesmo sem conhecer os detalhes
dessas bases de dados.
O usuário apenas conhece o domínio tratado pela base de dados, e define suas
intenções sobre essa base de dados requisitando informações através da ontologia para o
qual deseja-se mapear a informação.
Para atingir esses objetivos principais, pretende-se atingir os seguintes objetivos
específicos, convergentes com esses objetivos principais :
1. Apresentar uma visão geral sobre Bancos de Dados e Web Semântica, descrevendo
resumidamente as principais tecnologias e conceitos presentes nessas áreas, assim
como suas atuais limitações.
2. Realizar um estudo do estado da arte das técnicas utilizadas até então para mapear
bancos de dados para ontologias, assim como aplicações para essas técnicas em
ambientes reais.
3. Disponibilizar a informação proveniente dos Bancos de Dados analisados em
formato aberto e conectado a outros elementos da Web Semântica.
4. Projetar uma ferramenta que permita demonstrar o mecanismo de mapeamento definido nesse trabalho, sendo aplicado em situações reais, assim como seu mecanismo
de integração com repositórios semânticos diversos.
1.3
Metodologia
A realização dessa pesquisa foi dividida em etapas, como pode ser observado na
Figura 1.1.
1.4 Organização da Dissertação
20
Figura 1.1: Diagrama de Fluxo do Projeto
1. Estudo Teórico. Nesta etapa, foram realizadas as pesquisas bibliográficas necessárias para a definição do método aqui proposto. Dentre os temas pesquisados, citamse os paradigmas de bancos de dados e a teoria fundamental da Web Semântica.
2. Levantamento do Estado da Arte e Trabalhos Correlacionados. Nesta etapa,
foram estudados os trabalhos publicados relacionados com o tema de mapeamento
de banco de dados para modelos semânticos.
3. Projeto de Software. Foi efetuado um levantamento de requisitos e definição de
uma arquitetura para uma ferramenta responsável por aplicar o modelo proposto
neste trabalho.
4. Desenvolvimento do Projeto. Foi feita a implementação da aplicação de mapeamento de banco de dados, tanto para bancos relacionais como não relacionais.
5. Documentação. Essa etapa consiste na descrição sistemática de todas as etapas,
tem como produto esta dissertação.
1.4
Organização da Dissertação
O presente trabalho, além deste Capítulo 1, está dividido em 8 capítulos e
organizado como descrito a seguir.
No Capítulo 2, são introduzidos os fundamentos teóricos utilizados ao longo
desse trabalho, sendo apresentado um estudo sobre os principais modelos de banco de
1.4 Organização da Dissertação
21
dados utilizados atualmente. Em seguida, é realizado um estudo sobre a Web Semântica,
seus conceitos, assim como as principais ferramentas utilizadas por essa. Também são
abordados os conceitos de Dados Abertos e sua importância dentro da Web Semântica.
No Capítulo 3, é realizado um estudo sobre as possíveis bases de conhecimento
semânticas, com foco na ontologia que as definem e que podem ser utilizadas nesse
projeto.
No Capítulo 4, são apresentados alguns trabalhos relacionados ao tema dessa
dissertação.
No Capítulo 5, é apresentada a solução proposta nesse trabalho num contexto de
alto nível, onde define-se a proposta para realizar o mapeamento de bancos de dados em
contexto semântico.
No Capítulo 6, é realizada uma explicação sobre o projeto implementado. Nesse
capítulo, são descritos os principais atores, requisitos funcionais, requisitos não funcionais
que serviram de base para o projeto do sistema. Uma arquitetura do projeto é descrita, bem
como uma explicação sobre cada um dos componentes do projeto.
O Capítulo 7 apresenta os resultados obtidos em algumas simulações do sistema,
sendo executado sobre bases de dados reais. Nesse capítulo, são apresentadas as principais
vantagens com relação ao sistema, assim como é realizada uma análise de suas principais
deficiências.
Finalmente, o Capítulo 8 apresenta considerações finais do trabalho, onde são
enumeradas as contribuições esperadas desse sistema e possíveis trabalhos futuros.
CAPÍTULO 2
Fundamentos Teóricos
O ponto de partida para desenvolver uma pesquisa visando o mapeamento entre
bancos de dados e ontologias por anotações semânticas é a compreensão de determinados
temas considerados fundamentais para essa pesquisa. Dessa forma, torna-se possível
propor novas técnicas, de propósito geral, para realizar o processo de mapeamento
proposto neste trabalho.
Nesse capítulo, são apresentados alguns dos conceitos fundamentais necessários
para o desenvolvimento dessa pesquisa. Inicialmente, na Seção 2.1, são apresentados os
principais paradigmas de bancos de dados utilizados nos Capítulos 4, 5 e 6.
Em seguida, na Seção 2.2, são apresentadas explicações mais detalhadas da Web
Semântica, assim como das principais tecnologias relacionadas a ela. A compreensão
desse tópico é necessária tanto para o entendimento do Capítulo 3, quanto para desenvolver as integrações entre os bancos de dados e os repositórios semânticos, processo
descrito na Seção 6.3.1.
Ao final do capítulo, são apresentados os conceitos relacionados a Dados Abertos
Ligados. Esse paradigma corresponde a um dos objetivos desse trabalho, onde os dados
das bases mapeadas são disponibilizados segundo o modelo utilizado na ontologia de
referência seguindo as recomendações desse paradigma.
2.1
Modelos de Bancos de Dados
Existem diferentes paradigmas que definem a forma como os dados são armazenados ou recuperados. Pensando em um sistema capaz de realizar a engenharia reversa
de uma base de dados genérica, os diferentes modelos de bancos de dados devem ser
considerados. Um dos objetivos desse projeto, é criar um mecanismo de tratamento genérico para as diferentes formas de representar os dados. Isso pode ser alcançado através da
utilização das bases de dados num formato intermediário.
A maior parte dos trabalhos de mapeamento de bancos de dados para ontologias,
apresentados em detalhes no Capítulo 4, preocupam-se apenas no tratamento de bancos
2.1 Modelos de Bancos de Dados
23
de dados relacionais. Os bancos de dados NoSQL, apesar de sua crescente utilização, são
ignorados.
Nas seções seguintes, serão apresentadas definições para os principais modelos
de banco de dados. Considera-se tanto os bancos de dados relacionais quanto os bancos
NoSQL. O Apêndice A contém uma explicação mais detalhada sobre as diferenças dos
bancos de dados relacionais e NoSQL.
2.1.1
Bancos de Dados Relacionais
O modelo relacional para gerenciamento de banco de dados é um modelo
matemático para descrever a estrutura de dados. É um modelo de bancos de dados com
base na lógica de predicados de primeira ordem, formulada pela primeira vez e proposto
em 1969 por Edgar F. Codd.[30]. Em um Banco de Dados Relacional, todos os dados são
representados em termos de tuplas, agrupados em relações. Uma base de dados organizada
em termos de modelo relacional é um banco de dados relacional.
Figura 2.1: Um exemplo de bancos de dados relacional
Como pode ser observado na Figura 2.1, tomando uma descrição informal usase termos como tabelas, linhas e colunas para representar os conceitos de relações, tuplas
e atributos, respectivamente.
As tuplas ou linhas de uma tabela ou relação são identificadas através de atributos
chamados de chave primária. Da mesma forma, essas tabelas de bancos de dados podem
relacionar-se entre si, por meio de elementos de ligação chamadas chaves estrangeiras.
2.1.2
Bancos de Dados Orientados a Objetos
Um banco de dados orientado a objeto é um banco em que cada informação é
armazenada na forma de objetos, e só pode ser manipulado através de métodos definidos
pela classe em que esteja o objeto[48]. Pode ser visto como a junção entre o paradigma
de orientação a objetos, presente nas linguagens de programação moderna, e a teoria de
banco de dados relacionais.
2.1 Modelos de Bancos de Dados
24
Figura 2.2: Um exemplo de bancos de dados orientado a objetos
Através do paradigma orientado a objetos estende-se a lógica de relacionamento
entre as tabelas, permitindo a utilização de conceitos como a herança entre entidades,
recurso muito presente nas linguagens orientadas a objetos, como pode ser observado
na Figura 2.2. Observa-se que tanto a tabela Física quanto a tabela Jurídica possuem
relacionamento de herança com a tabela Pessoa, indicando que essas tabelas representam
tipos de Pessoas.
2.1.3
Bancos de Dados Chave-Valor
Esse modelo de banco de dados possui uma estrutura simples de utilização de
chaves devidamente indexadas[59]. Estes sistemas podem armazenar dados estruturados
e não estruturados. Segundo Moniruzzaman e Hossain[55] esse tipo de banco de dados
pode ser definido do seguinte modo:
“Normalmente, esses Sistemas de Gerenciamento de Dados armazenam
itens como identificadores alfanuméricos (chave) e associam com valores em tabelas simples, autônomas (conhecidas como hash tables). Os
valores podem ser sequências de texto simples ou listas e conjuntos mais
complexas. As buscas de dados normalmente só podem ser realizadas
sobre as chaves, não sobre seus valores, sendo limitados a correspondência exata.”
As hash tables utilizadas por esse tipo de banco de dados são semelhantes àquelas estruturas de dados encontradas em linguagens de programação. Sua estrutura simples
permite um acesso rápido aos dados, sendo utilizada principalmente para trabalhar com a
informação na memória principal. Na Figura 2.3, é possível visualizar uma representação
desse tipo de banco de dados. Nesse exemplo, existem chaves ( Massa, Comprimento,
Largura ) que possuem itens respectivamente relacionados a valores ( 5kg, 15cm, 12cm ).
2.1 Modelos de Bancos de Dados
25
Figura 2.3: Um exemplo de bancos de dados do tipo chave valor
O mais conhecido caso de utilização de banco de dados do tipo chave-valor é o
SimpleDB da Amazon[27]. O SimpleDB da Amazon é um serviço web que fornece os
recursos essenciais de banco de dados, utilizando a infraestrutura de nuvem da Amazon
para oferecer alta disponibilidade, escalabilidade e resistência a falhas de armazenamento
de dados [67].
2.1.4
Bancos de Dados Orientados a Colunas
Estes tipos de bancos de dados contêm uma coluna extensível de dados estreitamente relacionadas, em vez de conjuntos de informações em uma tabela estritamente
estruturada de colunas e linhas, como é encontrado em bancos de dados relacionais[59].
A Figura 2.4 apresenta uma representação de um banco de dados orientado a
colunas, onde uma chave está relacionada a um conjunto de elementos abstratos com
valores correspondentes, elementos esses chamados de colunas.
Figura 2.4: Um exemplo de bancos de dados orientado a colunas
2.1 Modelos de Bancos de Dados
26
Dentre os bancos de dados que seguem esse paradigma, cita-se o BigTable da
Google e Cassandra.
Bigtable é uma implementação de um mapa multidimensional ordenado, onde
a indexação é feita por linhas, colunas e campo do tipo timestamp[28]. Esse banco de
dados foi construído pela Google para atender demandas de projetos internos, tornandose operacional em abril de 2005. Bigtable foi desenvolvido para trabalhar com petabytes
de informação, sendo executado sobre centenas ou mesmo milhares de computadores.
O Apache Cassandra é um sistema de armazenamento distribuído para o gerenciamento de grandes quantidades de dados distribuídos, podendo funcionar em hardware
de baixo custo [50]. Esse banco de dados ganhou grande popularidade por ser usado em
redes sociais como o Twitter e o Facebook.
2.1.5
Bancos de Dados de Documentos
Os dados são armazenados e organizados como uma coleção de documentos.
Os usuários têm permissão para adicionar qualquer número de campos de qualquer
comprimento em um documento [59]. Geralmente esses bancos de dados armazenam
documentos baseados no formato de dados JSON[31].
A Figura 2.5 apresenta uma representação de um banco de dados orientado a
documentos. Observa-se que a ideia por trás desse paradigma consiste numa extensão
do paradigma de banco de dados orientado a colunas. Nesse modelo, os conceitos
abstratos de colunas observados anteriormente são agrupados em um conjunto chamado
documento.
Figura 2.5: Um exemplo de bancos de dados de documentos
Exemplos de bases de dados de documentos seriam o MongoDB e o Apache
CouchDB.
2.1 Modelos de Bancos de Dados
27
O MongoDB é um Sistema de Gerenciamento de Dados em Nuvem de código
aberto, escalável e de propósito geral, que utiliza sistemas de índices secundários, consultas sobre intervalos, técnicas de ordenação, agregação e índices geoespaciais[29].
O Apache CouchDB é um banco de dados escrito em Erlang, desenvolvido para
viabilizar sua utilização em servidores com hardware de baixo desempenho. CouchDB
realiza consultas sobre estruturas chamadas “views”, possui um sistema de indexação
baseado em B-trees e utiliza técnicas de armazenamento e controle de concorrência
baseadas na estrutura do documento[25].
2.1.6
Bancos de Dados Orientados a Grafos
Bancos de dados orientados a grafos podem ser definidos como aqueles em que
as estruturas de dados para o esquema e as instâncias são modelados na forma de grafos
ou generalizações desses. A Figura 2.6 apresenta um modelo de um banco de dados
orientado a grafos. Nesse modelo, a manipulação de dados é expressa por operações
em grafos orientados, usando conceitos como caminhos, vizinhos, subgrafos, padrões
gráficos, conectividade e gráfico de estatísticas[2].
Figura 2.6: Um exemplo de bancos de dados do tipo grafos
Como exemplo de banco de dados que segue esse paradigma cita-se o Neo4j,
um banco de dados orientado a grafos de código aberto baseado em Java que oferece
persistência de alta performance, escalabilidade e possui uma comunidade ativa e com
uma boa documentação[43].
2.2 Web Semântica
2.2
28
Web Semântica
Segundo Bonifácio & Heuser[16], a Web possui problemas de localização,
acesso, apresentação e manutenção da informação por parte dos usuários. Esses problemas são ocasionados por fatores como a estrutura para compartilhamento de recursos
distribuídos, autônomos, heterogêneos, a falta de um padrão mínimo para exibição da
informação, entre outros.
A informação na Web é tipicamente representada em linguagem natural, permitindo que ela seja compreendida por pessoas. Entretanto, para prover informação de
forma que computadores também possam compreendê-la é necessário representá-la de
forma sistemática e semântica.
Nas palavras de Berners-Lee[10]: “Web semântica é a extensão da web obtida
via adição de semântica ao formato atual de representação de dados”. Em um ponto de
vista mais prático, a Web Semântica é a representação abstrata de dados sobre a World
Wide Web, com base nos padrões RDF e outras normas a serem definidas[78]. Ela está
sendo normatizada pelo W3C, em colaboração com um grande número de pesquisadores
e parceiros industriais.
A Web Semântica pode ser dividida em partes, segundo um modelo de camadas proposto por Berners-Lee[12]. Segundo esse, a arquitetura da Web Semântica está
dividida em sete camadas: 1) Unicode e URI; 2) XML, NS, e esquema XML; 3) RDF e
esquema RDF e 4) Vocabulário ontologia; 5) Lógica; 6) Prova e 7) Validação.
O modelo proposto por Berners-Lee pode ser observado na Figura 2.7.
Figura 2.7: Arquitetura da Web Semântica
2.2 Web Semântica
2.2.1
29
Unicode e Uniform Resource Identifiers (URIs)
Unicode é um padrão que fornece um número único para cada caractere, não importa qual a plataforma, não importa qual o programa, não importa qual a linguagem[76].
URI corresponde ao conjunto genérico de todos os nomes e endereços, geralmente na forma de cadeias de caracteres compactos, utilizados para referir-se a recursos
abstratos ou físicos, geralmente usados na internet[8]. Esses nomes são utilizados para
identificação única de recursos na Web.
Essa camada fornece interoperabilidade em relação à codificação de caracteres e
ao endereçamento e nomeação de recursos da Web Semântica.
2.2.2
Extensible Mark-up Language (XML)
XML é um formato de texto simples, muito flexível derivado do SGML[70].
Originalmente concebido para enfrentar os desafios da publicação eletrônica em grande
escala, o XML também está desempenhando um papel cada vez mais importante na troca
de uma ampla variedade de dados na Web e em outros contextos[18].
2.2.3
Resource Description Framework (RDF)
RDF é um modelo padrão para o intercâmbio de dados na web com características que facilitam a fusão de dados, mesmo se os esquemas subjacentes diferirem[24].
RDF tem uma sintaxe abstrata, para refletir um modelo simples baseado em grafos e modelos de semântica formal com uma noção rigorosamente definida de vinculação
entre os dados. RDF é um modelo de representação de dados baseado em triplas, ou seja,
os dados são apresentados utilizando estruturas de três partes, na forma de sujeito predicado e objeto.
Esse formato de dados é projetado para representar informações de forma flexível e minimamente restritivo. Ele pode ser usado em aplicações isoladas, onde formatos
concebidos individualmente possam ser de compreensão mais fácil e direta, mas a generalidade do RDF oferece maior valor no processo de compartilhamento de informações[24].
2.2.4
Resource Description Framework Schema (RDFS)
RDFS é construído sobre o modelo RDF básico, visando estendê-lo para incluir
um vocabulário maior com restrições semânticas mais complexas[41]
O modelo de dados RDF não prevê mecanismos para declarar classes nem propriedades, nem fornece qualquer mecanismo para definir as relações entre propriedades e
outros recursos. A declaração destas propriedades (atributos) e sua semântica correspondente são definidas no contexto do RDF como um RDFS[20, 74].
2.3 Dados Abertos
30
Um esquema define não apenas as propriedades do recurso (por exemplo, título,
autor, assunto, tamanho, cor, etc. . . ) , mas também pode definir os tipos de recursos que
estão sendo descritos (livros, páginas da web, pessoas, empresas , etc.)[20].
2.2.5
Web Ontology Language (OWL)
De modo geral, OWL é projetada para uso em aplicações que precisam processar
o conteúdo da informação ao invés de apenas apresentar informações para os seres
humanos [52].
OWL é considerada uma linguagem mais complexa, com maior capacidade de
interpretação do que o RDF. OWL busca identificar com precisão a natureza dos recursos
e suas relações[47]. De modo geral, OWL é uma linguagem para descrever ontologias.
Segundo Gruber[38]: “Uma ontologia é uma especificação formal e explícita de
uma conceitualização compartilhada”. Entende-se por “formal” o fato de uma ontologia
ser interpretável por seres humanos ou por máquinas; ser “explícita” significa que essa
possui conceitos, propriedades, relações, funções, restrições, axiomas, explicitamente definidos; “compartilhado” significa que sua representação de conhecimento é consensual;
e “conceitualização” diz respeito a um modelo abstrato de algum fenômeno do mundo
real. O apêndice B apresenta uma visão mais detalhada sobre ontologias.
A principal função dessa camada é a inferência de semântica, para produzir
conjuntos de possíveis significados[73], auxiliando o processamento por máquinas e
facilitando o compartilhamento de informações.
2.2.6
Lógica, Prova e Validação
Segundo Sridevi e Umarani[73], é possível definir essas três camadas da seguinte
forma:
• Lógica: É responsável pelo raciocínio e execução de inferências lógicas a partir da
semântica previamente descrita;
• Prova: Camada para verificar a autenticidade do comportamento do agente e corroboração dos resultados;
• Validação: Camada que provê um mecanismo para avaliar o nível de confiabilidade
das fontes de recursos e informações;
2.3
Dados Abertos
Segundo a definição da Open Knowledge Foundation[58]: “dados são abertos
quando qualquer pessoa pode livremente usá-los, reutilizá-los e redistribuí-los, estando
2.3 Dados Abertos
31
sujeito a, no máximo, a exigência de creditar a sua autoria e compartilhar pela mesma
licença.”
Dados Abertos ou Dados Públicos são dados de livre acesso a todas as pessoas
que assim desejarem, para que essas os utilizem ou publiquem independente de qualquer
restrição ou mecanismo de controle. A filosofia dos Dados Abertos foi estabelecida há
muito tempo, no entanto o termo Dados Abertos ganhou popularidade recentemente com
o advento da Internet.
Várias podem ser as fontes dos Dados Abertos, em particular nos últimos anos
esses ganharam muito espaço na ciência e nos governos.
2.3.1
Dados Abertos Científicos
O conceito de acesso aberto a dados científicos foi institucionalmente estabelecido com a formação do sistema Centro Mundial de Dados. O Conselho Internacional
das Uniões Científicas (agora o Conselho Internacional para a Ciência) estabeleceu vários
centros de dados mundiais para minimizar o risco de perda de dados e para maximizar a
acessibilidade dos dados, ainda em 1955, recomendando que os dados sejam disponibilizados em formato legível por máquina[54].
2.3.2
Dados Abertos Governamentais
Dados Abertos Governamentais (DAG) podem ser definidos da seguinte forma:
“disponibilização, através da Internet, de informações e dados governamentais de domínio
público para a livre utilização pela sociedade[1]”.
Em outras palavras os DAG são uma metodologia para a publicação de dados dos
governos em formatos reutilizáveis, a fim de aumentar a transparência na gestão pública,
bem como majorar a participação popular.
É importante destacar que a filosofia referente aos dados abertos governamentais
converge com a evolução das democracias modernas, onde esses representam um novo
estágio de transparência e accountability da gestão pública. Em outras palavras, os
dados abertos e sua filosofia são um meio para a implementação dos paradigmas de
gestão governamental do chamado Novo Serviço Público (NSP) para o qual caminham
as democracias ao redor do mundo.
Em um nível mais elevado, o conceito de DAG favorece o desenvolvimento de
aplicações colaborativas entre o governo e a sociedade.
Princípios dos Dados Abertos Governamentais
No ano de 2007 um grupo de trinta especialistas denominados OpenGovData,
se reuniu na Califórnia - EUA a fim de definir os princípios dos dados abertos governa-
2.3 Dados Abertos
32
mentais. Dessa reunião, surgiram os 8 princípios dos dados governamentais abertos[57].
Segundo esses, os dados abertos governamentais devem ser:
1. Completos. Todos os dados públicos estão disponíveis. Dado público é o dado
que não está sujeito a limitações válidas de privacidade, segurança ou controle de
acesso.
2. Primários. Os dados são apresentados tais como os coletados na fonte, com o maior
nível possível de granularidade e sem agregação ou modificação.
3. Atuais. Os dados são disponibilizados tão rapidamente quanto necessário à preservação do seu valor.
4. Acessíveis. Os dados são disponibilizados para o maior alcance possível de usuários
e para o maior conjunto possível de finalidades.
5. Compreensíveis por máquinas. Os dados são razoavelmente estruturados de modo
a possibilitar processamento automatizado.
6. Não discriminatórios. Os dados são disponíveis para todos, sem exigência de
requerimento ou cadastro.
7. Não proprietários. Os dados são disponíveis em formato sobre o qual nenhuma
entidade detenha controle exclusivo.
8. Livres de licenças. Os dados não estão sujeitos a nenhuma restrição de direito
autoral, patente, propriedade intelectual ou segredo industrial. Restrições sensatas
relacionadas à privacidade, segurança e privilégios de acesso são permitidas.
Leis dos Dados Abertos Governamentais
Com a consolidação dos acordos internacionais para transparência governamental entre as nações, o consultor e pesquisador canadense David Eaves definiu três “leis”
para os dados abertos governamentais[34]:
1. Se o dado não for encontrado e indexado na web, ele não existe;
2. Se não estiver aberto e disponível em formato compreensível por máquina, ele não
pode ser aproveitado;
3. Se algum dispositivo legal não permitir sua replicação, ele é inútil.
Dados Abertos no Mundo
Como um movimento de proporções globais, vários governos nacionais e subnacionais estão disponibilizando seus dados a partir das orientações do governo aberto.
Pode-se citar como referencias para esse: Estados Unidos, Reino Unido, Austrália e Nova
Zelândia[1].
A Grã-Bretanha no ano de 2008 em um concurso denominado Show us a better
way, o qual visava o desenvolvimento de aplicações com dados públicos, liberou acesso a
2.3 Dados Abertos
33
um conjunto de várias informações públicas. O portal de dados abertos do Reino Unido1
possui espaço para comunidades virtuais, wiki, RSS e envio de novas aplicações web pelo
cidadão.
O governo da Nova Zelândia2 e da Austrália3 criaram seus portais de dados
abertos no ano de 2010. Aquele é um espaço para discussão através de fóruns propostos
pelos cidadãos, enquanto esse encoraja a criação de gadgets e programas de computador
que fazem controle social de todas as informações dentro do portal.
Os Estados Unidos apresentam o plano mais ambicioso com relação aos dados
abertos4 , onde o presidente Barack Obama, no início de seu primeiro mandato, criou
políticas públicas para a promoção da transparência, que incentiva a disponibilização
dos dados públicos em formato aberto. Promovendo o uso de dados abertos em um
nível global, de tal forma que esse governo enviou um memorando a todos os chefes
de governos se comprometendo a criar “níveis sem precedentes de abertura” no governo.
Dados Abertos no Brasil
Os esforços no sentido de publicação dos DAG podem ser vistos a partir de
2009, quando o Comitê de Informação da Presidência da República do Brasil começou
a reunir grandes quantidades de dados agregados do governo para a publicação digital5 .
O objetivo do comitê foi criar um catálogo central de informações da atividade pública,
com a intenção de melhorar a governança e monitoramento de atividades de governo.
Este catálogo foi criado originalmente para servir ao então Presidente da República e
sua equipe de assessores, como uma fonte confiável de dados oficiais, o catálogo foi
disponibilizado ao público em 2010.
Esse catálogo de informações é composto de pouco mais de 1300 séries de dados
históricos, representando 8 anos de registros públicos, que refletem as ações do governo
durante a presidência de Luiz Inácio "Lula"da Silva (2003-2010). Como padrão, a equipe
de gestão propôs classificar os dados em duas dimensões: territoriais (países, estados,
cidades) e temporal (ano ou mês). Séries de dados foram classificadas em várias árvores
temáticas hierárquicas, que se ramificam a partir de assuntos gerais para assuntos mais
específicos.
1 http://data.gov.uk/,
acessado em junho de 2015
acessado em junho de 2015
3 http://data.gov.au/, acessado em junho de 2015
4 http://www.data.gov/, acessado em junho de 2015
5 http://dados.gov.br/, acessado em junho de 2015
2 https://data.govt.nz/,
2.3 Dados Abertos
2.3.3
34
Dados Abertos Ligados
Uma vez que os dados tenham sido disponibilizados em formato aberto e
utilizem-se dos recursos da Web Semântica para relacionar a informação contida neles,
de forma a definir claramente um significado e as relações inerentes daquele dado, surge
um novo conceito de Linked Open Data (LOD) ou Dados Abertos Ligados (DAL).
Segundo Florian Bauer[36]: “Para se beneficiar inteiramente dos Dados Abertos, é crucial disponibilizar informações e dados em um contexto que crie novos conhecimentos e permita o desenvolvimento de serviços e aplicativos poderosos. Como os DAL
facilitam a inovação e a criação de conhecimento a partir de dados interligados, é um
importante mecanismo de gestão e integração de informações”.
Os dados abertos ligados são capazes de gerar esse conhecimento, uma vez que
esses favorecem a interação entre duas ou mais fontes de informações, permitindo que
relações sejam derivadas entre esses conhecimentos.
A transformação de dados abertos para dados abertos ligados foi melhor descrita
por Berners-Lee ao apresentar um modelo de 5 estrelas para o Governo Eletrônico. Desde
então, o modelo de Berners-Lee foi adaptado e explicado de várias maneiras diferentes.
Um resumo do modelo de 5 estrelas de Berners-Lee pode ser observado na Tabela 2.1.
Tabela 2.1: As 5 estrelas do modelo Gov 2.0
?
??
???
????
?????
Informação está disponível na web (qualquer formato) sobre uma licença
aberta
Informação está disponível como um dado estruturado (e.g. Excel ao invés de
uma imagem escaneada de uma tabela)
Utilização de formatos não proprietários (e.g. CSV ao invés de Excel)
Identificação por URI para que as pessoas possam apontar para os dados
individualmente.
Os dados estão ligados a outros dados para fornecer contexto
Hausenblas[40] apresenta um modelo de custos e benefícios para aqueles que
publicam e para aqueles que consomem DAL, a partir do modelo de 5 estrelas proposto
por Berners-Lee. Esse modelo pode ser observado através de 5 tabelas, correspondendo
cada uma dessas a uma das cinco estrelas do modelo proposto por Berners-Lee. Essas
podem ser observadas a seguir nas Tabelas 2.2 a 2.6
Esse modelo não representa uma definição absoluta, mas apenas uma forma de
visualizar o que os agentes que publicam e que consomem informações podem esperar de
sistemas que se proponham a atender essa filosofia.
Observa-se que o publicador obtém o ônus de formatar e vincular a informação,
algo que ainda é feito de forma manual. O consumidor da informação ganha uma série de
benefícios para trabalhar com os dados, pois esse pode utilizar e mesmo agregar valor a
esses dados.
2.3 Dados Abertos
35
Tabela 2.2: Custos e benefícios do modelo de ? dados web
Como consumidor
Como publicador
Pode vê-lo
É fácil publicar
Pode imprimi-lo
Pode armazená-lo localmente (no seu disco
rígido)
Pode inserir os dados manualmente em outro
sistema
Tabela 2.3: Custos e benefícios do modelo de ? ? dados web
Como consumidor, pode fazer tudo que o Como publicador...
anterior fazia, mais:
Pode processar diretamente com software É fácil publicar.
proprietário para agregá-lo, executar cálculos, visualizá-lo, etc
Pode exportá-lo para outro formato (estruturado).
Tabela 2.4: Custos e benefícios do modelo de ? ? ? dados web
Como consumidor, pode fazer tudo que o Como publicador
anterior fazia, mais:
Não tem que pagar por um formato em que É fácil publicar.
uma única entidade tem controle exclusivo
Tabela 2.5: Custos e benefícios do modelo de ? ? ? ? dados web
Como consumidor, pode fazer tudo que o
anterior fazia, mais:
Pode ligar o dado de qualquer outro lugar,
seja na web ou localmente.
Pode marcá-lo.
Pode reutilizar partes dos dados.
Como publicador
Precisará investir algum tempo dividindo e
separando os dados.
Precisará atribuir URIs para as propriedades
dos dados e pensar em como representar os
dados.
Tem um bom controle granular sobre as
propriedades de dados e pode otimizar o
seu acesso (por exemplo, balanceamento de
carga, cache, etc)
Tabela 2.6: Custos e benefícios do modelo de ? ? ? ? ? dados web
Como consumidor, pode fazer tudo que o
anterior fazia, mais:
Pode descobrir novos dados de interesse ao
consumir outras informações.
Tem acesso ao esquema de dados.
Como publicador
Precisará investir recursos para vincular os
dados com outros dados na Web.
Tornar os dados descobríveis.
Aumenta o valor dos dados.
2.4 Sobre o Capítulo
2.4
36
Sobre o Capítulo
Ao longo deste capítulo, foram apresentados alguns conceitos considerados
relevantes para o desenvolvimento da proposta desse trabalho. O conteúdo apresentado
sobre Modelos de Bancos de Dados, Web Semântica e Dados Abertos apresentou um
caráter introdutório e restrito às necessidades desse projeto.
Dentre os temas tratados neste capítulo, a Web Semântica é aquele com mais
possibilidades, pois implica numa mudança geral de paradigmas da web. Mudanças essas
que permitirão um significativo avanço na capacidade dos computadores atuais tratarem
as informações.
Todo o esforço empregado neste trabalho dedica-se a desenvolver meios que auxiliem na adoção da Web Semântica, através da utilização de bases de dados tradicionais
para formatos abertos com nível de estruturação e semântica.
CAPÍTULO 3
Bases de Conhecimento e suas Ontologias
A forma de representar dados na web, apesar de parecer um conceito muito
simples, carrega uma série de requisitos, pois até o momento a web foi desenvolvida
principalmente em formato não estruturado, onde a semântica dos conceitos dos objetos
do mundo real é colocada de forma implícita, voltada para o entendimento do ser humano.
As representações de dados utilizadas dentro da Web Semântica definem as possibilidades
computacionais, existindo uma relação entre a expressividade da linguagem utilizada e a
capacidade de processamento do computador. A Figura 3.1 apresenta uma visão do ganho
de expressividade observado de acordo com a linguagem adotada.
Figura 3.1: Linguagens Utilizadas na Web
É possível observar que a web atual, utilizando representações de dados na forma
de linguagem natural com uma representação de dados pouco expressiva como a HTML,
apresenta grandes limitações em termos de aproveitamento de recursos computacionais.
Os esforços da Web Semântica têm sido principalmente para transformar o modelo
atual pouco expressivo, num modelo mais facilmente compreensível pelos computadores.
Ferramentas de anotação semântica, ou vinculação de dados de fontes pouco estruturadas
têm sido desenvolvidas com o intuito de trazer a web tradicional para o modelo semântico.
38
Dentre as linguagens apresentadas, o RDF tem sido uma importante aposta,
devido a seu formato simples e com razoável expressividade. O próprio conceito de Dados
Abertos Ligados intersecta-se com o do RDF, onde um recurso proveniente de uma página
web, um documento de texto plano ou um banco de dados, uma vez anotado pode ser
referenciado para recursos de um outro domínio. Esses domínios muitas vezes possuem
complexas ontologias, representadas em linguagens como a OWL, as quais possuem
definições complexas a respeito de seus recursos e os relacionam com recursos de outros
domínios.
Esses domínios com complexas ontologias, que possuem recursos bem definidos por meio de esquemas de representação em RDF, são chamados de repositórios semânticos. Segundo Kiryakov e Damova[49], repositórios semânticos são sistemas que
combinam características dos sistemas de gerenciamento de banco de dados (SGBD) e
motores de inferência, capazes de lidar com dados estruturados, levando em consideração
sua semântica.
Ao mapear uma fonte de dados qualquer para um formato RDF e vinculá-la
a outros repositórios semânticos, inclui-se essa nova fonte de dados em uma rede de
repositórios, formando uma verdadeira nuvem de dados semânticos. Tim Berners-Lee,
um dos principais idealizadores do conceito de Web Semântica, propôs um modelo de
evolução para a web, onde as fontes de dados atuais podem ser integradas por meio de
procedimentos de conversão e anotação semântica[11].
A Figura 3.2 apresenta um modelo adaptado da proposta de Berners-Lee para
a integração de bases heterogêneas. Nesse modelo, fontes de dados diversas, sejam elas
fontes não estruturadas, semi-estruturadas ou estruturadas, são trazidas para um formato
de representação em RDF. Esse conjunto de dados em RDF, tomados com ontologias e
acesso de dados por meio de ferramentas como o SPARQL, formam uma camada que
pode alimentar uma série de serviços computacionais de natureza semântica.
Nas seções seguintes desse capítulo, são apresentados alguns repositórios semânticos conhecidos, selecionados por critérios, como sua diversidade de conteúdo, integração com outros repositórios e utilização em pesquisas relacionadas à Web Semântica.
Também apresenta-se uma rápida visão das ontologias que os definem e suas formas de
acesso.
3.1 DBPedia
39
Figura 3.2: Modelo Adaptado de Integração de Dados de BenersLee
3.1
DBPedia
DBPedia[51] é uma base de conhecimento multilinguístico construída em grande
escala para agrupar informações enciclopédicas provenientes do projeto Wikipedia. A
enciclopédia digital Wikipedia é o sexto website mais acessado do planeta1 . Ela possui
versões em mais de 287 idiomas, tendo centenas ou até milhões de artigos em cada uma
de suas edições e está disponível de forma gratuita e aberta.
A maior parte do conhecimento proveniente da Wikipedia encontra-se em formato de texto plano, para servir ao entendimento dos seres humanos. Entretanto a estrutura dessa enciclopédia digital abrange também uma série de informações apresentadas
em formatos estruturados, como tabelas, listas e conteúdo agrupado em estruturas conhecidas como infoboxes.
O projeto DBPedia visa reunir essa informação estruturada da Wikipedia em um
único repositório, sendo organizado segundo as classes de uma ontologia pré-definida
e disponibilizado como um Dado Ligado. A partir disso, a informação semanticamente
categorizada da DBPedia permite que aplicações efetuem consultas com um nível de
complexidade muito maior do que as simples consultas por palavra-chave da Wikipedia.
Assim como a Wikipedia, o projeto DBPedia é mantido a partir de um esforço
colaborativo mundial, onde os membros do projeto não somente mantém o esquema
ontológico, mas criam novas ferramentas de mapeamento entre as enciclopédias. De
forma geral, pode-se dizer que o projeto DBPedia trata-se de um projeto de mapeamento
1 http://www.alexa.com/topsites,
acessado em agosto de 2014
3.1 DBPedia
40
de informação multilinguístico proveniente das várias edições da Wikipedia. Ao todo o
projeto DBPedia trabalha com 111 edições da Wikipedia, disponibilizando as informações
de pelo menos 14 dessas na forma de SPARQL Endpoint.
O projeto DBPedia é possivelmente um dos mais importantes repositórios semânticos existentes, pois tornou-se uma referência para a maioria dos outros, já que uma
grande parte dos repositórios existentes hoje em dia possuem esquemas de mapeamento
de seus modelos para o encontrado na DBPedia. Esse tópico é discutido em mais detalhes
na Seção 3.6.
3.1.1
Ontologia DBPedia
Apesar de ser um projeto para representar semanticamente informação proveniente de qualquer fonte, assim como ser uma referência para a maior parte dos repositórios
semânticos encontrados atualmente, a DBPedia possui uma ontologia relativamente simples. Ao todo sua ontologia possui cerca de 320 classes e 1650 propriedades.
Além disso, possui uma estrutura hierárquica de no máximo cinco níveis, sendo
mantida dessa forma para facilitar o entendimento e para que possa ser visualizada
integralmente, assim como para manter uma estrutura de navegação simples.
Essa ontologia pode ser visualizada de forma integral e on-line através do portal
da DBPedia2 .
3.1.2
Acessando a DBPedia
Como um dos principais projetos de Dados Abertos Ligados do mundo, o projeto
DBPedia oferece acesso a seus dados na forma de triplas RDF, de três formas diferentes.
Sendo todas elas livres e sem qualquer restrição quanto ao uso.
É possível acessar as triplas RDF da DBPedia utilizando um SPARQL Endpoint3
público, mantido sobre um cluster de quatro nós de um Virtuoso Universal Server[35].
Esse SPARQL Endpoint apresenta um mecanismo de paralelização de execução de
consultas de usuários, podendo dividir o processamento sobre vários nós do cluster. Notase que, devido ao grande número de dados provenientes desse repositório, existe uma
limitação de trafego que permite a realização de consultas cujo o resultado não exceda
o tamanho máximo de 50000 linhas. Dessa forma, os usuários desse SPARQL Endpoint
geralmente devem utilizar limitadores como OFFSET e LIMIT.
Além de fornecer acesso por meio de consultas SPARQL, a DBPedia possui um
mecanismo de acesso do tipo a Linked Data Hub onde, por meio de requisições HTTP, o
2 http://mappings.dbpedia.org/server/ontology/classes/
3 http://dbpedia.org/sparql
3.2 GeoNames
41
endpoint redireciona o usuário para páginas HTML ou dados em RDF em formatos como
o RDF/XML.
Por fim, é possível a utilização do repositório DBPedia por meio de um sincronizador de dados, que baixa a informação proveniente do endpoint e o armazena no computador local do usuário, mantendo assim um espelho atual do repositório da DBPedia.
Dessa forma, o sincronizador mantém o repositório local do usuário apenas atualizando
aquilo que foi alterado entre uma sincronização e outra.
3.2
GeoNames
GeoNames[37] é um banco de dados com informações geográficas globais,
abrangendo funções de busca, mapas e arquivos de dados para download disponível
gratuitamente e em formato aberto.
Segundo informações do próprio GeoNames4 , essa base de dados contém mais
de 10 milhões de nomes geográficos e é composto por mais de 8 milhões de recursos
exclusivos, nos quais 2,8 milhões corresponde a lugares povoados e 5,5 milhões de nomes
alternativos.
O objetivo do projeto GeoNames é integrar dados geográficos, tais como nomes
de lugares em línguas diferentes, altitude, população e outras informações provenientes
de fontes de dados diversas. Trata-se de um projeto desenvolvido por uma comunidade de
usuários, dessa forma o projeto fornece possibilidades de edição manual e correções de
nomes por parte dos usuários do serviço.
As informações de coordenadas do projeto GeoNames são disponibilizadas de
forma aberta em formato WGS845 .
3.2.1
Ontologia GeoNames
O projeto GeoNames apresenta um esquema ontológico simples e aberto de
representação de dados6 , definido sobre uma estrutura de apenas sete classes. Essa
ontologia contém ainda vinte e nove propriedades, sendo treze propriedades de tipos de
dados e dezesseis de objetos.
Essa ontologia descreve locais por meio de diferentes classificações de nomes
(nome, nome oficial, nome alternativo, nome coloquial, nome abreviado) e por meio de
uma divisão espacial de nove tipos, como listados abaixo:
4 http://www.geonames.org/about.html,
acessado em julho de 2014
Geodetic System. Norma usada em cartografia de origem geocêntrica, utilizada principalmente
pelo Sistema de Posicionamento Global - (GPS)
6 http://www.geonames.org/ontology/ontology_v3.1.rdf
5 World
3.3 WordNet
•
•
•
•
•
•
•
•
•
42
Limites Administrativos: país, estado, região, . . .
Hidrográfica: rios, lagos, . . .
Áreas: parques, bairros, . . .
Locais Populados: cidades, vilas, . . .
Transporte: rodovias, ferrovias . . .
Recursos à Vista: construções, fazendas, . . .
Hipsográfico: montanhas, colunas, . . .
Marítimos: recifes, corais, depressões, . . .
Vegetação: florestas, bosques, plantações, . . .
Todos os recursos do GeoNames apresentam definições utilizando SKOS [5],
assim como especificam a nomenclatura do recurso em cinco línguas diferentes.
3.2.2
Acessando o GeoNames
A informação do GeoNames pode ser obtida de duas formas. A primeira das
formas de acesso é o download integral da base de dados do GeoNames por meio de uma
série de arquivos em formato zip disponibilizadas no site do GeoNames.
A segunda é através da consulta a um Web Service com uma interface de busca
pré-definida, onde o usuário pode realizar requisições com campos para buscas do nome
do local, locais que começam com o texto, locais que contém o texto, entre outras
possibilidades. Esse Web Service oferece a opção de configuração do formato da resposta
em XML ou JSON.
3.3
WordNet
WordNet[53] é um banco de dados léxico da língua inglesa, em desenvolvimento
pelo Cognitive Science Laboratory da Universidade de Princenton desde 1985. Nesse
dicionário léxico os dados sobre substantivos, verbos, adjetivos e advérbios são agrupados
em conjuntos de sinônimos cognitivos chamados synsets, cada um expressando um
conceito distinto.
A classificação das palavras em synsets ocorre de acordo com o significado dessa
palavra num dado contexto. Assim, cada synset identifica um sentido (conceito ou seja,
semântica). Palavras com múltiplos significados, palavras ambíguas, pertencem a vários
synsets.
Além da classificação das palavras em synsets, o WordNet especifica uma série
de relações lógicas entre palavras e synsets. A Tabela 3.1 resume as principais relações
lógicas encontradas na WordNet.
3.4 YAGO2
43
Tabela 3.1: Exemplo de Relações Léxicas na WordNet
Sinônimos
Hiperônimos
Hipônimos
Merônimos
Holônimos
Antônimos
3.3.1
significa o mesmo que
termo geral para
tipo de
parte de
membro de
tem parte
membro
contrário de
Bonito significa o mesmo que belo
Mobília é o termo geral para sofá
Sofá é um tipo de mobília
Galho é parte de uma árvore
Uma pessoa é membro de um grupo
Carro tem a roda como parte
Um grupo tem uma pessoa como membro
Alto é o contrário de baixo
Ontologia WordNet
Apesar de ser um dos repositórios mais utilizados dentro das pesquisas sobre
Web Semântica, a WordNet não foi concebida inicialmente como um RDF/OWL. Muitos
são os trabalhos que consideram técnicas para converter ou tratar os dados provenientes
da WordNet para o formato RDF/OWL, entretanto somente em junho de 2006 o consórcio
w3c estabeleceu um padrão para trabalhar com a WordNet em aplicações semânticas7 .
No total, a WordNet possui cerca de 117659 synsets, sendo 82115 substantivos,
13767 verbos, 18156 adjetivos e 3621 advérbios8 . Entretanto, muitas das cadeias de
caracteres existem em mais de uma categoria. De forma que, o total, considerando a
relação palavra por significados é de 206941.
3.3.2
Acessando o WordNet
É possível baixar a base de dados da WordNet em formatos como o zip e o tar.gz
no site oficial da Universidade de Princenton. Além disso, existem SPARQL Endpoints
não oficiais do qual é possível realizar consultas SPARQL a base de dados da WordNet.
3.4
YAGO2
YAGO2[42] é uma base de conhecimento construída sobre o paradigma de
divisão de fatos, entidade e eventos definidos em termos de tempo e espaço. Essa base de
dados é construída automaticamente a partir das informações estruturadas da Wikipedia,
do GeoNames e da WordNet.
YAGO2, atualmente, possui dados de cerca de 10 milhões de entidades9 , tais
como pessoas, organizações, cidades, entre outros. Estima-se que existam cerca de 120
7 http://www.w3.org/TR/wordnet-rdf/,
acessado em julho de 2014
8 http://wordnet.princeton.edu/wordnet/man/wnstats.7WN.html
9 https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yagonaga/yago/, informação obtida em Julho de 2014
3.4 YAGO2
44
milhões de fatos sobre estas entidades.
Apesar de ser uma base de conhecimento semântico construída a partir de outras
bases de informação, esse projeto tem suas triplas RDF validadas manualmente, sendo que
oficialmente possui uma precisão com relação a suas tuplas de cerca de 95% de acurácia
confirmados.
3.4.1
Ontologia YAGO2
YAGO apresenta um modelo próprio de representação de dados, baseado no
RDFS, o qual denomina-se YAGO model. Nesse modelo de dados, todos os objetos (ex.:
cidades, pessoas, etc. . . ) são representados como entidades. A ligação entre as entidades
é chamada de relação. O conjunto de entidades unidas por uma relação é chamada de fato.
Numa definição recursiva, as classes e relações e até mesmo os fatos também
são vistos como entidades dentro desse modelo. Outro aspecto importante a ser destacado
é que dentro do YAGO model, números, cadeias de caracteres, palavras e outros literais
também são interpretados como entidades.
Como pode ser observado, a entidade dentro desse modelo corresponde a um
conceito muito amplo. De forma geral, o conceito de entidade dentro do YAGO model é
de um objeto abstrato de uma ontologia, que seja independente de linguagem[42].
Dentro de sua definição geral de entidades, esse modelo apresenta uma subdivisão de entidades comuns e entidades individuais. A primeira corresponde a entidades que
não são nem fatos e nem relações. A segunda corresponde a uma entidade comum que
também não é uma classe.
Dessa forma, é possível definir a ontologia YAGO através de uma função injetiva,
tomando C como um conjunto finito de entidades comuns, R como um conjunto finito de
relações e I como um conjunto finito de fatos, tem-se:
y : I =⇒ (I ∪C ∪ R) × R × (I ∪C ∪ R)
Ao todo, a ontologia YAGO2 possui cerca de 72 tipos de relações, cerca de 350.000
classes, dez milhões de entidades e cerca de 120 milhões de fatos.
3.4.2
Acessando o YAGO2
É possível baixar todo o banco de dados e ontologia do YAGO2 no site oficial do
em formatos de texto ttl e tsv. Além disso YAGO2 oferece uma interface web de
projeto10
10 https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-
naga/yago/downloads/
3.5 Freebase
45
acesso utilizando requisições HTTP do tipo POST. Existe ainda a possibilidade de navegar
pela ontologia do YAGO2 utilizando um browser de ontologias disponível no site oficial
do projeto. A partir de novembro de 2014, foi disponibilizado um SPARQL Endpoint para
acessar a base de dados do YAGO2, apesar de ainda apresentar certa instabilidade.
3.5
Freebase
Freebase[15] é um banco de dados de tuplas, usado para estruturar fatos do
conhecimento humano em geral. Seus dados são criados, estruturados e mantidos de
forma colaborativa. Freebase foi desenvolvido pela Metaweb Tecnologies e foi adquirido
pela Google em 2010.
A ideia por trás do Freebase é tenta mesclar a escalabilidade de bases de dados
estruturadas, com a diversidade de wikis colaborativos em uma base de conhecimento
humano de propósito geral. Esse projeto visa à praticidade, fornecendo interfaces e
ferramentas que permitam a usuários leigos o uso imediato, tanto para consultar quanto
para contribuir com adição de novos dados.
Cita-se ainda que o Freebase possui uma filosofia da normalização completa dos
dados. Ao contrário de alguns bancos de dados, as entidades Freebase são construídas
para ser explicitamente únicas. Ou seja, deve haver apenas um GUID em Freebase
representante de cada entidade, tópico ou conceito do mundo real.
Essa base de dados é constituída a partir de uma série de fontes, alguns dados
são carregados por ferramentas de extração automáticas, alguns enviados a granel, quer
pela equipe de Dados da Metaweb Tecnologies ou pela comunidade de colaboradores,
utilizando API ou outras ferramentas de carregamento de dados. Existe ainda uma parcela
de dados que são adicionados manualmente pedaço por pedaço por indivíduos que
simplesmente usam o site oficial.
3.5.1
Ontologia Freebase
Freebase não possui uma ontologia que o defina, ao invés disso esse projeto
utiliza um metaesquema de descrição das suas propriedades. Esse metaesquema define
um método simples para explorar o conteúdo do banco de dados na forma de caminhos
entre categorias.
Como um exemplo de caminho válido dentro do metaesquema do Freebase citase /film/director/film. Através desse caminho, o metaesquema interpreta a solicitação feita
como a consulta “que filmes um diretor de filmes dirigiu”.
3.6 Interligando Dados Abertos
46
Ao todo, o Freebase possui cerca de 45076141 de tópicos, 2631063003 fatos
divididos em cerca de 77 categorias11 .
3.5.2
Acessando o Freebase
Apesar de não possuir uma ontologia que o defina, Freebase oferece a possibilidade de baixar toda a informação de sua base de conhecimento no formato RDF N-Triples,
empacotado e compactado em um arquivo do tipo tar.gz.
Outra forma de acesso aos dados usando o Freebase seria através de requisições
HTTP a uma API de consultas programáticas numa linguagem especial chamada MQL.
MQL significa Metaweb Query Language, trata-se de um formato de consulta semelhante
ao SPARQL desenvolvido especificamente para consultas ao Freebase. Essa API utiliza o
formato JSON tanto na requisição quanto na resposta.
3.6
Interligando Dados Abertos
Dados Abertos Ligados trazem no seu conceito e descrição a ideia de que
esses dados, geralmente localizados em repositórios semânticos, devem possuir ligações
entre si. Essas ligações, principalmente aquelas que expressam relações de igualdade
entre classes e entidades das ontologias que definem esses repositórios, são de grande
importância. A partir do momento que uma entidade ou classe é definida como possuindo
uma relação de igualdade com uma entidade ou classe de um outro repositório, a mesma
passa a partilhar das evoluções que a entidade ou classe venha a sofrer.
No contexto da nuvem semântica, onde a informação é partilhada entre os
repositórios, quanto maior o número de ligações entre os repositórios, maior será a
expressividade do dado web. Desse modo, mais importante que a representação do dado
é como esse dado se encontra com relação a outros repositórios.
Não é possível enumerar nesse trabalho todas as ligações existentes entre os
repositórios semânticos, pois essas são demasiadamente numerosas. Tomando como
exemplo a DBPedia, um repositório de referência dentro da nuvem semântica, é possível
observar como é numerosa a quantidade de ligações entre os repositórios.
Na Tabela 3.2 é possível observar os repositórios que a DBPedia referencia,
sendo esses dados de abril de 2013. Na primeira coluna aparece o nome dos repositórios
referenciados, na segunda coluna apresenta-se o predicado utilizado para ligar a entidade
DBPedia ao repositório externo. Por fim, na terceira coluna, apresenta-se o número de
ligações existentes.
11 Números
de Agosto de 2014
3.6 Interligando Dados Abertos
47
Tabela 3.2: Ligações da DBPedia para outros repositórios[51]
Repositório
Amsterdam Museum
BBC Wildlife Finder
Book Mashup
Predicados
owl:sameAs
owl:sameAs
rdf:type
owl:sameAs
Bricklink
dc:publisher
CORDIS
owl:sameAs
Dailymed
owl:sameAs
DBLP Bibliography
owl:sameAs
DBTune
owl:sameAs
Diseasome
owl:sameAs
Drugbank
owl:sameAs
EUNIS
owl:sameAs
Eurostat (Linked Stats) owl:sameAs
Eurostat (WBSG)
owl:sameAs
CIA World Factbook
owl:sameAs
flickr wrappr
dbp:hasPhotoCollection
Freebase
owl:sameAs
GADM
owl:sameAs
GeoNames
owl:sameAs
GeoSpecies
owl:sameAs
GHO
owl:sameAs
Project Gutenberg
owl:sameAs
Italian Public Schools
owl:sameAs
LinkedGeoData
owl:sameAs
LinkedMDB
owl:sameAs
MusicBrainz
owl:sameAs
New York Times
owl:sameAs
OpenCyc
owl:sameAs
OpenEI (Open Energy) owl:sameAs
Revyu
owl:sameAs
Sider
owl:sameAs
TCMGeneDIT
owl:sameAs
UMBEL
rdf:type
US Census
owl:sameAs
WikiCompany
owl:sameAs
WordNet
dbp:wordnet type
YAGO2
rdf:type
Somatório
Quantidade
627
444
9100
10100
314
894
196
838
2 300
4 800
3 100
253
137
545
3 800 000
3 600 000
1 900
86 500
16 000
196
2 500
5 800
103 600
13 800
23 000
9 700
27 100
678
6
2 000
904
896 400
12 600
8 300
467 100
18 100 000
27 211 732
3.7 Sobre o Capítulo
48
Tabela 3.3: Os 10 repositórios com mais ligações para a
DBPedia[51]
URL do Repositório
okaboo.com
tfri.gov.tw
naplesplus.us
fu-berlin.de
freebase.com
geonames.org
opencyc.org
geospecies.org
dbrec.net
faviki.com
Quantidade de Predicados
4
57
2
7
108
3
3
10
3
5
Quantidade de Ligações
2,407,121
837,459
212,460
145,322
138,619
125,734
19,648
16,188
12,856
12,768
É possível realizar a análise inversa também, onde analisa-se os repositórios que
possuem uma ligação com a DBPedia. Na Tabela 3.3, apresenta-se os 10 repositórios
com maior número de ligações com a DBPedia. Na primeira coluna, tem-se o URL do
repositório, na segunda coluna o número de predicados distintos usados para referenciar
elementos da DBPedia. Por fim, na terceira coluna, a quantidade de ligações.
3.7
Sobre o Capítulo
Ao longo deste capítulo, foram apresentados alguns dos repositórios semânticos
mais conhecidos atualmente. Existem centenas de outros não tratados nesse trabalho,
entretanto, optou-se por descrever aqueles considerados mais representativos.
Observou-se que, mais importante do que disponibilizar seus dados em formato
aberto e fornecer acesso por requisições HTTP, Web Services ou SPARQL Endpoint, o
mais importante dessas informações é que elas relacionam-se entre si. Os conceitos de
um repositório são ligados com os de outro repositório.
Em alguns casos, o mapeamento entre um repositório e outro é parcial, ou seja,
nem todas as entidades existentes entre os repositórios é mapeada. Em outros casos o
mapeamento é total, ou seja, todas as entidades do repositório são mapeadas, como no
caso do YAGO com a WordNet. Essa interligação entre os repositórios demonstra o
quanto o paradigma de vinculação dos dados está presente dentro da Web Semântica.
CAPÍTULO 4
Trabalhos Relacionados
Os trabalhos apresentados nessa seção objetivam solucionar o mesmo problema
proposto nessa pesquisa. As abordagens utilizadas pelo autores de cada um desses
trabalhos divergem bastante entre si, indo desde técnicas muito simples até frameworks
muito complexos de análise de banco de dados.
Os dois primeiros trabalhos apresentados, usam técnicas de mapeamento manual
de bancos de dados para ontologias, onde existem padrões estabelecidos para nomeação
e definição dos elementos mapeados.
Em seguida, é apresentada uma ferramenta que usa um complexo esquema de
mapeamento, utilizando um banco de dados externo e a inserção de scripts de mapeamento por parte do usuário. Os demais trabalhos desse capítulo buscam similaridades
entre cadeias de caracteres, presentes entre as ontologias e os banco de dados, cada um
apresentando uma abordagem diferente e chegando a diferentes tipos de resultados.
4.1
Morph RDB
Morph-RDB[66] é um processador de mapeamento R2RML, desenvolvido em
Scala, pelo Ontology Engineering Group1 como continuação do projeto ODEMapster2 .
Seu principal objetivo é realizar o mapeamento de bancos de dados relacionais
para representações em RDF usando o mapeamento R2RML. R2RML é uma linguagem
para expressar mapeamentos personalizadas a partir de bancos de dados relacionais para
um conjuntos de dados RDF. Esses mapeamentos fornecem a capacidade de visualizar
dados relacionais existentes no modelo de dados RDF, expressa em uma estrutura e
vocabulário alvo da escolha do autor do mapeamento.
Morph-RDB trabalha com dois modos básicos de operações, a atualização de
dados e a tradução de consultas. No primeiro, acontece a geração de dados RDF a partir
1 http://www.oeg-upm.net/,
acessado em junho de 2015
2 http://mayor2.dia.fi.upm.es/oeg-upm/index.php/en/downloads/9-r2o-odempaster,
de 2015
acessado em junho
4.2 RDOTE
50
de um banco de dados relacional, de acordo com as descrições de mapeamento R2RML.
No segundo modo de operação, consultas são realizadas em SPARQL e avaliadas sobre
um conjunto de dados RDF virtual criados a partir do banco relacional de origem, as
consultas são reescritas em SQL, de acordo com as descrições de mapeamento R2RML.
Esse framework trabalha com sistemas de gerenciamento de banco de dados
relacionais como MySQL, PostgreSQL e MonetDB. Recentemente, foi realizada uma
extensão desse framework para permitir a integração com o Google Fusion Tables,
chamado Morph-GFT[65].
4.2
RDOTE
Um outro exemplo de definição manual de mapeamento entre bancos de dados
relacionais e ontologias pode ser observado no RDOTE[77]. Essa é uma ferramenta
gráfica para definição manual de esquemas de mapeamento de banco de dados, onde o
SQL é usado como meio para especificação do subconjunto de dados que serão mapeados
para instâncias de classes em ontologias.
RDOTE se conecta a um sistema gerenciador de banco de dados relacional, do
mesmo modo que carrega uma ontologia de destino desejado. O usuário então escreve
consultas SQL que selecionam as tuplas que deseja-se representar como um grafo RDF.
Nesse caso, cada consulta representa um conjunto de resultados usado para preencher uma
classe de ontologia. As consultas realizadas devem possuir a chave primária das tabelas,
pois do contrário podem ocorrer duplicações e outras possíveis falhas no processo de
mapeamento.
Existe uma etapa opcional no processo de execução do RDOTE onde o usuário
pode definir opções de renomeação e junção de cadeias de caracteres para os casos de
consultas que selecionam dados de múltiplas colunas.
O usuário então realiza uma etapa de conexão de consultas com classes da
ontologia, desta forma, para cada tupla de uma consulta SQL, uma instância da respectiva
classe é criada. Caso se deseje utilizar os dados reais, em vez de apenas criar URIs, o
RDOTE oferece a possibilidade de copiar as informações reais das tuplas numa série de
possíveis formatos.
Uma vez realizadas as conexões entre as consultas SQL do usuário com as
classes da ontologia é possível estabelecer ligações condicionais do mapeamento com
outros mapeamentos, por meio de propriedades do objeto ou, no caso de propriedades de
tipo de dados com consultas SQL. Todo esse processo é realizado utilizando um esquema
simples ao usuário do tipo clicar e arrastar, numa interface gráfica simples.
O resultado do RDOTE é um esquema de associação de consultas com classes
da ontologia, onde essas são armazenados em um arquivo de configuração. Dessa forma,
4.3 RDB2OWL
51
o usuário pode realizar consultas referenciando a ontologia, onde o formato de saída pode
ser especificado pelo usuário em formatos abertos, tais como o RDF/XML ou N3.
4.3
RDB2OWL
RDB2OWL[26] é um acrônimo para Relational Database to OWL. Considerado
uma das mais famosas ferramentas para mapear esquemas de banco de dados relacionais
para ontologias, esse framework apresenta um mecanismo complexo para realizar o
mapeamento utilizando um banco de dados externo com um esquema pré-definido para
armazenar os dados da ontologia e do banco de dados que se deseja mapear.
Esse esquema de banco de dados é, de fato, um meta esquema desenvolvido
especificamente para realizar esse processo de mapeamento. Na Figura 4.1 é possível
observar o esquema de banco de dados utilizado pelo RDB2OWL.
Figura 4.1: Esquema de Mapeamento do RD2OWL[22]
No processo de mapeamento, considera-se uma ontologia e um ou mais bancos
de dados de domínios correlatos. As informações dos bancos de dados são armazenadas
em três tabelas, sendo essas db_database, db_table e db_column. As informações sobre
4.4 MARSON
52
a ontologia são armazenadas nas tabelas, ontology, owl_class, owl_object_property e
owl_datatype_property. Os mapeamentos são especificados nos registros das tabelas
class_map, object_property_map, datatype_property_map.
O usuário então introduz as informações de mapeamento a partir do qual os
scripts SQL são gerados para realizar a transformação de consultas no nível de instância.
4.4
MARSON
MARSON[44] é um acrônimo para Mapping between relational schemas and
ontologies.
Este framework possui uma abordagem simples porém diferenciada com relação
aos demais. Primeiramente, as relações são classificados em grupos, de acordo com o que
elas representam, se representam entidades ou relacionamentos entre entidades.
Vetores de coeficientes, chamados documentos virtuais, são construídos para
cada relação e atributo do esquema de banco de dados. A descrição de uma relação leva
em conta a descrição de relações ligadas a ela através de chaves estrangeiras, enquanto a
descrição dos atributos incorpora a descrição da sua relação pai e outras relações ligadas a
este último. Da mesma forma, os documentos virtuais para todas as classes e propriedades
da ontologia são construídos e similaridades existentes entre os elementos do esquema de
banco de dados e da ontologia são calculados como pares de distância cosseno de seus
vetores de identificação. Em outras palavras, MARSON interpreta o esquema relacional
como um gráfico e utiliza a teoria matemática fundamental para interpretá-lo.
MARSON é um projeto que visa automatizar completamente o processo de
descoberta de mapeamentos entre um banco de dados relacional e uma determinada
ontologia. Como tal, esse projeto se assenta no pressuposto de proximidade lexical entre
nomes de elementos do banco de dados e da ontologia durante o cálculo dos coeficientes
de similaridade e no pressuposto da existência de um número suficiente de indivíduos na
ontologia, necessário para o cálculo do ganho de informação
4.5
RONTO
RONTO[60] é mais uma ferramenta de comparação linguística entre ontologias
e bancos de dados relacionais, onde são estabelecidas medidas de similaridade entre
elementos estruturais correspondentes de um banco de dados e uma ontologia. Dessa
forma os conceitos de relação, chave estrangeira e não estrangeira de atributos do banco
de dados são comparados com classes, tipos de dados e propriedade da ontologia,
respectivamente, para encontrar as correspondências lexicais mais próximas, que são
depois validadas pelo usuário.
4.6 AuReLi
4.6
53
AuReLi
AuReLi[62] é um acrônimo para Automatic Relational Database to Linked Data
Converter.
Essa ferramenta trabalha com similaridade de cadeias de caracteres entre as ontologias e tabelas de um banco de dados relacional. Difere de outras abordagens por utilizar
diversas medidas de similaridade para comparar atributos e relações provenientes de bancos de dados relacionais com as propriedades e classes de uma ontologia especificadas a
priori.
Um outro fato importante sobre o AuReLi é que essa ferramenta busca a
vinculação dos dados provenientes do banco de dados com as instâncias da ontologia
através de um sistema de consultas pré-definidas de associação entre essas e entidades da
DBPedia. Os resultados do algoritmo, em seguida, são apresentados ao utilizador humano
para validação. AuReLi é implementado como uma extensão D2R Linked Server3 com
acesso a dados utilizando SPARQL.
4.7
StdTrip
StdTrip[69] é uma ferramenta de triplificação, ou seja, uma ferramenta que
trabalha com a conversão de bancos de dados relacionais para triplas RDF. A proposta
principal do StdTrip é promover um mecanismo de reutilização de vocabulários padrões
existentes.
Nessa proposta, é realizada a suposição implícita de que o banco de dados de
entrada está totalmente normalizado, ou seja, supõem-se que as entradas para a ferramenta
atendam os critérios da terceira forma normal. Essa ferramenta apresenta a característica
de considerar que o usuário do sistema tem algum conhecimento sobre o domínio da
aplicação das bases de dados tratadas.
O processo de reutilização de vocabulários proposto pelo StdTrip, é dividido em
seis etapas, resumidas a seguir:
1. Conversão. Esta etapa consiste em transformar a estrutura do banco de dados
relacional para uma ontologia RDF. Nesse ponto, o designer pode confiar em
abordagens como a proposta pelo W-Ray[61].
2. Alinhamento. Este passo utiliza uma ferramenta de alinhamento para fazer a
ontologia, obtida no Passo 1, corresponder a um conjunto de vocabulários padrões
configurados na ferramenta. Esta operação fornece, para cada elemento do esquema
3 http://d2rq.org/d2r-server,
acessado em junho de 2015
4.8 MASTRO
3.
4.
5.
6.
4.8
54
(tabela ou atributo) uma lista de possíveis correspondências. Por exemplo, uma
tabela chamada Pessoa seria combinadas para foaf: maker ou dc: creator[21].
Seleção. Esta etapa apresenta ao usuário uma lista de possibilidades de que ele ou
ela selecione o elemento do vocabulário que melhor representa cada conceito na
base de dados.
Inclusão. Se para um determinado elemento, o processo não produz qualquer
resultado (não há nenhum elemento nos vocabulários conhecidos que coincide com
o conceito de banco de dados), ou nenhuma das sugestões na lista é considerada
adequada pelo usuário, StdTrip fornece uma lista de triplas de outros vocabulários
que poderia ser uma possível combinação. O raciocínio é o seguinte “se o seu
conceito não está abrangido por qualquer dos padrões conhecidos, olhe em volta
e veja como os outros o tratam. Ao escolher um vocabulário já em uso, você irá
torná-lo mais fácil de interligar ao seu vocabulário, do que através da criação de um
novo vocabulário. ”
Conclusão. Se nada funciona, os usuários são direcionados para o Best Practice
Recipes for Publishing RDF Vocabularies[13].
Saída. O processo gera dois artefatos: (1) um arquivo de configuração, para servir
para a parametrização de uma ferramenta de triplificação padrão. (2) uma ontologia
que contém os mapeamentos do esquema de banco de dados original para o
vocabulários padrão RDF.
MASTRO
MASTRO[23] é uma ferramenta desenvolvida na linguagem de programação
JAVA, criado na Universidade de Roma “La Sapienza” e na Universidade Livre de BozenBolzano. Essa ferramenta foi desenvolvida com o objetivo de gerenciar sistemas de acesso
a dados baseados em ontologias ( Ontology-Based Data Access - ODBA ).
A ideia dessa ferramenta consiste em descrever uma ontologia num formato
derivado do DL-Lite e expressar sentenças genéricas da lógica de primeira ordem. Dessa
forma MASTRO é uma estrutura que permite a definição de mapeamentos entre um
banco de dados relacional e uma ontologia e a emissão de consultas conjuntivas expressas
em EQL, uma linguagem semelhante ao SQL. Dessa forma, MASTRO é uma suíte de
ferramentas de acesso a dados de base ontológica que reformula uma consulta conjuntiva
expressa através de uma ontologia para uma consulta SQL que é avaliada sobre um
banco de dados relacional. Existem também nessa aplicação algoritmos otimizados para
responder a consultas expressivas, bem como possui um sistema para recursos verificação
da consistência das requisições.
4.9 Resumo dos Sistemas Analisados
55
MASTRO fornece uma API proprietária, mas também possui uma interface
compatível com a OWLAPI, e um plugin para o editor de ontologias Protégé.
4.9
Resumo dos Sistemas Analisados
Nesse momento, é possível realizar uma abordagem comparativa sobre os sistemas de mapeamento tratados nesse capítulo. Na Tabela 4.1, alguns critérios são utilizados
para analisar as características desses sistema.
Tabela 4.1: Resumo Trabalhos Relacionados
Sistema
Funcionamento
MorphRDB Manual não sintático sem ontologia
RDRoute
Manual não sintático sem ontologia
RDB2OWL Manual não sintático com ontologia
Marson
Automático sintático com ontologia
Ronto
Semiautomático
sintático
com
ontologia
AuReLi
Automático sintático com ontologia
StdTrip
Manual não sintático sem ontologia
Mastro
Restrição
-
Relacional NoSQL
Sim
Não
Integrado
Não
-
Sim
Não
Não
-
Sim
Não
Não
-
Sim
Não
Não
-
Sim
Não
Não
-
Sim
Não
Parcial
Banco de Sim
dados na
3a forma
normal
Manual não sintá- Ontologia Sim
tico com ontologia em DLLite
Não
Não
Não
Não
Segue uma explicação detalhada de cada coluna dessa tabela na lista a seguir.
1. Sistema. apresenta-se o nome da ferramenta analisada.
2. Funcionamento. resumo das principais características, sendo o primeiro elemento
o modo de execução da ferramenta, esse modo é dividido em manual( usuário realiza as vinculações entre elementos da ontologia com os do banco de dados ),
semiautomático ( usuário atual apenas validando os resultados ) e automático ( ferramenta gera o mapeamento sem a intervenção do usuário ). O método de análise
da ontologia e do banco de dados, é divido em não sintático, não analisa lexicograficamente por meio de alguma medida matemática a relação entre elementos da
ontologia e do banco de dados, e sintático, o qual possui essa análise lexicográfica
4.10 Sobre o Capítulo
3.
4.
5.
6.
56
com algum tipo de coeficiente de similaridade. O terceiro item dessa coluna referese à existência de uma ontologia de destino para mapear o banco de dados, ou seja,
nos casos que o sistema não tem uma ontologia, o sistema geralmente gera uma
ontologia a partir do banco de dados. Nos casos que a coluna aparece com o valor
“com ontologia”, significa que o usuário informa uma ontologia de destino, no qual
o banco de dados é mapeado.
Restrição. apresenta alguma exigência do sistema.
Relacional. indica se o sistema tem suporte ao mapeamento de bancos de dados do
tipo relacional.
NoSQL. indica se o sistema tem suporte ao mapeamento de bancos de dados do
tipo NoSQL.
Integrado. o sistema gera um mapeamento integrado com a nuvem semântica de
dados, observa-se que apenas o sistema AuReLi possui um mecanismo parcial de
integração de dados, onde os resultados são validados com a DBPedia.
4.10
Sobre o Capítulo
Ao longo deste capítulo, foram descritos trabalhos relacionados com a ferramenta proposta nessa dissertação, algumas dessas ferramentas trabalhando em processos
de mapeamento de bancos de dados para ontologia de forma manual e outras de forma
automática ou semiautomática.
Entretanto, esses trabalhos dedicam-se exclusivamente ao mapeamento de banco
de dados relacionais para ontologias específicas. Não existe uma preocupação em desenvolver um método que sirva tanto para mapear os bancos de dados relacionais quanto os
bancos de dados NoSQL. Além disso, esses trabalhos tem como foco o simples mapeamento do banco de dados para uma ontologia. Não existe uma preocupação em relacionar
esse dado à nuvem semântica, tornando assim a informação um verdadeiro Dado Aberto
Ligado.
CAPÍTULO 5
Solução Proposta
Como observado até o presente momento, o ato de mapear um banco de dados
para uma ontologia é uma tarefa complexa, onde vários caminhos podem ser adotados.
Das técnicas observadas no capítulo anterior é possível distinguir duas principais abordagens. A primeira consiste em gerar ontologias a partir de bancos de dados relacionais, a
segunda de mapear bancos de dados relacionais para uma ontologia preexistente.
Dentre essas duas abordagens, a segunda permite tratar um conjunto de bancos
de dados distintos de maneira uniforme. Mapear bancos de dados para uma ontologia é
uma atividade que permite tratar bases de dados segundo uma semântica conhecida. Ao
criar um mecanismo para mapeamento de um banco de dados para uma ontologia prédefinida, cria-se vantagens para a interpretação de dados. Ontologias buscam fornecer
uma descrição mais exata do conhecimento, eliminando ambiguidades e assim facilitando
o compartilhamento do conhecimento.
As soluções propostas até o momento apresentam limitações, tanto no que diz
respeito ao seu objetivo ao limitar-se aos bancos de dados relacionais, quanto ao fato de
que se restringem a realizar o mapeamento isolado entre os bancos de dados e a ontologia
sem se preocupar em relacionar esses bancos no contexto da Web Semântica como um
dado aberto ligado.
Pouca atenção foi dispensada até o momento para estabelecer esquemas de
mapeamento para bancos de dados NoSQL. Essa postura se justifica na medida que os
bancos de dados relacionais representam a maior fonte de dados na web atual. Entretanto,
faz-se necessária a avaliação dos bancos de dados não relacionais, pois esses vêm
ganhando espaço nos últimos anos, em detrimento dos relacionais em alguns cenários
particulares.
Da mesma forma, mapear um banco de dados para uma ontologia tem sido o
único foco dos trabalhos observados no capítulo anterior. O relacionamento desses dados
com o de outros repositórios semânticos representa a complementação do conteúdo dessas
bases de forma semântica. Essa complementação do conteúdo semântico representa uma
forma dinâmica de expandir o conhecimento do banco de dados.
5.1 Mapeamento Semântico de Banco de Dados
5.1
58
Mapeamento Semântico de Banco de Dados
Ao definir o objetivo desse trabalho, na Seção 1.2, apresentou-se uma definição
da palavra mapeamento. Em seguida, apresentou-se como principal objetivo desse trabalho o processo de mapeamento entre um conjunto de bancos de dados e uma ontologia de
referência.
Um banco de dados é uma forma de representação de dados, assim como tantos
outros formatos existentes que apresentam uma semântica implícita. Mapear um banco
de dados para uma ontologia, consiste na tentativa de apresentar os dados segundo um
formato que favoreça a apresentação desse dados de forma que a semântica, ou seja, o seu
significado, se torne explícito.
Ontologia é uma forma de representação de informação que favorece a descrição
do significado das coisas, não somente para o ser humano, mas também para o computador.
O título desse trabalho, Mapeamento Semântico de Banco de Dados, refere-se ao
ato de tornar os bancos de dados analisados melhores descritos semanticamente. A Figura
5.1, representa o ato do mapeamento semântico de um banco de dados.
(a) Tabelas para Nodos
(b) Banco de Dados Mapeado
Figura 5.1: Mapeamento Semântico de Banco de Dados
No exemplo da Figura 5.1(a), observa-se um banco de dados relacional, ou seja,
suas informações são apresentadas em tabelas, sendo mapeado para os nodos de uma
ontologia. Nesse processo, são estabelecidos relacionamentos entre cada tabela do banco
de dados relacional e um ou mais nodos da ontologia. Ao final do processo, Figura 5.1(b),
o banco de dados mapeado para a ontologia de referência, pode ser acessado usando as
definições presentes na ontologia.
5.2 Etapas da Solução
59
Ao conseguir estabelecer uma relação entre um modelo de dados simples, como
o banco de dados relacional, para uma modelo de dados mais detalhado, a ontologia,
pode-se dizer que ocorreu um detalhamento semântico do modelo de dados.
O processo de mapeamento semântico requer que os elementos mapeados apresentem uma coincidência de domínios, total ou parcial. Em outras palavras, o banco de
dados mapeado para a ontologia de referência deve representar um domínio, ao menos
próximo, do domínio tratado na ontologia. Não faz sentido, por exemplo, tentar mapear
um banco de dados que trate de um domínio como ecologia, para uma ontologia que trate
de um domínio como mecânica de automóveis.
A solução apresentada nesse capítulo, consiste na proposta para realizar o dito
Mapeamento Semântico de Banco de Dados.
5.2
Etapas da Solução
A solução proposta nesse trabalho para o mapeamento semântico de bancos
de dados divide-se em duas etapas. Na primeira parte, define-se um mecanismo para
estabelecer um mapeamento entre um banco de dados e uma ontologia. Na segunda parte,
relaciona-se o conteúdo dos bancos de dados, agora definidos segundo uma ontologia de
referência, com entidades de outros repositórios semânticos.
5.2.1
Mapeando entre Bancos de Dados e Ontologia
A proposta de mapeamento semântico desse trabalho, consiste em inferir um
mapeamento entre os elementos que definem um banco de dados segundo uma ontologia pré-definida. Considerando os diferentes paradigmas de bancos de dados existentes,
como observado no Capítulo 2, é possível dividir os elementos do banco de dados em
dois tipos. O primeiro tipo, chamado agrupador primário, representa a forma de agrupamento de informação mais geral, o que corresponde às classes da ontologia. O segundo
tipo, chamado agrupador secundário, corresponde à uma estrutura de agrupamento mais
detalhada, tomada como as propriedades de uma classe da ontologia.
A Tabela 5.1 apresenta essa forma de dividir os dados, tomados pelo paradigma
de banco de dados que os definem.
Como pode ser observado na Tabela 5.1, a divisão em dois níveis da informação
está presente em todos os paradigmas de bancos de dados. No caso do paradigma ChaveValor, a chave representa tanto o agrupador primário quanto o secundário, pois a maioria
desses bancos possui uma estrutura de chaves do tipo tipo-de-objeto:id-do-objeto:campodo-objeto, por exemplo user:21:username.
5.2 Etapas da Solução
60
Tabela 5.1: Modos de agrupamento de dados por paradigma de
banco de dados
Paradigma
Relacional
Orientado a Objetos
Chave-Valor
Orientado a Colunas
Orientado a Documentos
Orientado a Grafos
Agrupador Primário
Tabelas
Classes de Objeto
Chaves
Família de Colunas
Coleções
Nós
Agrupador Secundário
Colunas
Propriedades de Objeto
Chaves
Colunas
Atributo
Arestas
No caso dos bancos orientados a objetos, o que representa a classe e a propriedade do objeto depende do tipo de implementação do banco. Nos casos de bancos do tipo
objeto-relacional, esses correspondem às próprias tabelas e colunas.
Neste trabalho, o termo elementos do banco de dados, refere-se aos agrupadores
primários e secundários de cada paradigma de banco de dados, descritos na Tabela 5.1.
Classificação Sintática
A fim de aumentar a probabilidade de acerto na inferência do mapeamento
entre classes e propriedades da ontologia com os elementos provenientes do banco de
dados analisado, realiza-se uma classificação sintática dos nomes desses elementos e
das classes e propriedades provenientes da ontologia. Nesse processo, é possível utilizar
bases de conhecimento específicas para realizar essas classificações, tais como a base de
conhecimento da WordNet.
Uma vez realizada a classificação sintática das classes e propriedades da ontologia e dos elementos do banco de dados, é possível definir candidatos dentro dos bancos
de dados a serem mapeados a uma correspondente classe ou propriedade na ontologia.
Definindo Candidatos
Tomando como exemplo um banco de dados relacional, uma classe poderia ser
mapeada para uma tabela desse banco. Da mesma forma, em um banco de dados orientado
a documentos, a própria estrutura conhecida como coleção de documentos poderia ser
observada como candidata a uma classe da ontologia. A estrutura conhecida como coluna,
no caso do banco de dados relacional, seria o candidato à propriedade dessa ontologia,
enquanto no banco de dados orientado a documentos seria o atributo de um documento.
Utilizando um dicionário como a WordNet, os relacionamentos entre synsets
tornam-se as primeiras evidências de uma possível correspondência entre o elemento do
banco de dados e a classe ou propriedade da ontologia. A Tabela 5.2 apresenta algumas
possibilidades com relação à definição de candidatos entre banco de dados e ontologia.
5.2 Etapas da Solução
61
Tabela 5.2: Relação entre synsets da ontologia com synsets do
banco de dados
Relação
Sinônimos
Hiperônimos ou Hipônimos
Merônimos ou Holônimos
Antônimos
É um candidato?
Possível candidato. Nesse caso, observa-se também na ontologia propriedades owl:sameAs,
owl:equivalentClass, owl:equivalentProperty
Possível candidato. Elemento do banco pode ser definido com um termo mais ou menos geral que o da
ontologia. Vale também observar propriedades como
rdfs:subClassOf e rdfs:subPropertyOf
Possível candidato. Elemento pode representar parte
de uma correspondente classe ou propriedade da ontologia.
Não forma um candidato, mas observa-se propriedades como owl:inverseOf
Ontologias são formas de representar conhecimento, assim como esquemas
de bancos de dados. No ato de mapear elementos do banco de dados para classes e
propriedades da ontologia deve-se considerar a possibilidade de uma agrupador primário
do banco de dados representar mais de uma classe da ontologia e vice-versa, por isso
relações como merônimos e holônimos devem ser consideradas.
Ao final do processo de classificação sintática, uma série de candidatos a classes
e propriedades da ontologia são definidas dentro do banco de dados, formando conjuntos
de candidatos. Busca-se então refinar esses resultados realizando operações de álgebra de
conjuntos.
Tomando como exemplo o caso de um banco de dados relacional, as colunas de
uma tabela podem ser vistas como as partes ou características da entidade representada
pela tabela. Cada coluna pode ser vista como uma entidade que se relaciona com a tabela,
por meio de uma relação considerada intuitiva sobre o ponto de vista de um ser humano. O
computador não dotado dessa capacidade cognitiva, carece de um mecanismo para tornar
explícitas essas relações.
Filtrando Candidatos
Inicialmente, define-se os candidatos na ontologia para representar os agrupadores primários e secundários do banco de dados. A seguir, sabendo-se das relações que
podem existir entre os candidatos a classes, com os correspondentes candidatos a propriedades, realiza-se um processo de filtragem dos candidatos, considerando-se as relações
entre esses candidatos.
O próximo passo é eliminar os elementos que não possuam uma relação correspondente a nenhum dos elementos do outro conjunto de candidatos. Dessa forma, elimina-
5.2 Etapas da Solução
62
se tabelas candidatas a uma classe da ontologia que não possua nenhuma coluna candidata
a propriedade da ontologia sobre a referida classe. Da mesma forma, elimina-se colunas
candidatas a uma propriedade da ontologia, onde a tabela correspondente não seja candidata a nenhuma classe da ontologia que possua essa propriedade. A Figura 5.2 representa
essa relação. Serão eliminadas da lista de candidatos a entidade da tabela o elemento B e
da lista de candidatos a entidade da coluna o elemento Z.
Figura 5.2: Tabelas x Colunas
Pode-se considerar uma situação mais concreta, a fim de tornar mais claro o
entendimento do processo. A Figura 5.3 apresenta uma situação hipotética. Em um banco
de dados existe uma tabela cadposto a qual deseja-se mapear para uma ontologia. Através
do processo descrito nas seções anteriores, infere-se as palavras que deram origem ao
nome da tabela cadposto. Na análise, ignorou-se o prefixo cad considerando-se somente
a palavra posto, sendo essa uma palavra válida da língua inglesa.
Figura 5.3: Processo de Associação do Banco de Dados com Ontologia de Referência
Em seguida, associa-se essa palavra, posto, com os nodos da ontologia chamados cargo e estabelecimento. A associação ocorre, pois esses nodos possuem nomes que
5.2 Etapas da Solução
63
são sinônimos da palavra posto. Entretanto, a tabela cadposto possui colunas chamadas
lati e long, as quais foram mapeadas como possíveis candidatas às propriedades latitude_estabelecimento e longitude_estabelecimento da ontologia. Não foi estabelecida nenhuma relação de candidato entre uma propriedade da classe cargo com colunas da tabela
cadposto, pois as colunas da tabela cadposto não apresentaram similaridades léxicas com
as propriedades da classe cargo, logo o candidato cargo é eliminado da lista de possíveis
correspondências na ontologia com a tabela cadposto.
Esse procedimento é realizado entre a tabela e cada coluna, formando vários
conjuntos de relacionamentos entre a tabela e suas colunas. Seleciona-se a relação entre
classe da ontologia com a tabela do banco de dados, que possuir maior número de relações
entre propriedades da ontologia com colunas do banco de dados correspondente. A Figura
5.4 representa essa situação, onde os conjuntos T1 , T2 , ..., Tn representam subconjuntos
de candidatos a entidades da tabela provenientes do conjunto original e os conjuntos
C1 ,C2 , ...,Cn representam os candidatos a entidades das colunas.
Figura 5.4: Tabela x Colunas
Por fim, realiza-se a operação de intersecção entre os conjuntos de candidatos a
entidades da tabela: TR = T1 ∩ T2 ∩ ... ∩ Tn . Dessa forma, tem-se um conjunto resultante
somente com aqueles possíveis candidatos que possuírem pelo menos uma relação com
cada conjunto de candidatos a entidade da coluna.
Após executadas as etapas descritas anteriormente, espera-se que a maioria das
tabelas do banco de dados possua uma lista de poucos candidatos a entidades da tabela.
Nesse ponto, analisa-se o relacionamento existente entre as tabelas do banco. Conforme
descrito no apêndice B, os relacionamentos entre indivíduos de classes de ontologias
ocorrem por meio de propriedades de objetos. Nos bancos de dados, os relacionamentos
entre tabelas ocorrem por chaves estrangeiras, relações de herança entre outros critérios,
dependendo do paradigma de banco de dados analisado.
5.2 Etapas da Solução
64
Pode-se realizar uma série de consultas à base de conhecimento, utilizando como
sujeito e objeto da relação combinações de pares de entidades provenientes dos conjuntos
de candidatos existentes entre ambas as tabelas.
Após todas as etapas descritas anteriormente, se ainda restarem múltiplos candidatos a entidades de tabelas e colunas, é realizada uma etapa adicional de ranqueamento,
onde serão atribuídas pontuações aos candidatos de tabelas e colunas.
5.2.2
Mapeamento para Repositórios Semânticos
Uma vez estabelecido o mapeamento entre os bancos de dados analisados e a
ontologia, torna-se possível relacionar os elementos do banco de dados com classes e
entidades de outros repositórios semânticos. Dessa forma, o dado proveniente do banco
de dados pode ser utilizado com dados provenientes de outras fontes com informações
complementares.
A fim de entender como seria esse processo de complementação dos resultados
provenientes de outras fontes de dados, toma-se o exemplo apresentado na Figura 5.5.
Considerando uma tabela “PessoaFamosa”, proveniente de um banco de dados relacional,
contendo apenas duas colunas. A primeira coluna chamada “Nome” e a segunda chamada
“Nascimento”.
Figura 5.5: Complementação de Colunas
Através do relacionamento entre os elementos dessa tabela com as entidades
de outros repositórios semânticos, tais como a DBPedia, descobre-se que esses nomes
correspondem aos verdadeiros nomes de alguns cantores famosos. Dessa forma é possível
derivar uma nova coluna “Apelido”, obtida a partir das propriedades givenName da
ontologia da DBpedia.
Tomando um segundo exemplo, apresentado na Figura 5.6. Considerando uma
tabela “Atores”, contendo três colunas. A primeira coluna chamada “Doutor”, a segunda
5.2 Etapas da Solução
65
chamada “Interpretado Por” e a terceira “Duração”. Através do relacionamento entre os
elementos dessa tabela com as entidades de outros repositórios, descobre-se tratar-se
de atores que interpretaram o personagem Doctor Who, na série de ficção científica de
mesmo nome. Entretanto, observa-se que existem apenas dez linhas nessa tabela. Pode-se
assim derivar uma nova linha correspondente ao décimo primeiro ator que interpretou o
personagem na série.
Figura 5.6: Complementação de Linhas
Todo esse processo de mapeamento, entre o banco de dados representado sobre
a ontologia e os repositórios semânticos, acontece por buscas de similaridade de conteúdo
entre os elementos do banco de dados referenciado sobre a ontologia e categorias definidas
previamente sobre o conteúdo esperado sobre aquele repositório semântico.
Categorizando o Acesso a Repositórios Semânticos
Repositórios Semânticos podem apresentar definições complexas, utilizando
ontologias com centenas ou até milhares de classes e propriedades. Esses modelos por
sua vez podem ser utilizados para definir milhões de entidades, geralmente relacionadas
utilizando triplas RDF que interconectam essas entidades fornecendo um dado descrito
com uma riqueza de detalhes que muitas vezes não é encontrada nos bancos de dados
convencionais.
Uma vez que tentar analisar esses complexos repositórios para realizar a vinculação a um banco de dados é um processo complexo que exigiria um esforço muito grande,
tenta-se simplificar o processo de associação restringindo-o a definições particulares rea-
5.2 Etapas da Solução
66
lizadas por um usuário com algum conhecimento, mesmo superficial, sobre o repositório
analisado.
Essas definições simplificadas de elementos presentes nos repositórios são definidas nesse trabalho como categorias. Categorias são palavras chaves utilizadas para
acessar uma lista de consultas descritas em SPARQL a repositórios semânticos diversos
cujo resultado dessas consultas podem ser relacionadas ao banco de dados analisado.
A fim de compreender melhor essa definição, pode-se considerar um exemplo:
tomando a palavra “droga”, um ser humano possui uma série de formas de definir o
significado dessa palavra. Droga é uma palavra polissêmica, possui vários possíveis
significados, sendo o mais utilizado aquele relativo a substâncias entorpecentes, apesar
de também ser utilizado para produtos da indústria farmacêutica.
No repositório semântico da DBPedia, uma droga, adotando o significado
de produto farmacêutico, pode ser definida como uma entidade que forme uma
tripla RDF com a propriedade de objeto rdf:type relacionando-se com a classe
http://dbpedia.org/ontology/Drug do repositório DBPedia. Dessa forma, o mapeamento
do conceito para esse repositório poderia ser estabelecido utilizando uma consulta
SPARQL como a apresentada no Código 5.1.
Código 5.1 Consulta SPARQL a DBPedia
PREFIX owl : < h t t p : / / www. w3 . o r g / 2 0 0 2 / 0 7 / owl #>
PREFIX x s d : < h t t p : / / www. w3 . o r g / 2 0 0 1 / XMLSchema#>
PREFIX r d f s : < h t t p : / / www. w3 . o r g / 2 0 0 0 / 0 1 / rdf−schema #>
PREFIX r d f : < h t t p : / / www. w3 . o r g / 1 9 9 9 / 0 2 / 2 2 − rdf−s y n t a x −n s #>
PREFIX : < h t t p : / / d b p e d i a . o r g / r e s o u r c e / >
PREFIX d b p e d i a 2 : < h t t p : / / d b p e d i a . o r g / p r o p e r t y / >
PREFIX d b p e d i a : < h t t p : / / d b p e d i a . o r g / >
SELECT ? e n t i t y
WHERE {
? e n t i t y r d f : t y p e < h t t p : / / d b p e d i a . o r g / o n t o l o g y / Drug > .
}
O conceito de droga, no contexto de produto farmacêutico, pode ser mapeado
também para outro repositório semântico como o Dailymed. Esse repositório apresenta
uma lista dos medicamentos comercializados nos Estados Unidos da América. Nesse
5.2 Etapas da Solução
67
repositório, uma droga pode ser definida como uma entidade que forme uma tripla
RDF com a propriedade de objeto rdf:type relacionando-se com a classe http://wifo504.informatik.uni-mannheim.de/dailymed/resource/dailymed/drugs.
Dessa forma, o mapeamento do conceito para esse repositório poderia ser feito
através da consulta SPARQL apresentada no Código 5.2.
Código 5.2 Consulta SPARQL a Dailymed
PREFIX v o c a b C l a s s : < h t t p : / / wifo5 −04. i n f o r m a t i k . u n i −mannheim . de
/ dailymed / vocab / r e s o u r c e / c l a s s / >
PREFIX db : < h t t p : / / wifo5 −04. i n f o r m a t i k . u n i −mannheim . de /
dailymed / r e s o u r c e / >
PREFIX r d f s : < h t t p : / / www. w3 . o r g / 2 0 0 0 / 0 1 / rdf−schema #>
PREFIX d 2 r : < h t t p : / / s i t e s . w i w i s s . fu−b e r l i n . de / s u h l / b i z e r / d2r−
s e r v e r / c o n f i g . r d f #>
PREFIX map : < f i l e : / C : / a p p s / d a i l y m e d / d a i l y m e d . n3 #>
PREFIX owl : < h t t p : / / www. w3 . o r g / 2 0 0 2 / 0 7 / owl #>
PREFIX x s d : < h t t p : / / www. w3 . o r g / 2 0 0 1 / XMLSchema#>
PREFIX r d f : < h t t p : / / www. w3 . o r g / 1 9 9 9 / 0 2 / 2 2 − rdf−s y n t a x −n s #>
PREFIX d a i l y m e d : < h t t p : / / wifo5 −04. i n f o r m a t i k . u n i −mannheim . de /
dailymed / r e s o u r c e / dailymed / >
SELECT ? e n t i t y
WHERE {
? e n t i t y r d f : t y p e < h t t p : / / wifo5 −04. i n f o r m a t i k . u n i −mannheim . de /
dailymed / r e s o u r c e / dailymed / drugs > .
}
O mesmo conceito pode ser definido em diferentes repositórios, cada um desses
repositórios podendo trabalhar aspectos particulares daquele conceito em maior ou menor
escala.
Resumidamente, nesse trabalho o termo categorias correspondem a palavras
chaves utilizadas para acessar uma lista de consultas SPARQL com as definições daquela
palavra chave em repositórios semânticos específicos.
As categorias utilizadas na solução desse trabalho são armazenadas nas tuplas de
um banco de dados SQLite. Além do nome da categoria são definidos também para cada
categoria uma consulta SPARQL e o endereço do SPARQL Endpoint utilizado.
5.2 Etapas da Solução
68
Definidas as categorias utilizadas para associar elementos do banco de dados
com repositórios semânticos, resta agora realizar a associação entre bancos de dados e
repositórios semânticos.
Analisando Agrupadores Primários
O primeiro passo consiste em realizar uma leitura dos agrupadores primários do
banco de dados sendo analisado. Nesse processo, busca-se encontrar sinônimos para as
palavras utilizadas pelo projetista de banco de dados para definir os agrupadores primários
do banco de dados. Como exemplo, no caso de um banco de dados relacional, a tabela
é o agrupador primário. Uma tabela com o nome município, poderia ter sido definida
similarmente utilizando a palavra cidade ao invés de município.
Sabendo que muitas vezes projetistas de banco de dados não utilizam palavras
planas para definir seus agrupadores primários uma análise de padrões é realizada sobre
esses agrupadores. Busca-se padrões como o Camel Case, palavras planas separadas por
caracteres especiais e palavras planas simplesmente concatenadas. Caso não consiga achar
um padrão de nomeação dos agrupadores primários, utiliza-se um padrão heurístico para
análise das palavras.
Lematização
Uma vez que as palavras utilizadas para realizar a nomeação dos agrupadores
primários foram encontradas, utiliza-se a Wordnet como dicionário para obter os sinônimos correspondentes dessas palavras.
As palavras utilizadas para definir os agrupadores primários, assim como seus
sinônimos e as categorias definidas no banco de dados são lematizadas, removendo
flexões de gênero, número e grau, assim como flexões verbais quando for o caso.
Associando Categorias com Agrupadores Primários
Tomando cada um dos agrupadores primários do banco de dados e os sinônimos encontrados para esse agrupador, lematizados na etapa anterior, compara-se esses
agrupadores e seus sinônimos com as categorias definidas no banco de dados.
Caso seja encontrada alguma coincidência entre o agrupador e seus sinônimos
com uma ou mais categorias definidas no banco de dados, busca-se as consultas SPARQL
correspondentes àquelas categorias que coincidiram com o agrupador ou com um de seus
sinônimos.
Realiza-se as consultas SPARQL sobre os repositórios semânticos obtidos através das categorias. O resultados de uma consulta SPARQL são armazenados em uma lista
5.2 Etapas da Solução
69
em memória, e serão lematizadas assim como foram os nomes e sinônimos dos agrupadores primários.
A lista de resultados lematizados é então comparada com cada um dos agrupadores secundários daquele agrupador primário. Tomando novamente o exemplo do banco
de dados relacional com a tabela município, caso essa tabela possua duas colunas chamadas código e nome. A lista de resultados lematizados obtidos do repositório semântico é
comparada com cada uma dessas colunas tendo seus resultados também lematizados.
Caso sejam encontrados intersecções entre um agrupador secundário lematizado,
como a coluna nome do exemplo, e a lista de resultados lematizados da consulta SPARQL,
então é provável que o agrupador primário se relacione com a classe da ontologia
representada por aquela consulta SPARQL e as células daquela coluna de fato sejam
relacionadas com as entidades daquela classe do repositório semântico. No exemplo
citado da tabela de banco de dados relacional, município poderia estar se relacionando
com a classe http://dbpedia.org/ontology/City do repositório DBPedia.
Não afirma-se de fato que a tabela município do banco de dados de fato corresponde à classe do repositório da DBPedia, mas apenas define-se a probabilidade de
representar essa, devido à coincidência entre o identificador das entidades dessa classe da
ontologia e o conteúdo da célula da coluna nome. Se houve uma coincidência entre os
elementos de apenas 2% dos resultados por exemplo, muito provavelmente essa coincidência não é exata. Entretanto, se a coincidência é da ordem de 90%, é bem provável que
essa correspondência seja exata.
Os resultados não são descartados por possuírem índices de correspondência
percentual baixos, mas são ordenados de forma a apresentar para o usuário as associações
com maior percentual.
Analisando Agrupadores Secundários
Uma vez encontrada uma associação provável entre um agrupador primário
do banco de dados com uma classe do repositório semântico, seria possível analisar
essa classe para buscar suas propriedades e tentar relacioná-las com outros agrupadores
secundários daquela classe do repositório semântico.
No exemplo da tabela município do banco de dados relacional, caso ela tenha
sido também associada com a classe http://schema.org/City da comunidade schema.org,
uma análise de suas demais colunas, no exemplo citado restaria a coluna código, poderia
ser associada como a propriedade de objeto globalLocationNumber desse repositório.
Da mesma forma, como na análise dos agrupadores primários, classifica-se os
resultados de acordo com o índices de correspondência percentual entre os resultados
provenientes do banco de dados com o repositório semântico sendo analisado.
5.2 Etapas da Solução
70
Encontrar possíveis correspondências entre os agrupadores secundários de banco
de dados com as propriedades da classe do repositório semântico analisado reforça a
probabilidade da associação correta do agrupador primário.
5.2.3
Gerando Formatos Abertos de Mapeamento de Dados
Feito o processo de mapeamento descrito nas seções anteriores, torna-se possível
apresentar o resultado na forma de um Dado Aberto Ligado. Recapitulando o exposto na
Tabela 2.1, um Dado Aberto Ligado pode possuir várias classificações.
Nesse trabalho, optou-se pelo modelo de 5 estrelas proposto por Berners-Lee,
descrito na Tabela 2.1. Dessa forma, o mapeamento realizado deve ser publicável na web
como um dado estruturado, em formato não proprietário, identificado por URI e ligado a
outros dados para fornecer contexto.
Na seção 2.2.3 apresentou-se o RDF, um formato de dados que facilita o
intercâmbio de dados na web. Esse formato pode ser utilizado para disponibilizar os dados
do mapeamento realizado.
Ao disponibilizar o mapeamento entre os bancos de dados e a ontologia de referência, torna-se possível construir aplicações que acessam os bancos de dados utilizando
a ontologia de referência como camada de abstração, como pode ser observado na Figura
5.7.
Figura 5.7: Modelo de Acesso de Dados por Ontologia
Observa-se que, independente do banco de dados, do paradigma que o define,
a aplicação pode acessá-lo utilizando somente as definições de dados especificadas na
ontologia.
5.3 Sobre o Capítulo
71
No próximo capítulo, apresenta-se em detalhes o arquivo de mapeamento gerado
a partir da solução descrita nesse trabalho.
5.3
Sobre o Capítulo
Nesse capítulo, foi apresentada uma proposta de solução para o mapeamento
entre ontologias e bancos de dados, com base na classificação gramatical das palavras
que definem os elementos do banco de dados e da ontologia, assim como na utilização de
operações da álgebra de conjuntos.
A solução apresentada difere dos trabalhos realizados até o momento, pois se
propõem a mapear bancos de dados relacionais e NoSQL. Da mesma forma, essa solução
busca a integração do resultado como um dado aberto ligado.
No capítulo seguinte, será apresentada a proposta de um sistema que implementa
os conceitos descritos nesse capítulo. Num primeiro momento, é apresentado um projeto
em função de seus requisitos. Em seguida, apresenta-se os detalhes de implementação
relacionados ao desenvolvimento dessa aplicação.
CAPÍTULO 6
Projeto do Sistema de Mapeamento de Banco de
Dados
Nesse capítulo, será descrito o projeto para o desenvolvimento do sistema de
mapeamento de banco de dados proposto nesse trabalho. Seguindo as conceitos de projeto
propostos pela Engenharia de Software, esse projeto foi dividido em quatro partes.
Segundo Pressman [63]: “Projeto de Software é a parte da Engenharia de
Software que se encarrega de transformar os resultados da Análise de Requisitos em um
documento ou conjunto de documentos capazes de serem interpretados diretamente pelo
programador.”
Na primeira parte, foi realizada uma etapa de análise, onde foram definidos os
requisitos funcionais e requisitos não funcionais da ferramenta proposta. Em seguida, na
etapa de projeto foi realizada a modelagem, por meio de diagramas, e a arquitetura do
sistema proposto. Após a elaboração do projeto, procedeu-se ao seu desenvolvimento e
posteriormente ao processo de teste da aplicação, sendo essa última etapa descrita no
próximo capítulo.
Os critérios adotados para desenvolver o sistema de mapeamento aqui proposto,
foram o baixo acoplamento e a alta coesão do conteúdo gerado, conceitos esses conhecidos e bastante difundidos dentro da Engenharia de Software.
O baixo acoplamento do código gerado visa facilitar o entendimento e eventual
necessidade de manutenção ou extensão de suas funcionalidades. Além disso, outros
benefícios decorrentes do baixo acoplamento são facilidade ao realizar o processo de
teste de classes, métodos, funções e módulos em contexto individual.
Sobre o critério adotado de coesão do código, busca-se o ganho de flexibilidade
decorrente desse conceito, assim como evitar efeitos conhecidos, decorrentes de sua
omissão, tais como dificuldades de extensões, modificações e reutilizações futuras.
6.1 Atores
6.1
73
Atores
Antes de realizar o levantamento de requisitos da ferramenta proposta, é necessário definir quais são os atores do sistema. Dá-se nome de ator a um papel desempenhado por entidades físicas (pessoas ou outros sistemas) que interagem com o sistema
da mesma maneira, procurando atingir os mesmos objetivos. Uma mesma entidade física
pode desempenhar diferentes papéis no mesmo sistema, bem como um dado papel pode
ser desempenhado por diferentes entidades [56].
O ator não representa a pessoa ou sistema e sim o papel que essa pessoa ou
sistema representa para a aplicação. A seguir são descritos os atores do sistema.
1. Desenvolvedor: indivíduo que relaciona domínios específicos ao extrator de dados,
por meio de uma série de possíveis categorias representativas. Da mesma forma,
esse indivíduo relaciona o repositório semântico a uma consulta SPARQL. Domínios e repositórios semânticos são explicados nos subitens a seguir.
Repositórios Semânticos: domínios geralmente acessíveis, por meio de linguagens de consulta como SPARQL, Web Services ou API de comunicação específica. A aplicação busca esses repositórios para reforçar a categorização de uma
entidade de banco de dados, como fonte de complementação de conteúdo, em caso
solicitado pelo usuário.
Página para Extração: página web onde o extrator de dados busca informação
complementar, de acordo com uma categoria definida previamente pelo desenvolvedor. O acesso do sistema a esse geralmente é realizado por meio de requisições
HTTP e processamento de linguagem natural.
2. Usuário: indivíduo que se comunica com a aplicação requisitando informações a
respeito do conteúdo dos bancos de dados marcados semanticamente.
6.2
Requisitos da Aplicação
Requisitos de software são um conjunto de atividades que o software deve
desempenhar, com suas limitações e restrições, além das características não ligadas
diretamente às funções desempenhadas pelo software [72]. Nesta seção, serão descritos
os requisitos funcionais e não funcionais da aplicação proposta.
6.2.1
Requisitos Funcionais
Requisitos Funcionais são declarações de serviços que o sistema deve prover,
descrevendo o que o sistema deve fazer, como o sistema deve reagir a entradas específicas,
6.2 Requisitos da Aplicação
74
como o sistema deve se comportar em situações específicas e o que o sistema não deve
fazer [71].
A partir dos Requisitos Funcionais descreve-se as funcionalidades necessárias
para que casos de usos sejam colocados em prática. Segundo Jacobson[46], um Caso de
Uso é um “documento narrativo que descreve a sequência de eventos de um ator que usa
um sistema para completar um processo”. A partir deles, é possível identificar as ações
que devem ser executadas para que o sistema atinja seu objetivo
A construção do Modelo de Casos de Uso corresponde a uma das primeiras
etapas no projeto de software, pois essa etapa determina os usos que o sistema terá.
A Figura 6.1 apresenta o diagrama de casos de uso adotado por esse projeto.
Figura 6.1: Casos de Uso do Sistema
• Selecionar Ontologia: O sistema deve permitir ao usuário definir qual ontologia
será utilizada para o processo de anotação semântica.
• Adicionar Banco de Dados: O sistema deve permitir ao usuário adicionar um ou
mais bancos de dados a serem anotados semanticamente.
• Anotar Banco de Dados: O sistema deve ser capaz de realizar marcação de
anotações em bancos de dados, relacionais ou NoSQL, que associem suas entidades
com as classes e entidades de uma ontologia.
• Complementar Anotações: O sistema deve ser capaz de complementar as anotações realizadas, associando as respectivas com entidades de outros repositórios ou
domínios específicos para o qual exista um extrator ou consulta SPARQL associada.
• Alterar Anotação: O sistema deve permitir ao usuário alterar as associações
realizadas entre a Ontologia e o Banco de Dados feitas por anotações.
6.2 Requisitos da Aplicação
75
• Apresentar Anotações: O sistema deve permitir ao usuário gerar um formato de
representação aberta para o processo de anotação. Essa representação deve atender
aos paradigmas de Dados Abertos Ligados.
• Ocultar Anotações: O sistema deve permitir ao usuário ocultar associações realizadas entre a ontologia e o banco de dados.
• Associar Extratores: O sistema deve permitir ao Desenvolvedor indicar um novo
domínio para complementar as buscas, associando esse domínio a um conjunto de
categorias.
• Associar Repositórios: O sistema permite ao Desenvolvedor indicar um novo repositório semântico para complementar as buscas, associando uma consulta SPARQL
a um conjunto de categorias.
6.2.2
Requisitos Não Funcionais
Requisitos Não-Funcionais dizem respeito às restrições sobre os serviços ou funções do sistema. Por exemplo, restrições de tempo, restrições do processo de desenvolvimento, usabilidade, confiabilidade, desempenho, suporte, padrões, etc [64].
A elaboração dos requisitos não funcionais foi baseada na Norma ISO 9126.
Essa norma propõe um Modelo de Qualidade de Software baseado em 6 atributos de
qualidade: Funcionalidade, Confiabilidade, Usabilidade, Eficiência, Manutenibilidade e
Portabilidade.
Adaptações foram necessárias para a aplicação proposta e o domínio de problemas que deseja-se tratar. Para o atributo Funcionalidade, foram definidos os requisitos
Interoperabilidade e o requisito Segurança; para o atributo Confiabilidade foram definidos
os requisitos Recuperabilidade e Tratamento de Exceções; para o atributo Usabilidade foi
definido o requisito Inteligibilidade; como Eficiência foram definidos os requisitos Paralelismo e Balanceamento de Carga; para o atributo Manutenibilidade foi definido o requisito
Estabilidade; para o atributo Portabilidade foi definido o requisito Flexibilidade.
Alguns outros requisitos que não possuem um termo correlato na norma foram
adotados. Esses requisitos são Simplicidade, Modularidade e Semântica.
• Interoperabilidade: O sistema desenvolvido nessa proposta deve possuir funcionalidades que permitam a interação com outros sistema, podendo ser, por exemplo,
frameworks e interfaces com o usuário.
• Segurança: a arquitetura disponibiliza as informações dos bancos de dados anotados semanticamente, mas permite indicar quais informações devem ser ocultadas
• Recuperabilidade: o sistema deve possuir a capacidade de recuperar anotações
referentes aos bancos de dados analisados.
6.3 Modelagem, Arquitetura e Arquivo de Resultado
76
• Tratamento de Exceções: o sistema deve possuir um mecanismo de identificação
e tratamento de exceções adequado.
• Inteligibilidade: o sistema deve possuir um mecanismo simples de utilização,
permitindo ao usuário interagir com esse de modo a aperfeiçoá-lo.
• Paralelismo: o sistema deve possuir um mecanismo de paralelização de tarefas
tanto no que se refere à notação semântica dos bancos de dados quanto à utilização
e a manipulação do arquivo de representação intermediária utilizado para realizar
consultas aos bancos de dados.
• Balanceamento de Carga: o sistema deve possuir a capacidade de distribuir as
tarefas de forma ponderada entre os recursos de processamento.
• Estabilidade: o sistema deve possuir a capacidade de receber alterações sem
grandes efeitos colaterais. A estrutura básica de funcionamento desse deve ser capaz
de receber novos módulos que permitam a extensão das funcionalidades.
• Flexibilidade: o sistema pode manipular a informação de modo uniforme, se
adaptando conforme o volume dessa, estando preparado para crescer. O sistema
deve ser flexível e permitir a substituição de elementos externos utilizados. Em
um contexto mais amplo, o sistema deve possuir um alto nível de coesão e baixo
acoplamento.
• Simplicidade: a capacidade de agregar novos agentes, sejam eles extratores ou
repositórios semânticos, deve ser o mais simples possível;
• Modularidade: as ferramentas serão disponibilizas como módulos, trabalhando
como agentes de software;
• Semântica: a arquitetura deve permitir o acesso, armazenamento, processamento
e comunicação dos dados de forma semântica, utilizando ontologias, metadados e
feedback dos usuários.
6.3
Modelagem, Arquitetura e Arquivo de Resultado
Nesta seção, detalha-se o design do projeto, a arquitetura do sistema proposto e
o arquivo de resultado. Em um primeiro momento apresenta-se a arquitetura do sistema
em seus mínimos detalhes. Esta arquitetura foi baseada nos requisitos levantados e nas
funcionalidades esperadas desse framework. Em um segundo momento, apresenta-se o
formato do arquivo de resultado produzido pela aplicação. Finalmente, é apresentada a
modelagem proposta para o sistema, através da apresentação de diagramas de sequência.
A partir da definição explícita da arquitetura e modelagem do sistema, será possível definir, de forma clara, os recursos a serem empregados numa eventual implementação
dessa proposta. No apêndice D, apresenta-se uma descrição da base de dados utilizada por
essa aplicação.
6.3 Modelagem, Arquitetura e Arquivo de Resultado
6.3.1
77
Arquitetura
Nesta seção, apresenta-se a arquitetura do sistema proposto para o mapeamento
de banco de dados, assim como os componentes dessa arquitetura. Esse modelo é baseado
nos requisitos definidos no início desse capítulo. Os componentes dessa arquitetura são
o Motor de Execução, o Analisador Léxico/Sintático, o Extrator, o Cliente SPARQL e a
Interface com Usuário.
A Figura 6.2 apresenta esses componentes e como eles se relacionam.
Figura 6.2: Arquitetura Proposta
Interface
Componente responsável por realizar todas as interações com o Usuário ou com
o Desenvolvedor, assim como processar o resultado dos demais componentes e apresentar
o resultado do processo de anotação.
Através desse módulo, o usuário seleciona a ontologia que deseja utilizar como
referência no processo de anotação. O Usuário fornece dados para a conexão da aplicação
com um ou mais Banco de Dados, tais como nome do banco de dados, usuário e senha.
O Desenvolvedor pode criar uma categoria e associar a ela uma consulta
SPARQL a ser executada em um Repositório Semântico específico. Da mesma forma,
o Desenvolvedor pode associar a uma categoria uma consulta XQuery a ser executada
sobre um domínio especificado por um URL.
Motor de Execução
Componente responsável por unir o resultado dos outros componentes do sistema, produzir as anotações semânticas, gerar categorias de complementação e produzir
uma saída em formato aberto do relacionamento entre ontologia e bases de dados.
6.3 Modelagem, Arquitetura e Arquivo de Resultado
78
Um dos objetivos desse projeto é realizar a marcação semântica de bancos de
dados, tomando por base uma ontologia de referência. Em segundo plano, os bancos
de dados marcados semanticamente são complementados adicionando relações entre os
elementos dessas bases de dados com entidades de domínios ou repositórios semânticos
específicos por meio de categorias pré-definidas.
Essa etapa de complementação do conteúdo do banco de dados permite um enriquecimento dos resultados de aplicações que utilizem as notações semânticas produzidas
na primeira etapa.
Uma vez que tenham sido realizadas as classificações léxicas e sintáticas das
palavras pelo Analisador Léxico e Sintático, o Motor de Execução produz as primeiras
anotações semânticas sobre os bancos de dados. Em seguida, utiliza-se o Extrator e o
Cliente SPARQL para encontrar possíveis categorias ao qual essa entidade de banco de
dados possa estar vinculada.
Por fim, gera-se um arquivo em formato RDF, que contém as relações entre os
bancos de dados e as ontologias, assim como os URLs e repositórios semânticos que
podem ser usados para complementar cada um dos elementos do banco de dados.
Analisador Léxico/Sintático
O Analisador Léxico/Sintático é uma ferramenta responsável por realizar a
análise das classes e entidades das ontologias, assim como dos elementos do bancos de
dados; sejam tabelas e colunas, chaves e valores, documentos e colunas ou nós e arestas.
A Figura 6.3 apresenta um modelo desse Analisador Léxico.
Figura 6.3: Analisador Léxico/Sintático
6.3 Modelagem, Arquitetura e Arquivo de Resultado
79
Esse componente analisa individualmente a ontologia de referência, assim como
cada um dos bancos de dados a serem anotados. A análise de uma ontologia ou banco de
dados inicia-se pelo processo de leitura dos nomes utilizados pelos elementos do bancos
de dados ou ontologias, onde a ferramenta Localizador de Padrões busca detectar padrões
utilizados no processo de nomeação desses elementos.
Alguns padrões utilizados recorrentemente por projetistas de bancos de dados
e ontologias são a utilização do Camel Case para nomeação de palavras, por exemplo
PrimeiroElemento. Da mesma forma, é muito comum a utilização de caracteres especiais
para realizar a separação de palavras, tais como em primeiro_elemento.
Caso o Localizador de Padrões não consiga achar um padrão de nomeação,
utilizado pela ontologia ou banco de dados analisado, esse responde ao controlador
indicando a necessidade de utilização de um padrão heurístico para análise das palavras.
Após a definição do padrão utilizado para as palavras, o controlador invoca
o Analisador Linguístico para realizar um processo de definição da linguagem natural
utilizada no processo de nomeação dos elementos da ontologia ou do banco de dados.
O Analisador Linguístico verifica a existência em dicionários linguísticos das palavras
utilizadas para nomear os elementos, nas linguagens naturais inglês, francês, espanhol,
italiano e português. O processo de análise é abortado caso não seja detectada uma
linguagem para o banco ou ontologia.
Sabendo-se quais são as palavras utilizadas para nomear os elementos do banco
ou ontologia, assim como as línguas em que foram escritas, o controlador chama o
Tradutor. Esse componente converte os nomes dos elementos para uma linguagem natural,
nesse caso adotou-se o inglês.
Uma vez traduzidas para o inglês, as palavras são analisadas e classificadas
sintaticamente, utilizando a ontologia da WordNet. São obtidos dessa os sinônimos,
antônimos, merônimos, holônimos, hipônimos e hiperônimos de cada palavra utilizada
para representar o elemento do banco de dados ou ontologia analisada.
O resultado desse procedimento é então retornado para o Motor de Execução.
Extrator
O Extrator é uma aplicação responsável por buscar informações complementares
em páginas web específicas, que estejam vinculadas a uma categoria. Pode-se observar o
funcionamento desse componente pela Figura 6.4.
6.3 Modelagem, Arquitetura e Arquivo de Resultado
80
Figura 6.4: Módulo Extrator
O Extrator recebe como entrada um elemento do banco de dados, sejam colunas,
valores ou nós de um grafo. A seguir o extrator realiza um processo de requisições a
domínios específicos, que tenham sido alimentados anteriormente pelo Desenvolvedor,
tentando vincular esse elemento a esses domínios.
Uma vez que tenha sido encontrada uma possível categorização do elemento
do banco de dados, novas requisições são feitas sobre aquele domínio, utilizando outras
instâncias do mesmo elemento da base de dados. Não é necessário que todas as instâncias
encontrem um correspondente elemento naquele domínio, mas apenas que uma parcela
significativa da amostra possua essa correspondência. Nesse trabalho, adotou-se como
critério que pelo menos oitenta por cento das amostras possuam essa correspondência.
A fim de compreender melhor o que acontece, pode-se considerar um exemplo:
o extrator recebe uma coluna de um banco de dados relacional com a descrição name_act,
dessa coluna são extraídas uma amostra de dez células. Nesse momento, os pares de URL
e Seletores JQuery, definidos pelo Desenvolvedor, são utilizados para buscar relacionamentos entre a coluna com domínios pré-definidos. Nesse processo, um dos domínios
definidos pelo desenvolvedor poderia ser o do URL http://sg.media-imdb.com/suggests/,
usando o seletor JQuery #prometer_container h1.header[itemprop=name]. Dentre as dez
células analisadas, nove foram encontradas nesse domínio, ao qual o Desenvolvedor associou as categorias ator, atriz, filme. É razoável atribuir a essa coluna as respectivas
categorias associando com esse URL.
Cliente SPARQL
O Cliente SPARQL é uma aplicação responsável por buscar informações complementares em repositórios semânticos específicos, que estejam vinculadas a uma categoria. Pode-se observar o funcionamento desse componente pela Figura 6.5.
6.3 Modelagem, Arquitetura e Arquivo de Resultado
81
Figura 6.5: Módulo Cliente SPARQL
O Cliente SPARQL recebe como entrada um elemento do banco de dados, sejam
colunas, valores ou nós de um grafo. A seguir, o Cliente SPARQL realiza um processo
de requisição a repositórios semânticos, alimentados anteriormente pelo Desenvolvedor,
tentando vincular esse elemento a entidades desses repositórios.
Uma vez que tenha sido encontrada uma possível categorização do elemento do
banco de dados, novas requisições são feitas sobre aquele SPARQL Endpoint, utilizando
outras instâncias do mesmo elemento da base de dados. Não é necessário que todas
as instâncias encontrem um correspondente elemento naquele domínio, mas apenas
que uma parcela significativa da amostra possua essa correspondência. Nesse trabalho,
adotou-se como critério que pelo menos oitenta por cento das amostras possuam essa
correspondência.
A fim de compreender melhor o que acontece, pode-se considerar um exemplo:
o Cliente SPARQL recebe um atributo de um banco de dados orientado a documentos
com a descrição FamousMountain, desse atributo é extraída uma amostra de dez células.
Nesse momento, as consultas SPARQL definidas previamente pelo Desenvolvedor são
utilizadas para buscar nomes de montanhas nesses repositórios. Nesse processo, um dos
domínios definidos pelo desenvolvedor poderia ser o do GeoNames, usando consulta
SPARQL definida no Código 6.1.
Código 6.1 Exemplo de Consulta SPARQL
PREFIX gn :< http :// www . geonames . org / ontology #>
SELECT ?x MIN(? code ) MIN(? name ) MIN(? iso ) WHERE {
?x gn : featureCode ? code ;
gn : name ? name ;
gn : countryCode ? iso .
FILTER (? code IN ( gn :T.MT , gn :T. MTS ))
}
GROUP BY ?x
ORDER BY MIN(? name )
6.3 Modelagem, Arquitetura e Arquivo de Resultado
82
Dentre as dez células analisadas, oito foram encontradas nesse repositório, ao
qual o Desenvolvedor associou as categorias local, montanha. É razoável atribuir a essa
coluna às respectivas categorias, associando-a com esse repositório.
6.3.2
Arquivo de Resultado
Após fazer o mapeamento de um banco de dados para uma ontologia de referência, cria-se um arquivo de resultados. O arquivo de resultados possui os mapeamentos
realizados entre a ontologia e o banco de dados. Da mesma forma, esse arquivo possui os
mapeamentos feitos entre o banco de dados e os repositórios semânticos.
O formato escolhido para registrar os resultados da aplicação, a fim de atender
os requisitos de um Dado Aberto Ligado, é o RDF. A Figura 6.6 apresenta um exemplo
do arquivo de resultado produzido pela aplicação.
Figura 6.6: Exemplo de Resultado da Aplicação
Na primeira linha do arquivo, observa-se que o base do arquivo é a ontologia de
referência. Além disso, os arquivos possuem referências às especificações dos formatos
OWL, RDF, RDFS e FOAF, descritas da segunda até a quinta linha.
Os prefixos endpoint1 e endpoint2, descritos na sexta e na sétima linha, correspondem a Repositórios Semânticos onde foram encontradas associações com uma tabela,
através do Cliente SPARQL.
O agrupador primário do banco de dados, é definido no arquivo de resultados
utilizando o prefixo table seguido do nome do agrupador. No exemplo da figura, na nona
linha, é descrita como <#table-nome_no_banco_de_dados>. Esse agrupador primário
do banco de dados, é definido como o correspondente a uma classe da ontologia de
referência, descrito na decima linha do arquivo.
Na décima primeira e décima segunda linhas do arquivo de resultados, apresentase referências para SPARQL Endpoints descobertos pelo Cliente SPARQL. Finalmente, na
6.3 Modelagem, Arquitetura e Arquivo de Resultado
83
décima terceira e décima quarta linha do arquivo de resultados, apresenta-se referências a
domínios descobertos pelo Extrator.
Essa descrição continua para cada agrupador primário do banco de dados analisado.
6.3.3
Modelagem
A modelagem dessa proposta foi definida através do uso de diagramas de
sequência. Um diagrama de sequência representa, de forma clara, por meio de um fluxo
de execução, representado por linhas verticais, e comunicação inter-processos por linhas
horizontais, a colaboração dinâmica existente entre os processos que compõem o sistema.
Através desse tipo de diagrama, é possível observar o que acontecerá em um ponto
específico do programa, assim como os passos necessários para a conclusão de uma
determinada ação.
Foram identificados três fluxos de atividades básicas para o sistema proposto,
logo foram definidos três diagramas de sequência. No primeiro diagrama, que pode ser
observado na Figura 6.7, apresenta-se o processo de mapeamento de um banco de dados
para uma ontologia de referência. No segundo diagrama, apresentado na Figura 6.8, o
Desenvolvedor define uma nova categoria associada a um domínio. Finalmente, na Figura
6.9, o Desenvolvedor define uma categoria associada a um SPARQL Endpoint.
O primeiro diagrama, Figura 6.7, começa com a definição do Usuário da ontologia utilizada como referência e do banco de dados a ser anotado. O Motor de Execução
redireciona os endereços de bancos de dados e ontologia para o Analisador Léxico/Sintático, onde esse identifica padrões utilizados para nomear os elementos, a linguagem
natural utilizada e a classificação sintática das palavras. O Motor de Execução então associa os elementos de bancos de dados com elementos da ontologia. Em seguida, o Motor
de Execução consulta o Extrator para buscar categorização dos elementos da tabela e,
após isso, consulta o Cliente SPARQL para buscar categorização desses mesmos elementos com SPARQL Endpoint. Por fim, o Motor de Execução devolve para o usuário um
arquivo, em formato RDF, com o mapeamento e com a categorização realizada.
6.3 Modelagem, Arquitetura e Arquivo de Resultado
84
Figura 6.7: Mapeando Bancos de Dados e Ontologia
O segundo diagrama de sequências, Figura 6.8, inicia-se com uma requisição
do Desenvolvedor pela inclusão de uma nova categoria vinculada a um domínio. O
sistema pede ao Desenvolvedor que informe o URL da página a ser procurado, assim
como o seletor em JQuery para encontrar o campo a ser relacionado. O sistema executa
uma requisição contra essa página web utilizando o URL e o seletor especificado.
Se for encontrado um elemento válido no caminho do seletor, o sistema apresenta ao
Desenvolvedor possíveis resultados e pergunta se esse deseja adicionar a nova categoria.
O Desenvolvedor confirma a nova categoria e o sistema persiste o URL e o seletor
vinculados a essa categoria.
Figura 6.8: Vinculando Categoria a um Domínio
6.4 Desenvolvimento da Aplicação
85
O terceiro diagrama de sequências, Figura 6.9, inicia-se com uma requisição do
Desenvolvedor pela inclusão de uma nova categoria vinculada a um SPARQL Endpoint.
O sistema pede ao Desenvolvedor que informe o URL a ser procurado, assim como a
consulta em SPARQL a ser executada. O sistema executa uma requisição contra esse
SPARQL Endpoint utilizando o URL e a consulta especificada. Se a consulta produzir um
resultado válido, o sistema apresenta ao Desenvolvedor possíveis resultados e pergunta
se esse deseja adicionar a nova categoria. O Desenvolvedor confirma a nova categoria e o
sistema persiste o URL e a consulta vinculados a essa categoria.
Figura 6.9: Vinculando Categoria a um Domínio
6.4
Desenvolvimento da Aplicação
Neste seção, são descritos os principais passos executados na implementação do
Anotador Semântico de Banco de Dados. A implementação a ser apresentada, é baseada
na análise e projeto realizados nas seções anteriores deste capítulo. Da mesma forma,
foram utilizados grande parte dos conceitos descritos nos Capítulos 2 e 3.
Inicialmente, são descritas as principais tecnologias utilizadas para construir
a aplicação, assim como as configurações utilizadas nos sistemas do qual a aplicação
foi testada. Em seguida, apresenta-se as fontes de informação utilizadas para realizar o
processo de mapeamento e integração do resultado. Por fim, apresenta-se um exemplo de
funcionamento da aplicação num contexto simplificado.
O funcionamento da aplicação em contexto real é apresentado no Capítulo 7,
onde uma análise estatística detalhada sobre o funcionamento da aplicação sobre bases de
dados de sistemas reais é desenvolvida.
6.4 Desenvolvimento da Aplicação
6.4.1
86
Tecnologias Empregadas
Para o desenvolvimento do Anotador Semântico de Banco de Dados, foi utilizado
o ambiente de desenvolvimento Eclipse Kepler, além das ferramentas JDK 1.8.0_05;
Apache Jena 2.11.0; JAWS 1.3; gtranslateapi 1.0 e drivers de conexão jdbc específicos
para os bancos de dados PostgreSQL, Firebird, Oracle, SQLite, Cassandra e MongoDB.
No Apêndice C, são apresentadas explicações mais detalhadas sobre algumas
das ferramentas citadas.
A aplicação desenvolvida foi testada nos Sistemas Operacionais Windows 7
Professional SP1, no Apple OS X Yosemite IOS 8.1 e no Ubuntu 14.04.1 Desktop.
6.4.2
Bases de Dados Linguísticas
Na Subseção 6.3.1, o Analisador Léxico/Sintático apresenta uma estrutura de vários subcomponentes necessários para o seu funcionamento. Dentre esses subcomponentes dois deles, Analisador Linguístico e Localizador de Padrões, necessitam de uma base
de informações com palavras consideradas válidas nos idiomas suportados pelo Anotador
Semântico de Banco de Dados.
Apesar de existirem Web Services de dicionários disponíveis na web, permitindo
consultas a palavras específicas de um idioma, o custo em termos de desempenho de
desenvolver esses subcomponentes utilizando esses Web Services é elevado.
A fim de viabilizar o desenvolvimento desses subcomponentes com o grau de
desempenho desejado, optou-se por embutir os dicionários na aplicação na forma de um
banco de dados linguístico, utilizando SQLite.
Foram utilizados os pacotes linguísticos disponibilizados como add-ons do
Navegador Firefox1 . Esses pacotes linguísticos são utilizados para sistema de correção
ortográfica, tanto de navegadores de internet quanto de editores de texto.
Cada pacote linguístico possui dois arquivos, um arquivo com a lista de palavras
do idioma tendo uma extensão .dic e um arquivo com as regras de flexão de sufixos e
prefixos, tendo a extensão .aff.
Cada linha do arquivo de extensão .dic possui uma única palavra, podendo ser
seguido ou não de uma sequência de letras e números. Tomando um exemplo de algumas
linhas do dicionário de francês, como pode ser observado na Figura 6.10.
1 https://addons.mozilla.org/en-US/firefox/language-tools/,
último acesso em Dezembro de 2014
6.4 Desenvolvimento da Aplicação
87
Figura 6.10: Exemplo de dicionário do pacote de francês
As letras indicam flexões que podem ser utilizadas, havendo diferenciação entre letras maiúsculas e minúsculas. As regras de flexões correspondentes encontram-se
no arquivo de extensão .aff, sendo essas regras dividas em SFX para sufixos e PFX para
prefixos. Tomando como exemplo um prefixo, sendo a mesma regra aplicável para sufixos, esse possui a seguinte regra: PFX <letra-identificadora> <número-de-letras-paradeletar> <o-que-adicionar> <quando-adicionar-(expressão-regular)>. A Figura 6.11
apresenta algumas regras do pacote de inglês.
Figura 6.11: Exemplo de regras do pacote de inglês
Se “B” é uma das letras indicadas no arquivo de dicionário, então existem três
flexões que podem ocorrer, pois existem três linhas no arquivo. No exemplo da Figura
6.11, tomando a primeira linha, able é adicionado ao final da palavra quando essa não
termina com uma vogal (question pode ser flexionada para questionable). Explicações
mais detalhadas sobre a sintaxe de arquivos de dicionários podem ser encontradas na
página de desenvolvedores do projeto Chromium 2 .
Visando a construção da base de dados linguística, construiu-se uma aplicação
para ler os arquivos .dic e .aff de cada pacote. Essa aplicação lê cada linha do arquivo
.dic e gera as derivações possíveis de cada palavra de acordo com as regras definidas
no arquivo .aff. As palavras formadas são inseridas numa tabela de uma única coluna
chamada verbetes. O Código 6.2 corresponde ao código SQL necessário para a criação
dessa tabela de banco de dados.
2 http://www.chromium.org/developers/how-tos/editing-the-spell-checking-dictionaries,
em Novembro de 2014
último acesso
6.4 Desenvolvimento da Aplicação
88
Código 6.2 Tabela Verbetes
CREATE TABLE ‘ verbetes ‘ (
‘nome ‘ TEXT NOT NULL,
PRIMARY KEY( nome )
);
Essa tabela possui todas as palavras presentes no idioma analisado, tanto suas
formas primitivas quanto suas derivações. Conforme foi relatado na subseção 6.3.1,
o Anotador Semântico de Banco de Dados foi projetado para compreender o Inglês,
Português, Francês, Italiano e Espanhol. Dessa forma, foi criado um banco de dados para
cada um dos idiomas citados.
6.4.3
Categorias Utilizadas
Ao longo desse trabalho, reiteradamente afirmou-se o objetivo de não somente
realizar o mapeamento de banco de dados para um domínio semântico, mas também
integrar o dados mapeando a nuvem semântica de dados abertos.
O número de repositórios semânticos, cuja informação encontra-se disponível
de forma aberta e integrada com outros repositórios semânticos aumenta a cada dia. Na
Figura 6.12 é possível ver em alta perspectiva como os repositórios semânticos estão
interligados.
Figura 6.12: Nuvem de Dados Abertos Ligados, Abril de 2014[32]
6.4 Desenvolvimento da Aplicação
89
É possível garantir essa integração com outros repositórios, bastando que a
ontologia tomada como referência no processo de mapeamento dos bancos de dados,
já esteja ligada à nuvem de dados abertos. Entretanto, uma vez que esse trabalho se
propôs a desenvolver um mecanismo automático de disponibilização das informações
provenientes dos bancos de dados na forma de dados abertos ligados, torna-se necessário
o desenvolvimento de uma ferramenta como o Cliente SPARQL descrito na Subseção
6.3.1.
Tanto com relação ao Cliente SPARQL, quanto com relação ao Extrator trabalhase com categorias vinculadas a um determinado recurso. No caso do Extrator, essa
categoria corresponde a um recurso da Web 2.0, ou seja, da Web Social onde os recursos
não são adequados para a leitura de máquinas. No caso do Cliente SPARQL, a categoria
é vinculada a um recurso da Web 3.0, ou seja, da Web Semântica onde os recursos são
explicitamente descritos e os dados são interligados.
De modo geral, as categorias selecionadas definem as ligações que a aplicação
tenta realizar entre o dado proveniente do banco de dados e elementos externos da Web
2.0 e da Web 3.0. Dessa forma, as categorias selecionadas são muito importantes para
definir a qualidade do Dado Aberto Ligado.
A despeito do procedimento para incluir uma categoria no banco de dados,
conforme relatado na Seção 6.3.3, nesse momento são descritas as categorias utilizadas
nas simulações realizadas nesse trabalho. É importante citar que essa não é uma lista
exaustiva, centenas de outras categorias podem ser registradas, abrangendo, se preciso,
todos os recursos de todos os repositórios semânticos ou de milhões de domínios da web.
Tomando-se primeiramente o módulo Extrator, foram registradas algumas categorias vinculados principalmente a buscadores de variados tipos, desde músicas até pesquisadores e trabalhos acadêmicos. A Tabela 6.1 apresenta as categorias utilizadas:
Tabela 6.1: Categorias Extrator
Categoria
Domínio
filme
imdb.com
filme
themoviedb.org
música
vagalume.com.br
música
musicbrainz.org
jogo
thegamesdb.net
jogo
gamesdbase.com
jogo
ultimategamedb.com
pesquisador
lattes.cnpq.br
Em seguida, foram analisadas as categorias vinculadas ao Cliente SPARQL.
Uma vez que foram registradas mais de uma centena de categorias com relação ao
Cliente SPARQL, optou-se apenas por indicar algumas categorias vinculadas a DBPedia,
6.4 Desenvolvimento da Aplicação
90
ao Dailymed e ao Diseasome, mostradas na Tabela 6.2. Observa-se que as categorias
escolhidas são tanto de propósito geral quanto específico. As classes Ator, Cantor,
Escritor na ontologia da DBPedia são todas subclasses da classe Artista, dessa forma
uma vinculação bem sucedida a uma dessas três categorias também pode ser a categoria
Artista. O objetivo é realizar a vinculação mais específica possível, logo a categoria Artista
assume um caráter residual no processo de vinculação.
Outros repositórios, além dos relatados na Tabela 6.2, foram utilizados, totalizando vinte três repositórios, tais como o Yago2[42], GeoSPARQL[4], GeoSpecies[33],
LinkedMovieDatabase[39], Freebase[15], . . .
6.4.4
Exemplo de Utilização
A fim de tornar mais claro o processo de funcionamento do Anotador Semântico
de Banco de Dados, apresenta-se um exemplo simples de funcionamento do sistema.
Supondo que um usuário tivesse uma ontologia simples, de apenas duas classes,
pessoa e cidade, tendo algumas poucas propriedades. A ontologia em questão pode ser
observada na Figura 6.13, sendo apresentada no formato Turtle[7] e descrita em português
brasileiro.
Figura 6.13: Ontologia de Exemplo
6.4 Desenvolvimento da Aplicação
91
Tabela 6.2: Categorias Cliente SPARQL
Categoria
Repositório
agrotóxico
http://dbpedia.org/sparql
anatomia
http://dbpedia.org/sparql
animal
http://dbpedia.org/sparql
artista
http://dbpedia.org/sparql
atleta
http://dbpedia.org/sparql
ator
http://dbpedia.org/sparql
ave
http://dbpedia.org/sparql
bactéria
http://dbpedia.org/sparql
bebida
http://dbpedia.org/sparql
cantor
http://dbpedia.org/sparql
cidade
http://dbpedia.org/sparql
comida
http://dbpedia.org/sparql
cor
http://dbpedia.org/sparql
doença
http://dbpedia.org/sparql
doença
http://wifo5-03.informatik.uni-mannheim.de/diseasome/sparql
droga
http://dbpedia.org/sparql
droga
http://wifo5-04.informatik.uni-mannheim.de/dailymed/sparql
empresas
http://dbpedia.org/sparql
empresas farmaceuticas http://wifo5-04.informatik.uni-mannheim.de/dailymed/sparql
escritor
http://dbpedia.org/sparql
evento
http://dbpedia.org/sparql
flores
http://dbpedia.org/sparql
fungo
http://dbpedia.org/sparql
gene
http://wifo5-03.informatik.uni-mannheim.de/diseasome/sparql
instituições de ensino
http://dbpedia.org/sparql
livro
http://dbpedia.org/sparql
moeda
http://dbpedia.org/sparql
musgo
http://dbpedia.org/sparql
música
http://dbpedia.org/sparql
país
http://dbpedia.org/sparql
peixe
http://dbpedia.org/sparql
periódico acadêmico
http://dbpedia.org/sparql
personagem fictício
http://dbpedia.org/sparql
pessoa
http://dbpedia.org/sparql
pesticida
http://dbpedia.org/sparql
província
http://dbpedia.org/sparql
quadrinhos
http://dbpedia.org/sparql
substância química
http://dbpedia.org/sparql
6.4 Desenvolvimento da Aplicação
92
Esse usuário deseja realizar o mapeamento semântico de um banco de dados de
uma loja varejista para essa ontologia simples. Supondo que esse banco de dados seja um
banco de dados PostgreSQL, onde as tabelas do banco de dados e suas colunas foram
descritas em inglês conforme o manual de usuário do sistema. O usuário então define a
ontologia de referência utilizada, as informações de conexão com o banco de dados e o
idioma do banco de dados. Como o usuário não tem conhecimento do padrão utilizado
para fazer a nomeação das colunas e das tabelas, o campo “Padrão” fica com o valor
“Desconhecido”. Os campos preenchidos pelo usuário podem ser observados na Figura
6.14.
Figura 6.14: Adicionando um Banco de Exemplo
O usuário então, sabendo que a ontologia possui apenas uma classe cidade e uma
classe pessoa, escolhe essas opções na aba “Categorias”. Após essa definição, o usuário
seleciona a aba “Principal” e clica no botão Aplicar.
A primeira tarefa do Anotador Semântico de Banco de Dados é realizar a classificação sintática tanto da ontologia quanto do banco de dados. Sabendo que a ontologia foi
definida em português o Motor de Execução chama o Analisador Léxico/Sintático para
analisar a ontologia, conforme o descrito na Subseção 6.3.1.
Sabendo da linguagem utilizada, o Analisador Léxico/Sintático dispensa o uso
do Analisador Linguístico, chamando em seguida o Localizador de Padrões. O Localizador de Padrões testa o caso mais simples em que classes, entidades e propriedades da
ontologia utilizem texto plano do português. Sendo o teste bem sucedido, o Analisador
Léxico/Sintático chama o Tradutor para converter o texto em inglês ( mantêm-se o texto
original apenas guardando esse valor em um texto a parte para ter uma linguagem de referência internacional ). Finalmente, o Analisador Léxico/Sintático consulta a WordNet
para fazer a classificação das palavras.
O Analisador Léxico/Sintático começa a analisar o banco de dados, sabendo
da linguagem utilizada, o Analisador Léxico/Sintático dispensa o uso do Analisador
6.4 Desenvolvimento da Aplicação
93
Linguístico, chamando em seguida o Localizador de Padrões. O Localizador de Padrões
testa o uso de texto plano, em seguida testa o uso de camel case, finalmente encontra
o padrão utilizado pelo banco de dados ao considerar o padrão de palavras em texto
plano separadas por caractere especial underline. Uma vez que os nomes de tabelas e
campos já estão em inglês o Analisador Léxico/Sintático dispensa o Tradutor, realizando
diretamente a consulta à WordNet e classificando as palavras.
O Motor de Execução começa a realizar cruzamento das informações sobre o
banco de dados e a ontologia, obtidas a partir do Analisador Léxico/Sintático. Após
realizar várias comparações, o Motor de Execução indica que a tabela clientes do banco de
dados possui uma relação de hiperônimo com a classe pessoa da ontologia. Além disso, a
tabela município do banco de dados possui uma relação de sinônimo com a classe cidade.
Uma vez estabelecidos os candidatos, começa o processo de comparação das
colunas e do banco de dados. O Motor de Execução detecta uma coluna description
na tabela de banco de dados, e interpreta isso como sendo um possível sinônimo para
a propriedade nome da classe pessoa, da mesma forma encontra uma correspondência
de uma coluna idade_cliente dessa mesma tabela com a propriedade idade da classe da
ontologia.
Ao comparar as colunas da tabela município com as propriedades da classe
cidade da ontologia, o Motor de Execução observa que a tabela possui uma coluna
has_ibge_code, da qual ele descarta o verbo has e observa que essa coluna da tabela
contém um substantivo igual à propriedade ibge da classe município.
Estabelecidos os candidatos a relacionamento entre colunas da tabela e propriedades da ontologia, o Motor de Execução agora analisa os Inviduals da ontologia. Como
o banco de dados é relacional, o Motor de Execução cria uma consulta buscando em cada
uma das colunas valores que coincidam com os Inviduals ou com as propriedades da ontologia. Caso o o banco de dados fosse NoSQL, o Motor de Execução buscaria cada um
individualmente.
O Código 6.3 apresenta o trecho do programa em java responsável por criar esse
código SQL.
6.4 Desenvolvimento da Aplicação
94
Código 6.3 Individual x Colunas
List < String > columns = table . Columns . stream ()
. filter (x ->x. ColumnType . equals (" string "))
. map ( x ->
x. Cells . get (0) . Content )
. collect ( Collectors . toList () );
String ontIndividuals = StringUtils . join (
ontClass . individualFacts . stream ()
. map (x -> " ’"+x. object . toLowerCase ()
. replace ("_" , " "). replace (" " , "")+" ’" )
. toArray () , " , ");
try {
if( ontClass . individualFacts . size () > 0) {
String sql = StringUtils . join ( columns . stream ()
. map (x -> String . format (
" select ’%1 $s ’, count (%1 $s ) from %2 $s where %3
$s " ,
x,
table . Name ,
String . format ( dbInf [0] , x ,
ontIndividuals )) )
. toArray () , " \n union \n ");
List < String [] > results = Arrays . asList (
db . GetStringArrayEntities (sql , new Object [] {}) ).
stream ()
. filter (x -> Integer . parseInt (x [1]) != 0)
. collect ( Collectors . toList () );
Uma vez que não existem Individuals na ontologia para classe pessoa, o código
SQL é construído somente em função da propriedade description, o qual não encontra
nenhum resultado. Entretanto, existe na ontologia Inviduals para a classe cidade. Dessa
forma, o Motor de Execução constrói uma consulta em função desses e da propriedade
ibge. A consulta construída pode ser observada no trecho de Código 6.4
6.4 Desenvolvimento da Aplicação
95
Código 6.4 SQL Individual x Colunas
select ’ description ’, count( description ) from municipio
where replace ( replace (lower( description ) , ’_ ’, ’ ’) , ’ ’, ’’)
in
( ’ goiânia ’, ’ caldasnovas ’, ’ trindade ’,
’ aparecidadegoiânia ’, ’ senadorcanedo ’)
union
select ’ has_ibge_code ’, count( has_ibge_code ) from municipio
where replace ( replace (lower( ibge ) , ’_ ’, ’ ’) , ’ ’, ’’) in
( ’ goiânia ’, ’ caldasnovas ’, ’ trindade ’,
’ aparecidadegoiânia ’, ’ senadorcanedo ’)
union
...
// outras colunas da tabela cruzadas com Inviduals
Após realizar essa consulta, o Motor de Execução verifica que todos os Inviduals
foram encontrados na tabela município, na coluna description.
Finalmente, o Motor de Execução considera o relacionamento entre as tabelas,
comparando-as com as Object Properties da ontologia. As duas tabelas do banco de dados
cliente e município estão ligadas por uma chave estrangeira, o qual o Motor de Execução
analisa como uma possível correspondência com a Object Property “mora” da ontologia.
Considerando-se todos os candidatos e os cálculos realizados até o momento, o
Motor de Execução anota a tabela município com uma anotação para a classe cidade da
ontologia. Como a relação entre a tabela cliente e a classe pessoa ocorreu por meio de
uma relação de hiperônimo, o Motor de Execução adiciona uma anotação à tabela cliente
como subclasse de pessoa.
A partir desse momento, o Anotador Semântico de Banco de Dados busca
realizar a categorização das tabelas anotadas de acordo com as categorias selecionadas
pelo usuário. Primeiramente, o Anotador Semântico verifica se existem registros na tabela
do Extrator para as categorias selecionadas pelo usuário. Em seguida, realiza consultas à
SPARQL Endpoint utilizando o Cliente SPARQL.
Ao realizar essas consultas, detecta-se uma correspondência entre a tabela município, anotada como correspondente da classe cidade, com a classe Town da DBPedia e
com a classe wikicategory_Locations_in_Brazil_(city) do Yago2. O Anotador Semântico
de Banco de Dados adiciona anotações de correspondência entre essa tabela anotada e as
correspondentes classes dos repositórios.
6.5 Sobre o Capítulo
6.5
96
Sobre o Capítulo
Nesse capítulo, foi apresentado o projeto de uma aplicação desenvolvida em
java, que implementa os conceitos discutidos no Capítulo 5. A aplicação foi apresentada
na forma de seus requisitos funcionais, requisitos não funcionais, atores e casos de uso,
descritos nas seções 6.1 e 6.2.
A seguir, uma descrição da aplicação em termos arquiteturais foi desenvolvida na
seção 6.3, onde explicou-se em detalhes o funcionamento de cada componente do sistema
e seu fluxo foi detalhado através de diagramas de sequência.
Finalmente, foi apresentado, na seção 6.4, os detalhes finos da aplicação, tais
como ferramentas utilizadas, modelagem do banco de dados, dicionários linguísticos e
categorias utilizadas.
Percebe-se que esse capítulo representa a síntese de todos os capítulos anteriores.
O conhecimento adquirido com pesquisas realizadas e descritas nos Capítulos 2, 3, 4
somados à proposta de mapeamento, desenvolvida no Capítulo 5, definiram os parâmetros
gerais dessa aplicação. De forma geral, o objetivo dessa aplicação é apenas servir como
uma ferramenta para provar o conceito de eficiência do método estabelecido nessa
proposta.
No capítulo seguinte, são apresentados resultados práticos dessa aplicação, viabilizando analisar as vantagens e desvantagens desse método com relação a outros desenvolvidos até esse momento.
CAPÍTULO 7
Análise de Resultados
Neste capítulo, é feita uma avaliação prática da ferramenta desenvolvida analisando seus resultados de forma estatística. Inicialmente, na Seção 7.1, são apresentados os
resultados dos testes sobre o agrupador primário dos bancos de dados analisados. A Seção
7.2 apresenta a análise dos resultados obtidos sobre o agrupador secundário, lembrando
que os agrupadores primários e secundários foram enumerados na Tabela 5.1 da Seção
5.2.1. A Seção 7.3 apresenta estatisticamente as associações semânticas realizadas com
outros repositórios. Por fim, discute-se na Seção 7.4 o desempenho global da aplicação,
considerando os resultados parciais obtidos anteriormente.
Por questão de simplificação, os bancos de dados utilizados nos testes são bancos
de dados de demonstração públicos, abrangendo os sistemas SQL Server, PostgreSQL,
MySQL e Apache Cassandra. Dessa forma, o teste realizado contempla tanto os tradicionais bancos de dados relacionais quanto um banco de dados NoSQL de exemplo.
Os bancos de dados utilizados para realizar os testes são: World1 , IMDB2
e Twissandra3 . Todos esses são bancos de dados simples, com poucos agrupadores
primários e esquemas desenvolvido principalmente para finalidades didáticas, de acordo
com o respectivo banco de dados para o qual foram desenvolvidos.
As ontologias utilizadas em cada um dos testes estão relacionadas na Tabela
7.1, sendo todas elas públicas. Algumas dessas ontologias são de repositórios semânticos
conhecidos, o que não inviabiliza o processo de associação semântica, no pior caso esse
procedimento apenas não encontra novos relacionamentos.
7.1
Resultados da Aplicação - Agrupadores Primários
Os bancos de dados escolhidos para realizar a análise de agrupadores primários
são bancos relacionais e orientados a colunas. Logo os agrupadores primários utilizados
1 https://dev.mysql.com/doc/world-setup/en/,
acessado em Janeiro de 2015
2 http://blog.secaserver.com/2013/08/importing-imdb-sample-data-set-mysql/,
2015
3 https://github.com/twissandra/twissandra, acessado em Janeiro de 2015
acessado em Janeiro de
7.1 Resultados da Aplicação - Agrupadores Primários
98
Tabela 7.1: Banco de Dados x Ontologias
Banco
de
Dados
World
IMDB
Twissandra
Ontologia
http://www.dbis.informatik.uni-goettingen.de/Mondial/
http://www.movieontology.org/downloads/
http://rdfs.org/sioc/ns#
são tabelas para os bancos relacionais e famílias de colunas para os orientados a colunas.
7.1.1
Experimento 1
Na Tabela 7.2, é possível visualizar as entradas e saídas do primeiro experimento,
realizado entre o banco de dados World e a ontologia do Mondial.
Tabela 7.2: Entrada e Saída Agrupador Primário - Experimento 1
Parâmetro
Banco de Dados
Idioma(Banco)
Padrão(Banco)
Idioma(Ontologia)
Padrão(Ontologia)
Valor
PostgreSQL
Inglês
Camel Case
Inglês
Camel Case
(a) Entradas
Métrica
Total de Classes Associáveis
Associações Corretas
Associações Incorretas
Não Associados
Total
3
3
0
0
(b) Saídas
No experimento realizado entre a ontologia e o banco de dados, a quantidade
de classes na ontologia é superior ao total de tabelas do banco de dados, sendo que a
ontologia abrange um domínio maior e mais representativo que o utilizado no banco de
dados. Dessa forma, não existem restrições com relação ao mapeamento entre a ontologia
e o banco de dados, ou seja, todas as tabelas do banco de dados podem ser mapeadas para
uma ou mais classes da ontologia.
As relações Country, City e CountryLanguage foram mapeadas respectivamente
para as classes Country, City e Language da ontologia. O fato das tabelas do banco de
dados possuírem nomes iguais ou próximos ao das classes da ontologia contribuiu para a
associação correta dos elementos da ontologia.
Contribuiu também o fato de que todos esses pares de ligações banco de dados
vs. ontologia tiveram intersecções em seus dados. Sobre as entidades Country, tanto da
ontologia quanto do banco de dados, a correspondência dos elementos foi integral, ou
seja, todos os elementos presentes no banco de dados possuíam uma entidade da classe
Country da ontologia com valor igual ou próximo (a ontologia Mondial não considera
sinais de acentuação latinos). Procedimento similar ocorreu com a entidade City, tanto
da ontologia quanto do banco de dados, ocorreu correspondência entre vários, mas não
todas, as instâncias da ontologia e do banco de dados.
7.1 Resultados da Aplicação - Agrupadores Primários
99
Sobre o relacionamento CountryLanguage do banco de dados com Language
da ontologia, a princípio a tabela CountryLanguage apresentou dois possíveis candidatos
na ontologia, sendo eles Country e CountryLanguage. Como existia a chave estrangeira
da tabela CountryLanguage para a tabela Country concluiu-se que essa estava apenas
representando uma ligação por meio de uma propriedade de objeto entre duas entidades
da ontologia.
7.1.2
Experimento 2
Na Tabela 7.3, é possível visualizar as entradas e saídas do segundo experimento,
realizado entre o banco de dados IMDB e a ontologia MovieOntology.
Tabela 7.3: Entrada e Saída Agrupador Primário - Experimento 2
Parâmetro
Banco de Dados
Idioma(Banco)
Padrão(Banco)
Valor
MySQL
Inglês
Palavras Planas
Separadas
por
Underline
Idioma(Ontologia) Inglês
Padrão(Ontologia) Nenhum
Métrica
Total de Classes Associáveis
Associações Corretas
Associações Incorretas
Não Associados
Total
9
8
0
1
(b) Saídas
(a) Entradas
No experimento realizado, utilizou-se o banco de dados IMDB, o qual agrega
informações de filmes, séries de televisão, informações sobre celebridades. A ontologia
utilizada, por outro lado, é utilizada para representar apenas informações sobre filmes.
Desse modo, o banco de dados utilizado representa um domínio maior que o apresentado
pela ontologia, o que implica em certas limitações na análise.
O banco de dados utilizado possui cerca de 9 relações que poderiam ser mapeadas para a ontologia. Desse total, 8 foram associadas corretamente e uma não foi
associada.
As tabelas name, aka_name e person_info foram compreendidas pelo sistema
como sendo tabelas ligadas a uma série de classes da ontologia: Costume_Design, Editor,
Film_Director, Musical_Artist, Produce, Writer e Artist. Enquanto no banco de dados
existe apenas uma entidade representando pessoas que trabalham no filme, na ontologia
esses são detalhados por classes específicas.
As tabelas title e aka_title foram mapeadas para a classe Movie da ontologia.
Esse mapeamento aconteceu mais pelo conteúdo das tabelas do que pelos termos utilizados para definir tabelas e colunas.
As tabelas company_name e movie_companies foram mapeadas para a classe
Product_Company da ontologia.
7.1 Resultados da Aplicação - Agrupadores Primários
100
Por fim, a tabela que não foi associada no processo de mapeamento semântico
foi a tabela cast_info. Essa tabela poderia ter sido mapeada para a classe pessoa, a qual
apresenta informações que representam genericamente as pessoas que trabalham em um
filme.
7.1.3
Experimento 3
Na Tabela 7.4, é possível visualizar as entradas e saídas do terceiro experimento,
realizado entre o banco de dados Twissandra e a ontologia SIOC.
Tabela 7.4: Entrada e Saída Agrupador Primário - Experimento 3
Parâmetro
Banco de Dados
Idioma(Banco)
Padrão(Banco)
Valor
Cassandra
Inglês
Palavras Planas
ou Concatenadas
Idioma(Ontologia) Inglês
Padrão(Ontologia) Palavras Planas
Métrica
Total de Classes Associáveis
Associações Corretas
Associações Incorretas
Não Associados
Total
6
4
2
0
(b) Saídas
(a) Entradas
Nesse experimento, foram utilizados um banco de dados orientado a colunas
que procura simular um modelo de dados para a rede social Twitter4 e uma ontologia
utilizada principalmente para representações de comunidades virtuais. O domínio tratado
pela ontologia e o banco de dados são muito próximos, não havendo famílias de colunas
no banco de dados utilizadas como metainformação. Dessa forma, não existem restrições
com relação ao mapeamento entre a ontologia e o banco de dados, ou seja, todas as
famílias de colunas do banco de dados podem ser mapeadas para uma ou mais classes
da ontologia.
O seguinte mapeamento foi realizado pela ferramenta de anotação: a família de
colunas user foi mapeada para a classe User Account, as famílias followers e following
foram mapeadas para a classe Agent, a família de colunas Tweet foi mapeada para a classe
Post, a família de colunas userline foi mapeada para as classes Forum e User Account e a
família de colunas timeline foi mapeada para a classe Forum.
No mapeamento realizado pela aplicação considera-se como incorreto o mapeamento realizado entre as famílias followers e following com a classe Agent, pois a associação mais provável numa rede social seria associá-la com a classe User Account. Apesar
de existir um relacionamento de subclasse entre User Account e Agent, a aplicação não
conseguiu definir uma relação de candidato entre as famílias de colunas do banco de dados e a classe User Account. O dicionário linguístico utilizado para realizar a análise
4 https://twitter.com/?lang=pt
7.2 Resultados da Aplicação - Agrupadores Secundários
101
léxica e sintática, a WordNet, não observou que modernamente os termos followers e following podem referir-se a tipos de usuários em redes sociais. Como uma melhoria futura
da aplicação pode-se pensar em incluir a utilização de múltiplos dicionários na consideração dos sinônimos ou simplesmente esperar uma atualização da WordNet sobre os termos
utilizados em redes sociais.
7.2
Resultados da Aplicação - Agrupadores Secundários
Os bancos de dados utilizados nos experimentos são relacionais e orientados
a colunas, nesse caso o agrupador secundário de ambos os tipos de banco de dados
utilizados denomina-se “colunas”.
Sabendo-se que existe uma relação de dependência do agrupador primário com
o agrupador secundário, foi realizada a inclusão de eventuais associações não realizadas
nos experimentos relativos ao agrupador primário, afim de isolar os resultados. A inclusão
desses valores apenas adiciona mais dados à análise, não prejudicando os resultados
daqueles elementos que foram associados corretamente.
7.2.1
Experimento 1
Na Tabela 7.5, é possível visualizar as entradas e saídas do primeiro experimento,
realizado entre o banco de dados World e a ontologia Mondial, sobre o agrupador
secundário.
Tabela 7.5: Entrada/Saída Agrupador Secundário - Experimento 1
Parâmetro
Banco de Dados
Idioma(Banco)
Padrão(Banco)
Valor
PostgreSQL
Inglês
Palavras Planas
ou Concatenadas
Idioma(Ontologia) Inglês
Padrão(Ontologia) Camel Case
(a) Entradas
Métrica
Total de Propriedades Associáveis
Associações Corretas
Associações Incorretas
Não Associados
Total
14
10
0
4
(b) Saídas
Tendo-se relacionado todas as tabelas do banco de dados com uma classe
correspondente na ontologia, na primeira etapa, é possível associar 14 das 24 colunas
existentes no banco de dados. As 10 colunas não associáveis correspondem a colunas do
qual não existe uma propriedade correspondente na ontologia.
Observa-se que apenas 4 colunas não foram associadas no processo, sendo as
colunas countrycode e district da tabela City, a coluna indepyear da tabela Country e a
coluna countrycode da tabela CountryLanguage.
7.2 Resultados da Aplicação - Agrupadores Secundários
102
No caso da tabela City, não ocorreu a associação, pois as informações das colunas countrycode e district foram embutidas através de um padrão de URL no nome da entidade da ontologia. Exemplificando-se o caso,
a entidade correspondente à cidade de Salvador possuía a seguinte descrição
{url padrão}/country/BR/province/Bahia/city/Salvador/. O Anotador Semântico aqui desenvolvido não foi construído para analisar possíveis composições de
dados nos nomes das entidades, dessa forma essa informação presente no banco de dados
não foi mapeada para o nome da entidade da ontologia.
Não ocorreu o mapeamento da coluna indepyear da tabela Country, pois os
tipos de dados utilizados diferiram. Apesar de existirem proximidades léxicas entre a
coluna indepyear (tipo inteiro) e a propriedade indendenceDate (tipo data) da ontologia,
o fato desses dados serem de tipos diferentes, inviabilizou a sua associação. Associar tipos
diferentes onde um tipo seja capaz de abranger outro tipo pode ser uma melhoria futura
desse projeto.
Na coluna countrycode da tabela CountryLanguage, a associação falhou, por
motivos semelhantes ao ocorrido na tabela City, o código do país foi embutido no nome
da entidade ao invés de possuir uma propriedade para guardar a referência da informação.
7.2.2
Experimento 2
Na Tabela 7.6, é possível visualizar as entradas e saídas do segundo experimento,
realizado entre o banco de dados IMDB e a ontologia MovieOntology.
Tabela 7.6: Entrada/Saída Agrupador Secundário - Experimento 2
Parâmetro
Banco de Dados
Idioma(Banco)
Padrão(Banco)
Valor
MySQL
Inglês
Palavras Planas
Separadas
por
Underline
Idioma(Ontologia) Inglês
Padrão(Ontologia) Palavras Planas
Métrica
Total de Propriedades Associáveis
Associações Corretas
Associações Incorretas
Não Associados
Total
7
7
0
0
(b) Saídas
(a) Entradas
O banco de dados do IMDB é um banco normalizado, onde a maioria das colunas
utilizadas nas tabelas do banco de dados representam ligações com outras tabelas. A maior
parte das colunas passíveis de associação com propriedades da ontologia tem descrições
contendo palavras como name, info e note.
Todas as colunas passíveis de associação com a ontologia que possuíam o termo
name se ligaram com a Datatype Property name da ontologia. Aquelas colunas com
os termos info e note foram associadas com a Datatype Property description. As duas
7.2 Resultados da Aplicação - Agrupadores Secundários
103
propriedades são propriedades do tipo string presentes em todas as classes da ontologia
que foram associadas na primeira parte do experimento.
7.2.3
Experimento 3
Na Tabela 7.7, é possível visualizar as entradas e saídas do terceiro experimento,
realizado entre o banco de dados Twissandra e a ontologia SIOC, sobre o agrupador
secundário.
Tabela 7.7: Entrada/Saída Agrupador Secundário - Experimento 3
Parâmetro
Banco de Dados
Idioma(Banco)
Padrão(Banco)
Idioma(Ontologia)
Padrão(Ontologia)
Valor
Cassandra
Inglês
Nenhum
Inglês
Palavras Planas
(a) Entradas
Métrica
Total de Propriedades Associáveis
Associações Corretas
Associações Incorretas
Não Associados
Total
12
10
0
2
(b) Saídas
No experimento realizado sobre o agrupador primário do banco de dados,
observou-se a associação incorreta das famílias de colunas followers e following com
a classe Agent da ontologia. A associação foi manualmente realizada com a classe User
Account, a fim de isolar a análise de agrupadores secundários da correspondente análise
de agrupador primário.
No banco de dados analisado, 12 colunas poderiam ser associadas com elementos
correspondentes da ontologia, sendo que 10 foram corretamente associados e 2 elementos
deixaram de ser associados.
As colunas não associadas do banco de dados com uma propriedade correspondente da ontologia foram as colunas de nome body das famílias de colunas userline e
timeline. Essas colunas deviam ter sido associadas com a Datatype property content da
classe de domínio item da ontologia.
Nenhuma das famílias de colunas utilizadas, userline e timeline, realizou essa
associação, pois elas não tiveram uma ligação correspondente com a classe item ou
uma de suas subclasses. No caso de bancos de dados NoSQL, onde não existem chaves
estrangeiras que tornam explícita a semântica de relacionamento entre as entidades, a
análise dessas dependências é significativamente mais complicada.
Uma outra possibilidade seria considerar nomes de agrupadores secundários
iguais para indicar possível relacionamento. No caso do experimento, as famílias de
colunas userline e timeline possuíam uma coluna tweetid, o que poderia representar uma
possível ligação com a tabela tweet, que também possui uma coluna de chave primária
com esse nome. Dessa forma, seria possível incluir as classes mapeadas de tweet, assim
como suas superclasses, na análise das famílias de colunas userline e timeline.
7.3 Resultados da Aplicação - Associação Semântica
7.3
104
Resultados da Aplicação - Associação Semântica
O processo de associação semântica, realizado após o mapeamento entre o banco
de dados e a ontologia, tem por objetivo realizar a ligação entre as bases de dados
recém anotadas e um ou mais repositórios semânticos ou domínios web associadas a uma
categoria definida pelo desenvolvedor.
As categorias existentes no sistema são tantas quantas forem definidas pelo
desenvolvedor antes do usuário iniciar o processo de associação entre os bancos de dados
e a ontologia de referência. Nos experimentos realizados, existia mais de uma centena
de categorias disponíveis, entretanto não faz sentido tentar associar todas as categorias a
um único experimento se não existe uma relação de pertinência daquela categoria com o
respectivo domínio tratado.
Ao realizar o mapeamento de uma série de bancos de dados para uma ontologia
que trate de automóveis, é razoável associar categorias como veículos, combustíveis e
país. No entanto, não faz muito sentido esperar bons resultados ao escolher categorias
como fungos, doenças ou livros.
O usuário pode selecionar todas as categorias numa análise, em casos que
o domínio tratado não é perfeitamente conhecido por exemplo, mas por questões de
simplicidade definiu-se apenas algumas categorias ao realizar cada experimento. Essas
categorias foram selecionadas por apresentarem alguma pertinência temática com o
domínio tratado pela ontologia de referência.
A Tabela 7.8 apresenta as categorias selecionadas em cada experimento. A
primeira coluna indica o experimento realizado, a segunda coluna as categorias utilizadas
em cada experimento e a terceira coluna as categorias encontradas em cada um dos
experimentos realizados.
Tabela 7.8: Categorias X Experimentos
Experimento
Experimento 1
Experimento 2
Experimento 3
Selecionadas
Idioma, Cidade,
Estado,
País,
Moeda
Ator,
Filme,
Diretor, Escritor,
Evento, Pessoa
Pessoa
Encontradas
Idioma, Cidade,
Estado, País
Ator,
Filme,
Diretor, Escritor,
Evento, Pessoa
-
Observa-se que, no Experimento 1 foram selecionadas 5 categorias para o
domínio do problema tratado. Dessas categorias tratadas, apenas uma não apresentou
resultado, sendo esta a categoria Moeda. Apesar do banco de dados selecionado tratar
informações sobre países e seus idiomas, ele não possui a informação da moeda em
circulação desses países. Entretanto, como foi realizada a ligação entre a entidade país
7.4 Sobre o Capítulo
105
do banco de dados com o repositório semântico da DBPedia, essa informação pode ser
obtida subsequentemente através dessa ligação, o que seria a consequência direta da
complementação semântica explicada no Capítulo 5.
No Experimento 2, foram selecionadas 6 categorias, sendo que todas elas foram
relacionadas com pelo menos um repositório semântico. Apesar da relação Pessoa ter sido
encontrada, essa foi encontrada sempre como possuindo uma subclasse mais específica
para representação da entidade tratada na coluna.
Por fim, no Experimento 3, foi associada uma única categoria Pessoa, sendo que
essa categoria não foi vinculada a nenhum repositório semântico das categorias registradas. Esse resultado se deve ao fato de que as colunas analisadas não apresentaram pessoas
conhecidas pelos repositórios tratados. Se as pessoas registradas no banco de dados do
Twissandra fossem pessoas famosas, como políticos, atores ou cantores possivelmente
teriam sido encontrados em algum repositório.
De forma geral, o processo de associação realizado possui forte dependência do
conteúdo com relação ao dado armazenado no banco de dados. Nota-se que os melhores
resultados foram os do Experimento 2, cujo banco de dados é o mais populado de todos.
7.4
Sobre o Capítulo
Neste Capítulo, foram apresentados resultados de alguns experimentos realizados utilizando a aplicação desenvolvida nesse trabalho, o Anotador Semântico de Banco
de Dados. Optou-se pela utilização de ontologias e bancos de dados simples, de acesso
público por questões de simplicidade de análise e para facilitar o entendimento.
Ao longo dos experimentos realizados, novas ideias surgiram para melhorar os
resultados da aplicação. Dessa forma, a execução da aplicação em contextos reais, mesmo
que simplistas, fornecem conteúdo para eventuais trabalhos futuros sobre a ferramenta
desenvolvida nesse trabalho.
Analisando os resultados obtidos de forma percentual, observa-se que a aplicação
possui bom desempenho no processo de associação, tanto com relação a uma ontologia
de referência quanto no processo de ligação com repositórios externos.
No próximo capítulo, apresenta-se uma análise dos resultados da aplicação
com relação a seus objetivos iniciais, um levantamento de suas principais vantagens e
desvantagens, assim como discute-se as possíveis melhorias desse projeto.
CAPÍTULO 8
Conclusão e Trabalhos Futuros
Ao longo desse trabalho, apresentou-se uma ferramenta para o processo de
mapeamento semântico de banco de dados. Essa pesquisa foi estruturada abordando os
tópicos básicos relativos às áreas de Bancos de Dados, Web Semântica e Dados Abertos,
conforme explicitado no Capítulo 2.
Tendo em vista o objetivo de integrar o resultado produzido do mapeamento do
banco de dados para uma ontologia de referência com a nuvem de dados abertos, no
Capítulo 3 foi realizado um estudo sobre alguns repositórios semânticos utilizados nesse
trabalho. Esses repositórios foram apresentados de forma individual, mas demonstrouse a integração desses através de predicados indicativos de igualdade entre classes
estabelecendo mapeamentos parciais e até mesmo integrais entre esses repositórios.
Em seguida, no Capítulo 4 foi apresentado um estudo sobre o método de operação de algumas soluções semelhantes à proposta apresentada nesse trabalho. Observou-se
as peculiaridades de cada solução, tanto suas vantagens quanto suas desvantagens, visando definir ideias inovadoras no processo de mapeamento de banco de dados.
Finalmente, nos Capítulos 5, 6 e 7, a solução proposta nesse trabalho foi apresentada, projetada, detalhada e desenvolvida, criando uma ferramenta de anotação semântica
de bancos de dados com interessantes resultados e que satisfaz os objetivos definidos no
início dessa pesquisa.
Observa-se que o trabalho desenvolvido até aqui não foi a criação de um
programa, mas sim o melhoramento das técnicas de mapeamento de bancos de dados
quaisquer para domínios semânticos representados por ontologias de referência sobre um
domínio específico desejado pelo usuário.
Apesar de obter um resultado satisfatório no processo de mapeamento de banco
de dados, limitações foram observadas ao longo da pesquisa, nessa ferramenta.
A seguir, serão abordadas algumas contribuições realizadas por esta pesquisa.
Em seguida, serão apresentadas algumas limitações observadas na ferramenta desenvolvida durante este trabalho. Por fim, são levantados possíveis melhoramentos e desafios
ainda em aberto que poderão ser realizados em trabalhos futuros.
8.1 Contribuições
8.1
107
Contribuições
Uma das contribuições deste trabalho foi a proposta, definição, desenvolvimento
e implementação de uma arquitetura extensível, flexível, genérica, escalável no processo
de mapeamento de bancos de dados para ontologias, utilizando tecnologias abertas de
software livre.
Essa proposta de mapeamento de banco de dados foi desenvolvida de forma
que fosse possível tratar tanto os tradicionais bancos de dados relacionais, largamente
explorados nos trabalhos anteriores, quanto os bancos de dados NoSQL. A inclusão
dessas bases não relacionais representa uma das evoluções desenvolvidas nesse trabalho
com relação às técnicas existentes. Apesar desses bancos de dados ganharem espaço em
vários contextos nos anos recentes, esses ainda não foram tratados com profundidade nas
pesquisas realizadas até o momento.
Além disso, esse trabalho procurou inovar no processo de mapeamento de bancos
de dados, no que diz respeito ao resultado do mapeamento contemplar não somente o
conteúdo da ontologia de referência, mas o de outros repositórios na nuvem semântica
de banco de dados. O objetivo dessa funcionalidade é enriquecer semanticamente os
dados sendo mapeados, permitindo que esse dado compartilhe das eventuais melhorias
que possam ocorrer nesses repositórios para o qual tenha sido mapeado.
A seguir são apresentadas algumas sugestões de trabalhos futuros que podem
contribuir com a evolução do processo de mapeamento semântico de bancos de dados.
8.2
Trabalhos Futuros
A ferramenta apresentada nesse trabalho possui limitações com relação aos
métodos de mapeamento de bancos de dados relacionais e NoSQL, tanto para a ontologia
de referência quanto para repositórios semânticos externos.
Nessa seção, são apresentadas algumas sugestões de melhorias da solução proposta, visando melhorar os resultados, torná-los mais abrangentes ou mesmo utilizar os
resultados desenvolvidos até o momento para outros propósitos. A seguir apresenta-se
uma lista de possíveis trabalhos futuros a serem estudados e implementados na ferramenta
desenvolvida.
• Dicionários de Sinônimos: A aplicação apresenta certa dependência de sinônimos
entre palavras, limitando os seus resultados àquilo especificado na WordNet. É
possível melhorar os resultados ao considerar outros dicionários de sinônimos, os
quais podem ser integrados à solução com relativa facilidade dada a sua arquitetura
extensível.
8.2 Trabalhos Futuros
108
• Análise Semântica: A aplicação busca realizar uma análise léxica e sintática tanto
dos componentes do banco de dados, quanto da ontologia. É possível melhorar esses
resultados ao analisar a semântica dos comentários presentes nessas estruturas,
quando esses estiverem presentes.
• Inferir Relacionamentos: A solução desenvolvida apresentou certas limitações na
análise de bancos de dados NoSQL, por esses não apresentarem o relacionamento
entre suas entidades de forma explícita, como ocorre nos bancos relacionais. É
possível estabelecer mecanismos de análise dos elementos de bancos de dados para
contemplar esses relacionamentos não explícitos.
• Suporte a Outros Bancos NoSQL: A aplicação desenvolvida nessa pesquisa
utilizou apenas os bancos Cassandra e MongoDB como bancos de dados NoSQL.
Esses bancos são os mais conhecidos bancos dos paradigmas de bancos orientados
a colunas e bancos orientados a documentos. Entretanto, outros paradigmas como
bancos do tipo chave-valor e bancos orientados a documentos podem ser explorados
em pesquisas futuras.
• Mecanismos de Full Text Search: O processo de associação com repositórios semânticos externos é realizado utilizando igualdade nas consultas SPARQL realizados sobre esses repositórios. Existem alguns repositórios semânticos que começam
a oferecer o mecanismo de full text search, presente em bancos de dados relacionais como o PostgreSQL, no contexto de seus dados. A utilização desse método de
buscas, possivelmente é capaz de sofisticar os resultados no processo de associação
com repositórios externos.
• Novos Predicados de Relacionamento: No processo de associação com os repositórios semânticos externos busca-se principalmente a igualdade com entidades
desses repositórios. Em outras palavras, procura-se estabelecer relacionamentos utilizando predicados comuns como owl:sameAs. Entretanto, existem outros tipos de
relacionamentos além da igualdade, apresentado por esse predicado, que podem
ser explorados, tais como skos:broadMatch, skos:narrowMatch, skos:closeMatch e
outros.
Referências Bibliográficas
[1] AGUNE , R. M.; F ILHO, A. S. G.; B OLLIGER , S. P. Governo aberto sp: disponibilização de bases de dados e informações em formato aberto. In: III CONGRESSO
CONSAD DE GESTÃO PÚBLICA, 2010.
[2] A NGLES , R.; G UTIERREZ , C. Survey of graph database models. ACM Comput.
Surv., 40(1):1:1–1:39, Feb. 2008.
[3] A PACHE J ENA . A semantic web framework for java. http://jena.apache.org/
index.html, acessado em janeiro de 2015, 2015.
[4] B ATTLE , R.; KOLAS , D. Enabling the geospatial semantic web with parliament
and geosparql. Semantic Web, 3(4):355–370, 2012.
[5] B ECHHOFER , S.; M ILES , A. SKOS simple knowledge organization system reference. W3C recommendation, W3C, Aug. 2009. http://www.w3.org/TR/2009/RECskos-reference-20090818/.
[6] B ECHHOFER , S.; VAN H ARMELEN , F.; H ENDLER , J.; H ORROCKS , I.; M C G UINNESS ,
D. L.; PATEL -S CHNEIDER , P. F.; S TEIN , L. A.
OWL Web Ontology Language
Reference. Technical report, W3C, http://www.w3.org/TR/owl-ref/, February 2004.
[7] B ECKETT, D.; B ERNERS -L EE , T. Turtle - terse RDF triple language, W3C team
submission, 2008. See: http://www.w3.org/TeamSubmission/turtle/.
[8] B ERNERS -L EE , T. Universal Resource Identifiers in WWW: A Unifying Syntax for
the Expression of Names and Addresses of Objects on the Network as used in
the World-Wide Web. RFC 1630 (Informational), June 1994.
[9] B ERNERS -L EE , T. Information management: A proposal. Technical report, CERN,
Genf, March 1989.
[10] B ERNERS -L EE , T. The World Wide Web - Past Present and Future. In: Japan Prize
Commemorative Lecture, 2002.
Referências Bibliográficas
110
[11] B ERNERS -L EE , T. Semantic Web concepts. Presented at Edinburgh University,
September 2005.
[12] B ERNERS -L EE , T.; H ENDLER , J.; L ASSILA , O.
The semantic web.
Scientific
American, 284(5):34–43, May 2001.
[13] B ERRUETA , D.; P HIPPS , J. Best practice recipes for publishing rdf vocabularies.
World Wide Web Consortium, Note NOTE-swbp-vocab-pub-20080828, August 2008.
[14] B IZER , C. The emerging web of linked data. Intelligent Systems, IEEE, 24(5):87–
92, 2009.
[15] B OLLACKER , K.; E VANS , C.; PARITOSH , P.; S TURGE , T.; TAYLOR , J. Freebase: a
collaboratively created graph database for structuring human knowledge. In:
Proceedings of the 2008 ACM SIGMOD international conference on Management of
data, SIGMOD ’08, p. 1247–1250, New York, NY, USA, 2008. ACM.
[16] B ONIFACIO, A. S. Ontologias e consulta semântica: uma aplicação ao caso
lattes. Master’s thesis, UFRGS, Porto Alegre, Outubro 2002.
[17] B ORST , W. N. Construction of Engineering Ontologies for Knowledge Sharing
and Reuse. PhD thesis, Enschede, September 1997.
[18] B RAY, T.; PAOLI , J.; S PERBERG -M C Q UEEN , C. M.; M ALER , E.; Y ERGEAU, F. Extensible markup language (xml) 1.0 (fifth edition). World Wide Web Consortium,
Recommendation REC-xml-20081126, November 2008.
[19] B REWER , E. A. Towards robust distributed systems. In: Symposium on Principles
of Distributed Computing (PODC), 2000.
[20] B RICKLEY, D.; G UHA , R. V.
Rdf vocabulary description language 1.0: Rdf
schema. Technical report, 2 2004.
[21] B RICKLEY, D.; M ILLER , L.
FOAF Vocabulary Specification 0.97.
Namespace
document, January 2010.
[22] B UMANS , G.; C ERANS , K. Rdb2owl: a practical approach for transforming rdb
data into rdf/owl. In: Paschke, A.; Henze, N.; Pellegrini, T., editors, I-SEMANTICS,
ACM International Conference Proceeding Series. ACM, 2010.
[23] C ALVANESE , D.; G IACOMO, G. D.; L EMBO, D.; L ENZERINI , M.; P OGGI , A.;
R ODRIGUEZ -M URO, M.; R OSATI , R.; RUZZI , M.; S AVO, D. F. The mastro system
for ontology-based data access. Semantic Web, 2(1):43–53, 2011.
Referências Bibliográficas
111
Resource description framework (RDF):
[24] C ARROLL , J. J.; K LYNE , G.
Concepts and abstract syntax.
W3C recommendation, W3C, Feb. 2004.
http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/.
[25] C ATTELL , R. Scalable sql and nosql data stores. SIGMOD Rec., 39(4):12–27, May
2011.
[26] C ERANS , K.; B UMANS , G.
Rdb2owl: a rdb-to-rdf/owl mapping specification
language. In: Barzdins, J.; Kirikova, M., editors, DB & IS, volume 224 de Frontiers
in Artificial Intelligence and Applications, p. 139–152. IOS Press, 2010.
[27] C HAGANTI , P.; H ELMS , R. Amazon SimpleDB Developer Guide. Packt Publishing,
Limited, 2010.
[28] C HANG , F.; D EAN , J.; G HEMAWAT, S.; H SIEH , W.; WALLACH , D.; B URROWS , M.;
C HANDRA , T.; F IKES , A.; G RUBER , R. Bigtable: A distributed storage system for
structured data. Proceedings of the 7th USENIX Symposium on Operating Systems
Design and Implementation (OSDI’06), 2006.
[29] C HODOROW, K.; D IROLF, M. MongoDB - The Definitive Guide: Powerful and
Scalable Data Storage. O’Reilly, 2010.
[30] C ODD, E. F. A relational model of data for large shared data banks. Commun.
ACM, 13(6):377–387, June 1970.
[31] C ROCKFORD, D. RFC 4627 - The application/json Media Type for JavaScript
Object Notation (JSON). Technical report.
[32] C YGANIAK , R.; J ENTZSCH , A.
The linking open data cloud diagram. http:
//lod-cloud.net/, acessado em março de 2015, 2014.
[33] D E V RIES , P. J. GeoSpecies Ontology. http://bioportal.bioontology.org/
ontologies/GEOSPECIES, acessado em Fevereiro de 2015, 2011.
[34] E AVES , D. About David. http://www.eaves.ca/about, acessado em maio de
2013, 2009.
[35] E RLING , O. Virtuoso, a hybrid rdbms/graph column store. IEEE Data Eng. Bull.,
35(1):3–8, 2012.
[36] F LORIAN , B.; M ARTIN , K. Linked Open Data: The Essentials - A Quick Start Guide
for Decision Makers. edition mono/monochrom, Vienna, Austria, 2012.
[37] G EO N AMES . GeoNames geographical database, 2010. Last access on Jul 2014
at: http://www.geonames.org.
Referências Bibliográficas
[38] G RUBER , T. R.
112
A translation approach to portable ontology specifications.
Knowledge Acquisition, 5(2):199–220, June 1993.
[39] H ASSANZADEH , O.; C ONSENS , M. P. Linked movie data base. In: Proceedings of
the WWW2009 workshop on Linked Data on the Web (LDOW2009), 2009.
[40] H AUSENBLAS , M.
5 stars model on open government data.
http://lab.
linkeddata.deri.ie/2010/star-scheme-by-example, acessado em Junho de
2014, Abril 2012.
[41] H AYES , P.; M C B RIDE , B. Rdf semantics. Technical report, Fevereiro 2004.
[42] H OFFART, J.; S UCHANEK , F. M.; B ERBERICH , K.; W EIKUM , G. YAGO2: A spatially
and temporally enhanced knowledge base from wikipedia. Artificial Intelligence,
194:28–61, 2013.
[43] H OLZSCHUHER , F.; P EINL , R. Performance of graph query languages comparison of cypher, gremlin and native access in neo4j. 2013.
[44] H U, W.; Q U, Y.
Discovering simple mappings between relational database
schemas and ontologies. p. 225–238. 2008.
[45] ISO. ISO 32000-1:200. Document management – Portable document format –
Part 1: PDF 1.7. Technical report, July 2008.
[46] J ACOBSON , I.; M.C HRISTERSON .; J ONSSON , P.; OVERGAARD, G. Object-Oriented
Software Engineering — A Use Case Driven Approach. Addison-Wesley, 1992.
[47] J AIN , A.; K HAN , P. I.; V ERMA , D. B. Article: Secure and intelligent decision
making in semantic web mining. International Journal of Computer Applications,
15(7):14–18, February 2011. Published by Foundation of Computer Science.
[48] K IM , W. Introduction to object-oriented databases. MIT Press, Cambridge, MA,
USA, 1990.
[49] K IRYAKOV, A.; DAMOVA , M. Storing the semantic web: Repositories. In: Domingue, J.; Fensel, D.; Hendler, J., editors, Handbook of Semantic Web Technologies, p.
231–297. Springer Berlin Heidelberg, 2011.
[50] L AKSHMAN , A.; M ALIK , P. Cassandra: a decentralized structured storage system.
SIGOPS Oper. Syst. Rev., 44(2):35–40, Apr. 2010.
[51] L EHMANN , J.; I SELE , R.; J AKOB , M.; J ENTZSCH , A.; KONTOKOSTAS , D.; M ENDES ,
P. N.; H ELLMANN , S.; M ORSEY, M.; VAN K LEEF, P.; AUER , S.; B IZER , C. DBpedia -
Referências Bibliográficas
113
a large-scale, multilingual knowledge base extracted from wikipedia. Semantic
Web Journal, 2014.
[52] M C G UINNESS , D. L.; VAN H ARMELEN , F.
OWL web ontology language over-
view. W3C recommendation, W3C, Feb. 2004. http://www.w3.org/TR/2004/RECowl-features-20040210/.
[53] M ILLER , G. A. Wordnet: A lexical database for english. COMMUNICATIONS OF
THE ACM, 38:39–41, 1995.
[54] M INSTER , B.; C AMPBELL , J.; D OZIER , J.; F LEMING , J.; G ILLE , J.; H ARTMANN ,
D.; J EZEK , K.; K IDDER , S.; R AMANKUTTY, N.; T HOMPSON , A.; OTHERS . Earth
observations from space: The first 50 years of scientific achievements. In: AGU
Fall Meeting Abstracts, volume 1, p. 08, 2007.
[55] M ONIRUZZAMAN , A. B. M.; H OSSAIN , S. A. Nosql database: New era of databases
for big data analytics - classification, characteristics and comparison. CoRR,
abs/1307.0191, 2013.
[56] O LIVÉ , A. Conceptual Modeling of Information Systems. Springer, 2007.
[57] O PEN G OV DATA . Eight principles of open government data. http://resource.
org/8_principles.html, acessado em maio de 2013, 2007.
[58] O PEN K NOWLEDGE F OUNDATION . The Open Knowledge Foundation EMPOWERING THROUGH OPEN KNOWLEDGE. http://www.okfn.org, acessado em
maio de 2013, 2013.
[59] PADHY, R. P.; PATRA , M. R.; S ATAPATHY, S. C. RDBMS to NoSQL: Reviewing
Some Next-Generation Non-Relational Database’s? International Journal of Advanced Engineering Science and Technologies, 11(1), 2011.
[60] PAPAPANAGIOTOU, P.; K ATSIOULI , P.; T SETSOS , V.; A NAGNOSTOPOULOS , C.; H AD JIEFTHYMIADES ,
S. RONTO: Relational to ontology schema matching. AIS SIG-
SEMIS BULLETIN, 3(3-4):32–36, 2006.
[61] P ICCININI , H.; L EMOS , M.; C ASANOVA , M. A.; F URTADO, A. L. W-ray: A strategy
to publish deep web geographic data. In: Trujillo, J.; Dobbie, G.; Kangassalo, H.;
Hartmann, S.; Kirchberg, M.; Rossi, M.; Reinhartz-Berger, I.; Zimányi, E.; Frasincar,
F., editors, ER Workshops, volume 6413 de Lecture Notes in Computer Science,
p. 2–11. Springer, 2010.
Referências Bibliográficas
114
[62] P OLFLIET, S.; I CHISE , R. Automated mapping generation for converting databases into linked data. In: Polleres, A.; Chen, H., editors, ISWC Posters & Demos,
volume 658 de CEUR Workshop Proceedings. CEUR-WS.org, 2010.
[63] P RESSMAN , R. S. Software Engineering: A Practitioner’s Approach. McGraw-Hill,
european edition, 1994. Adapted by Darrel Ince.
[64] P RESSMAN , R. S. Software Engineering: A Practicioner’s Approach. McGraw
Hill, 5th edition, 2001.
[65] P RIYATNA , F.; A RANDA , C. B.; C ORCHO, S . Applying sparql-dqp for federated
sparql querying over google fusion tables. In: Cimiano, P.; Fernández, M.; Lopez,
V.; Schlobach, S.; Völker, J., editors, ESWC (Satellite Events), volume 7955 de
Lecture Notes in Computer Science, p. 189–193. Springer, 2013.
[66] P RIYATNA , F.; C ORCHO, O.; S EQUEDA , J. Formalisation and experiences of r2rmlbased sparql to sql query translation using morph. In: Proceedings of the 23rd
International Conference on World Wide Web, WWW ’14, p. 479–490, Republic and
Canton of Geneva, Switzerland, 2014. International World Wide Web Conferences
Steering Committee.
[67] R AMANATHAN , S.; G OEL , S.; A LAGUMALAI , S. Comparison of cloud database:
Amazon’s simpledb and google’s bigtable.
In: Recent Trends in Information
Systems (ReTIS), 2011 International Conference on, p. 165–168, Dec 2011.
[68] S AHOO, S. S.; H ALB , W.; H ELLMANN , S.; I DEHEN , K.; J R , T. T.; AUER , S.; S E QUEDA ,
J.; E ZZAT, A. A survey of current approaches for mapping of relational
databases to rdf, 01 2009.
[69] S ALAS , P.; V ITERBO, J.; B REITMAN , K.; C ASANOVA , M. Stdtrip: Promoting the
reuse of standard vocabularies in open government data. In: Wood, D., editor,
Linking Government Data, p. 113–133. Springer New York, 2011.
[70] S MITH , J.; S TUTELY, R. SGML: the user’s guide to ISO 8879. Ellis Horwood Series
in Computers and their Applications. E. Horwood, 1988.
[71] S OMMERVILLE , I.; M ELNIKOFF , S.; A RAKAKI , R.; DE A NDRADE B ARBOSA , E. Engenharia de software. Pearson Prentice Hall, 2008.
[72] S OMMERVILLE , I. Engenharia de Software. Addison Wesley, São Paulo, SP, 6
edition, 2003. Tradução André Maurício de Andrade Ribeiro; Revisão técnica Kechi
Hirama.
Referências Bibliográficas
115
[73] S RIDEVI , K.; U MA R ANI , D. R. A survey of semantic based solutions to web
mining.
International Journal of Emerging Trends and Technology in Computer
Science (IJETTS), 1, 2012.
[74] S TAAB , S.; E RDMANN , M.; M AEDCHE , A.; D ECKER , S. An extensible approach
for modeling ontologies in rdf(s). In: Proceedings of the ECDL-2000 Workshop
“Semantic Web: Models, Architectures and Management”, Lisbon, September 21,
2000, 2000.
[75] S TEVENSON , A. Oxford Dictionary of English. Oxford reference online premium.
OUP Oxford, 2010.
[76] T HE U NICODE C ONSORTIUM . The Unicode Standard. Technical Report Version
6.0.0, Unicode Consortium, Mountain View, CA, 2011.
[77] VAVLIAKIS , K. N.; G ROLLIOS , T. K.; M ITKAS , P. A. Rdote - publishing relational
databases into the semantic web. Journal of Systems and Software, 86(1):89–99,
2013.
[78] W3C. W3c semantic web activity, 2009. Última visita 22/11/2013.
APÊNDICE A
Bancos de Dados Relacionais e NoSQL
Entender a diferença entre um banco de dados relacional e um banco de dados
NoSQL, consiste primeiro em compreender que eles representam dois paradigmas distintos com relação ao processo de armazenamento de dados em nuvem e transações.
Brewer [19] propôs um modelo para os sistemas distribuídos, onde provou-se que
um sistema distribuído não pode prover simultaneamente as propriedades de consistência,
disponibilidade e tolerância ao particionamento. Esse modelo chamado de Teorema CAP
( acrônimo inglês para Consistency, Availability, Partition Tolerance ), diz que um sistema
pode prover no máximo duas dessas três características simultaneamente.
Se o sistema possui consistência forte e alta disponibilidade (Sistema CA), esse
sistema não possui tolerância ao particionamento, dessa forma, esse sistema torna-se
problemático caso um nó do cluster fique indisponível.
Existem sistemas que precisam de consistência forte e tolerância ao particionamento (Sistema CP), abrindo mão da disponibilidade. Em outras palavras, nesse sistema,
caso exista particionamento e não exista um consenso sobre o dado, a escrita pode ser
rejeitada.
Por fim, existem sistemas que necessitam de alta disponibilidade, não podendo
nunca ficar offline, e também precisam de tolerância ao particionamento (Sistema AP).
Logo, esses sistemas sacrificam a consistência permitindo a escrita a todo o momento,
sincronizando os dados num momento posterior. Esses sistemas admitem uma janela de
inconsistência, ou seja, em algum momento o sistema se tornar consistente, mas em alguns
momentos ele está inconsistente.
Os paradigmas que definem bancos de dados relacionais e NoSQL, são consequências dessa indisponibilidade simultânea das três propriedades do Teorema CAP.
Não cabendo a esse trabalho demonstrar vantagens e desvantagens com relação a adoção
de um modelo ou de outro, ele limita-se a enumerar as características que definem esses
bancos de dados através de dois paradigmas que os definem chamados ACID e BASE.
Apêndice A
A.1
117
O Modelo Relacional - ACID
O termo ACID ( acrônimo inglês para Atomicity, Consistency, Isolation,
Durability ), refere-se às quatro propriedades das transações.
• Atomicidade: significa “tudo ou nada”. Se qualquer parte da transação ficou incompleta, então toda a transação é considerada falha.
• Coerência: garante que um banco de dados, antes e depois de uma transação, é
considerado estável em um estado válido.
• Isolamento: garante que várias transações sendo executadas ao mesmo tempo não
afetam a execução uma da outra.
• Durabilidade: garante que, uma vez que uma transação foi confirmada, permanecerá
no mesmo estado, mesmo que hajam alguns erros, ou mesmo que ocorra uma queda
no sistema ou falha de energia.
Esse modelo de transações adotados pelos bancos de dados relacionais, corresponde aos Sistemas CA do Teorema CAP. Dessa forma, bancos de dados relacionais (
PostgreSQL, Firebird, SQL Server ), apresentam um modelo de transações que garante a
consistência e disponibilidade, mas não apresentam a propriedade de tolerância ao particionamento.
A.2
O Modelo NoSQL - BASE
O termo BASE ( acrônimo inglês para Basically Available, Soft state, Eventual
consistency ),
• Basicamente Disponível: essa restrição afirma que o sistema não garante a disponibilidade dos dados no que diz respeito ao Teorema CAP; haverá uma resposta a
qualquer pedido. Entretanto, essa resposta pode ser simplesmente “falha” na obtenção dos dados solicitados ou os dados podem estar em um estado inconsistente.
• Estado Leve: o estado do sistema pode mudar ao longo do tempo, de modo que,
mesmo em momentos sem entrada, pode haver mudanças em curso devido a seu
modelo de consistência eventual.
• Eventual Consistência: o sistema se torna consistente, uma vez que deixa de receber
entradas. Os dados serão propagados para todos os lugares devidos, mais cedo ou
mais tarde, mas o sistema não verifica a consistência de cada transação antes de se
iniciar a próxima.
Esse modelo corresponde aos Sistemas CP (BigTable, HBase, MongoDB), e
Sistemas AP (Cassandra, Riak, Amazon Dynamo) do Teorema CAP.
APÊNDICE B
Ontologias
O objetivo desse trabalho não é explicar em detalhes cada uma das linguagens
utilizadas na Web Semântica. Entretanto, como esse trabalho recorrentemente referese a ontologias e a linguagem OWL, nesse apêndice são apresentados alguns termos
relacionados à ontologias que são utilizados com frequência ao longo desse trabalho.
Todas as definições apresentadas nesse apêndice foram retiradas do relatório técnico da
w3c OWL Web Ontology Language Reference [6].
B.1
Elementos Básicos
Os elementos básicos que definem uma ontologia são as classes, os indivíduos
ou instâncias das classes e as propriedades, também chamadas de relacionamentos, entre
estas instâncias. A seguir uma breve descrição de cada um dos elementos citados.
B.1.1
Classe
As classes proveem um método de abstração para agrupar recursos com características próximas, dessa forma, uma classe define um conjunto de indivíduos que compartilham algumas propriedades.
Uma classe pode possuir um relacionamento hierárquico com outras classes, ou
seja, uma classe pode apresentar um mecanismo de herança do tipo classe e subclasse.
B.1.2
Indivíduos ou Instâncias
Numa definição similar, se uma classe representa um conjunto de indivíduos que
compartilham algumas propriedades, o indivíduo representa a entidade que implementa
as propriedades definidas por uma classe. A entidade que implementa essas propriedades
é chamada de instância da classe.
Apêndice B
119
Os indivíduos em uma ontologia podem incluir objetos concretos como pessoas,
animais, móveis, veículos, planetas, assim como indivíduos abstratos como números,
direitos ou palavras.
B.1.3
Propriedades ou Relações
Propriedades são relacionamentos binários utilizados no processo de descrição
de um indivíduo. Assim como as classes uma propriedade pode apresentar um relacionamento hierárquico com outras propriedades, ou seja, duas propriedades podem se relacionar num esquema do tipo propriedade e sub-propriedade.
Em termos de OWL, existem dois tipos de propriedades.
• Propriedades de dados: relação entre indivíduos e valores de dados.
• Propriedades de objetos: relação entre indivíduos.
APÊNDICE C
Ferramentas Utilizadas
C.1
Apache Jena
Jena é uma ferramenta open source, desenvolvida pelo HP Labs até outubro de
2009 e atualmente sobre responsabilidade da Apache Software Foundation, destinada para
a construção de aplicações no contexto da Web Semântica e Dados Abertos Ligados[3].
Esse framework agrupa uma série de API’s destinadas a manipulação de formatos de dados conhecidos como o OWL e o RDF. O framework pode ser dividido nas
seguinte partes:
1. RDF
(a) API RDF: essa API é responsável pela manipulação dos dados RDF, permitindo sua serialização em formatos como o RDF/XML, N3 e Turtle.
(b) ARQ: ferramenta para realizar consultas SPARQL 1.1, permitindo acesso
remoto de múltiplos repositórios semânticos
2. Triple store
(a) TDB: uma triple store nativa para a persistência dos dados.
(b) Fuseki: uma ferramenta para disponibilizar as triplas do usuário na forma de
um SPARQL Endpoint acessível por meio de consultas sobre o protolo HTTP.
3. OWL
(a) API de Ontologias: permite a manipulação de RDFS e OWL para enriquecimento da semântica dos dados RDF.
(b) API de Inferência: conjunto de regras de inferência preestabelecidos sobre
os dados RDF, possui suporte a regras de inferência definidas pelo usuário.
No desenvolvimento do Anotador Semântico de Banco de Dados, foram utilizados a API de Ontologias, API de Inferência, API RDF e o módulo ARQ.
Apêndice C
C.2
121
JAWS
Como citado na seção 3.3, a WordNet é um dicionário léxico com dados sobre
substantivos, verbos, adjetivos e advérbios agrupados em conjuntos de sinônimos cognitivos chamados synsets.
Apesar de existirem formas de acesso a WordNet por meio de SPARQL Endpoints ou mesmo trazer o seu conteúdo para um banco de dados relacional, neste trabalho
optou-se por utilizar uma API em Java, para manipulação do conteúdo da WordNet na
forma de objetos.
O JAWS ( acrônimo para Java API for WordNet Searching ) é uma API desenvolvida para consultas a base de dados da WordNet nas suas versões 2.1 e 3.0, onde o
resultado das consultas é classificado de acordo com os sinônimos, antônimos, hiperônimos, hipônimos, merônimos e parônimos de um synset 1 .
C.3
GTranslate
Gtranslate é uma API open-source desenvolvida em Java, que oferece suporte
a maioria dos recursos utilizados pelo Google Translator2 . Essa API foi utilizada na
aplicação pelo Analisador Léxico Sintático, componente descrito na subseção 6.3.1.
Utiliza-se essa API para fazer traduções de palavras de uma língua qualquer, do qual
a ontologia ou os bancos de dados estejam definidos, assim como no processo de
reconhecimento da linguagem natural sendo utilizado por essas ontologias ou bancos de
dados.
1 http://lyle.smu.edu/
tspell/jaws/, último acesso em Janeiro de 2015
2 https://code.google.com/p/java-google-translate-text-to-speech/source/checkout,
neiro de 2015
último acesso em Ja-
APÊNDICE D
Modelo de Dados
Nesta apêndice, são apresentados os detalhes do banco de dados utilizado internamente pelo Anotador Semântico de Banco de Dados. O banco de dados utilizado foi
um banco de dados SQLite, sendo todos os dados inseridos diretamente pela aplicação.
Nas seções seguintes, são descritas as tabelas desse banco de dados utilizadas
por módulo da solução desenvolvida.
D.1
Tabelas Utilizadas pelo Cliente SPARQL
O Cliente SPARQL possui uma única tabela, utilizada para armazenar a relação
entre a categoria e o SPARQL Endpoint correspondente. O Código D.1 corresponde ao
SQL necessário para a criação dessa tabela de banco de dados.
Código D.1 Tabela de Categorias por SPARQL Endpoint
CREATE TABLE ‘ categoria_endpoint ‘ (
‘id ‘ INTEGER PRIMARY KEY AUTOINCREMENT ,
‘nome ‘ TEXT NOT NULL,
‘sql ‘ TEXT NOT NULL,
‘ sqlparameter ‘ TEXT ,
‘ endpoint ‘ TEXT NOT NULL
);
A seguir apresenta-se uma breve descrição sobre cada coluna:
1.
2.
3.
4.
id: chave primária auto incrementável da tabela.
nome: nome utilizado para definir a categoria.
sql: consulta, geralmente em SPARQL, utilizada contra o repositório semântico.
sqlparameter: parâmetro a ser adicionado na consulta quando esse for um
SPARQL, para filtrar resultados.
Apêndice D
123
5. endpoint: endereço do repositório semântico, geralmente sendo um SPARQL Endpoint ou Web Service.
D.2
Tabelas Utilizadas pelo Extrator
O Extrator possui uma única tabela, utilizada para armazenar a relação entre a
categoria e o domínio web correspondente. O Código D.2 corresponde ao SQL necessário
para a criação dessa tabela de banco de dados.
Código D.2 Tabela de Categorias por Extrator
CREATE TABLE ‘ categoria_extrator ‘ (
‘id ‘ INTEGER PRIMARY KEY AUTOINCREMENT ,
‘nome ‘ TEXT NOT NULL,
‘url ‘ TEXT NOT NULL,
‘caminho ‘ TEXT NOT NULL,
‘ template ‘ TEXT
);
A seguir apresenta-se uma breve descrição sobre cada coluna:
id: chave primária auto incrementável da tabela.
nome: nome utilizado para definir a categoria.
url: endereço do domínio do qual se realiza a busca.
caminho: seletor JQuery utilizado para localizar o componente utilizado para
identificação do recurso.
5. template: nome de uma classe necessária para realizar a leitura de uma página,
necessário em situações que não seja possível utilizar o seletor JQUery da coluna
caminho.
1.
2.
3.
4.
D.3
Tabelas Utilizadas pelo Analisador Léxico/Sintático
O Analisador Léxico/Sintático possui uma única tabela, utilizada para armazenar
as traduções realizadas pelo gtranslate. O Código D.3 corresponde ao SQL necessário para
a criação dessa tabela de banco de dados.
Apêndice D
Código D.3 Tabela de palavras traduzidas por idioma
CREATE TABLE ‘ translatedSentence ‘ (
‘lg_text ‘ TEXT ,
‘lg_from ‘ TEXT ,
‘lg_to ‘ TEXT ,
‘ lg_value ‘ TEXT NOT NULL,
PRIMARY KEY( lg_text , lg_from , lg_to )
);
A seguir apresenta-se uma breve descrição sobre cada coluna:
1.
2.
3.
4.
lg_text: texto plano utilizado no processo de tradução.
lg_from: indicador de duas letras que define o idioma de origem.
lg_to: indicador de duas letras que define o idioma de destino.
lg_value: texto plano traduzido.
124
Download