Uma Estratégia para o Refinamento Colaborativo de Dados na Web Baseada em Social Coding
Universidade Federal de Pernambuco [email protected] http://cin.ufpe.br/~posgraduacao
Recife 2018
Uma Estratégia para o Refinamento Colaborativo de Dados na Web Baseada em Social Coding
Trabalho apresentado ao Programa de Pós-graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Per-nambuco, como requisito parcial para obtenção do grau de Mestre em Ciência da Computação.
Área de Concentração: Banco de Dados Orientador: Profa. Dra. Bernadette Farias Lós-cio
Recife 2018
Catalogação na fonte
Bibliotecária Monick Raquel Silvestre da S. Portes, CRB4-1217
S237e Santos, Helton Douglas Araújo dos
Uma estratégia para o refinamento colaborativo de dados na web baseada em social coding / Helton Douglas Araújo dos Santos. – 2018.
150 f.: il., fig., tab.
Orientadora: Bernadette Farias Lóscio.
Dissertação (Mestrado) – Universidade Federal de Pernambuco. CIn, Ciência da Computação, Recife, 2018.
Inclui referências e apêndices.
1. Banco de dados. 2. Refinamento de dados. I. Lóscio, Bernadette Farias (orientadora). II. Título.
025.74 CDD (23. ed.) UFPE- MEI 2019-017
Helton Douglas Araújo dos Santos
Uma Estratégia para o Refinamento Colaborativo de Dados na Web Baseada em Social Coding
Dissertação de Mestrado apresentada ao Programa de Pós-Graduação em Ciência da Computação da Universidade Federal de Pernambuco, como requisito parcial para a obtenção do título de Mestre em Ciência da Computação
Aprovado em: 22/08/2018.
BANCA EXAMINADORA
__________________________________________ Profa. Dra. Ana Carolina Brandão Salgado
Centro de Informática/UFPE
__________________________________________ Profa. Dra. Vaninha Vieira dos Santos Departamento de Ciência da Computação/UFBA
__________________________________________ Profa. Dra. Bernadette Farias Lóscio
Centro de Informática/UFPE (Orientadora)
Higor, minha noiva Deyse, meus familiares, amigos e professores que de alguma forma contribuíram para a sua realização.
Agradeço primeiramente a Deus por ter permitido que eu realiza-se este trabalho, dando-me forças para perseverar nos modando-mentos em que eu mais precisei.
Finalizar este trabalho não foi fácil. Foi uma longa caminhada até chegar aqui. Um caminho tão inesperado e cheio de obstáculos que eu nunca imaginei que eu poderia, um dia, passar. Foram noites de preocupação, ansiedade e angústia. Imaginava que nunca iria chegar no fim de tudo isso mas, graças a Deus, consegui finalizar mais um ciclo da minha vida.
Agradeço a minha amada família que me apoiou de todas as formas, emocionalmente e financeiramente. Agradeço a meu pai que nunca me negou ajuda. Quando o contrato da bolsa terminou, ele que passou a financiar este trabalho, suprindo as minhas necessidades. Agradeço a minha mãe que sempre me motivou e nunca mencionou alguma palavra nega-tiva que me fizesse pensar em desistir. Agradeço a meu irmão que me ajudou na revisão de alguns textos.
Agradeço a minha amada Deyse, por ter me amparado nos momentos onde eu pensava que não iria conseguir. Você se fez presente nas vezes em que eu mais precisei. Me consolou quando eu estava preocupado e ansioso. Me ajudou a revisar os textos. Obrigado por tudo. Eu te amo!
Agradeço a meu amigão Marcelo. Sem palavras. Quando a professora Bernadette pre-cisou se ausentar, foi ele que me orientou e me guiou por onde eu deveria seguir com a pesquisa. Marcelo, te agradeço por todo o ensinamento passado, todas as reuniões que tivemos, pelos trabalhos que desenvolvemos juntos e pelo suporte bem presente que você me deu durante todo o mestrado. Não tenho como retribuir tudo que você fez por mim. Agradeço a sua amizade. Obrigado por tudo meu amigo!
Agradeço a minha queria professora e orientadora Bernadette. Uma mulher de grande sabedoria e inteligência que me ensinou tudo o que sei hoje. Agradeço pelas reuniões, por ter me escultado, pelos conselhos, pelas correções e por todo esforço desempenhado em meu trabalho. Certamente, sem a senhora eu não conseguiria terminar esta pesquisa. Obrigado por tudo!
Agradeço a professora Carol por te aberto minha mente com ensinamentos que foram passados nas primeiras cadeiras da pós-graduação. Agradeço por ter continuado apoiando minhas pesquisas, antes avaliadora do meu trabalho de graduação, e agora co-orientadora da minha pesquisa no mestrado. Muito obrigado professora!
Agradeço a meu amigão Lairson (Lerao). Uma pessoa com um coração imenso que me escultou e me aconselhou sempre que precisei. Agradeço a meu amigo Zé Wilker, Karina, Rayelle e Glória que contribuíram para a realização deste trabalho. Vocês são demais!
Agradeço a meus amigos e irmãos da Igreja Presbiteriana em Maranguape I que cer-tamente estiveram orando por mim e intercedendo para que tudo ocorre-se bem.
Agradeço a meus amigos e colegas do NUTES-UFPE que me aconselharam e me apoiaram durante esta pesquisa.
Por fim, agradeço ao Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq) pelo financiamento que possibilitou a realização deste trabalho.
não te apavores, porquanto Yahweh, o Senhor teu Deus, está contigo por onde quer que andes! Josué 1:9” (BíBLIA, 2012)
Desde o seu surgimento, a Web tem emergido como um importante canal de com-partilhamento e troca de informações, habilitando a publicação e o consumo de conjuntos de dados de diferentes domínios. Na Web há uma participação ativa de atores que podem ser desde indivíduos até organizações públicas ou privadas, ou até mesmo sistemas ou dispositivos móveis. Esses atores podem agir tanto como publicadores quanto como con-sumidores de dados. O publicador produz, entrega e refina dados de algum tipo de acordo com condições específicas, enquanto que o consumidor, acessa e consome os dados, reali-zando análises, construindo visualizações, como também gerando novos dados. De maneira geral, dados na Web seguem um ciclo de vida composto de várias fases que vão desde a preparação dos dados até o refinamento. Em particular, o refinamento de conjuntos de dados diz respeito às atividades de limpeza e enriquecimento de dados, como também a atualizações e adição de novos dados a conjuntos de dados já existentes. Usualmente, o refinamento é realizado pelos publicadores de dados antes de efetuarem a publicação dos dados. Porém, consumidores de dados também realizam frequentemente a limpeza e o enriquecimento de conjuntos de dados ao processarem os mesmos nas suas atividades de consumo. É importante notar que o resultado do refinamento realizado pelos consumido-res, na maioria das vezes, não é compartilhado nem com os publicadores do conjunto de dados original nem com outros consumidores interessados no mesmo conjunto de dados. Dessa forma, é muito comum que exista retrabalho, tanto por parte dos publicadores como por parte dos consumidores, uma vez que o resultado das atividades de refinamento não são compartilhadas. Nesse contexto, o objetivo deste trabalho é propor uma estratégia baseada nos princípios deopen collaboration e social coding que permita o refinamento, de forma colaborativa, de conjuntos de dados publicados na Web, contribuindo, assim, para reduzir o retrabalho nas atividades de refinamento, bem como para melhorar a qualidade dos conjuntos de dados na Web.
Palavras-chaves: Dados na Web. Ecossistema de dados. Refinamento de dados. Enri-quecimento de Dados. Social coding. Open collaboration.
Since its inception, the Web has emerged as an important channel for sharing and exchanging information, enabling the publication and consumption of datasets from differ-ent domains. In this context, there is an active participation of multiple and autonomous actors who are involved in the publication and consumption of data on the Web. An actor can be an individual, a company, a system or a device who acts as a publisher or as a consumer. The publisher produces, delivers and refines data of some kind according to specific conditions. The consumer access and consumes data, performing analysis, build-ing visualizations, as well as generatbuild-ing new data. In general, data on the Web follows a life cycle composed of several phases that ranges from data preparation to refinement. In particular, dataset refinement includes data cleansing and enrichment activities, as well as updates and adding new data to existing datasets. Typically, dataset refinement is performed by publishers before publishing the data. However, consumers also often clean and enrich datasets during the consuption actitivities. It is important to note that the refinement performed by consumers, most of the time, is not shared either with the pub-lishers of the original dataset or with other consumers interested in the same dataset. In this way, it is very common that redoing the refinement over and over again, since the result of the refinement activities are not shared. In this context, the objective of this work is to propose a strategy based on the principles of open collaboration and social coding that allow the refinement of datasets published on the Web in a collaborative way, as consequence contributing to reduce rework in the refinement activities, as well as to improve the quality of datasets published on the Web.
Key-words: Data on the Web. Data ecosystem. Data refinement. Data enrichment. Social coding. Open collaboration.
Figura 1 – Ciclo de vida dos dados na Web proposto por Lóscio, Oliveira e
Bit-tencourt (2015). Fonte: (LÓSCIO; OLIVEIRA; BITTENCOURT, 2015) . . . 18
Figura 2 – Metodologia Fonte:Autor . . . 22
Figura 3 – Processo de pull request. Fonte: (GOUSIOS; PINZGER; DEURSEN, 2014) . 36 Figura 4 – String de busca. Fonte: Autor . . . 42
Figura 5 – Data on the Web x Open Data x Linked Data. Fonte:(LÓSCIO; BURLE; CALEGARI, 2016) . . . 43
Figura 6 – Seleção de estudos. Fonte: Autor . . . 44
Figura 7 – Distribuição temporal dos trabalhos ao longo dos anos. Fonte: Autor . 47 Figura 8 – Formatos de publicação por área. Fonte: Autor . . . 52
Figura 9 – Modelo de Refinamento de Conjuntos de Dados na Web Fonte:Autor . 68 Figura 10 – Visão geral do Modelo de Refinamento de Conjuntos de Dados na Web Fonte:Autor . . . 69
Figura 11 – Operação de busca. Fonte:Autor . . . 70
Figura 12 – Operação Corrigir. Fonte:Autor . . . 71
Figura 13 – Procedimento: Correção de valores falsos. Fonte:Autor . . . 72
Figura 14 – Procedimento: Correção de ortografia. Fonte:Autor . . . 73
Figura 15 – Procedimento: Correção de valores ocultos. Fonte:Autor . . . 73
Figura 16 – Procedimento: Correção de valores abreviados. Fonte:Autor . . . 74
Figura 17 – Procedimento: Correção de erros referenciais. Fonte:Autor . . . 74
Figura 18 – Procedimento: Correção de valores agregados. Fonte:Autor . . . 74
Figura 19 – Procedimento: Correção de valores desviados. Fonte:Autor . . . 75
Figura 20 – Procedimento: Remoção de registros duplicados. Fonte:Autor . . . 75
Figura 21 – Operação Enriquecer. Fonte:Autor . . . 77
Figura 22 – Procedimento: Adição de dados em atributos com valores vazios. Fonte:Autor 78 Figura 23 – Procedimento: Adição de atributos. Fonte:Autor . . . 78
Figura 24 – Procedimento: Adição de registros. Fonte:Autor . . . 79
Figura 25 – Procedimento: Adição de metadados. Fonte:Autor . . . 79
Figura 26 – Procedimento: Atualização de metadados. Fonte:Autor . . . 80
Figura 27 – Procedimento: Anotação semântica de um valor. Fonte:Autor . . . 80
Figura 28 – Procedimento: Anotação semântica de um metadado. Fonte:Autor . . . 81
Figura 29 – Conjunto de dados contendo erros. Fonte:Autor . . . 83
Figura 30 – Conjunto de dados refinado. Fonte:Autor . . . 85
Figura 31 – Visão geral da estratégia colaborativa para o refinamento de Dados na Web baseada em Social Coding. Fonte: Autor . . . 90
em Social Coding. Fonte: Autor . . . 92
Figura 33 – Fluxograma - Junção de conjuntos de dados. Fonte:Autor . . . 97
Figura 34 – Conjunto de dados DL1 publicado na Web - versão 1.0. Fonte:Autor . 100 Figura 35 – Conjunto de dados DL2 local. Fonte:Autor . . . 101
Figura 36 – Conjunto de dados DW2 publicado na Web. Fonte:Autor . . . 102
Figura 37 – Conjunto de dados DL3 publicado na Web. Fonte:Autor . . . 103
Figura 38 – Modelo de Arquitetura do DWMS com o novo Serviço de Refinamento Colaborativo. Fonte: (OLIVEIRA et al., 2018) Adaptado . . . 106
Figura 39 – Diagrama de Casos de Uso. Fonte: Autor . . . 109
Figura 40 – Distribuição de número de erros inseridos e erros corrigidos por cenário. Fonte: Autor . . . 116
Figura 41 – Conjunto de Dados - Exemplo. Fonte:Autor . . . 131
Figura 42 – Log de Refinamento - parte 1. Fonte:Autor . . . 132
Figura 43 – Log de Refinamento - parte 2. Fonte:Autor . . . 133
Figura 44 – Log de Refinamento - parte 3. Fonte:Autor . . . 134
Figura 45 – Log de Refinamento - parte 4. Fonte:Autor . . . 135
Figura 46 – Log de Refinamento - Exemplo - parte 1. Fonte:Autor . . . 136
Figura 47 – Log de Refinamento - Exemplo - parte 2. Fonte:Autor . . . 137
Figura 48 – Log de Refinamento - Exemplo - parte 3. Fonte:Autor . . . 138
Figura 49 – Log de Refinamento - Exemplo - parte 4. Fonte:Autor . . . 139
Figura 50 – Log de Refinamento - Exemplo - parte 5. Fonte:Autor . . . 140
Figura 51 – Log de Refinamento do Conjunto de dados DL2. Fonte:Autor . . . 141
Figura 52 – Log de Refinamento do Conjunto de dados DW2. Fonte:Autor . . . 142
Figura 53 – Log de Refinamento do Conjunto de dados DW2. Fonte:Autor . . . 143
Figura 54 – Log de Refinamento do Conjunto de dados DW2. Fonte:Autor . . . 144
Figura 55 – Log de Refinamento do Conjunto de dados DL3. Fonte:Autor . . . 145
Figura 56 – Log de Refinamento do Conjunto de dados DL3. Fonte:Autor . . . 146
Figura 57 – Log de Refinamento do Conjunto de dados DL3. Fonte:Autor . . . 147
Figura 58 – Questionário de Avaliação - Introdução. Fonte:Autor . . . 148
Figura 59 – Questionário de Avaliação - Publicador. Fonte:Autor . . . 149
Tabela 1 – Erros de instância. Fonte: (RAHM; DO, 2000) Adaptado . . . 28
Tabela 2 – Erros semânticos. Fonte: (RAHM; DO, 2000) Adaptado . . . 29
Tabela 3 – Fontes manuais . . . 41
Tabela 4 – Fontes automáticas . . . 41
Tabela 5 – Sumário de artigos selecionados . . . 46
Tabela 6 – Locais utilizados mais de uma vez para a publicação . . . 47
Tabela 7 – Contribuições dos estudos . . . 49
Tabela 8 – Domínios dos dados . . . 50
Tabela 9 – Abordagens de publicação de dados . . . 52
Tabela 10 – Vocabulários mais citados . . . 53
Tabela 11 – Métodos e procedimentos usados nos artigos . . . 54
Tabela 12 – Ferramentas mais usadas . . . 55
Tabela 13 – Os desafios mais citados da publicação e consumo de dados na Web . . 57
Tabela 14 – Os benefícios mais citados da publicação e consumo de dados na Web . 59 Tabela 15 – Avaliação da diminuição do esforço - Média detalhada dos resultados obtidos por meio do questionário de avaliação. . . 114
Tabela 16 – Avaliação do reaproveitamento de trabalho - Média detalhada dos re-sultados obtidos por meio do questionário de avaliação. . . 115
BIBO Bibliographic Ontology
CSV Comma Separated Value
DCAT Data Catalog Vocabulary
DVCS Distributed Revision Control Systems DWMS Data on the Web Management Systems
ETL Extract Transform Load
FOAF Friend of a Friend Vocabulary
HTML HyperText Markup Language
JSON JavaScript Object Notation
MVC Model View Controller
RDF Resource Description Framework
SKOS Simple Knowledge Organization System SPARQL SPARQL Protocol and RDF Query Language SSIS SQL Server Integration Services
URI Uniform Resource Identifier
VOID Vocabulary of Interlinked Datasets XLS Microsoft Excel file format
1 INTRODUÇÃO . . . 17 1.1 MOTIVAÇÃO . . . 17 1.2 CARACTERIZAÇÃO DO PROBLEMA . . . 19 1.3 OBJETIVOS . . . 20 1.4 METODOLOGIA . . . 21 1.5 ESTRUTURA DA DISSERTAÇÃO . . . 22 2 FUNDAMENTAÇÃO TEÓRICA . . . 23 2.1 DADOS NA WEB . . . 23
2.1.1 Ecossistema de dados na Web . . . 24
2.1.2 Ciclo de vida dos dados na Web . . . 25
2.2 REFINAMENTO DE DADOS . . . 26
2.2.1 Limpeza de Dados . . . 26
2.2.2 Enriquecimento de Dados . . . 32
2.3 OPEN COLLABORATION E SOCIAL CODING . . . 33
2.4 TRABALHOS RELACIONADOS . . . 36
3 MAPEAMENTO SISTEMÁTICO DA LITERATURA NA ÁREA DE DADOS NA WEB . . . 39
3.1 MÉTODO DE PESQUISA . . . 39
3.1.1 Questões de Pesquisa . . . 40
3.1.2 Critérios de inclusão e exclusão . . . 40
3.1.3 Fontes de dados e estratégia de busca . . . 41
3.1.4 Seleção de estudos . . . 43
3.1.5 Extração de Dados e Síntese de Dados . . . 44
3.1.6 Ameaças à Validade . . . 45
3.2 RESULTADOS . . . 45
3.2.1 Como a pesquisa sobre publicação e o consumo de dados na Web evoluíram nos últimos anos? . . . 46
3.2.2 Quais são os principais tipos de contribuições relatados pelos estudos? 48 3.2.3 Quais são as características dos dados publicados e consumidos na Web? . . . 50
3.2.4 Quais métodos ou procedimentos foram usados na publicação e consumo de dados na Web? . . . 53
3.2.5 Quais ferramentas foram usadas para publicar e consumir dados no Web? . . . 54
nadas à publicação e consumo de dados na Web? . . . 55
3.2.7 Quais são os principais benefícios relacionados à publicação e con-sumo de dados na Web? . . . 57
3.3 DIRETRIZES PARA DISCUSSÃO E PESQUISA . . . 59
3.3.1 Teoria e modelos de Ecossistemas de Dados . . . 60
3.3.2 Sistema de Gerenciamento de Dados na Web . . . 61
3.3.3 Monitoramento do consumo de dados . . . 61
3.3.4 Curadoria de Metadados . . . 62
3.3.5 Modelos de Maturidade . . . 63
3.3.6 Refinamento colaborativo de dados na Web . . . 64
3.4 CONSIDERAÇÕES . . . 64
4 REFINAMENTO DE CONJUNTOS DE DADOS NA WEB . . . 66
4.1 DEFINIÇÕES PRELIMINARES . . . 66
4.2 MODELO DE REFINAMENTO DE CONJUNTOS DE DADOS NA WEB . 67 4.2.1 Limpeza de dados . . . 69 4.2.1.1 Procedimentos de Limpeza . . . 72 4.2.2 Enriquecimento de dados . . . 75 4.2.2.1 Procedimentos de Enriquecimento . . . 78 4.2.3 Documentação . . . 81 4.2.4 Homologação . . . 82 4.3 EXEMPLO . . . 83 4.4 CONSIDERAÇÕES . . . 85
5 ESTRATÉGIA PARA REFINAMENTO COLABORATIVO DE CON-JUNTOS DE DADOS NA WEB . . . 87
5.1 VISÃO GERAL DO REFINAMENTO COLABORATIVO . . . 87
5.2 ESTRATÉGIA PARA O REFINAMENTO COLABORATIVO . . . 89
5.2.1 Atividades e Operações . . . 92
5.3 EXEMPLO . . . 99
5.4 CONSIDERAÇÕES . . . 103
6 AVALIAÇÃO E EXPERIMENTOS . . . 105
6.1 PROTÓTIPO PARA O SERVIÇO DE REFINAMENTO COLABORATIVO . 105 6.1.1 Visão Geral do Data on the Web Management Systems (DWMS) . 105 6.1.2 Collaboration Refinement . . . 106
6.1.3 Funcionalidades do Serviço . . . 108
6.2 AVALIAÇÃO EXPERIMENTAL . . . 110
6.2.3 Ameaças à validade . . . 113 6.2.4 Experimento e Resultados . . . 113 6.2.5 Discussões . . . 117 6.2.6 Considerações . . . 118 7 CONCLUSÃO . . . 119 7.1 CONSIDERAÇÕES FINAIS . . . 119 7.2 TRABALHOS FUTUROS . . . 120 REFERÊNCIAS . . . 122
APÊNDICE A – CONJUNTO DE DADOS - EXEMPLO . . . 131
APÊNDICE B – LOG DE REFINAMENTO . . . 132
APÊNDICE C – LOG DE REFINAMENTO - EXEMPLO . . . 136
APÊNDICE D – LOG DE REFINAMENTO DO CONJUNTO DE DADOS DL2 . . . 141
APÊNDICE E – LOG DE REFINAMENTO DO CONJUNTO DE DADOS DW2 . . . 142
APÊNDICE F – LOG DE REFINAMENTO DO CONJUNTO DE DADOS DL3 . . . 145
1 INTRODUÇÃO
Este Capítulo fornece uma visão geral desta pesquisa e apresenta o contexto no qual este trabalho está inserido. Na Seção 1.1, abordaremos uma breve motivação para o desen-volvimento deste trabalho. A caracterização do problema é descrita na Seção 1.2 e os objetivos são apresentados na Seção 1.3. Por fim, a Seção 1.4 é apresenta a estrutura desta dissertação.
1.1 MOTIVAÇÃO
Atualmente, o aumento pelo interesse na publicação de dados na Web em diferentes for-matos, com licença aberta ou privada, juntamente com o enorme volume de dados gerados pelas redes sociais, tem confirmado o potencial da Web como plataforma de compartilha-mento de dados (MADHAVAN et al., 2007; BARNAGHI; SHETH; HENSON, 2013; CHEN; MAO; LIU, 2014). Na literatura podemos encontrar vários estudos que se propõem a investigar questões relacionadas com os desafios de compartilhamento de dados na Web. Alguns des-ses estudos propõem melhores práticas, diretrizes ou processos para padronizar o processo de publicação dos dados na Web (e.g., (KUCERA et al., 2015;LÓSCIO; BURLE; CALEGARI, 2016)), por exemplo. Além disso, existem pesquisas relevantes em outras questões, tais como catalogação de dados (e.g., (STONEBRAKER et al., 2013), integração de dados (e.g., (HALEVY; RAJARAMAN; ORDILLE, 2006)), fusão de dados (e.g., (DONG; NAUMANN, 2009)), publicação de dados (e.g., (PRUD; SEABORNE et al., 2008)) e visualização de dados (e.g., (CAMARDA; MAZZINI; ANTONUCCIO, 2012)). Ainda, outros estudos investigam problemas relacionados ao consumo de dados, como descoberta de dados (e.g., (MOUHOUB, 2014)), extração de dados ((e.g., (LAENDER et al., 2002)) e análise de dados ((e.g., (ZIKOPOULOS; EATON et al., 2011)).
De maneira geral, as atividades de publicação e consumo de dados na Web são desem-penhadas por um conjunto de atores. Um ator pode ser um usuário, um sistema ou um dispositivo e pode agir como um publicador ou como um consumidor de dados. O primeiro entrega e produz dados de algum tipo de acordo com condições específicas. O segundo acessa e consome os dados, seja para realizar análises, construir visualizações, ou para gerar novos dados. Os atores interagem entre si utilizando a Web no compartilhamento e na troca de conjuntos de dados.
É válido ressaltar que o interesse na publicação e consumo de dados na Web não é algo novo (BERNERS-LEE; CONNOLLY; SWICK, 1999; ABITEBOUL; BUNEMAN; SUCIU, 2000). Diversas pesquisas já foram realizadas nesse contexto (SANTOS et al., 2018), porém vários desafios continuam em aberto. Dentre esses desafios, destacamos o nível de qualidade dos dados que são publicados. É muito comum encontrarmos dados de baixa qualidade
disponíveis na Web, ou seja, dados com erros, incompletos ou de difícil compreensão. Dessa forma, antes de fazer uso desses dados, torna-se necessário realizar uma limpeza ou até mesmo um enriquecimento dos dados ou metadados. A limpeza de dados busca identificar e corrigir erros e inconsistências nos conjuntos de dados. O enriquecimento de dados, por sua vez, busca agregar valor aos conjuntos de dados, adicionando dados, metadados e valores semânticos.
Considerando o ciclo de vida dos dados na Web, apresentado na Figura 1, temos que a limpeza e o enriquecimento dos dados são atividades que fazem parte da fase de Re-finamento dos dados. Esta fase diz respeito à correção de erros inseridos nos conjuntos de dados publicados, como também à atualização e adição de novos dados. Dessa forma, o refinamento de dados na Web pode ser definido como um processo no qual são exe-cutados todos os procedimentos relacionados à limpeza e ao enriquecimento de dados. Como exemplo de procedimentos de refinamento, destacam-se: a identificação e correção de erros, remoção de registros duplicados, adição de dados e metadados, inclusão de ano-tações semânticas, visando o aumento da qualidade dos conjuntos de dados tanto a nível de instância, quanto a nível de esquema.
Figura 1 – Ciclo de vida dos dados na Web proposto por Lóscio, Oliveira e Bittencourt (2015). Fonte: (LÓSCIO; OLIVEIRA; BITTENCOURT, 2015)
Geralmente, o refinamento de conjuntos de dados na Web é realizado pelos publicado-res de dados antes de efetuarem a publicação dos dados. Porém, consumidopublicado-res de dados também realizam frequentemente procedimentos de limpeza e o enriquecimento sobre os conjuntos de dados a fim de melhorar sua qualidade antes da execução de suas atividades de consumo. Porém, é importante notar que o resultado do refinamento realizado pelos consumidores, na maioria das vezes, não é compartilhado nem com os publicadores do conjunto de dados original nem com outros consumidores interessados no mesmo con-junto de dados. Dessa forma, é muito comum que exista retrabalho, tanto por parte dos
publicadores como por parte dos consumidores, uma vez que o resultado das atividades de refinamento não são compartilhadas.
Em um cenário ideal, provedores e consumidores devem compartilhar seus dados lim-pos e enriquecidos, de tal forma que ambos poderão dar sua contribuição sobre os con-juntos de dados, sinalizando e corrigindo erros, bem como realizando o enriquecimento dos dados. Nesse contexto, o objetivo deste trabalho é propor uma estratégia baseada nos princípios de open collaboration e social coding para permitir o refinamento de conjuntos de dados publicados na Web de forma colaborativa, contribuindo para reduzir o retraba-lho nas atividades de refinamento, bem como para meretraba-lhorar a qualidade dos conjuntos de dados na Web.
1.2 CARACTERIZAÇÃO DO PROBLEMA
Atualmente, a publicação e o consumo de dados na Web ocorre de maneira unilateral,
i.e., não há um ciclo colaborativo entre publicadores e consumidores no compartilhamento
de dados (POLLOCK, 2011). De um modo geral, após acesso e consumo dos conjuntos de dados, a interação entre os atores termina, tornando prematuramente o consumo como fase final do ciclo de vida dos dados na Web.
Entretanto, segundo o ciclo de vida dos dados na Web, após a fase de consumo de dados temos as fases de feedback e refinamento. Durante a fase de feedback os consumi-dores devem relatar sua experiência com o uso dos dados e, quando necessário, devem notificar erros ou inconsistências nos dados. Em seguida, com base no feedback recebido, os publicadores realizam o refinamento dos dados, corrigindo erros encontrados ou reali-zando melhorias nos dados. Apesar da relevância dessa comunicação entre publicadores e consumidores, no cenário atual, em geral, os consumidores não oferecemfeedback ao publi-cador e consumidores realizam o refinamento dos conjuntos de dados localmente, em seus computadores pessoais. Quando refinado, o conjunto de dados geralmente é direcionado ao seu destino final, seja para análise, geração de informações ou criação de novos dados. Em geral, o consumidor não republica uma nova versão do conjunto de dados refinada, levando outros consumidores a acessar o conjuntos de dados, inicialmente defeituoso, e necessitando realizar um novo refinamento.
Dessa forma, a criação de uma estratégia que permita a republicação dos conjuntos de dados refinados é de grande relevância. Os conjuntos de dados refinados podem ser dis-ponibilizados na Web para que outros consumidores também possam acessá-los, evitando assim o retrabalho do refinamento realizado inicialmente. Por consequência, o refinamento dos conjuntos de dados não mais dependerá somente dos publicadores para ser realizado, criando assim um ambiente colaborativo de refinamento de dados entre os consumidores, bem como entre publicadores e consumidores.
O refinamento colaborativo tem o objetivo de atribuir também ao consumidor o papel de refinador, podendo solicitar a publicação da nova versão do conjunto de dados após a
realização de algum refinamento nos dados. A aplicação de uma abordagem colaborativa para o refinamento dos dados pode resultar num aumento relevante da qualidade dos conjuntos de dados publicados na Web, uma vez que a correção de erros e o enriquecimento (dos dados e metadados) serão executados por um grupo de consumidores e publicadores interessados em um mesmo conjunto de dados.
O uso de uma estratégia colaborativa pode reduzir também o esforço dos publicadores no refinamento dos conjuntos de dados, visto que esta atividade passa agora a ser reali-zada também pelos consumidores. Isto também pode levar ao aumento da frequência de atualização dos conjuntos de dados publicados, pois o processo de atualização e corre-ção dos conjuntos de dados, quando realizado por um único publicador, pode tornar-se demorado dependendo do volume de dados.
Nesse contexto, identificamos a necessidade de uma estratégia que permita o refina-mento colaborativo de conjuntos de dados na Web, a fim de viabilizar meios para que a publicação e o consumo desses dados não seja unilateral. A adoção dessa estratégia deve prover recursos que permitam a troca de dados e informações entre publicadores e consumidores de dados, como também a republicação de conjuntos de dados refinados.
É importante ressaltar que a construção de uma estratégia para o refinamento cola-borativo não é uma atividade trivial. Por exemplo, conflitos podem ocorrer quando dois ou mais consumidores refinam uma mesma versão de um conjunto de dados e tentam fazer sua republicação. Dessa maneira, o versionamento e a resolução de conflitos é uma problemática decorrente do refinamento colaborativo e que serão tratadas neste trabalho. Finalmente, baseado neste contexto, a principal questão de pesquisa a ser investigada neste trabalho é: O refinamento de dados na Web desempenhado colaborativamente por
publicadores e consumidores de dados é capaz de reduzir o esforço e minimizar o retrabalho demandado pelo refinamento, como também de aumentar a qualidade dos conjuntos de dados publicados Web ?
1.3 OBJETIVOS
O principal objetivo desta dissertação é propor uma estratégia que habilite o refinamento colaborativo de conjunto de dados publicados na Web. A solução proposta, baseada em
social coding, visa prover meios para que consumidores e publicadores de conjuntos de
dados possam acessar, refinar e republicar conjuntos de dados de forma colaborativa. Para alcançar o objetivo geral acima, foram definidos os seguintes objetivos específicos: • Realização de um mapeamento sistemático da literatura na área de Dados na Web; • Definição de um modelo de refinamento de conjuntos de dados na Web;
• Especificação de uma estratégia para o refinamento colaborativo de conjuntos de dados na Web baseada em social coding.
• Implementação de um protótipo e realização de experimentos para avaliar a estra-tégia proposta.
1.4 METODOLOGIA
Como método de pesquisa para esta dissertação, optou-se por utilizar o modelo de estudo descritivo que se dividiu nas seguintes etapas (Figura 2):
1. Realização de um mapeamento sistemático da literatura; 2. Definição do problema de pesquisa;
3. Definição do Modelo de Refinamento de Dados na Web; 4. Especificação da Estratégia de Refinamento Colaborativo; 5. Implementação e realização de experimentos.
Inicialmente, foi realizado um mapeamento sistemático da literatura com o objetivo de identificar lacunas de pesquisa na área de Dados na Web. A partir dos resultados obtidos, identificamos lacunas na área de Refinamento de Dados na Web e, com base nisto, definimos o problema de pesquisa.
Em seguida, definimos o Modelo de Refinamento de Dados na Web com o objetivo de elucidar o conceito de refinamento, e conduzir a comunidade ao entendimento do processo de refinamento aplicado sobre os conjuntos de dados publicados na Web. A fim de resolver o problema de pesquisa, nós especificamos a Estratégia de Refinamento Colaborativo que, por sua vez, é uma instância o Modelo de Refinamento de Dados na Web. Por fim, para avaliar a estratégia, implementamos um protótipo e realizamos experimentos.
Figura 2 – Metodologia Fonte:Autor
1.5 ESTRUTURA DA DISSERTAÇÃO
Os próximos capítulos estão organizados como se segue. No Capítulo 2, é apresentado a fundamentação teórica deste trabalho. Já no Capítulo 3, descrevemos o mapeamento sistemático da literatura realizado. No Capítulo 4, apresentamos o modelo de refinamento de conjuntos de dados na Web. O Capítulo 5 apresenta a estratégia para o refinamento colaborativo de conjunto de dados na Web, enquanto o Capítulo 6 apresenta os experi-mentos realizados para a avaliação da estratégia proposta. Por fim, no Capítulo 7 é feito uma pequena discussão sobre o trabalho realizado e sugestões para os trabalhos futuros.
2 FUNDAMENTAÇÃO TEÓRICA
Neste Capítulo, iremos apresentar uma revisão bibliográfica acerca dos assuntos relaciona-dos à estratégia proposta neste trabalho. Inicialmente, discutiremos o conceitos de Darelaciona-dos na Web. Em seguida, abordaremos o processos de refinamento de dados e os conceitos re-lacionados. Posteriormente, iremos descrever a abordagem open collaboration juntamente com a definição de social coding. Por fim, apresentaremos os trabalhos existentes na lite-ratura que possuem relação com a proposta desta pesquisa.
2.1 DADOS NA WEB
Nos últimos anos, a Web tem se tornado cada vez mais uma grande plataforma de com-partilhamento e consumo de dados. Um enorme volume de dados vem sendo gerado e tornando-se disponível na Web. Com isso, a publicação desses dados vem trazendo gran-des benefícios para a sociedade e inúmeras aplicações buscam fazer o uso gran-desses conjuntos de dados disponíveis na Web, com o objetivo de gerar informações úteis e relevantes, e até mesmo com o intuito de gerar novos dados.
Dessa forma, esforços estão sendo desenvolvidos na busca de habilitar o comparti-lhamento e consumo de dados na Web. Em particular, as abordagens mais populares de publicação de dados na Web são: a publicação de dados em formato aberto (open data) (KUCERA et al., 2015) e dados conectados (linked data) (BIZER; HEATH; BERNERS-LEE, 2009). Segundo Lóscio, Burle e Calegari (2016), Dados na Web é o termo mais geral que pode ser usado para denotar dados publicados de acordo com os princípios da arquitetura Web1.
A Web é composta de um conjunto de recursos identificados exclusivamente por Uni-form Resource Identifier (URI), cuja representação pode ser recuperada geralmente por meio de formatos padronizados, como HTML, RDF, XML ou CSV (JACOBS; WALSH, 2004). Usuários podem interagir com recursos na Web usando protocolos padronizados, que controlam a troca de mensagens, como HTTP, FTP e SOAP. As mensagens podem incluir dados e metadados. Assim, o desenvolvimento e uso de tais padrões permitem que a Web transcenda diferentes arquiteturas de software. É possível usar navegadores de dados para explorar os dados disponíveis na Web, e.g., Tabulator2, Marbles3 e Fenfire4 (BIZER, 2009). Assim, pessoas e máquinas podem coletar dados na Web.
Em particular, os dados publicados na Web tratam de tipos específicos de recursos chamados de conjuntos de dados, que podem ser criados e publicados por um único ator, e 1 https://www.w3.org/TR/webarch/
2 http://tabulator.info/
3 http://mes.github.io/marbles/ 4 https://fenfire-org.github.io/
disponíveis para acesso ou download em um ou mais formatos (CONSORTIUM et al., 2014). Em outras palavras, um conjunto de dados não precisa necessariamente estar disponível como um arquivo para download, uma vez que pode ser acessado por meio de uma API da Web. Além disso, os dados também devem estar disponíveis em formatos legíveis por máquina, fornecidos de forma conveniente e oferecidos sem barreiras tecnológicas para os consumidores de dados. Portanto, os dados devem ser liberados em formatos que estru-turem razoavelmente os dados, pos isso também permite o processamento automatizado e facilita as atividades de classificação e pesquisa por parte das máquinas.
2.1.1 Ecossistema de dados na Web
Um Ecossistema de dados na Web pode ser definido como um conjunto de atores e artefa-tos envolvidos na produção, distribuição e consumo de dados por meio da Web (LÓSCIO; BURLE; CALEGARI, 2016). Um ator pode ser um usuário, um sistema ou ambos, podendo atuar como um publicador de dados ou como um consumidor de dados. O publicador tem o papel de entregar e produzir dados de vários tipos, de acordo com condições específi-cas. O consumidor atua no consumo destes dados, seja processando, analisando, filtrando ou agregando-os. Os atores interagem entre si trocando ou compartilhando conjuntos de dados, que são coleções absolutas e identificáveis de dados unificados por alguns critérios. Os publicadores são responsáveis pelas atividades relacionadas à publicação de da-dos, tais como definir licenças e escolher formatos e plataformas para a sua distribuição. Contudo, eles podem prover um ou mais interfaces de acesso para recuperação destes dados. Cada interface determina os requisitos que os consumidores de dados devem sa-tisfazer para utilizarem os serviços com êxito, tal como parâmetros, formatos de saída e operações. Além disso, consumidores de dados consomem dados de acordo com requi-sitos específicos, ou seja, condições e recursos necessários para resolver um determinado problema ou alcançar um objetivo.
Para consumir ou publicar conjuntos de dados, consumidores e publicadores devem, respectivamente, coordenar um conjunto de atividades inseridas dentro de um processo de consumo ou produção. Segundo Dittrich e Jonscher (2000), selecionar um determinado conjunto de atividades pode depender do uso pretendido, da capacidade do ator, das características dos dados (e.g., dados alfanuméricos, dados multimídia; dados estrutura-dos, semi-estruturaestrutura-dos, não estruturados), requisitos relativos à qualidade dos daestrutura-dos, de desempenho, e os recursos disponíveis (e.g., recursos humanos, tempo, dinheiro).
Um exemplo de Ecossistema de dados Web são as iniciativas de Dados Abertos Go-vernamentais (ATTARD et al., 2015). Nessas iniciativas, os governos atuam como publica-dores de dados, disponibilizando seus dados em formatos legíveis por máquina (
machine-readable) e sob condições abertas de licenciamento que permitem o uso e o
comparti-lhamento dos dados para diversos consumidores. Empreendedores, desenvolvedores de aplicativos ou cidadãos agem como consumidores de dados, criando novos produtos e
ser-viços de informação e visualizações, que permitem monitorar as atividades de seu governo local, como também criar ferramentas para facilitar a vida diária.
2.1.2 Ciclo de vida dos dados na Web
No contexto de dados na Web, existem várias atividades que compõem o processo de publicação e consumo de dados, que vão desde o planejamento e a criação de conjuntos de dados até o acesso e refinamento de conjuntos de dados. Segundo Lóscio, Oliveira e Bittencourt (2015), o conjunto dessas fases é chamado de ciclo de vida dos dados na Web. Apesar de se tratar de um ciclo, é possível que nem todas as etapas sejam seguidas até que uma nova iteração inicie. Dessa forma, mesmo sendo um ciclo, não quer dizer que os dados tenham que passar pela última etapa para iniciar uma nova iteração ou que precisem receber umfeedback antes do publicador realizar um refinamento nos dados. Durante este processo, atores podem desempenhar o papel de publicador e consumidor de dados. A Figura 1 apresenta o ciclo de vida para dados na Web proposto Lóscio, Oliveira e Bittencourt (2015), sendo uma instância do Abstract Data Lifecrycle Model (ADLM) proposto por Möller (2013). Na Figura 1, podemos visualizar cada fase do ciclo de vida que serão brevemente descritas a seguir:
• Planejamento: Esta é a primeira fase do ciclo de vida. Esta fase se estende desde a
intenção de publicar os dados até a seleção dos dados que serão publicados.
• Criação: Está fase abrange atividades de extração de dados, como também de
trans-formação de dados,e.g., transformar dados em formato apropriado para publicação na Web. A fase de criação também compreende a criação de metadados, que des-creverão os dados.
• Publicação: Envolve as tarefas focadas em manter os dados acessíveis. Muitas vezes,
ferramentas de catalogação de dados de dados são usadas para publicar os dados.
• Acesso: Consiste no momento em que os usuários obtêm acesso aos dados.
• Consumo: Compreende uma série de ações e métodos relacionados à manipulação e
análise dos dados coletados. Esse fase do ciclo de vida está diretamente relacionada ao consumidor de dados.
• Feedback: Compreende o momento em que os consumidores fornecem comentários
sobre os dados e metadados utilizados, permitindo identificar melhorias e correções nos dados publicados, bem como manter um canal de comunicação entre publica-dores e consumipublica-dores.
• Refinamento: Compreende todas as atividades relacionadas a melhorias e
previamente publicados e que pode ser realizada a partir dos comentários defeedback coletados na fase anterior.
2.2 REFINAMENTO DE DADOS
De acordo com o Google Dictionary, a palavra refinamento significa tornar algo mais apurado, mais requintado, ou seja, aprimorar um produto fazendo com que ele passe por uma série de operações que irão retirar-lhe impurezas e excessos. Por outro lado, o
Cambridge Dictionary, por sua vez, define refinamento como uma atividade que tem o
objetivo de melhorar uma ideia, um método, um sistema, realizando pequenas mudanças. Por outro lado, o trabalho produzido por Möller (2013) nos traz um conceito mais apurado do que seria o refinamento de dados. Möller (2013) elaborou um modelo de referência para ciclo de vida de dados e metadados em domínios centrados em dados, criando um modelo abstrato que se aplica em vários domínios. Dentro do ciclo de vida proposto, há a fase de refinamento dos dados, e, nesta fase, são realizadas mudanças e adições nos conjuntos de dados (dados e metadados), objetivando a melhoria do conjunto de dados refinado.
Dessa forma, compreendemos que o refinamento de dados é a atividade principal na qual são executadas todas as operações relacionadas a limpeza e enriquecimento de da-dos. O refinamento compreende atividades relacionadas à mudanças, alterações, adições, associações e agregações de dados.
2.2.1 Limpeza de Dados
Segundo o Google Dictionary, limpeza é a atividade que busca remover a sujeira de algo, tornar algo limpo, retirando sujeiras e impurezas. De acordo com oCambridge dictionary, limpeza é a atividade de remover a sujeira de coisas e lugares.
As definições de limpeza de dados na literatura variam sobre a área em que esse termo é aplicado. Por exemplo, na área de Data Warehousing a limpeza de dados refere-se ao tratamento dos dados que foram extraídos e que posteriormente serão carregados, sendo aplicada especialmente na atividade de merge das bases de dados (MALETIC; MARCUS, 2000). Sob outra perspectiva, partindo para uma definição abstrata, Rahm e Do (2000) definem limpeza de dados como atividade aplicada na detecção e remoção de erros e inconsistências de dados, objetivando o aumento da sua qualidade. Esses problemas são presentes em um único dado ou na coleção, arquivos ou banco de dados (RAHM; DO, 2000). No entanto, no livro Principles and methods of data cleaning (CHAPMAN, 2005), limpeza de dados é definida como processo usado para identificar e determinar dados impreci-sos ou incompletos, melhorando a qualidade por meio da correção de erros e problemas detectados.
Assim, a partir das definições, consideramos limpeza de dados como a operação que tem a finalidade de identificar e corrigir erros e inconsistências nos conjuntos de dados, melhorando a sua qualidade.
Segundo Rahm e Do (2000), a qualidade de uma fonte de dados depende do grau de aplicação de padrões de segurança (i.g. integridade referencial) em esquemas que contro-lam os valores que são permitidos e manipulados dentro de uma base de dados. Por outro lado, para fontes semi-estruturadas como arquivosJSON, há poucas restrições sobre como os dados devem ser inseridos e armazenados, e isso desencadeia numa alta probabilidade de surgirem erros e inconsistências (RAHM; DO, 2000).
Tabela 1 – Erros de instância. Fonte: (RAHM; DO, 2000) Adaptado
Erro Exemplo Observações
Ausência telefone= Valores nulos
Valores falsos telefone=99999-9999 Valores falsos
Grafia pais="Brsil" Erros de digitação
Valores ocultos experiência="A"; Não sabe-se qual o verda-deiro significado do registro "A"
Valores abreviados ocupacao="DEV"; Valor abreviado Valores agregados nome="Helton Douglas
08.07.1994 Brasil"
Multiplos valores juntos em um único atributo
Valores desviados pais="Pernambuco" O registro não se refere a um país
Violação de dependên-cia entre atributos
cidade="Recife", cep=55555-555
A cidade e o CEP não cor-respondem Transposição de pala-vras estudante1= (nome="H. Douglas"), estudante2= (nome="Iuri M.")
O correto seria "M. Iuri"
Registros duplicados estudante1=
(nome="Helton Douglas"), estudante2= (nome="H. Douglas")
O mesmo estudante é regis-trado duas vezes
Registros contraditó-rios estudante1= (nome="Helton Douglas", nasci-mento=08.07.1994); es-tudante2= (nome="Helton Douglas", nasci-mento=08.12.1994)
O mesmo estudante é regis-trado duas vezes e possue dados contraditórios
Referências erradas estudante=
(nome="Helton Douglas", curso=10)
O curso referenciado (10) está definido, porém está errado
Tabela 2 – Erros semânticos. Fonte: (RAHM; DO, 2000) Adaptado
Erro Exemplo Observações
Valores ilegais data = 30.15.70 Valores fora do alcance do domínio
Violação de dependên-cias entre atributos
idade = 22, data = 08.07.1980
A idade e a data de nasci-mento devem corresponder Violação de atributos únicos estudante1 = (nome="Helton Douglas", cpf = 12345678910); estu-dante2 = (nome="Marcelo Iury", cpf = 12345678910)
Valor único para o cpf foi violado Violação de integridade referencial estudante= (nome="Helton Douglas", departamento=10) O departamento referenci-ado não está definido
Em um conjunto de dados, estruturado ou não, é possível encontrarmos vários tipos de erros que podem ser corrigidos por meio do processo de limpeza de dados. Dentre eles, podemos encontrar erros de ortografia, dados inválidos ou até mesmo dados nulos (veja as Tabelas 1 e 2). Os erros são geralmente inseridos em conjuntos de dados no momento da execução de uma operação de inserção ou atualização, como também na criação do conjunto de dados (RAHM; DO, 2000).
De modo geral, os erros são classificados em dois níveis (RAHM; DO, 2000):
• Nível de esquema: aqui são incorporados erros e problemas relacionados ao es-quema ou estrutura do conjunto de dados, bem como toda semântica envolvida. Grande parte desses erros são refletidos no nível de instância.
• Nível de instância: neste nível estão erros e inconsistências no conteúdo dos dados que não são visíveis no nível de esquema. Esses erros estão diretamente relacionados a instância dos dados.
Certamente, a limpeza de dados deve ser vista como um processo. Este processo pode ser vinculado diretamente à aquisição e definição de dados ou pode ser aplicado posteri-ormente para melhorar a qualidade dos dados e dos conjuntos de dados como um todo (MALETIC; MARCUS, 2000).
Na literatura existem poucas abordagens que norteiam todo o processo de limpeza de dados. Assim como as definições, cada abordagem torna-se específica para o domínio aplicado. Os trabalhos aqui referenciados ((RAHM; DO, 2000) e (MALETIC; MARCUS, 2000)) descrevem abordagens e processos que se aplicam a limpeza de dados, mas em particular, Rahm e Do (2000) propõem um tratamento específico para área de Data Warehouse. Por
outro lado, (MALETIC; MARCUS, 2000) apresentam uma abordagem abstrata e que pode ser aplicada em vários contextos.
É bom ressaltar que os autores não se preocuparam com o nível de detalhe na descrição
dos frameworks, relatando apenas os passos e uma breve explicação que serão mostradas
nas sub-seções a seguir.
Framework proposto por Maletic e Marcus (2000)
O framework de limpeza de dados proposto por Maletic e Marcus (2000) descreve a
limpeza de dados como um processo que busca a eliminação das impurezas existentes dentro de conjuntos de dados. Assim, esse processo deve seguir 3 passos:
1. Definir e determinar os tipos de erros: Para que seja feita a análise e a busca dos erros de um conjunto de dados é necessário definirmos o que é um erro e quais erros poderão ser encontrados. Dessa forma, esse passo se torna primordial dentro da limpeza de dados, pois é mais custoso ir a busca dos erros, sem sabermos o que é ou o que podemos encontrar.
2. Buscar e identificar as instância dos erros: Dado os erros, é cabível agora buscá-los e identificá-los dentro do conjunto de dados que é pretendido realizar a limpeza. Para isso, existe um conjunto de métodos que podem auxiliar a detecção dos erros, são eles: (i) Estatístico, busca identificar campos e registros propensos a erros usando métodos estatísticos como média de valores e desvio padrão; (ii) Clus-tering, tem o objetivo de identificar campos e registros propensos a erros utilizando algorítimos de agrupamento, tal como Euclidian Cluster (BEALE, 1969); (iii) Base-ado em padrões, identifica campos e registros propensos a erros que não estão de acordo com os padrões de dados existentes. Técnica como particionamento e clas-sificação são usadas para identificar os padrões e aplicar nos vários registros; e (iv) Regras de associação, definem um padrão diferente, ou seja, os registros que não seguem essas regras são considerados propensos a erro. O grande poder das regras de associação é poder lidar com dados de diferentes tipos.
3. Corrigir os erros encontrados: A correção dos erros identificados é o passo chave de todo o processo. É aqui que os dados serão de fato alterados para um estado consistente e livre de erros. A correção pode ser feita manualmente ou com a ajuda de ferramentas que auxiliam este processo.
Esses passos devem dirigir o processo de limpeza do conjunto de dados como um todo, tanto sua instância, como seu esquema. A ordem é importante e deve ser seguida, pois cada passo depende do anterior, tornando-se assim um processo em cadeia. De fato, também existe uma ampla variedade de métodos e tecnologias especializadas que podem ser aplicadas a cada um desses passos.
O livro Chapman (2005) adiciona 2 passos aoframework proposto por Maletic e Mar-cus (2000), são eles:
1. Documentar as instâncias e os tipos de erros: A documentação dos erros é uma tarefa essencial para manter a qualidade dos dados e evitar a duplicação da análise dos erros. Assim, se as correções foram realizadas e não estiverem completamente documentadas, os usuários não podem determinar a adequação dos dados para uso futuro (CHAPMAN, 2005).
2. Tratar as entrada de dados para reduzir futuros erros: Por fim, é necessário que hajam estratégias que previnam a inserção de erros dentro das entradas de dados, como a criação de guidelines e best practices. Por exemplo, no contexto de dados na Web, foram criadas as Data on the Web Best Practices, documento que norteia e guia a publicação de dados na Web através de um conjunto de práticas (LÓSCIO; BURLE; CALEGARI, 2016).
Framework proposto por Rahm e Do (2000)
Oframework criado por Rahm e Do (2000), foi desenvolvido para ser aplicado em
proces-sos de tratamento de dados na área de datawarehouse. Contudo, os conceitos propostos também podem ser estendidos para outros domínios e plataformas, tal como para a Web. Dessa forma, esse framework define uma abordagem para limpeza de dados que envolve 5 fases:
1. Análise de dados: Para detectar cada tipo de erro e inconsistência que deve ser removida ou corrigida, é necessário realizar o processo de análise e identificação de erros. Segundo Rahm e Do (2000), além de uma inspeção manual dos dados, os pro-gramas de análise devem ser usados para obter informações sobre as propriedades dos dados a fim detectar problemas de qualidade. Para isso, existem duas aborda-gens relacionadas à análise de dados: data profiling e data mining. O data profiling é uma abordagem que busca analisar individualmente a instância dos dados. Essa análise deriva informações como tipo de dado, tamanho, ocorrência de valores nulos, padrões, provendo uma visão exata de vários aspectos de qualidade dos atributos (RAHM; DO, 2000). Por outro lado, o data mining tem o seu foco na descoberta de padrões em grandes conjuntos de dados. Essa abordagem utiliza modelos descriti-vos de mineração de dados como clustering, summarization, association discovery e
sequence discovery (FAYYAD, 1998).
2. Definição do fluxo de limpeza: Esta fase constrói e define quais atividades devem ser seguidas para que a limpeza dos dados possa ser efetuada. Segundo Rahm e Do (2000) nesta fase são utilizadas ferramentas ETL que geralmente são aplicadas na
área de datawarehouse. Essas ferramentas facilitam o processo de extração, trans-formação e carga dos dados em um determinado contexto (JÖRG; DESSLOCH, 2009), podem ser utilizadas para automatizar ou semi-automatizar o processo de limpeza. Em ETL, existe o conceito de steps, que são passos que podem ser criados e cons-truídos em sequência, formando o fluxo ETL. Nesse fluxo, podemos inserir passos de limpeza de dados para remover duplicatas, remover nulos, corrigir erros de grafia, dentre outros. Assim, posteriormente, um novo conjunto de dados corrigido poderá ser carregado como uma nova coleção limpa.
3. Verificação: O objetivo desta fase é avaliar e testar o fluxo ETL criado na fase anterior, verificando sua corretude e efetividade (RAHM; DO, 2000). O fluxo deve ser testado, por exemplo, em uma amostra ou cópia dos dados de origem, assim é possível melhorar as definições e os steps, visto que alguns erros só se tornam evidentes depois de executado este processo.
4. Transformação: Após a fase de validação do fluxo ETL, resta a execução desse fluxo. De fato, esta fase efetiva a correção dos dados, eliminando todos os erros encontrados na fase de análise.
5. Backflow dos dados limpos: A última fase do framework diz que o conjunto de dados limpo deve ser sobrescrito na fonte original, para assim evitar o re-trabalho na limpeza de futuras extrações (RAHM; DO, 2000).
2.2.2 Enriquecimento de Dados
Conforme o Google Dictionary, enriquecimento é aumentar a qualidade de algo, especial-mente adicionando coisas a ela; de acordo com o Cambridge dictionary, o enriquecimento é a tarefa que busca aumentar a qualidade de algo, adicionando alguma coisa, fazer algo ou alguém rico.
Na literatura encontramos a definição de enriquecimento aplicado ao uso de semântica. Conforme Diamantini e Boudjlida (2006), o enriquecimento semântico é o processo de associar aos dados uma descrição do seu significado, de forma que aumente o entendimento humano, interoperabilidade técnica e o gerenciamento automático de informações. Por outro lado, segundo Hull, Jenkins e McCutchen (2006), o enriquecimento semântico é o processo de adicionar e associar semantic tags (conceitos, relacionamentos, eventos, propriedades) em dados não estruturados, aumentando assim seu entendimento.
Na literatura, a definição de enriquecimento de dados refere-se aos conceitos relaciona-dos ao enriquecimento semântico de conjuntos de darelaciona-dos. O enriquecimento semântico pode ser entendido como um recurso projetado para aumentar a riqueza dos dados, ou seja, processo de associar aos dados uma descrição do seu significado, aumentando o entendi-mento humano, interoperabilidade técnica e o gerenciaentendi-mento automático de informações (CLARKE, 2009) (DIAMANTINI; BOUDJLIDA, 2006).
O enriquecimento semântico também pode ser visto como o processo de atribuir maior significado aos dados e metadados por intermédio da aplicação de recursos auxiliares, objetivando facilitar os processos de compreensão e integração de dados. Dessa forma, o enriquecimento semântico torna os dados e metadados mais qualificados, por meio do uso da semântica atribuída por vocabulários pré-existentes, sinônimos e informações de proveniência (HULL; JENKINS; MCCUTCHEN, 2006).
Para realizar o Enriquecimento Semântico e obter conceitos adicionais, alguns recur-sos e técnicas são usados, dentre eles podemos citar: Anotação Semântica, Vinculação e Mapeamento de Recursos, além da conversão para modelos de dados semânticos:
• Anotação Semântica: Segundo Uren et al. (2006), anotação semântica consiste na atribuição de semântica (significado) aos elementos de um esquema de origem de forma manual ou automatizada por meio da adição de informação semântica; • Vinculação e Mapeamento de Recursos: Consiste em descobrir links entre
as combinações semânticas dos dados e metadados com outros recursos na Web de dados. Segundo Sorrentino et al. (2013), este recurso é muito utilizado para interligar recursos na nuvem;
• Conversão para modelos de dados semânticos: Consiste em modelar os dados num formato semântico e estruturado, como RDF/XML, beneficiando sua manipu-lação por aplicações que consomem esses modelos de dados.
Assim, reconhecemos o enriquecimento de dados como operação que tem o objetivo de agregar valor aos conjuntos de dados, seja com a adição de dados e metadados, ou anotações semânticas.
2.3 OPEN COLLABORATION E SOCIAL CODING
Nos últimos 30 anos, o número de projetos criados seguindo a abordagem de colaboração aberta (Open Collaboration) vem aumentando, e como consequência disto, o crescimento na popularidade desta abordagem. Os projetos de colaboração aberta são distribuídos abertamente, onde pessoas aplicam esforços de forma colaborativa no desenvolvimento de projetos e produtos. Esta nova forma de desenvolvimento de projetos se torna possível graças às mudanças tecnológicas ocorridas nas áreas da informação e comunicação, que facilitam essas atividades de âmbito cooperativo (FORTE; LAMPE, 2013).
A colaboração aberta também evoluiu como um novo modelo de inovação no setor público. As organizações governamentais estão usando essas plataformas para criar e de-senvolver projetos de software, e isto tem contribuído para o aumento no desenvolvimento tecnológico do setor público (MERGEL, 2015). A colaboração aberta surgiu como uma alternativa para o desenvolvimento de produtos de software no governo. Em vez de ter-ceirizar o desenvolvimento de projetos de TI, o código é desenvolvido internamente, e
posteriormente inserido em uma plataforma Open Collaboration, mais especificamente, plataformas Social Coding, como o GitHub. Assim, desenvolvedores externos são convi-dados a reusar o código desenvolvido, como também fazer sugestões de mudanças para melhorar o código.
A definição de (Open Collaboration) é composta por quatro aspectos principais (FORTE; LAMPE, 2013), são eles:
1. Suporte à produção coletiva de um artefato: Os participantes de projetos de colaboração aberta trabalham na criação de um ou mais artefatos compartilhados, com o conhecimento de que o produto será consumado no futuro.
2. Tecnologicamente mediada por plataformas A plataforma deve apoiar a pro-dução coletiva de projetos, possuindo meios que possibilitem o desenvolvimento simultâneo de artefatos, assim como colaboração de pessoas em diversos locais, não se resumindo dentro de uma organização ou local. Ela deve gerenciar as requisições utilizando métodos e ferramentas computacionais já estabelecidos.
3. Baixa barreira de entrada e saída: Em qualquer plataforma sociotécnica, exis-tem barreiras relacionadas à entrada e permissões de usuários. As pessoas devem possuir habilidades necessárias para participar de forma significativa e entender quais tipos de participação são valorizados. Em sistemas de colaboração aberta, as barreiras à entrada e à saída são relativamente baixas.
4. Apoiar o surgimento de estruturas sociais: Plataformas de colaboração aberta possuem fluxos de comunicação entre os participantes, apoiando o surgimento de estruturas sociais, possibilitando a comunicação entre eles.
Existem duas questões que ganharam uma atenção especial dentro de projetos que seguem esta abordagem, relacionadas à qualidade e à completude desses projetos (FORTE; LAMPE, 2013). Projetos onde muitas pessoas trabalham juntas, colaborando na construção de artefatos, são propícios a vários tipos de erros que comprometem a qualidade do produto final, como também a sua completude, isto é, se realmente o projeto está cumprindo todos os requisitos demandados. Segundo Forte e Lampe (2013) estudos estão sendo feitos na busca de avaliar essas questões e buscar melhores soluções para elas.
Uma das abordagens mais difundidas de Open Collaboration é o Social Coding. O
Social Coding é uma abordagem criada para o desenvolvimento de software que destaca
a colaboração formal e informal entre desenvolvedores (MERGEL, 2015). Esta abordagem vem mudando a forma como os softwares estão sendo desenvolvidos em todo o mundo. Plataformas que aplicam essa abordagem, como GitHub e BitBucket, são também consi-deradas plataformasOpen Collaboration. Nessas plataformas, projetos de software podem ser desenvolvidos de forma colaborativa, colaboradores podem visualizar e compartilhar suas atividades, encontrar novos projetos, bem como seguir outros colaboradores. Muitas
vezes, essas relações sociais entre usuários são utilizadas para disseminar projetos, atrair contribuidores e aumentar a popularidade.
As plataformas de Social Coding integram funcionalidades de mídias sociais com Dis-tributed Revision Control Systems (DVCS) [(JIANG; ZHANG; LI, 2013)]. Os DVCS têm revolucionado a maneira com que os softwares estão sendo desenvolvidos desde o apare-cimento dos primeiros projetos e implementações open source (CHACON, 2009). Em sua grande maioria, um arquivo é considerado como um conjunto de mudanças ordenadas onde as alterações são marcadas por identificadores globais únicos, que podem ser usados para rastrear o conteúdo dessas mudanças (commits) em todos os repositórios (GOUSIOS; PINZGER; DEURSEN, 2014).
Os DVCS trabalham com o modelo de desenvolvimento pull-based, onde o projeto principal é clonado de um repositório remoto para o repositório local. As alterações ou mudanças são feitas localmente e em seguida requisitadas para o repositório remoto, ca-bendo ao proprietário do repositório aceitar ou rejeitar os pedidos recebidos. Dessa forma, através do desenvolvimento distribuído, esses sistemas permitem que usuários enviem con-juntos de mudanças, como também habilitem o reuso do código que já foi desenvolvido, permitindo a realização de alterações e que as melhorias realizadas possam, de fato, serem atualizadas no projeto fonte (GOUSIOS; PINZGER; DEURSEN, 2014)(DABBISH et al., 2012). Por outro lado, para gerenciar o recebimento e processamento das contribuições exter-nas, ou seja, das mudanças submetidas ao repositório principal, os DVCSs aplicam duas estratégias (GOUSIOS; PINZGER; DEURSEN, 2014):
• Shared repository. Nesta estratégia, o dono do projeto compartilha o repositório com contribuidores selecionados, habilitando permissões de leitura e alteração aos mesmos. Dessa forma, os colaboradores devem clonar o projeto localmente, modi-ficar seu conteúdo, criar um novo branch e solicitar a agregação de suas mudanças
ao branch principal. Nesta estratégia, para lidar com múltiplas versões e vários
desenvolvedores, o dono do projeto adota o modelo chamado branching model, ou seja, uma maneira organizada de inspecionar e testar as mudanças antes de serem anexadas ao branch principal.
• Pull requests. Está estratégia permite que qualquer usuário possa clonar e sub-meter mudanças em qualquer projeto de forma independente. Segundo Gousios, Pinzger e Deursen (2014), quando um conjunto de mudanças está pronto para ser submetido ao repositório principal, é criado um pull request, que especifica quais alterações foram feitas e quem foi o responsável por elas. Dessa forma, o dono do projeto é o responsável por inspecionar as mudanças e realizar omerge para o branch principal, onde podem ser rejeitadas ou não. Veja como é o processo de pull request na Figura 3.
Figura 3 – Processo de pull request. Fonte: (GOUSIOS; PINZGER; DEURSEN, 2014)
A estratégia depull request é a mais popular dentre as plataformas Social Coding. No contexto atual, usuários do GitHub, por exemplo, utilizam essa estratégia na colaboração com diferentes projetos de software. Ao implementar uma melhoria, os usuários realizam uma requisição a fim de fazer omerge da melhoria com o projeto principal, criando assim
um pull request. Por fim,ao receber essa requisição, o proprietário do projeto analisa a
melhoria codificada e decide se essa colaboração vai fazer parte do projeto ou se vai ser descartada.
2.4 TRABALHOS RELACIONADOS
Neste trabalho, consideramos o refinamento de dados segundo (MÖLLER, 2013) e Lóscio, Oliveira e Bittencourt (2015), i.e., atividade direcionada a execução de procedimentos de limpeza de dados, como também de enriquecimento, realizando alterações e adições em um conjunto de dados (e.g., dados e metadados), com o objetivo de melhorar a sua qualidade.
Na literatura, é possível encontrar menções relacionando os conceitos de refinamento, enriquecimento e limpeza de dados. Apesar dessas atividades serem relacionadas, elas não possuem necessariamente as mesmas definições, como também não são tratadas da mesma forma. Além disso, ainda não há uma clareza em relação ao significado de refinamento de conjuntos de dados. Há muitos trabalhos que abordam o problema do refinamento de dados por meio da proposição de métodos ou soluções voltadas para limpeza de da-dos (CHAPMAN, 2005), integração de dada-dos (LENZERINI, 2002) ou anotação semântica (DIAMANTINI; BOUDJLIDA, 2006), por exemplo. Contudo, é importante destacar que há poucos estudos que apresentam uma definição ou distinção sobre o termo refinamento de
conjuntos de dados. Mesmo entre os trabalhos que apresentam uma definição para esses termos, uma parcela significativa faz uso de definições superficiais, não trazendo clareza quanto ao real significado e aplicação de refinamento, limpeza ou enriquecimento. Além disso, diversos estudos sequer mencionam o termo refinamento de dados.
Alguns trabalhos trazem definições concretas sobre limpeza de dados. O trabalho realizado por Rahm e Do (2000) define o conceito de limpeza de dados, como também aborda alguns problemas de qualidade que estão presentes em base de dados. Além disso, ele cita que a área de pesquisa em Data warehouse provê suporte à limpeza de dados, uma vez que esta área possui técnicas bem definidas cujo o objetivo é a remoção de erros e inconsistências de bases de dados, e.g., o processo de ETL. Por fim, Rahm e Do (2000) descreve as principais fases do processo de limpeza de dados, que vai desde a análise dos dados até a realização da limpeza, sempre utilizando técnicas e tecnologias usadas em
Data warehouse.
O trabalho realizado por Maletic e Marcus (2000) fornece uma visão geral da literatura sobre limpeza de dados. O principal objetivo deste trabalho é descrever e analisar métodos de detecção automática de erros em conjuntos de dados, como data mining e clustering. Além disso, o autor apresenta um experimento realizado com o objetivo de investigar cada método de detecção de erros utilizando um conjunto de dados do mundo real. Por fim, ele descreve os problemas encontrados com o uso dos métodos de detecção automática de erros e direciona pesquisas futuras nesta área.
Chapman (2005) escreveu um livro abordando princípios e métodos da limpeza de da-dos. Ele afirma que limpeza de dados é o processo usado para determinar dados imprecisos ou incompletos, a fim melhorar a qualidade por meio da correção de erros encontrados. Neste livro, também é descrita uma taxonomia de erros, reunindo os erros mais frequentes descobertos nos conjuntos de dados. O livro descreve como deve ser feita a documentação dos erros encontrados, como também a documentação dos métodos utilizados na correção. Por fim, Chapman (2005) cita algumas ferramentas que podem ser usadas no processo de limpeza de dados para a identificação e correção de erros.
Existem também trabalhos que relacionam o conceito de refinamento de dados com o enriquecimento de dados. Contudo, na literatura, a maioria dos trabalhos que traz o enriquecimento de dados diz respeito ao enriquecimento semântico de conjuntos de dados. Clarke e Harley (2014) aborda o enriquecimento semântico como um processo direcionado para adição de tags semânticas em dados ou metadados a fim de facilitar a compreensão dos dados, como também auxiliar no descobrimento. A pesquisa realizada por Diamantini e Boudjlida (2006) identifica diferentes tipos de anotações semânticas que podem ser usa-das para o enriquecimento de modelos de dados estratégicos de uma empresa. O trabalho proposto por Fileto et al. (2015), fornece uma visão geral de propostas de enriquecimento semântico para dados em movimento (i.e., dados que descrevem posições espaço tempo-rais de objetos que podem ser capturados por sensores, como GPS), associando aos dados