108
Karran Rainoldo Besen Análise, seleção e teste de ferramentas para coleta de dados sobre objetos móveis visando enriquecimento semântico Florianópolis/SC 2017

Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Karran Rainoldo Besen

Análise, seleção e teste de ferramentas paracoleta de dados sobre objetos móveis visando

enriquecimento semântico

Florianópolis/SC2017

Page 2: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Karran Rainoldo Besen

Análise, seleção e teste de ferramentas para coleta dedados sobre objetos móveis visando enriquecimento

semântico

Trabalho de conclusão de curso submetidoà Universidade Federal de Santa Catarinacomo parte dos requisitos para obtenção dograu de Bacharel em Ciência da Computa-ção.

Universidade Federal de Santa Catarina – UFSC

Departamento de Informática e Estatística

Orientador: Prof. Dr. Renato Fileto

Florianópolis/SC2017

Page 3: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Ficha de identificação da obra elaborada pelo autor, através do Programa de Geração Automática da Biblioteca Universitária da UFSC.

Besen, Karran Análise, seleção e teste de ferramentas paracoleta de dados sobre objetos móveis visandoenriquecimento semântico / Karran Besen ;orientador, Renato Fileto, coorientador, ItaloLopes, 2017. 60 p.

Trabalho de Conclusão de Curso (graduação) -Universidade Federal de Santa Catarina, CentroTecnológico, Graduação em Ciências da Computação,Florianópolis, 2017.

Inclui referências.

1. Ciências da Computação. 2. Análise, seleção eteste de ferramentas para coleta de dados sobreobjetos móveis visando enriquecimento semântico. 3.Implementação de ferramenta para coleta de dadossobre objetos móveis no momento de postagens noTwitter. I. Fileto, Renato. II. Lopes, Italo. III.Universidade Federal de Santa Catarina. Graduação emCiências da Computação. IV. Título.

Page 4: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Karran Rainoldo Besen

Análise, seleção e teste de ferramentas para coleta dedados sobre objetos móveis visando enriquecimento

semântico

Este Trabalho de Conclusão de Curso foi julgado aprovado para aobtenção do Título de “Bacharel em Ciências da Computação”, eaprovado em sua forma final pela Universidade Federal de SantaCatarina.

Florianópolis, 2017

Prof. Dr. Rafael LCancianCoordenador

Universidade Federal de Santa Catarina

Banca Examinadora:

Prof. Dr. Renato FiletoOrientador

Universidade Federal de Santa Catarina

Prof. Dr. Sílvia Modesto NassarUniversidade Federal de Santa Catarina

Prof. Dr. Ronaldo dos Santos MelloUniversidade Federal de Santa Catarina

Page 5: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Agradecimentos

Agradeço principalmente a minha noiva, Suelen Odraizola, que me motivou eapoiou em todos os momentos. Sempre ajudando a manter o foco e priorizar o términoda minha graduação. Não conseguiria finalizar este trabalho sem a ajuda dela.

Agradeço ao meu professor e orientador Renato Fileto que foi extremamente paci-ente e atencioso comigo e com meu trabalho, me ajudando inclusive enquanto estava naAlemanha. Agradeço ao meu co-orientador Italo Lopes Oliveira que até mesmo em diasatarefados dedicou seu tempo para me orientar.

Agradeço a minha irmã, Cecília Besen, e ao seu namorado, Roque Lemos, quetestaram e utilizaram o aplicativo desenvolvido neste trabalho, e agradeço a minha mãe,Vaneide Correia, por todo o carinho e apoio durante este processo.

Por fim, agradeço a todos os meus amigos, professores e colegas que contribuíramcom o meu aprendizado e tornaram a faculdade um ambiente agradável.

Page 6: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Resumo

A quantidade de dados gerados pelo amplo uso das midias sociais (e.g. Twit-ter, Facebook) é massiva e aumenta a cada segundo. Muitos desses dados estão pu-blicamente disponíveis e podem alimentar uma ampla variedade de aplicações. En-tretanto, postagens em mídias sociais têm conteúdo textual não estruturado, sujeitoa ruídos e problemas de interpretação. Assim, tais postagens precisam ser semanti-camente enriquecidas antes de serem utilizadas em certas aplicações. O processo deenriquecimento semântico de postagens em mídias sociais requer informações sobreo contexto dentro do qual tais postagens são feitas, de modo a gerar anotações dequalidade. Este trabalho apresenta um esforço de coleta e organização de dadospara experimentos de enriquecimento semântico de postagens em mídias sociais,uma revisão de literatura sobre ferramentas para coleta de informações adicionaisde contexto que possam auxiliar no enriquecimento semântico e uma proposta deaplicativo para coleta de dados sobre objetos móveis no momento de postagens noTwitter. Os resultados obtidos neste trabalho são: (i) um esquema remodelado eexpandido para organizar a base de dados sobre objetos móveis, suas postagens eexperimentos de enriquecimento semântico de tais postagens no Laboratório de In-tegração de Sistemas e Aplicações (LISA); (ii) coleta e organização de um grandevolume de dados do Twitter, incluindo centenas de milhões de tweets e informaçõesde perfil dos usuários que os postaram; (iii) uma análise comparativa de ferramentaspara coleta de informações de contexto de objetos móveis, as quais podem comple-mentar informação de perfil e auxiliar no processo de enriquecimento semânticode postagens em mídias sociais; (iv) uma ferramenta para coleta de dados sobrecontexto de objetos móveis no momento de postagens no Twitter; (v) resultadosconsiderando os testes preliminares de anotação semântica dos tweets coletadoscom dados ligados abertos.

Palavras-chaves: Mídias Sociais. Enriquecimento Semântico. Anotação Semântica.Coleta de Contexto de Objetos Móveis.

Page 7: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Abstract

The amount of data generated by the widespread use of social media (e.g.Twitter, Facebook) is massive and increases every second. Many of these data arepublicly available and can feed a wide variety of applications. However, posts insocial media have unstructured textual content, subject to noise and interpretationproblems. Thus, such posts need to be semantically enriched before being used incertain applications. The process of semantic enrichment of postings in social me-dia requires information about the context within which such posts are made, togenerate quality annotations. This work presents an effort to collect and organizedata for semantic enrichment experiments of social media postings, a literature re-view on tools to collect additional context information that may help the semanticenrichment and an application proposal for data collection on mobile objects at thetime of Twitter posts. The results obtained in this work are: (i) a remodeled andexpanded scheme to organize the database of mobile objects, their posts and ex-periments of semantic enrichment of such postings in the Laboratory of Integrationof Systems and Application (LISA); (ii) collecting and organizing large amountsof Twitter data, including hundreds of millions of tweets and profile informationfrom users who posted them; (iii) a comparative analysis of tools for collecting con-text information of mobile objects, which can complement profile information andassist in the process of semantic enrichment in social media posts; (iv) a tool forcollecting data about the context of mobile objects at the time of Twitter posts; (v)preliminary semantic annotation experiments of tweets collected with open linkeddata.

Key-words: Social medias. Semantic Enrichment. Semantic Annotation. ContextCollection of Mobile Objects

Page 8: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Lista de ilustrações

Figura 1 – Tweet coletado através do script SeMovGet tweet . . . . . . . . . . . . 19Figura 2 – Anotação semântica para que o tweet da figura 1 possa ser interpretado

da forma correta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Figura 3 – Esquema antigo do banco de dados sobre dados coletados do twitter . . 22Figura 4 – Esquema do banco de dados sobre objetos móveis e experimentos de

anotação semântica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Figura 5 – Tela do ODK Build, retirado de (HARTUNG et al., 2010) . . . . . . . 27Figura 6 – Tela inicial do ODK Collect . . . . . . . . . . . . . . . . . . . . . . . . 28Figura 7 – Arquitetura do sistema ODK 2.0 . . . . . . . . . . . . . . . . . . . . . 29Figura 8 – Tela inicial do GeoODK Collect . . . . . . . . . . . . . . . . . . . . . . 30Figura 9 – Tela do Mobile Data Converter após a conversão dos dados coletados . 30Figura 10 –Tela inicial do KoBo Collect . . . . . . . . . . . . . . . . . . . . . . . . 31Figura 11 –Arquitetura do gMission . . . . . . . . . . . . . . . . . . . . . . . . . . 32Figura 12 –Arquitetura do LoCCAM . . . . . . . . . . . . . . . . . . . . . . . . . 34Figura 13 –Arquitetura do AWARE . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Figura 14 –Telas de ativação do serviço de acessibilidade do framework AWARE. . 39Figura 15 –Tela do aplicativo desenvolvido . . . . . . . . . . . . . . . . . . . . . . 40Figura 16 –Representação das coordenadas utilizado pelo acelerômetro . . . . . . . 41Figura 17 –Representação das coordenadas utilizado pela rotação . . . . . . . . . . 41

Figura 18 –Diagrama de atividades do processo de coleta e carga dos dados . . . . 48Figura 19 –Gráfico comparando a quantidade de Tweets com e sem coordenadas

geográficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Figura 20 –Área modificada do modelo do banco de dados do capítulo 3 . . . . . . 49Figura 21 –Tweet utilizado para exemplificar a utilidade do Tweet Context Collector 50Figura 22 –Mapa gerado pela API do Google Maps com um polígono mostrando

a área de Florianópolis definido pelo Twitter . . . . . . . . . . . . . . . 50Figura 23 –Mapa gerado pela API do google maps com o raio aproximado da lo-

calização do objeto móvel. . . . . . . . . . . . . . . . . . . . . . . . . . 51Figura 24 –Mapa gerado pela API do google maps com a orientação do usuário . 51Figura 25 –Tweet utilizado para o teste . . . . . . . . . . . . . . . . . . . . . . . . 52Figura 26 –Tweet utilizado para o teste . . . . . . . . . . . . . . . . . . . . . . . . 52Figura 27 –Algoritmo proposto em (FILETO et al., 2015) . . . . . . . . . . . . . . 53Figura 28 –Distância calculada pela API do Google Maps . . . . . . . . . . . . . . 54

Page 9: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Figura 29 –Coordenada e orientação do usuário no momento da postagem do Tweet 55

Page 10: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Lista de tabelas

Tabela 1 – Alguns dos sensores presentes no núcleo do AWARE . . . . . . . . . . 36Tabela 2 – Comparação de ferramentas para coleta de dados sobre objetos móveis 37Tabela 3 – Comparação dos campos e sensores de entrada presentes nas ferramen-

tas estudas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Tabela 4 – Os campos coletados do acelerômetro . . . . . . . . . . . . . . . . . . . 42Tabela 5 – Os campos coletados do barômetro . . . . . . . . . . . . . . . . . . . . 42Tabela 6 – Os campos coletados pela gravidade . . . . . . . . . . . . . . . . . . . 43Tabela 7 – Os campos coletados pelo giroscópio . . . . . . . . . . . . . . . . . . . 43Tabela 8 – Campos coletados pela localização . . . . . . . . . . . . . . . . . . . . 43Tabela 9 – Campos coletados pela luminosidade . . . . . . . . . . . . . . . . . . . 44Tabela 10 –Campos coletados pelo magnetômetro . . . . . . . . . . . . . . . . . . 44Tabela 11 –Campos coletados pela rotação . . . . . . . . . . . . . . . . . . . . . . 45Tabela 12 –Campos coletados pela temperatura . . . . . . . . . . . . . . . . . . . 45Tabela 13 –Campos coletados pelo plugin Google Fused Location . . . . . . . . . . 46Tabela 14 –Campos coletados pelo Google Activity Recognition . . . . . . . . . . . 46

Page 11: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Lista de abreviaturas e siglas

LOD Linked Open Data

URI Uniform Resource Identifier

RDF Resource description Framework

ODK Open Data Kit

LISA Laboratory for Integration of Systems and Applications

PoI Place of Interest

XML eXtensible Markup Language

SMS Short Message Service

CSV Comma Separated Values

Page 12: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Sumário

1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.2 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.3 Organização do restante do trabalho . . . . . . . . . . . . . . . . . . . . . 15

2 Fundamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.1 Dados sobre objetos móveis . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.1 Postagens em mídias sociais . . . . . . . . . . . . . . . . . . . . . . 162.1.2 Dados sobre movimentos . . . . . . . . . . . . . . . . . . . . . . . . 17

2.2 Dados de contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3 Anotação Semântica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.4 Dados Ligados Abertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3 Banco de dados para anotação semântica . . . . . . . . . . . . . . . . . . . 213.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.2 Esquema do banco de dados . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4 Ferramentas para coleta de contextos . . . . . . . . . . . . . . . . . . . . . 254.1 Open Data Kit (ODK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1.1 ODK Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.1.2 ODK Aggregate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.1.3 ODK Collect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.1.4 ODK 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.2 GeoODK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.2.1 As diferenças entre GeoODK e ODK . . . . . . . . . . . . . . . . . 29

4.3 KoBoToolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.3.1 As diferenças entre KoBoToolbox e ODK . . . . . . . . . . . . . . . 31

4.4 gMission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.5 LoCCAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.6 AWARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.7 Síntese Comparativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5 Aplicativo desenvolvido: Tweet Context Collector . . . . . . . . . . . . . . . 39

6 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.1 Coleta e análise de dados do Twitter . . . . . . . . . . . . . . . . . . . . . 47

6.1.1 Caracterização dos dados coletados . . . . . . . . . . . . . . . . . . 48

Page 13: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

6.2 Testes com ferramentas para coleta de contextos . . . . . . . . . . . . . . . 496.2.1 Teste de enriquecimento semântico com LOD . . . . . . . . . . . . 51

7 Conclusões e trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . 56

Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

APÊNDICE A Artigo sobre o TCC . . . . . . . . . . . . . . . . . . . . . . . . 61

APÊNDICE B Modelo do banco de dados para experimentos de enriqueci-mento semântico . . . . . . . . . . . . . . . . . . . . . . . . . 76

APÊNDICE C Código fonte Tweet Context Collector . . . . . . . . . . . . . 92

Page 14: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

13

1 Introdução

O uso de objetos móveis para a coleta de dados não é novidade, notebooks e palm-tops já são usados a muito tempo para coleta de dados, como por exemplo na saúde (GAR-RITTY; EMAM, 2006), na agricultura (OLIVEIRA; BOLLIGER; FLORIDO, 2006), etc.A redução do custo de aquisição e operação e aumento de funcionalidades de smartphonestornou estes objetos móveis disponíveis até em regiões extremamente pobres e remotas,motiva ainda mais a exploração do uso destes dispositivos na coleta de dados.

Até os celulares mais simples podem ser utilizados na coleta de dados, por exemplocom o uso de serviços de mensagem de texto (e.g. SMS) ou voz. Os smartphones podemservir de formas muito mais sofisticadas para estas coletas, como por exemplo apresen-tando formulários que possuem interfaces amigáveis, utilizando os dados gerados pelossensores do dispositivo ou então os dados gerados pela interação com mídias sociais.

A quantidade de conteúdo gerado pelas mídias sociais (e.g. Twitter, Facebook,Instagram, Foursquare) aumenta constantemente. Nas mídias sociais os usuários se tornamfontes de dados. O Twitter, por exemplo, possui atualmente cerca de 310 milhões deusuários ativos1, i.e., que enviam tweets mensalmente. Esses usuários muitas vezes relataminformações e expressam suas opiniões e sentimentos através de tais tweets, que ficam emgrande parte disponíveis via diversas interfaces, incluindo APIs2 e frameworks de coletade dados (KUMAR; MORSTATTER; LIU, 2014). Assim, mídias sociais têm se tornadoimensas e ricas fontes de informação para diversas aplicações.

Os dados das mídias sociais são utilizados em uma grande diversidade de pes-quisas, tais como recuperação e análise de informação (FRUTUOSO, 2014), análise desentimentos (KOULOUMPIS; WILSON; MOORE, 2011; AGARWAL et al., 2011) e reco-mendação (MATHIOUDAKIS; KOUDAS, 2010). As informações adquiridas das mídiassociais podem ser úteis em vários dominíos de aplicação, tais como marketing, turismo esegurança pública (ACHREKAR et al., 2011; PAUL; DREDZE, 2011).

Entretanto, dados de mídias sociais apresentam uma enorme variedade de forma-tos, podendo incluir dados semiestruturados (e.g., tags, timestamps, coordenadas geográfi-cas) e não estruturados (textos livres). Os textos postados em mídias sociais normalmentesão informais, sujeitos a muitos erros ortográficos e gramaticais, gírias e acrônimos (e.g.LOL - Lots of laughs, sqn - Só que não, kd - cadê, vc - você), entre outros problemas.

Devido à estrutura linguística irregular, postagens podem ser interpretadas deforma errônea ou com pouca precisão. Assim, para se extrair informação de qualidade,1 https://about.twitter.com/company2 https://dev.twitter.com/overview/documentation

Page 15: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 1. Introdução 14

torna-se necessário enriquecer as postagens com referências semânticas bem definidas an-tes de utilizá-las. A combinação de dados de contexto dos objetos móveis (e.g., informaçõesde perfil) e com os contextos e conteúdos das postagens em mídias sociais tem potencialpara produzir anotações semânticas de qualidade, de modo a permitir a interpretaçãocorreta dos dados. Com estas anotações semânticas pode-se, por exemplo, desambiguar eidentificar recursos para investigar melhor o motivo da viagem de um grupo de pessoaspara uma localização em um determinado horário (e.g., Ir a um festival de música, assistira uma partida de futebol)(WU et al., 2015).

Tendo em vista que o processo de enriquecimento semântico é essencial para aaplicação dos dados coletados de mídias sociais e que informações de contexto podemauxiliar neste processo, este trabalho propõe a coleta e organização de dados para experi-mentos de enriquecimento semântico de postagens de mídias sociais, além de uma revisãoda literatura sobre ferramentas para coleta de informações adicionais de contexto quepossam aprimorar o enriquecimento semântico.

1.1 ObjetivosO objetivo geral deste trabalho, é coletar dados de objetos móveis e de mídias soci-

ais, e fazer uma análise comparativa de ferramentas para coleta de informações adicionaissobre os contextos desses objetos, que podem ser, entre outras possibilidades, usuários demídias sociais e de aplicativos que coletam trajetórias.

Os objetivos específicos deste trabalho são:

∙ revisão do estado da arte em técnicas e ferramentas para coleta de dados de objetosmóveis, incluindo sua localização ao longo do tempo, dados textuais (e.g., postagensem mídias sociais) e informações de contexto;

∙ continuidade de esforços de coleta e organização de uma coleção de tweets visandoexperimentos de enriquecimento semântico;

∙ comparação de ferramentas para coleta de dados de contexto em dispositivos móveis;

∙ implementação de um aplicativo para coleta de dados sobre dispositivos móveis nomomento de postagens no Twitter;

∙ teste preliminar caracterizando dados coletados do Twitter e o uso do aplicativopara associar coordenadas geográficas a tweets que não as incluiam.

O apoio aos esforços de coleta e organização de dados para experientos constituiparcela de contribuição adicional, usualmente realizada por cada aluno do nosso grupopara manter dados para experimentos a disposição de todo e de nossos colaboradores.

Page 16: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 1. Introdução 15

As contribuições deste trabalho focam principalmente na revisão, seleção e teste de ferra-mentas para coleta de informações de contexto em dispositivos móveis.

1.2 MetodologiaO desenvolvimento deste trabalho é dividido nas seguintes fases:

1. revisão de técnicas e ferramentas para coleta de dados sobre objetos móveis, in-cluindo trajetórias e postagens em mídias sociais, além dos formatos dos dados quepodem ser coletados;

2. revisão da literatura sobre técnicas e ferramentas para coleta de contextos de objetosmóveis visando enriquecimento semântico;

3. busca, seleção, teste e análise comparativa entre as ferramentas de coleta de con-texto;

4. Implementação de uma ferramenta para coleta de dados sobre objetos móveis nomomento de postagens no Twitter.

5. execução de testes preliminares de enriquecimento semântico de tweets com dadosabertos ligados.

1.3 Organização do restante do trabalhoEste trabalho está dividido em seis capítulos incluindo este que é introdutório.

O segundo capítulo apresenta a fundamentação teórica com noções sobre anotação se-mântica, coleta de dados e contexto. O terceiro capítulo apresenta a remodelagem de umbanco de dados para enriquecimento semântico. O quarto capítulo realiza uma análise dasferramentas para coleta de dados de contexto de objetos móveis. O quinto apresenta testesrealizados com a ferramenta da coleta e por fim o sexto capítulo apresenta a conclusãodo trabalho e pesquisas futuras.

Page 17: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

16

2 Fundamentos

Este capítulo apresenta os fundamentos necessários ao entendimento do restantedo trabalho. Primeiramente, ele apresenta os conceitos fundamentais de objetos móveis edados de postagens em mídias sociais e dados sobre movimentos. Posteriormente, ele defineinformação de contexto dos objetos móveis, incluindo perfis desses objetos e informaçõessobre o ambiente físico onde se movimentam e os sistemas de informação que utilizam.Finalmente, este capítulo descreve anotações semânticas de dados sobre objetos móveis edelinea como informações de contexto podem ser úteis no processo de anotação semântica.

2.1 Dados sobre objetos móveisObjetos móveis podem ser pessoas, veículos, animais, etc, portando dispositivos

computacionais móveis, tais como smartphones, navegadores ou simples dispositivos demonitoramento de movimentos. Tais dispositivos são pequenos o suficiente para seremportáveis e costumam ser equipados com sensores GPS (Geographic Positioning System),o que torna possível fornecer serviços baseados em sua localização. Nas últimas décadas,o uso dos dispositivos móveis cresceu muito. Só no Brasil o número de smartphones emuso já chega a 168 milhões1.

2.1.1 Postagens em mídias sociais

Com o crescimento da utilização dos dispositivos móveis também aumentou autilização das mídias sociais remotamente. As postagens em mídias sociais são os registrosda interação entre o usuário e a mídia. Este registro pode conter várias informações (e.g.timestamp, localização, fotos, tags e texto) e costuma ficar disponível através da APIda mídia em que foi postado. Em (NABO et al., 2014) este registro é representado pelaquíntupla 𝑆𝑀𝐹 (𝑀𝑂𝑖𝑑, 𝑆𝑀𝐹𝑖𝑑, 𝑆𝑀𝑖𝑑, 𝑃, 𝑐), onde:

∙ 𝑀𝑂𝑖𝑑 é o identificador do objeto móvel;

∙ 𝑆𝑀𝐹𝑖𝑑 é o identificador da postagem;

∙ 𝑆𝑀𝑖𝑑 é o identificador da mídia social da postagem;

∙ 𝑃 é um ponto espaço-temporal (usualmente opcional);

∙ 𝑐 refere-se aos conteúdos da postagem (e.g., tags, imagens, textos).1 http://www1.folha.uol.com.br/mercado/2016/04/1761310-numero-de-smartphones-em-uso-no-

brasil-chega-a-168-milhoes-diz-estudo.shtml

Page 18: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 2. Fundamentos 17

2.1.2 Dados sobre movimentos

Em (FILETO et al., 2015) dados sobre movimentos são coleções de dados que re-presentam sequências temporalmente ordenadas de posições espaço-temporais de objetosmóveis, possivelmente associadas a outras informações (textos, imagens, etc.). Esta defi-nição abrange, entre outras coisas, trajetórias de objetos móveis e trilhas georeferenciadasde usuários em mídias sociais.

Tanto trilhas quanto trajetórias são sequências temporalmente ordenadas de po-sições espaço-temporais de um objeto móvel, possivelmente associadas com informaçãoadicional. A diferença é que trajetórias têm alta densidade de posições espaço-temporaisque podem ser colhidas a curtos intervalos de tempo (e.g., cada 5 segundos) ou curtasdistâncias percorridas (e.g., cada 3 metros), enquanto trilhas costumam ser esparsas noespaço e no tempo, devido à natureza assíncrona das postagens dos usuários em mídiassociais (o usuário posta quando quer). Assim, trajetórias permitem análise detalhada dosmovimentos e paradas dos objetos móveis, enquanto trilhas em mídias sociais costumamser mais fáceis de conseguir para grandes conjuntos de usuários em longos períodos detempo ao longo de grandes regiões ou de todo o globo. Neste trabalho, consideraremos aorganização de dados e o enriquecimento semântico tanto de trajetórias quanto postagensem mídias sociais, com ênfase especialmente da parte experimental, nessas últimas.

2.2 Dados de contextoDados de contexto caracterizam a situação de uma entidade qualquer, que pode

ser, por exemplo, um objeto móvel. O termo contexto é um tanto amplo. Diferentes au-tores definem contexto de maneiras distintas. (DEY; ABOWD, 2000) definem contextocomo “Qualquer informação que pode ser usada para caracterizar a situação de umaentidade considerada relevante para a interação entre usuário e aplicação”. Para (SUN-DARAM; MANI, 2005)"contexto é qualquer conjunto de informações capaz de afetar acomunicação". Em (SCHILIT; ADAMS; WANT, 1994), contexto inclui informação querefere "aonde você está, quem está com você, e quais recursos estão por perto". Final-mente, (BOLCHINI et al., 2009) definem contexto como "um conjunto de variáveis quepodem ser de interesse de um agente e que podem influenciar as suas ações".

No escopo deste trabalho utiliza-se a definição de contexto de (CHEN; KOTZ,2000), segundo a qual contexto é um espaço de quatro dimensões composto de contextocomputacional, contexto físico, contexto temporal e contexto de usuário. Tais dimensõessão relevantes para o enriquecimento semântico de dados como postagens em mídias so-ciais e trajetórias de objetos móveis. O contexto computacional inclui a identificação dasaplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta detrajetórias), suas configurações (e.g., tipo de conta, taxa de amostragem de dados) e o

Page 19: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 2. Fundamentos 18

histórico das interações do objeto móvel com o sistema computacional. O contexto físicoinclui dados coletados por sensores (e.g., velocidade, aceleração, luminosidade), entre ou-tras informações (e.g., dados meteorológicos). O contexto temporal inclui informações detempo (e.g. dia, semana, mês, ano) em que uma atividade foi realizada. Por fim, contextode usuário contém as informações relacionadas ao aspecto individual e social do usuário.Tal definição de contexto inclui informação de perfil de usuário de sistema ou agente, sualocalização física, o tempo, informações ambientais relevantes e como um usuário interagecom um sistema (e.g., situação atual da suas interações) e até o histórico dessas interações.

Alguns dados de contexto podem ser coletados através de APIs das mídias so-ciais (e.g., perfis de usuários, posições espaciais, timestamp). Outros dados de contextopodem ser coletados através de outras fontes (e.g., dados de sensores e condições mete-orológicas podem ser coletados através de aplicações específicas para coleta de dados deobjetos móveis). Estes dados de contexto podem ser úteis para desambiguar anotaçõessemânticas (e.g., explorando os contextos espacial e temporal) e constituir regras ouropara experimentos de enriquecimento semântico.

2.3 Anotação SemânticaUma anotação semântica associa uma porção de dados (e.g., um trecho de uma

trajetória ou trilha, uma parada, uma postagem, um termo relevante do texto de umapostagem) à sua definição precisa e semanticamente bem definida contida, por exemplo,em uma base de conhecimento (e.g., ontologia), vocabulário (e.g., WordNet2, VerbNet3)ou conjunto de dados ligados (e.g., DBpedia4, LinkedGeoData5). Anotações semânticassão úteis para a interpretação correta dos dados, buscas e uma variedade de tarefas eaplicações, pois permitem desambiguar e expandir semanticamente conteúdos de dadosnão estruturados e semanticamente mal definidos, tais como textos e imagens.

O processo de anotação semântica (geração de anotações semânticas) parte daanálise do conteúdo e pode ser viabilizado ou aperfeiçoado de maneira automática me-diante o uso de dados sobre o contexto dos objetos móveis, tais como perfis de usuáriose dados capturados por sensores acoplados a dispositivos móveis. A figura 1 exibe umapostagem6 coletada do Twitter. A interpretação dessa postagem pode ser errônea sem ainformação de contexto de que tal postagem foi feita de um estádio durante uma partidade futebol. A figura 2 mostra a anotação semântica desta postagem para evitar interpre-tações errôneas. Note que o "Porco"mencionado na postagem se refere a um apelido dotime de futebol Palmeiras. Além disso, anotações semânticas precisas usando recursos de2 https://wordnet.princeton.edu/3 http://verbs.colorado.edu/ mpalmer/projects/verbnet.html4 http://wiki.dbpedia.org/5 http://linkedgeodata.org6 Disponível em https://twitter.com/wandomoreira/status/607668304447184896

Page 20: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 2. Fundamentos 19

Figura 1 – Tweet coletado através do script SeMovGet tweet

Figura 2 – Anotação semântica para que o tweet da figura 1 possa ser interpretado da forma correta.

dados ligados, permite a expansão semântica. Por exemplo, descobrir facilmente que tantoPalmeiras quanto Figueirense são times de futebol e que o Orlando Scarpelli é o estádiodo Figueirense. Daí várias outras informações podem ser recuperadas ou deduzidas.

2.4 Dados Ligados AbertosDados ligados abertos, em inglês Linked Open data (LOD), são coleções de da-

dos e conhecimento a eles associados (e.g., classes e suas relações possíveis) oriundas defontes variadas, que são organizadas e publicadas na Web segundo certas diretrizes7 quepromovem seu intercâmbio, integração e reuso (NGOMO et al., 2014). A base para arepresentação de LOD é o modelo RDF (Resource description Framework), que descrevetanto dados quanto conhecimento usando a construção básica de tripla rdf, da forma(𝑟, 𝑝𝑟, 𝑣), onde:

∙ 𝑟 é qualquer recurso na Web identificado unicamente por uma URI;

∙ 𝑝𝑟 é uma propriedade do recurso 𝑟;

∙ 𝑣 é o valor de tal propriedade, que pode ser um literal ou a URI de um outro recurso.7 http://linkeddata.org

Page 21: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 2. Fundamentos 20

Entre as coleções de LOD atualmente disponíveis na Web, DBpedia (LEHMANNet al., 2015) e LinkedGeoData (STADLER et al., 2012), têm sido muito usadas para o enri-quecimento semântico de dados em geral e de dados sobre movimentos, respectivamente.Conjuntos de dados ligados abertos podem ser consultados, por exemplo, utilizando alinguagem SPARQL8, que é uma linguagem dedicada à consulta e manipulação de RDF.

8 https://www.w3.org/TR/sparql11-query/

Page 22: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

21

3 Banco de dados para anotação semântica

Esta seção apresenta a estrutura geral do banco de dados desenvolvido no escopodeste trabalho para armazenar dados sobre movimento e de mídias sociais, informaçõessobre os objetos que geraram tais dados, dados para o seu enriquecimento semântico e ex-perimentos. Tal banco de dados é uma evolução de versão anterior mantida no laboratórioLISA.

3.1 ObjetivosOs dados gerados por mídias sociais têm componentes semiestruturados (e.g., ti-

mestamps, coordenadas opcionais, dados de perfil dos usuários) e não estruturados (e.g.,texto livre). Para trabalhar com estes dados é necessário organizá-los em um banco dedados. Por este motivo o banco de dados com o esquema ilustrado na figura 3 era man-tido no laboratório LISA (Laboratory for Integration of Systems and Applications). Estaversão possuía quatro tabelas: User, que guardava todos os dados de perfil dos usuáriosque obtiveram algum tweet coletado; Stream, que continha os dados de tweets coletadosem tempo real; Timeline que guardava os dados dos tweets que eram coletados de usuá-rios que estavam na coleção de usuários e usuários mencionados; Places, que guardava osdados de locais relacionados ao tweet. Alguns defeitos deste banco de dados eram:

∙ Não possuía chaves primárias;

∙ As tabelas não possuíam relacionamento;

∙ Não existiam índices;

∙ As tabelas Timeline e Stream possuíam as mesmas colunas;

∙ Existiam campos que nunca eram utilizados.

Com o aumento do esforço da coleta de dados para experimentos de enriqueci-mento semântico, tornou-se necessário a criação de um esquema de banco de dados paraorganização dos dados coletados. Assim sendo, foi elaborado um esquema para organi-zar os dados coletados de objetos móveis, de recursos e experimentos de enriquecimentosemântico.

Page 23: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 3. Banco de dados para anotação semântica 22

Figura 3 – Esquema antigo do banco de dados sobre dados coletados do twitter

3.2 Esquema do banco de dadosA fim de organizar dados usados em experimentos de enriquecimento semântico e os

próprios resultados desses experimentos no laboratório LISA foi desenvolvido um banco dedado utilizando o modelo relacional. Tal banco pode acomodar dados sobre objetos móveis(incluindo dados de perfil de tais objetos e dados sobre os seus movimentos), informaçõespara o enriquecimento semântico dos dados sobre movimento (que podem ser obtidas decoleções de LOD, por exemplo) e dados dos experimentos de enriquecimento semânticorealizados (incluindo responsáveis, métodos e parâmetros utilizados e resultados dessesexperimentos). O esquema deste banco de dados foi modelado utilizando a ferramentaMySQL Workbench. Tal esquema está ilustrado na figura 4 e é dividido em quatro regiõesprincipais:

∙ Dados espaço-temporais;

∙ Dados de contexto espaço-temporais e dos objetos móveis;

∙ Recursos para enriquecimento semântico;

∙ Dados sobre experimentos de enriquecimento semântico.

A região de dados espaço-temporais contém os dados sobre movimentos dos objetosmóveis. Esta região inclui as fontes (e.g., Twitter, Facebook, Foursquare) e conjuntos dedados que alimentam os dados de movimento. Dados de posições (e.g., Localização de umapessoa no momento de uma postagem) e segmentos também são incluídos (e.g., posiçõesde duas postagens de um usuário).

A região de dados de contexto espaço-temporais e dos objetos móveis é uma ex-tensão das tabelas de objetos móveis e posições. Esta região contém os dados de perfildo objeto móvel (e.g., Perfil do usuário do twitter), dados de contexto sobre a posição(e.g., Postagem do usuário no twitter), além de informações extraídas da postagem como

Page 24: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 3. Banco de dados para anotação semântica 23

conjuntos de palavras relevantes (e.g., Hashtags) e de usuários mencionados, atributos delocais referenciados na postagem (e.g., bairro).

A região de recursos para enriquecimento semântico contém as informações que sãoutilizados para o enriquecimento semântico e associadas a segmentos e palavras relevantes.Esta região contém os recursos (e.g., Rio 2016, Mineirão) e suas informações: conjuntode geometrias (e.g., Ponto, polígono), fonte (e.g., LinkedGeoData, DBPedia), tipos (e.g.,Político, cidade) e os rótulos, que são os textos que referenciam o recurso.

Por fim, a região de dados sobre experimentos de enriquecimento semântico con-tém informações como período em que o experimento foi realizado, pessoa responsável emétodos e conjuntos de parâmetros utilizados no experimento. Esta região também possuios resultados dos experimentos, podendo ser uma simples extração de palavra relevanteou uma associação de segmento ou palavra relevante à recursos.

Page 25: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 3. Banco de dados para anotação semântica 24

Figura 4 – Esquema do banco de dados sobre objetos móveis e experimentos de anotação semântica

Page 26: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

25

4 Ferramentas para coleta de contextos

Esta seção descreve ferramentas, incluindo bibliotecas, suítes e frameworks, paraa coleta de informações de contexto de objetos móveis, de acordo com a documentaçãoencontrada na literatura. Tais ferramentas são apresentadas e comparadas utilizando osseguintes critérios:

∙ Plataformas suportadas;

∙ Tipo de licença;

∙ Entradas: fontes (e.g., sensores), campos;

∙ Saídas: campos, formatos/APIs;

∙ Funcionalidades;

∙ Burdens(“Fardos”).

As plataformas suportadas caracterizam os sistemas operacionais que conseguemexecutar a ferramenta. Os tipos de licença são as definições de autorização de uso daferramenta. As entradas são as formas em que os dados podem ser coletados pela ferra-menta. As saídas são os formatos em que estes dados coletados podem ser recuperados.As funcionalidades são as ações que o programa consegue desempenhar (e.g. Criação deformulários, mapeamento de dados coletados, etc.). Os Burdens são as limitações e osrequisitos que a ferramenta exige para ser executada.

4.1 Open Data Kit (ODK)O ODK1 é uma suíte de ferramentas com o intuito de coletar e gerenciar dados

de objetos móveis. Foi desenvolvido pela Universidade de MaryLand e pelo InstitutoInternacional de análise de sistemas aplicados. A suíte permite a criação de formulárioscom a ferramenta ODK Build, a hospedagem destes formulários em um servidor com oODK Aggregate e o preenchimento e envio destes formulários para o servidor através desmartphones com o ODK Collect.

De acordo com (HARTUNG et al., 2010), foi escolhido o padrão xForms2, para quetodas as ferramentas possam ser usadas independentemente, mas podendo interagir entre1 https://opendatakit.org/2 http://w3.org/TR/xforms/

Page 27: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 26

elas. O xForms é um padrão de descrições de formulários desenvolvido pela World WideWeb consortium (W3C)3. Esta padronização permite que o ODK importe os formuláriosde outras ferramentas, como por exemplo o XLSForm4 e o koboform5.

Os formulários da suíte ODK suportam as seguintes entradas:

∙ Texto;

∙ Inteiro;

∙ Decimal;

∙ Alternativa ou múltipla escolha;

∙ Geopoint (coordenadas GPS);

∙ Imagens;

∙ Códigos de barra;

∙ Timestamp;

∙ Áudio;

∙ Vídeo.

4.1.1 ODK Build

A ferramenta ODK Build é uma aplicação web desenvolvida com HTML5 usandoJavascript e Ruby Rack. O Build facilita a criação dos formulários com uma interface grá-fica drag’n’drop, ilustrada na fígura ??. Esta interface gráfica permite a criação dos formu-lários mesmo sem o conhecimento do padrão XForms. O Build permite que o usuário adici-one telas ao formulário com cliques nos botões que representam os tipos de questão. Cadaquestão tem um conjunto de propriedades que o usuário pode editar. Os usuários tambémpodem reordenar as questões. O Build está hospedado em http://build.opendatakit.org/e disponível para download para que os usuários possam utilizá-lo offline em uma máquinalocal. O Build permite exportar o formulário em XML ou publicar diretamente em umservidor Aggregate.3 https://www.w3.org4 http://xlsform.org/5 http://kobotoolbox.org/

Page 28: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 27

Figura 5 – Tela do ODK Build, retirado de (HARTUNG et al., 2010)

4.1.2 ODK Aggregate

O servidor ODK Aggregate é um repositório que gerência os dados coletados deobjetos móveis. O Aggregate foi desenvolvido em Java para rodar em um recipiente webJava. A instalação pode ser feita em um servidor local ou gratuitamente no APP Engineda Google. O Aggregate possui uma interface que permite que o usuário realize consultassem precisar se preocupar com a linguagem de consulta do banco de dados. O Agggregatepode exportar os dados em vários formatos incluindo CSV (planilhas eletrônicas), KML(Google Earth) e JSON.

4.1.3 ODK Collect

É a parte da suíte dedicada ao usuário que irá responder o formulário. É um aplica-tivo desenvolvido em Java para objetos móveis que rodem o sistema operacional Android.Como ilustrado na figura 6, o Collect permite que o usuário carregue os formulários salvosno Aggregate, preencha e edite estes formulários carregados e por fim que publique os for-mulários que foram hospedados no servidor Aggregate. Para suportar operações offlines,o Collect armazena os valores dos questionários em arquivos XML e binários (imagens,áudios, vídeos). O usuário pode sincronizar com o Aggregate a qualquer momento utili-zando uma conexão com a internet ou transferidos para um computador com um cabo

Page 29: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 28

USB ou cartão de memória.

Figura 6 – Tela inicial do ODK Collect

4.1.4 ODK 2.0

Em (BRUNETTE et al., 2013) é dito que uma das funcionalidades que os usuáriosdo ODK mais sentiram falta foi a capacidade de visualizar e analisar os dados através dosmartphone. Abaixo estão listadas mais algumas das limitações existentes citadas:

∙ Dificil navegação entre as questões do formulário;

∙ Aumentar os tipos de informação que podem ser coletados;

∙ Falta de outras tecnologias (e.g., papéis, SMS) para coletar os dados.

Pensando nessas limitações, está sendo desenvolvida a versão 2.0 do ODK que iradisponibilizar sincronização bi-direcional (o dispositivo será capaz de recuperar o formu-lário enviado), a opção de análise dos dados coletados através de smartphones, melhorflexibilidade na navegação dos formulários e a capacidade de tratar formulários respondi-dos através de papéis e SMS.

A figura 7, retirada do (BRUNETTE et al., 2013) ilustra a arquitetura do ODK2.0. Na parte esquerda é mostrada a parte dos serviços hospedados na nuvem, aonde oAggregate fornece serviços para sincronizar dados com os dispositivos e exportar estesdados. Na parte direita é ilustrada a parte do serviços dos clientes móveis onde são com-partilhados um banco de dados e um sistema de arquivo. Scan, Survey e Tables são as

Page 30: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 29

ferramentas para coletar, processar e visualizar os dados de entrada. Submit e Sensorssão ferramentas para o android ter os serviços necessários.

Figura 7 – Arquitetura do sistema ODK 2.0

4.2 GeoODKA GeoODK6 é uma modificação Opensource do ODK feita pelo Instituto Inter-

nacional de Análise de Sistemas Aplicados e pela Global Agricultural Monitoring. A Ge-oODK fornece uma maneira de coletar e armazenar informações geo-referenciadas. Estasuíte também fornece ferramentas para visualização, análise e manipulação dos dados.

4.2.1 As diferenças entre GeoODK e ODK

As suítes GeoODK e ODK possuem os mesmos servidores e ferramentas paracriação de formulários. A maior diferença entre as duas suítes são as funcionalidades demapeamento existentes na GeoODK. Ilustrada na figura 8, a tela inicial do GeoODKCollect é diferente do ODK Collect. Entre as funcionalidades de mapeamento adicionaisestão:

∙ Mapeamento offline;

∙ Visualizações dos dados coletados no dispositivo móvel;

∙ Coleta de polígonos e traços do GPS.

Além disto, a GeoODK fornece o Mobile Data Converter, que é um software quepermite a conversão de dados coletados para formatos espaciais e a preparar um conjunto6 http://geoodk.com/

Page 31: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 30

Figura 8 – Tela inicial do GeoODK Collect

de dados para um sistema GIS. Para isto basta, baixar e selecionar os dados coletadosatravés servidor Aggregate em arquivos CSVs, selecionar os campos referentes à localizaçãoe opcionalmente à imagens e por fim selecionar para que formato você deseja que o arquivoseja exportado. A figura 9, retirada da sessão de tutorias da GeoODK 7, ilustra a tela domobile data converter após converter os dados coletados com sucesso.

Figura 9 – Tela do Mobile Data Converter após a conversão dos dados coletados

7 http://geoodk.com/mdk_howto.php

Page 32: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 31

4.3 KoBoToolboxA KoBoToolbox8 é uma suíte de ferramentas Opensource baseadas no ODK para

coleta de dados de objetos móveis para organizações humanitárias e pesquisadores. FoiDesenvolvido pela Harvard Humanitarian Initiative. A suíte é composta pelas ferramentas:

∙ koboform (dkobo, django kobo) - Ferramenta web para criar os formulários;

∙ kobocat and kobocat-templates - Servidor para hospedar formulários e analisar osdados;

∙ enketo-express - Aplicação Web, desenvolvida em HTML para coletar, pré-visualizarformulários e editar os dados submetidos;

∙ kobocollect - Aplicativo android para coleta de dados.

4.3.1 As diferenças entre KoBoToolbox e ODK

As duas ferramentas suportam formulários criados a partir do XLSForm e servi-dores Aggregate. Porém, a KoBoToolbox disponibiliza um servidor próprio para o geren-ciamento e a coleta de dados. Este servidor possui uma ferramenta própria que facilitao desenvolvimento dos formulários, o koboform. O aplicativo de coleta da KoBoToolbox,o Kobo Collect é visualmente parecido com o ODK Collect, como ilustrado na figura 10,porém já é previamente configurado para a conexão com o servidor da KoBoToolbox.Por padrão cada organização que utiliza o servidor da KoBoToolbox tem direito a 10 milenvios de formulários e 5 GB do banco de dados, porém é possível criar um servidor localou entrar em contato com a equipe KoBoToolbox para solicitar mais recursos.

Figura 10 – Tela inicial do KoBo Collect

8 http://kobotoolbox.org/

Page 33: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 32

4.4 gMissionO aplicativo gMission foi desenvolvido pela Hong Kong University of Science and

Technology e tem como objetivo crowdsourcing espacial. O gMission é opensource e estádisponível para Android e iOS. Existe pouca documentação e usuários que utilizam ogMission.

Em resumo, o sistema permite que os usuários realizem perguntas para usuáriosque se encontrem em um determinado local. O gMission conta com um sistema de con-tribuição explicado em (CHITTILAPPILLY; CHEN; AMER-YAHIA, 2016). Nele paraquanto mais tarefas forem cumpridas, mais pontos são adquiridos. Quanto mais pontosuma pessoa tiver, mais perguntas podem ser criadas.

Como ilustrado na figura 11 retirado de (CHEN et al., 2010), o gMission possuia interface de usuário que é responsável por fornecer ao usuário as funções de postar eresponder tarefas, e o gerenciador de funções que possui três módulos principais:

∙ Sensor de localização: Responsável pela localização do usuário, baseado no GPSe no Wi-Fi;

∙ Recomendação: Recomenda as tarefas apartir das informações geográficas e daquantidade de tarefas;

∙ Controle de qualidade: Responsável pela deleção das tarefas que ultrapassaremum certo prazo, pelo sistema de contribuição e não permite respostas de localizaçõeserradas.

Figura 11 – Arquitetura do gMission

Page 34: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 33

4.5 LoCCAMO LoCCAM9 é um middleware para sistemas móveis e sensíveis ao contexto de-

senvolvido pelo Grupo de Redes de Computadores e pela Engenharia de Software e Sis-temas (GREat) da Universidade Federal do Ceará (UFC)(DUARTE et al., 2015). Com oLoCCAM é possível desenvolver aplicações sensíveis ao contexo rapidamente, como porexemplo uma aplicação com o objetivo de mapear determinados locais com informaçõesreferentes à localização do dispositivo10.

A arquitetura do LoCCAM, ilustrada na figura 12 retirada do site do LoCCAM11, pode ser dividida em duas partes principais (DUARTE et al., 2014):

∙ SysSU (System Support for Ubiquity): Recebe a relação de interesses dasaplicações e as repassa para o CAM;

∙ CAM (Context Acquisition Manager) Framework : armazena a relação deinteresses e controla os CACs (Componentes de aquisição de contexto).

O SysSU Filter realiza o filtro nas informações dos sensores, o adaptation reasonercuida da lista de interesses da aplicação e se comunica com o CAC manager que controlatodos os CACs. Abaixo estão listados os CACs disponíveis no LoCCAM:

∙ Temperatura;

∙ Luminosidade;

∙ Aceleração;

∙ Gravidade;

∙ Campo Magnético;

∙ Localização GPS;

∙ Localização Wi-Fi;

∙ Random;

∙ Clima;

∙ Wi-fi.

9 http://loccam.great.ufc.br/10 http://loccam.great.ufc.br/downloads/download-aplicacoes.html11 http://loccam.great.ufc.br/informacoes-gerais/arquitetura.html

Page 35: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 34

Figura 12 – Arquitetura do LoCCAM

4.6 AWAREO AWARE12 é um middleware opensource dedicado a captura de informações de

contexto móveis desenvolvido na Carnegie Mellon University. Pode ser utilizado para criaraplicativos para sistemas operacionais Android e iOS. Com ele é possível criar aplicaçõessensíveis ao contexto e coletar dados de contexto.

A figura (13 retirada de (FERREIRA; KOSTAKOS; DEY, 2014)) ilustra a ar-quitetura do AWARE. O AWARE utiliza sensores como forma de capturar dados decontextos de hardware (e.g., Acelerômetro, giroscópio, magnetismo), software (e.g., calen-dário, email, status das aplicações) e humanos (e.g., ESM - Experience sampling Method,entradas de voz e gesto). A Tabela 1 retirada de (FERREIRA, 2013) apresenta alguns12 http://www.awareframework.com/

Page 36: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 35

dos sensores já inclusos no AWARE, também é apresentado o tipo (i.e. HW - Hardware,SW - Software e H - Humano) e uma breve descrição de cada sensor. O AWARE pos-sui plugins, que são extensões que permitem os desenvolvedores implementar códigosque utilizam sensores ou até mesmo outros plugins. Um plugin deve refinar o contextooferecido por algum sensor, fornecendo contextos mais precisos ou mais compreensíveis.Para a comunicação entre sensores, plugins e aplicações são utilizadas as estratégias debroadcast, observador e fornecedor.

∙ Broadcast: atualiza os outros sensores, as aplicações e os plugins com o contextodo usuário;

∙ Fornecedor: armazena os dados dos sensores e do plugin localmente no dispositivoou se necessário no servidor MySQL;

∙ Observador: monitora as mudanças dos dados dos sensores e dos plugins em temporeal.

Por fim, o dispositivo pode enviar os dados adquiridos dos sensores para outrosdispositivos por MQTT (Padrão de telemetria) ou para um banco de dados MySQL porHTTPS. Os dados podem ser armazenados gratuitamente no AWARE Server.

Figura 13 – Arquitetura do AWARE

Page 37: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 36

Tabela 1 – Alguns dos sensores presentes no núcleo do AWARE

Sensores Tipo Descrição

Acelerômetro HW Sensor da força de aceleração de acordo com o eixo dodispositivo, inclui gravidade (m/s2)

Aplicações SW Aplicações usadas pelo dispositivoBarômetro HW pressão atmosférica (mbar/hPa)Bateria HW e SW Dados de eventos de bateria e energia (e.g. reiniciar, desligar)

Bluetooth HW Informações do bluetooth, realiza escaneamentos emintervalos de tempo procurando dispositivos

Comunicação SW dados de comunicação do dispositivo (e.g. Dados deligações, mensagens)

ESM H Dados providos pelo usuário a partir de questionários.Gravidade HW Força da gravidade (m/s2)Giroscópio HW Fator de rotação ao redor do eixo do dispositivo (rad/s)

Instalações SW Aplicações adicionadas, removidas e atualizadas dodispositivo

Luminosidade HW Luminosidade do ambiente (lux)Aceleração lineear HW Força de aceleração excluindo a gravidade (m/s2)

Localização HW e SW Localização através da rede e/ou GPS do dispositivomóvel.

Magnetismo HW Força geomagnética aplicada ao eixo do dispositivo(micro-tesla)

Rede SW Uso da rede (e.g. modo avião, Wi-Fi, Rede móvel...)Orientação HW Ângulo de orientação do dispositivo (graus)

Processador SW Dados do uso do processador (e.g., processos do SO,processos do usuário, inativo)

Proximidade HW Distância entre dispositivo e objeto (próximo/longe ou cm)Rotação HW Vetor de rotação em relação ao eixo do dispositivo

Tela HW e SW Status da tela (e.g. Ligado ou desligado) e eventos detravar e destravar

Telefonia HW Dados de capacidades de telefônia do dispositivo(e.g. Velocidade da rede, tipo)

Temperatura HW Dados de temperatura do ar (Celsius)

Tráfego SW Dados de tráfego da rede do Wi-Fi, Bluetooth erede móvel (e.g., pacotes e bytes)

Wi-Fi HW Informações da Wi-Fi e buscas intervaladas dedispositivos vizinhos

4.7 Síntese ComparativaNesta seção foram utilizados os critérios do início deste capítulo para realizar uma

síntese comparativa das ferramentas estudadas. O objetivo da tabela 2 é comparar os tiposde licença e as plataformas, entradas e saídas suportadas pelas ferramentas estudadas.

Na tabela 3 foram comparadas os campos e os sensores de entradas presentesnas ferramentas estudadas. As ferramentas ODK, GeoODK e KoBoToolbox aceitam os

Page 38: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 37

Tabela 2 – Comparação de ferramentas para coleta de dados sobre objetos móveis

Ferramentas Plataformas Licenças Entradas Saídas

ODK Android Opensource FormuláriosKML,JSON,CSV

GeoODK Android Opensource Formulários

ESRI,KML,JSON,CSV

KoboToolbox Android,iOS Opensource Formulários

KMl,JSON,CSV,SPSS

gMission Android,iOS Opensource Formulários -

LoCCAM Android Freeware Sensores Tuplas

AWARE Android,iOS Opensource Formulários,

Sensores CSV

mesmos campos e por isso estão listadas na mesma coluna da tabela.

Com as tabelas comparativas é possível notar que das ferramentas estudada queapenas suportam formulários como forma de entrada, apenas a KoboToolbox tem suporteaos sistemas operacionais Android e iOS. Também é possível notar que a única ferramentaestudada não opensource é o middleware LoCCAM.

Ainda com o uso das tabelas é possível identificar o AWARE como a ferramentamais completa. O AWARE é suportado pelos sistemas operacionais Android e iOS, éa única das ferramentas estudadas com a capacidade da coleta de dados de sensorese formulários, e também é a ferramenta que possuí a maior quantidade de sensores jáimplementados em seu núcleo.

Page 39: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 4. Ferramentas para coleta de contextos 38

Formato deentrada Campos

ODK,GeoODK,KoboToolbox

LoCCAM AWARE

Sensores

Acelerômetro X XAplicações XBarômetro XBateria XBluetooth XComunicação XGravidade X XGiroscópio XInstalações XLuminosidade X XAceleração linear XLocalização X X XMagnetômetro X XRede XOrientação XProcessador XProximidade XRotação XTela XTelefonia XTemperatura X XTráfego XWi-Fi X X

Formulário

Alternativa oumúltipla escolha X X

Decimal XInteiro X XImagens XCódigos de barra XÁudio XVídeo XTexto X X

Tabela 3 – Comparação dos campos e sensores de entrada presentes nas ferramentas estudas

Page 40: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

39

5 Aplicativo desenvolvido: Tweet ContextCollector

Por ser a ferramenta estudada mais completa, o AWARE foi utilizado para odesenvolvimento de um aplicativo para a realização de testes de associação de coordenadasgeográficas a Tweets que não às possuíam. O aplicativo pode ser executado em sistemasAndroid e para poder coletar e enviar as informações dos sensores, o aplicativo deve estarpelo menos rodando em segundo plano. Também é necessária a ativação do serviço deacessibilidade do AWARE framework, visível na figura 14.

Como o Twitter lança uma notificação no celular quando o usuário posta umTweet, foi utilizado o sensor de aplicativos existente no núcleo do AWARE para criarum observador de notificações. Desta forma, o Tweet Context Collector identifica quandoo Twitter cria uma notificação, e então ativa os sensores e envia os dados recentementecoletados para um banco de dados MySQL.

O aplicativo possui uma única tela, como mostrado na figura 15. Nesta tela épossível visualizar o identificador único do objeto móvel gerado pelo AWARE. Tambémé possível visualizar um botão que serve como alternativa para a ativação da função decoleta e envio dos dados dos sensores. Este botão foi adicionado pois em alguns casos osusuários esqueceram de executar o aplicativo e só lembraram depois de postar o Tweet.

Figura 14 – Telas de ativação do serviço de acessibilidade do framework AWARE.

Page 41: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 5. Aplicativo desenvolvido: Tweet Context Collector 40

Figura 15 – Tela do aplicativo desenvolvido

Enquanto o aplicativo está sendo executado, os sensores de baixa frequência ficamativos. Os sensores de baixa frequência ficam periodicamente gravando localmente osvalores mais recentes. Para diminuir o consumo de bateria e a quantidade de registros, ossensores de alta frequência ficam inativos até que a função de coleta dos dados é executada.Quando a função de coleta de dados é executada, cada sensor de alta frequência é ativopor um segundo e os valores coletados são enviados para o servidor. Assim que todos osdados dos sensores são enviados para o servidor, os dados são apagados do objetos móveis.

Em geral, os smartphones possuem diferentes sensores disponíveis. Por exemploo sensor de temperatura é muito raro de ser encontrado nos celulares, porém ele estáimplementado e caso o aplicativo seja instalado em um celular com o sensor disponível osdados da temperatura serão coletados.

Cada sensor possui um campo de precisão chamado accuracy. A maioria dos senso-res do Tweets Context Collector utiliza o sistema de precisão definido pelo Android1. Oscampo de precisão podem receber valores de 1-3, sendo 3 a precisão mais alta. O sensorlocation é o único em que o nível de precisão é definida em metros.1 https://developer.android.com/reference/android/hardware/SensorManager.html

Page 42: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 5. Aplicativo desenvolvido: Tweet Context Collector 41

Alguns dos sensores do Tweet Context Collector precisam de um sistema de co-ordenadas. Na maioria dos sensores, as coordenadas são relativas à tela do objeto móvel,como representado na figura 16, retirada do site do AWARE2. O único dos sensores uti-lizado com um sistema de coordenadas diferente é o sensor de rotação, representado pelafigura 17, retirado do site do AWARE3.

Figura 16 – Representação das coordenadas utilizado pelo acelerômetro

Figura 17 – Representação das coordenadas utilizado pela rotação

2 http://www.awareframework.com/accelerometer/3 http://www.awareframework.com/rotation/

Page 43: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 5. Aplicativo desenvolvido: Tweet Context Collector 42

Os sensores implementados no Tweet Context Collector são:

∙ Acelerômetro;

∙ Barômetro;

∙ Gravidade;

∙ Giroscópio;

∙ Localização;

∙ Luminosidade;

∙ Magnetômetro;

∙ Rotação;

∙ Temperatura.

Acelerômetro O acelerômetro é um sensor de alta frequência que mede a ace-leração aplicada ao sensor embutido no dispositivo, incluindo a força da gravidade. Oscampos coletados estão representados na tabela 4.

Tabela 4 – Os campos coletados do acelerômetro

Campo Tipo de campo Descrição do campotimestamp Timestamp Horário da coletaaccuracy Inteiro Nível de precisão do sensordouble_values_0 Real Valor do eixo Xdouble_values_1 Real Valor do eixo Ydouble_values_2 Real Valor do eixo Z

Barômetro O Barômetro é um sensor de alta frequência que mede a pressão do arno ambiente. O barômetro pode ser utilizado para detectar e prever pequenas mudançasno tempo, por exemplo, uma queda de pressão indica chuva, e o aumento da pressãorepresenta um bom tempo. Os campos estão representados na tabela 5

Tabela 5 – Os campos coletados do barômetro

Campo Tipo de campo Descrição do campotimestamp Timestamp Horário da coletaaccuracy Inteiro Nível de precisão do sensordouble_values_0 Real Pressão do ar no ambiente, em mbar/hPa

(dependendo do hardware)

Gravidade A gravidade é um sensor de alta frequência que mede a força dagravidade aplicada no sensor imbutido no dispositivo e fornece um vetor tridimensional

Page 44: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 5. Aplicativo desenvolvido: Tweet Context Collector 43

indicando a direção e a magnitude da gravidade (em m/s). Quando o dispositivo estáparado, tanto a gravidade quanto o acelerômetro devem ter os mesmos valores. Os camposcoletados pelo sensor são representados pela tabela 6.

Tabela 6 – Os campos coletados pela gravidade

Campo Tipo de campo Descrição do campotimestamp Timestamp Horário da coletaaccuracy Inteiro Nível de precisão do sensordouble_values_0 Real Valor do eixo Xdouble_values_1 Real Valor do eixo Ydouble_values_2 Real Valor do eixo Z

Giroscópio O giroscópio é um sensor de alta frequência que mede a rotação emtorno do dispositivo em rad/s. A rotação é positiva em sentido anti-horário. Os camposcoletados pelo sensor são representados pela tabela 7.

Tabela 7 – Os campos coletados pelo giroscópio

Campo Tipo de campo Descrição do campotimestamp Timestamp Horário da coletaaccuracy Inteiro Nível de precisão do sensordouble_values_0 Real Valor do eixo Xdouble_values_1 Real Valor do eixo Ydouble_values_2 Real Valor do eixo Z

Localização A localização é um sensor de baixa frequência que fornece a melhorestimativa de localização do dispositivo móvel. a rotação em torno do dispositivo emrad/s. A rotação é positiva em sentido anti-horário. Os campos coletados pelo sensor sãorepresentados pela tabela 8.

Tabela 8 – Campos coletados pela localização

Campo Tipo de campo Descrição do campotimestamp Timestamp Horário da coletaaccuracy Inteiro A precisão estimada em metrosdouble_longitude Real A longitude da localização em grausdouble_latitude Real A latitude da localização em grausdouble_altitude Real A altitude da localização, se disponível, em

metros sobre o nível do mardouble_bearing Real A direção em que a pessoa está andando, em

grausdouble_speed Real A velocidade do dispositivo, se disponível, em

m/sprovider Texto GPS ou Wi-Fi

Page 45: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 5. Aplicativo desenvolvido: Tweet Context Collector 44

Luminosidade A luminosidade é um sensor de alta frequência que mede a lumino-sidade do ambiente. Pode ser usado para detectar a luminosidade em ambientes fechadosou abertos. Os valores de luminosidade são definidos pelo sistema android 4, os constantesoficiais são:

∙ Cloudy sky: 100.0

∙ Full moon: 0.25

∙ No moon: 0.001

∙ Overcast: 10000.0

∙ Shade: 20000.0

∙ Sunlight: 110000.0

∙ Sunlight maximum: 120000.0

∙ Sunrise: 400.0

.

Os campos coletados pelo sensor são representados pela tabela 9

Tabela 9 – Campos coletados pela luminosidade

Campo Tipo de campo Descrição do campotimestamp Timestamp Horário da coletaaccuracy Inteiro Nível de precisão do sensordouble_light_lux Real A luminosidade do ambiente (lux)

Magnetômetro O magnetômetro é um sensor de alta frequência que mede aa força do campo geomagnéctio ao redor do dispositivo. Este sensor fornece os dados deforça (em 𝜇T) para cada um dos eixos. Os campos coletados pelo sensor são representadospela tabela 10

Tabela 10 – Campos coletados pelo magnetômetro

Campo Tipo de campo Descrição do campotimestamp Timestamp Horário da coletaaccuracy Inteiro Nível de precisão do sensordouble_values_0 Real Valor do eixo Xdouble_values_1 Real Valor do eixo Ydouble_values_2 Real Valor do eixo Z

4 https://developer.android.com/reference/android/hardware/SensorManager.html

Page 46: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 5. Aplicativo desenvolvido: Tweet Context Collector 45

Rotação A rotação é um sensor de alta frequência que mede a orientação dodispositivo com uma combinação de um ângulo e um eixo. Os três elementos do vetor derotação são expressados em:

∙ x*sin(𝜃/2)

∙ y*sin(𝜃/2)

∙ z*sin(𝜃/2)

Os campos coletados pelo sensor são representados pela tabela 11

Tabela 11 – Campos coletados pela rotação

Campo Tipo de campo Descrição do campotimestamp Timestamp Horário da coletaaccuracy Inteiro Nível de precisão do sensordouble_values_0 Real O vetor de rotação ao redor do eixo x, x*sin(𝜃/2)double_values_1 Real O vetor de rotação ao redor do eixo y, y*sin(𝜃/2)double_values_2 Real O vetor de rotação ao redor do eixo z, z*sin(𝜃/2)double_values_3 Real cos(𝜃/2) (depende do fabricante)

Temperatura O sensor de temperatura é um sensor que mede a temperaturado ambiente, em celsius (oC). Poucos dispositivos possuem este sensor.Os campos destesensor são representados pela tabela 12

Tabela 12 – Campos coletados pela temperatura

Campo Tipo de campo Descrição do campotimestamp Timestamp Horário da coletaaccuracy Inteiro Nível de precisão do sensortemperature_celsius Real Temperatura medida

O aplicativo também foi integrado aos plugins de baixa frequência Google ActivityRecognition e Google Fused Locations.

Google Fused Location O plugin Google Fused Location usa a API do GoogleFused Locaition para fornecer a localização do usuário em uma forma eficiente energéti-camente. Além dos campos do sensor de localização, também são coletados os campos databela 13

Google Activity Recognition

O plugin Google Activity Recognition detecta o meio de transporte do usuário.Dentre os meios de transportes identificados estão:

∙ IN_VEHICLE O dispositivo está com um usuário em um veículo automotivo

Page 47: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 5. Aplicativo desenvolvido: Tweet Context Collector 46

Tabela 13 – Campos coletados pelo plugin Google Fused Location

Campo Tipo de campo Descrição do campotimestamp Timestamp Horário da coletageofence_label Real Nome da área geográficadouble_latitude Real latitude da área geográfica, em metrosdouble_longitude Real longitude da área geográfica, em metrosdouble_radius Real Raio da área geográfica, em metros

∙ ON_BICYCLE O dispositivo está com um usuário em uma bicicleta

∙ ON_FOOT O dispositivo está com um usuário que está caminhando ou correndo

∙ RUNNING O dispositivo está com um usuário que está correndo

∙ STILL O dispositivo está com um usuário que está parado

∙ TILTING O angulo do dispositivo em relação a gravidade mudou significantemente

∙ UNKNOWN Não foi possivel identificar a atividade do dispositivo

∙ WALKING O dispositivo está com um usuário que está caminhando.

Os campos coletados deste plugin são representados na tabela 14

Tabela 14 – Campos coletados pelo Google Activity Recognition

Campo Tipo de campo Descrição do campotimestamp Timestamp Horário da coletaactivity_name Texto Nome da atividade detectadaactivity_type Inteiro Constante da atividade detectadaconfidence Inteiro Probabilidade de acerto do movimento em

porcentagem (0%-100%)activities Texto Arranjo JSON com todas as atividades em

potencial e as suas probabilidades

Page 48: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

47

6 Resultados

Este capítulo relata os testes deste trabalho. Apresenta os scripts e os bancos dedados utilizados para coleta de dados do Twitter e alguns aspectos dos dados coletados.Por fim, apresenta os dados coletados com as ferramentas para coleta de contextos e umteste de enriquecimento semântico com LOD.

6.1 Coleta e análise de dados do TwitterA aquisição dos tweets foi realizada através do script SeMovGet_Tweet, desenvol-

vido em Java no laboratório LISA. Ele se conecta com o Twitter através da API Twitter4j1.No processo de coleta de dados são executadas duas instâncias do script. Uma das ins-tâncias executa a versão Stream, a qual realiza a coleta de tweets em tempo real. A outrainstância executa a versão Timeline que realiza a coleta dos dados históricos de tweetsdos usuários com maior número de tweets encontrados através de Stream.

As duas instâncias salvam os dados coletados em um banco de dados MongoDBpor questão de eficiência. Como é mostrado em (JUNG; YOUN; BAE, 2015), o tempoda operação de inserção em bancos de dados PostgreSQL é muito maior do que em umbanco de dados MongoDB, principalmente para grandes quantidades de registros.

Os dados coletados são posteriormente exportados para arquivos CSVs atravésdo script SeMovGet_Tweet_Backup. Estes CSVs são utilizados para popular o servi-dor PostGIS que possuí o esquema ilustrado na figura 4 utilizando o script SeMov-Get_Tweet_Restore. Este procedimento é necessário para a realização de consultas comjunções geoespaciais. O diagrama de atividades na figura 18 ilustra as etapas dos processosde coleta e carga dos dados.

1 http://twitter4j.org/

Page 49: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 6. Resultados 48

Figura 18 – Diagrama de atividades do processo de coleta e carga dos dados

6.1.1 Caracterização dos dados coletados

Dentre os dados coletados estão os dados de perfil dos usuários, dos tweets queeste usuário postou e do Foursquare sobre a localização referenciada nas postagens. Emum total de 436.500.628 Tweets coletados, apenas 8,08% possuem coordenadas geográficascomo ilustra o gráfico da imagem 19

Figura 19 – Gráfico comparando a quantidade de Tweets com e sem coordenadas geográficas

Page 50: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 6. Resultados 49

6.2 Testes com ferramentas para coleta de contextosPara a realização dos testes foram coletados dados de usuários do Twitter e de

objetos móveis com o Tweets Context Collector. Para a coleta dos dados do Twitter ejunção dos dados do Twitter com os dados dos objetos móveis, foi criado um script emPython. Neste script são inseridos os nomes de usuários do Twitter dos participantesdo testes e os IDs gerados pelo Framework AWARE de seus objetos móveis. O scriptse conecta à API do Twitter através da bibliotca Tweepy e coleta os dados do usuárioe tweets de cada participante do teste. O Script então se conecta à uma base de dadosMySQL que possui os dados coletados dos objetos móveis e então agrupa os dados dossensores que estão relacionados ao tempo e ao objeto móvel de cada postagem. Por fim,os dados de usuário e Tweets que possuem dados de sensores relacionados são salvos emuma base de dados Postgres.

A base de dados que contém os dados do usuário, dos tweets e dos sensores é umaversão modificada da base de dados do capítulo 3. Nesta nova versão são adicionadastabelas para cada sensor e essas tabelas são relacionadas com a tabela Post através docampo idPost, como mostra a figura 20.

Figura 20 – Área modificada do modelo do banco de dados do capítulo 3

Para a realização de uma amostra, foi selecionado o tweet ilustrado na figura 21.Este tweet, como a maioria dos Tweets coletados, não possui a coordeanada informando olocal exato do objeto móvel, porém ele possuí uma relação com o local Florianópolis. Esta

Page 51: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 6. Resultados 50

relação pode não ser realmente relacionada com a localização do usuário2. Mas assumindoque o usuário marcou a localização em que estava, podemos utilizar os dados do polígonocoletado do lugar Florianópolis pela API do Twitter e afirmar que o usuário está dentroda região retangular real marcada no mapa da figura 22.

Figura 21 – Tweet utilizado para exemplificar a utilidade do Tweet Context Collector

Figura 22 – Mapa gerado pela API do Google Maps com um polígono mostrando a área de Florianópolisdefinido pelo Twitter

Com o Tweets Context Collector, além dos dados coletados pela API do Twitter épossível especificar melhor a localização do usuário com a ajuda do plugin Google FusedLocation. Utilizando o exemplo da figura 21, com o Tweet Context Collector foi possívelcoletar a longitude, latitude e a precisão dos dados, gerando um círculo que se aproximamuito mais da coordenada real do usuário que o retângulo envolvendo Florianópolis, comerro máximo de apenas 20 metros, como mostra na figura 23.

Além disso, graças ao plugin Google Activity Recognition, é possível identificarque o objeto móvel estava parado, com 100% de precisão. Com os dados coletados comos sensores magnetômetro e acelerômetro, é possível descobrir o azimute do objeto móvelpara identificar a orientação do usuário, como mostra a figura 24.

2 https://dev.twitter.com/overview/api/places

Page 52: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 6. Resultados 51

Figura 23 – Mapa gerado pela API do google maps com o raio aproximado da localização do objetomóvel.

Figura 24 – Mapa gerado pela API do google maps com a orientação do usuário

6.2.1 Teste de enriquecimento semântico com LOD

Para o teste de enriquecimento semântico LOD foi utilizado o tweet da figura 25.Este tweet, tal como o exemplo da figura 22, possui apenas identificação de local, que pode

Page 53: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 6. Resultados 52

ser aproximado pelo polígono envolvendo Florianópolis. Também foi utilizado o algoritmode ligação de postagens a locais proposto junto ao Baquara (FILETO et al., 2015).

Figura 25 – Tweet utilizado para o teste

Utilizando o Tweet Context Collector foi possível identificar a localização do objetomóvel no momento da postagem. A localização está representada na figura 26. Tambémfoi utilizado o recurso do dbpedia "Universidade Federal de Santa Catarina"3.

Figura 26 – Tweet utilizado para o teste

Como demonstrado na figura 27, o algoritmo do Baquara compara a distânciaentre o recurso e o objeto móvel e a similaridade do texto do tweet com o nome do recursoe exige valores mínimos e máximos para verificar se o recurso deve ser associado ao texto.Utilizamos uma distância máxima de 700m e uma similaridade mínima de 50%.

Como demonstrado na figura 28, a distância entre o objeto móvel e a UFSC é de680,04 metros. Utilizando a métrica para comparação de strings Jaro–Winkler, descobri-3 http://es.dbpedia.org/page/Universidad_Federal_de_Santa_Catarina

Page 54: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 6. Resultados 53

Figura 27 – Algoritmo proposto em (FILETO et al., 2015)

mos que a similaridade entre UFSC e o nome do recurso "Universidade Federal de SantaCatarina"é de 51,75%. Como tanto a distância é menor que a máxima, quanto a simila-ridade é maior que a mínima, o recurso serve para o enriquecimento semântico do tweet.No entanto, obviamente, um simples dicionário de nomes de superfície correlacionado taisstrings resolveria o problema de casamento entre o nome por extenso e o acrônimo daUFSC.

Além disso, como o objeto móvel estava em movimento, o sensor de localizaçãodetectou que a velocidade era de 1.5 metros por segundo (5.4 km/h) e que a orientaçãoera de 224.5 graus, como representado na figura 29. Os dados retirados a partir do pluginGoogle Activity Recognition também acrescentam dados, indicando que o usuário estavase movimentando a pé.

Page 55: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 6. Resultados 54

Figura 28 – Distância calculada pela API do Google Maps

Page 56: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 6. Resultados 55

Figura 29 – Coordenada e orientação do usuário no momento da postagem do Tweet

Page 57: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

56

7 Conclusões e trabalhos futuros

Este trabalho apresentou uma revisão bibliográfica com os conceitos necessários aoentendimento de questões referentes ao enriquecimento semântico de dados sobre objetosmóveis e o uso de informação de contexto em tal enriquecimento. Ele propôs melhoriasem um esquema de bancos de dados para experimentos de enriquecimento semântico.Anotações semânticas, que são a base de tal enriquecimento, podem ser feitas e/ou suaqualidade aferida mediante o uso de dados sobre o contexto desses objetos móveis. Assim,este trabalho também apresentou um estudo do estado da arte sobre ferramentas de coletade informação sobre o contexto de objetos móveis. Finalmente, apresentou um aplicativodesenvolvido para complementação de dados coletados de objetos móveis com informaçãode contexto e reportou alguns testes realizados para validar tal aplicativo. Assim, ascontribuições deste trabalho são:

1. revisão e melhoramentos em um esquema de banco de dados para acomodar dadose resultados de experimentos de anotação semântica;

2. revisão de um coletor de dados de tweets visando acomodação dos dados colhidosem um banco de dados com tal esquema;

3. estudo comparativo de algumas das principais ferramentas para coleta de informaçãosobre o contexto de objetos móveis;

4. desenvolvimento de um aplicativo baseado em uma ferramenta de coleta de dadossobre o contexto para complementar dados coletados de mídias sociais com dadoscomo coordenadas geográficas;

5. Um teste caracterizando dados coletados do Twitter e o uso do aplicativo paraassociar coordenadas geográficas a tweets que não as incluíam.

O teste mostrou que a maioria dos tweets coletados não possui coordenadas geo-gráficas, que são necessárias a alguns processos de enriquecimento semântico. O aplicativobaseado em coleta de dados de contexto foi capaz de obter essas coordenadas e associaraos tweets que não as tinha para então realizar o processo de anotação semântica.

Para trabalhos futuros sugere-se:

1. pesquisar formas de aprimorar o Tweet Context Collector, diminuindo o consumode bateria e conectando o com outros plugins;

2. realizar experimentos com mais voluntários e maiores amostras de tweets;

Page 58: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Capítulo 7. Conclusões e trabalhos futuros 57

3. criar regras ouro para o enriquecimento semântico de tweets.

Page 59: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

58

Referências

ACHREKAR, H. et al. Predicting flu trends using twitter data. The First InternationalWorkshop on Cyber-Physical Networking Systems, 2011. Citado na página 13.

AGARWAL, A. et al. Sentiment analysis of twitter data. LSM ’11 Proceedings of theWorkshop on Languages in Social Media, 2011. Citado na página 13.

BOLCHINI, C. et al. And what can context do for data? Communications of the ACM -Scratch Programming for All CACM, 2009. Citado na página 17.

BRUNETTE, W. et al. Open data kit 2.0: Expanding and refining information servicesfor developing regions. HotMobile ’13 Proceedings of the 14th Workshop on MobileComputing Systems and Applications Article No. 10, 2013. Citado na página 28.

CHEN, G.; KOTZ, D. And what can context do for data? A Survey of Context-AwareMobile Computing Research, 2000. Citado na página 17.

CHEN, Z. et al. gmission: A general spatial crowdsourcing platform. ICTD ’10Proceedings of the 4th ACM/IEEE International Conference on Information andCommunication Technologies and Development, 2010. Citado na página 32.

CHITTILAPPILLY, A. I.; CHEN, L.; AMER-YAHIA, S. A survey of general-purposecrowdsourcing techniques. IEEE Transactions on Knowledge and Data Engineering (Volume: 28, Issue: 9, Sept. 2016, 2016. Citado na página 32.

DEY, A. K.; ABOWD, G. D. Towards a better understanding of context andcontext-awareness. HUC ’99 Proceedings of the 1st international symposium on Handheldand Ubiquitous Computing, 2000. Citado na página 17.

DUARTE, P. A. de S. et al. A model-driven approach to generate context awareapplications. WebMedia ’14 Proceedings of the 20th Brazilian Symposium on Multimediaand the Web Pages 99-102, 2014. Citado na página 33.

DUARTE, P. A. S. et al. Dynamic deployment for context-aware multimediaenvironments. WebMedia ’15 Proceedings of the 21st Brazilian Symposium on Multimediaand the Web Pages 197-204, 2015. Citado na página 33.

FERREIRA, D. AWARE: A mobile context instrumentation middleware to collaborativelyunderstand human behavior. Dissertação (Mestrado) — University of Oulu, 2013. Citadona página 34.

FERREIRA, D.; KOSTAKOS, V.; DEY, A. K. Aware: mobile context instrumentationframework. WebMedia ’14 Proceedings of the 20th Brazilian Symposium on Multimediaand the Web Pages 99-102, 2014. Citado na página 34.

FILETO, R. et al. The baquara2 knowledge-based framework for semantic enrichmentand analysis of movement data. Data & Knowledge Engineering, 2015. Citado 4 vezesnas páginas 7, 17, 52 e 53.

Page 60: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Referências 59

FRUTUOSO, D. G. Recuperação de informação e classificação de entidadesorganizacionais em textos não estruturados. Dissertação (Mestrado) — UFPE, 2014.Citado na página 13.

GARRITTY, C.; EMAM, K. E. Who’s using pdas? estimates of pda use by health careproviders: a systematic review of surveys. J Med Internet Res, 2006. Citado na página13.

HARTUNG, C. et al. Open data kit: Tools to build information services for developingregions. ICTD ’10 Proceedings of the 4th ACM/IEEE International Conference onInformation and Communication Technologies and Development, 2010. Citado 3 vezesnas páginas 7, 25 e 27.

JUNG, M.-G.; YOUN, S.-A.; BAE, J. A study on data input and output performancecomparison of mongodb and postgresql in the big data environment. 2015 8thInternational Conference on Database Theory and Application (DTA), 2015. Citado napágina 47.

KOULOUMPIS, E.; WILSON, T.; MOORE, J. Twitter sentiment analysis:the good thebad and the omg! Fifth International AAAI Conference on Weblogs and Social Media,2011. Citado na página 13.

KUMAR, S.; MORSTATTER, F.; LIU, H. Twitter Data Analytics. [S.l.]: Springer, 2014.1-69 p. (Springer Briefs in Computer Science). ISBN 978-1-4614-9371-6. Citado napágina 13.

LEHMANN, J. et al. Dbpedia - A large-scale, multilingual knowledge base extractedfrom wikipedia. Semantic Web, v. 6, n. 2, p. 167–195, 2015. Disponível em:<http://dx.doi.org/10.3233/SW-140134>. Citado na página 20.

MATHIOUDAKIS, M.; KOUDAS, N. Twittermonitor: Trend detection over the twitterstream. International Conference on Management of data, 2010. Citado na página 13.

NABO, R. G. B. et al. Anotação de trajetórias via fusão com trilhas de mídias sociais.GeoInfo, 2014. Citado na página 16.

NGOMO, A. N. et al. Introduction to linked data and its lifecycle on the web. In:KOUBARAKIS, M. et al. (Ed.). Reasoning on the Web in the Big Data Era, Athens,Greece. Springer, 2014. (Lecture Notes in Computer Science, v. 8714), p. 1–99. ISBN978-3-319-10586-4. Disponível em: <http://dx.doi.org/10.1007/978-3-319-10587-1 1>.Citado na página 19.

OLIVEIRA, O.; BOLLIGER, F.; FLORIDO, A. Brazil agricultural census 2006:Innovations and impacts. Fourth International Conference on Agriculture Statistics,2006. Citado na página 13.

PAUL, M. J.; DREDZE, M. You are what you tweet: Analyzing twitter for public health.Fifth International AAAI Conference on Weblogs and Social Media, 2011. Citado napágina 13.

SCHILIT, B.; ADAMS, N.; WANT, R. Context-aware computing applications. 1stInternational Workshop on Mobile Computing Systems and Applications, 1994. Citadona página 17.

Page 61: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Referências 60

STADLER, C. et al. Linkedgeodata: A core for a web of spatial open data. Semantic Web,v. 3, n. 4, p. 333–354, 2012. Disponível em: <http://dx.doi.org/10.3233/SW-2011-0052>.Citado na página 20.

SUNDARAM, H.; MANI, A. Context-aware dynamic presentation synthesis forexploratory multimodal environments. 2005 IEEE International Conference onMultimedia and Expo, 2005. Citado na página 17.

WU, F. et al. Semantic annotation of mobility data using social media. 24th InternationalConference on World Wide Web, 2015. Citado na página 14.

Page 62: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

61

APÊNDICE A – Artigo sobre o TCC

Page 63: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Analise, selecao e teste de ferramentas para coleta de dadossobre objetos moveis visando enriquecimento semantico

Karran Besen1, Renato Fileto1

1Curso de bacharelado em Ciencias da Computacao – Universidade Federal de SantaCatarina (UFSC) – 88.040-900 – Florianopolis – SC – Brazil

{karran@inf.,r.fileto@}ufsc.br

Abstract. Many of the data generated by the use of social media can feed awide variety of applications. However, such postings have structured and non-structured content, subject to noise and interpretation problems. So, these postsneed to be semantically enriched before being used in certain applications. Togenerate quality annotations, semantic enrichment of these posts requires infor-mation about the context within which such posts are made. This article presentsa review of the literature on tools for collecting additional contextual informa-tion that may assist in semantic enrichment and an application proposal forcollecting data on mobile objects at the time of Twitter postings

Resumo. Muitos dos dados gerados pelo uso de mıdias socias podem alimentaruma ampla variedade de aplicacoes. Entretanto, tais postagens tem conteudotextual nao estruturado, sujeito a ruıdos e problemas de interpretacao. As-sim, estas postagens precisam ser semanticamente enriquecidas antes de seremutilizadas em certas aplicacoes. Para gerar anotacoes de qualidade, o enri-quecimento semantico destas postagens requer informacoes sobre o contextodentro do qual tais postagens sao feitas. Este artigo apresenta uma revisao deliteratura sobre ferramentas para coleta de informacoes adicionais de contextoque possam auxiliar no enriquecimento semantico e uma proposta de aplicativopara coleta de dados sobre objetos moveis no momento de postagens no Twitter.

1. IntroducaoO uso de objetos moveis para a coleta de dados nao e novidade, notebooks e palm-tops ja sao usados a muito tempo para coleta de dados, como por exemplo na saude[Garritty and Emam 2006], na agricultura [Oliveira et al. 2006], etc. A reducao do custode aquisicao e operacao e aumento de funcionalidades de smartphones tornou estes obje-tos moveis disponıveis ate em regioes extremamente pobres e remotas, motiva ainda maisa exploracao do uso destes dispositivos na coleta de dados.

Ate os celulares mais simples podem ser utilizados na coleta de dados, por exem-plo com o uso de servicos de mensagem de texto (e.g. SMS) ou voz. Os smartphonespodem servir de formas muito mais sofisticadas para estas coletas, como por exemploapresentando formularios que possuem interfaces amigaveis, utilizando os dados gera-dos pelos sensores do dispositivo ou entao os dados gerados pela interacao com mıdiassociais.

A quantidade de conteudo gerado pelas mıdias sociais (e.g. Twitter, Facebook,Instagram, Foursquare) aumenta constantemente. Nas mıdias sociais os usuarios se tor-nam fontes de dados. O Twitter, por exemplo, possui atualmente cerca de 310 milhoes

Page 64: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

de usuarios ativos1, i.e., que enviam tweets mensalmente. Esses usuarios muitas vezesrelatam informacoes e expressam suas opinioes e sentimentos atraves de tais tweets, queficam em grande parte disponıveis via diversas interfaces, incluindo APIs2 e frameworksde coleta de dados [Kumar et al. 2014]. Assim, mıdias sociais tem se tornado imensas ericas fontes de informacao para diversas aplicacoes.

Os dados das mıdias sociais sao utilizados em uma grande diversidadede pesquisas, tais como recuperacao e analise de informacao [Frutuoso 2014],analise de sentimentos [Kouloumpis et al. 2011, Agarwal et al. 2011] e recomendacao[Mathioudakis and Koudas 2010]. As informacoes adquiridas das mıdias sociais podemser uteis em varios dominıos de aplicacao, tais como marketing, turismo e segurancapublica [Achrekar et al. 2011, Paul and Dredze 2011].

Entretanto, dados de mıdias sociais apresentam uma enorme variedade de for-matos, podendo incluir dados semiestruturados (e.g., tags, timestamps, coordenadas ge-ograficas) e nao estruturados (textos livres). Os textos postados em mıdias sociais normal-mente sao informais, sujeitos a muitos erros ortograficos e gramaticais, gırias e acronimos(e.g. LOL - Lots of laughs, sqn - So que nao, kd - cade, vc - voce), entre outros problemas.

Devido a estrutura linguıstica irregular, postagens podem ser interpretadas deforma erronea ou com pouca precisao. Assim, para se extrair informacao de quali-dade, torna-se necessario enriquecer as postagens com referencias semanticas bem de-finidas antes de utiliza-las. A combinacao de dados de contexto dos objetos moveis (e.g.,informacoes de perfil) e com os contextos e conteudos das postagens em mıdias soci-ais tem potencial para produzir anotacoes semanticas de qualidade, de modo a permitira interpretacao correta dos dados. Com estas anotacoes semanticas pode-se, por exem-plo, desambiguar e identificar recursos para investigar melhor o motivo da viagem de umgrupo de pessoas para uma localizacao em um determinado horario (e.g., Ir a um festivalde musica, assistir a uma partida de futebol)[Wu et al. 2015].

Tendo em vista que o processo de enriquecimento semantico e essencial para aaplicacao dos dados coletados de mıdias sociais e que informacoes de contexto podemauxiliar neste processo, este trabalho propoe a revisao da literatura sobre ferramentas paracoleta de informacoes adicionais de contexto que possam aprimorar o enriquecimentosemantico.

2. Ferramentas para coleta de contextosEsta secao descreve ferramentas, incluindo bibliotecas, suıtes e frameworks, para a coletade informacoes de contexto de objetos moveis, de acordo com a documentacao encontradana literatura.

Tais ferramentas sao apresentadas e comparadas de acordo com os sistemas ope-racionais que conseguem executar a ferramenta, com as definicoes de autorizacao de usoda ferramenta, com as formas em que os dados podem ser coletados pela ferramenta, comos formatos em que estes dados coletados podem ser recuperados, com as acoes que oprograma consegue desempenhar (e.g. Criacao de formularios, mapeamento de dados co-letados, etc.) e pelas limitacoes e os requisitos que a ferramenta exige para ser executada.

1https://about.twitter.com/company2https://dev.twitter.com/overview/documentation

Page 65: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

2.1. Open Data Kit (ODK)O ODK3 e uma suıte de ferramentas com o intuito de coletar e gerenciar dados de objetosmoveis. Foi desenvolvido pela Universidade de MaryLand e pelo Instituto Internacionalde analise de sistemas aplicados. A suıte permite a criacao de formularios com a ferra-menta ODK Build, a hospedagem destes formularios em um servidor com o ODK Aggre-gate e o preenchimento e envio destes formularios para o servidor atraves de smartphonescom o ODK Collect.

De acordo com [Hartung et al. 2010], foi escolhido o padrao xForms4, para quetodas as ferramentas possam ser usadas independentemente, mas podendo interagir entreelas. O xForms e um padrao de descricoes de formularios desenvolvido pela World WideWeb consortium (W3C)5. Esta padronizacao permite que o ODK importe os formulariosde outras ferramentas, como por exemplo o XLSForm6 e o koboform7.

2.2. GeoODKA GeoODK e uma modificacao Opensource do ODK feita pelo Instituto Internacionalde Analise de Sistemas Aplicados e pela Global Agricultural Monitoring. A GeoODKfornece uma maneira de coletar e armazenar informacoes geo-referenciadas. Esta suıtetambem fornece ferramentas para visualizacao, analise e manipulacao dos dados.

Os grandes diferenciais do GeoODK sao as funcionalidades de mapeamento exis-tentes na GeoODK. Entre as funcionalidades de mapeamento adicionais estao o mapea-mento offline a possibilidade de visualizacao dos dados coletados no dispositivo movel ea coleta de polıgonos e tracos do GPS.

Alem disto, a GeoODK fornece o Mobile Data Converter, que e um software quepermite a conversao de dados coletados para formatos espaciais e a preparar um conjuntode dados para um sistema GIS.

2.3. KoBoToolboxA KoBoToolbox e uma suıte de ferramentas Opensource baseadas no ODK para coleta dedados de objetos moveis para organizacoes humanitarias e pesquisadores. Foi Desenvol-vido pela Harvard Humanitarian Initiative. A suıte e composta pelas ferramentas:

• koboform (dkobo, django kobo) - Ferramenta web para criar os formularios;• kobocat and kobocat-templates - Servidor para hospedar formularios e analisar os

dados;• enketo-express - Aplicacao Web, desenvolvida em HTML para coletar, pre-

visualizar formularios e editar os dados submetidos;• kobocollect - Aplicativo android para coleta de dados.

2.4. gMissionO aplicativo gMission foi desenvolvido pela Hong Kong University of Science and Te-chnology e tem como objetivo crowdsourcing espacial. O gMission e opensource e esta

3https://opendatakit.org/4http://w3.org/TR/xforms/5https://www.w3.org6http://xlsform.org/7http://kobotoolbox.org/

Page 66: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

disponıvel para Android e iOS. Existe pouca documentacao e usuarios que utilizam ogMission.

O gMission conta com um sistema de contribuicao explicado em[Chittilappilly et al. 2016]. Nele para quanto mais tarefas forem cumpridas, maispontos sao adquiridos. Quanto mais pontos uma pessoa tiver, mais perguntas podem sercriadas.

De acordo [Chen et al. 2010], o gMission possui a interface de usuario que e res-ponsavel por fornecer ao usuario as funcoes de postar e responder tarefas, e o gerenciadorde funcoes que e responsavel pela localizacao do usuario, pela recomendacao das tarefasapartir de informacoes geograficas e da quantidade de tarefas e tambem pelo controle dequalidade.

2.5. LoCCAM

O LoCCAM8 e um middleware para sistemas moveis e sensıveis ao contexto desen-volvido pelo Grupo de Redes de Computadores e pela Engenharia de Software e Sis-temas (GREat) da Universidade Federal do Ceara (UFC)[Duarte et al. 2015]. Com oLoCCAM e possıvel desenvolver aplicacoes sensıveis ao contexo rapidamente, como porexemplo uma aplicacao com o objetivo de mapear determinados locais com informacoesreferentes a localizacao do dispositivo9. A arquitetura do LoCCAM, ilustrada na fi-gura 1 retirada do site do LoCCAM 10, pode ser dividida em duas partes principais[de Sousa Duarte et al. 2014]:

• SysSU (System Support for Ubiquity): Recebe a relacao de interesses dasaplicacoes e as repassa para o CAM;• CAM (Context Acquisition Manager) Framework : armazena a relacao de in-

teresses e controla os CACs (Componentes de aquisicao de contexto).

O SysSU Filter realiza o filtro nas informacoes dos sensores, o adaptation reasoner cuidada lista de interesses da aplicacao e se comunica com o CAC manager que controla todosos CACs.

8http://loccam.great.ufc.br/9http://loccam.great.ufc.br/downloads/download-aplicacoes.html

10http://loccam.great.ufc.br/informacoes-gerais/arquitetura.html

Page 67: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Figura 1. Arquitetura do LoCCAM

2.6. AWARE

O AWARE11 e um middleware opensource dedicado a captura de informacoes de con-texto moveis desenvolvido na Carnegie Mellon University. Pode ser utilizado para criaraplicativos para sistemas operacionais Android e iOS. Com ele e possıvel criar aplicacoessensıveis ao contexto e coletar dados de contexto.

A figura 2 (retirada de [Ferreira et al. 2014]) ilustra a arquitetura do AWARE.O AWARE utiliza sensores como forma de capturar dados de contextos de hardware(e.g., Acelerometro, giroscopio, magnetismo), software (e.g., calendario, email, statusdas aplicacoes) e humanos (e.g., ESM - Experience sampling Method, entradas de voze gesto). O AWARE possui plugins, que sao extensoes que permitem os desenvolvedo-res implementar codigos que utilizam sensores ou ate mesmo outros plugins. Um plugindeve refinar o contexto oferecido por algum sensor, fornecendo contextos mais precisosou mais compreensıveis. Para a comunicacao entre sensores, plugins e aplicacoes saoutilizadas as estrategias de broadcast, observador e fornecedor.

Por fim, o dispositivo pode enviar os dados adquiridos dos sensores para outrosdispositivos por MQTT (Padrao de telemetria) ou para um banco de dados MySQL porHTTPS. Os dados podem ser armazenados gratuitamente no AWARE Server.

11http://www.awareframework.com/

Page 68: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Figura 2. Arquitetura do AWARE

3. Sıntese ComparativaNesta secao foram utilizados os criterios do inıcio deste capıtulo para realizar uma sıntesecomparativa das ferramentas estudadas. O objetivo da tabela 1 e comparar os tipos delicenca e as plataformas, entradas e saıdas suportadas pelas ferramentas estudadas.

Tabela 1. Comparacao de ferramentas para coleta de dados sobre objetosmoveis

Ferramentas Plataformas Licencas Entradas Saıdas

ODK Android Opensource FormulariosKML,JSON,CSV

GeoODK Android Opensource Formularios

ESRI,KML,JSON,CSV

KoboToolboxAndroid,iOS Opensource Formularios

KMl,JSON,CSV,SPSS

gMissionAndroid,iOS Opensource Formularios -

LoCCAM Android Freeware Sensores Tuplas

AWAREAndroid,iOS Opensource

Formularios,Sensores CSV

Na tabela 2 foram comparadas os campos e os sensores de entradas presentesnas ferramentas estudadas. As ferramentas ODK, GeoODK e KoBoToolbox aceitam osmesmos campos e por isso estao listadas na mesma coluna da tabela. Com as tabelas com-parativas e possıvel notar que das ferramentas estudada que apenas suportam formularios

Page 69: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Tabela 2. Comparacao dos campos e sensores das ferramentas estudas

Formato deentrada Campos

ODK,GeoODK,KoboToolbox

LoCCAM AWARE

Sensores

Acelerometro X XAplicacoes XBarometro XComunicacao XGravidade X XGiroscopio XInstalacoes XLuminosidade X XAceleracao linear XLocalizacao X X XMagnetometro X XOrientacao XProximidade XRotacao XTelefonia XTemperatura X XTrafego XWi-Fi X X

Formulario

Alternativa oumultipla escolha X X

Decimal XInteiro X XImagens XCodigos de barra XAudio XVıdeo XTexto X X

como forma de entrada, apenas a KoboToolbox tem suporte aos sistemas operacionaisAndroid e iOS. Tambem e possıvel notar que a unica ferramenta estudada nao opensourcee o middleware LoCCAM.

Ainda com o uso das tabelas e possıvel identificar o AWARE como a ferramentamais completa. O AWARE e suportado pelos sistemas operacionais Android e iOS, ea unica das ferramentas estudadas com a capacidade da coleta de dados de sensores eformularios, e tambem e a ferramenta que possuı a maior quantidade de sensores ja im-plementados em seu nucleo.

4. Aplicativo desenvolvido: Tweet Context Collector

Por ser a ferramenta estudada mais completa, o AWARE foi utilizado para o desenvol-vimento de um aplicativo para realizacao de testes de associacoes de coordenadas ge-ograficas a postagens que nao as possuıam . O aplicativo pode ser executado em sistemas

Page 70: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Android e para poder coletar e enviar as informacoes dos sensores, o aplicativo deve estarpelo menos rodando em segundo plano. Tambem e necessaria a ativacao do servico deacessibilidade do AWARE framework.

Como o Twitter lanca uma notificacao no celular quando o usuario posta umTweet, foi utilizado o sensor de aplicativos existente no nucleo do AWARE para criarum observador de notificacoes. Desta forma, o Tweet Context Collector identifica quandoo Twitter cria uma notificacao, e entao ativa os sensores e envia os dados recentementecoletados para um banco de dados MySQL.

O aplicativo possui uma unica tela, aonde e possıvel visualizar o identificadorunico do objeto movel gerado pelo AWARE. Tambem e possıvel visualizar um botao queserve como alternativa para a ativacao da funcao de coleta e envio dos dados dos sensores.Este botao foi adicionado pois em alguns casos os usuarios esqueceram de executar oaplicativo e so lembraram depois de postar o Tweet.

Enquanto o aplicativo esta sendo executado, os sensores de baixa frequencia fi-cam ativos. Os sensores de baixa frequencia ficam periodicamente gravando localmenteos valores mais recentes. Para diminuir o consumo de bateria e a quantidade de registros,os sensores de alta frequencia ficam inativos ate que a funcao de coleta dos dados e exe-cutada. Quando a funcao de coleta de dados e executada, cada sensor de alta frequencia eativo por um segundo e os valores coletados sao enviados para o servidor. Assim que to-dos os dados dos sensores sao enviados para o servidor, os dados sao apagados do objetosmoveis.

Em geral, os smartphones possuem diferentes sensores disponıveis. Por exemploo sensor de temperatura e muito raro de ser encontrado nos celulares, porem ele estaimplementado e caso o aplicativo seja instalado em um celular com o sensor disponıvelos dados da temperatura serao coletados.

Os sensores implementados no Tweet Context Collector sao:

• Acelerometro;• Barometro;• Gravidade;• Giroscopio;• Localizacao;• Luminosidade;• Magnetometro;• Rotacao;• Temperatura.

O aplicativo tambem foi integrado aos plugins de baixa frequencia Google Acti-vity Recognition e Google Fused Locations. O plugin Google Fused Location usa a APIdo Google Fused Locaition para fornecer a localizacao do usuario em uma forma eficienteenergeticamente. O plugin Google Activity Recognition detecta o meio de transporte dousuario.

5. ResultadosPara a realizacao dos testes foram coletados dados de usuarios do Twitter e de objetosmoveis com o Tweets Context Collector. Para a coleta dos dados do Twitter e juncao

Page 71: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

dos dados do Twitter com os dados dos objetos moveis, foi criado um script em Python.Neste script sao inseridos os nomes de usuarios do Twitter dos participantes do testes eos IDs gerados pelo Framework AWARE de seus objetos moveis. O script se conecta aAPI do Twitter atraves da bibliotca Tweepy e coleta os dados do usuario e tweets de cadaparticipante do teste. O Script entao se conecta a uma base de dados MySQL que possuios dados coletados dos objetos moveis e entao agrupa os dados dos sensores que estaorelacionados ao tempo e ao objeto movel de cada postagem. Por fim, os dados de usuarioe Tweets que possuem dados de sensores relacionados sao salvos em uma base de dadosPostgres.

Para a realizacao de uma amostra, foi selecionado o tweet ilustrado na figura 3.Este tweet, como a maioria dos Tweets coletados, nao possui a coordeanada informandoo local exato do objeto movel, porem ele possuı uma relacao com o local Florianopolis.Esta relacao pode nao ser realmente relacionada com a localizacao do usuario12. Masassumindo que o usuario marcou a localizacao em que estava, podemos utilizar os dadosdo polıgono coletado do lugar Florianopolis pela API do Twitter e afirmar que o usuarioesta dentro da regiao retangular real marcada no mapa da figura 4.

Figura 3. Tweet utilizado para exemplificar a utilidade do Tweet Context Collector

Figura 4. Mapa gerado pela API do Google Maps com um polıgono mostrando aarea de Florianopolis definido pelo Twitter

Com o Tweets Context Collector, alem dos dados coletados pela API do Twitter epossıvel especificar melhor a localizacao do usuario com a ajuda do plugin Google FusedLocation. Utilizando o exemplo da figura 3, com o Tweet Context Collector foi possıvel

12https://dev.twitter.com/overview/api/places

Page 72: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

coletar a longitude, latitude e a precisao dos dados, gerando um cırculo que se aproximamuito mais da coordenada real do usuario que o retangulo envolvendo Florianopolis, comerro maximo de apenas 20 metros. Alem disso, gracas ao plugin Google Activity Recog-nition, e possıvel identificar que o objeto movel estava parado, com 100% de precisao.Com os dados coletados com os sensores magnetometro e acelerometro, e possıvel des-cobrir o azimute do objeto movel para identificar a orientacao do usuario, como mostra afigura 5.

Figura 5. Mapa gerado pela API do google maps com a orientacao do usuario

5.1. Teste de enriquecimento semantico com LOD

Para o teste de enriquecimento semantico LOD foi utilizado o tweet da figura 6. Estetweet, tal como o exemplo da figura 4, possui apenas identificacao de local, que pode seraproximado pelo polıgono envolvendo Florianopolis. Tambem foi utilizado o algoritmode ligacao de postagens a locais proposto junto ao Baquara [Fileto et al. 2015].

Figura 6. Tweet utilizado para o teste

Utilizando o Tweet Context Collector foi possıvel identificar a localizacao doobjeto movel no momento da postagem. A localizacao esta representada na figura 7.

Page 73: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Tambem foi utilizado o recurso do dbpedia ”Universidade Federal de Santa Catarina”13.

Figura 7. Tweet utilizado para o teste

O algoritmo do Baquara compara a distancia entre o recurso e o objeto movel e asimilaridade do texto do tweet com o nome do recurso e exige valores mınimos e maximospara verificar se o recurso deve ser associado ao texto. Utilizamos uma distancia maximade 700m e uma similaridade mınima de 50%.

Como demonstrado na figura 8, a distancia entre o objeto movel e a UFSC e de680,04 metros. Utilizando a metrica para comparacao de strings Jaro–Winkler, descobri-mos que a similaridade entre UFSC e o nome do recurso ”Universidade Federal de SantaCatarina”e de 51,75%. Como tanto a distancia e menor que a maxima, quanto a simila-ridade e maior que a mınima, o recurso serve para o enriquecimento semantico do tweet.No entanto, obviamente, um simples dicionario de nomes de superfıcie correlacionadotais strings resolveria o problema de casamento entre o nome por extenso e o acronimoda UFSC.

Alem disso, como o objeto movel estava em movimento, o sensor de localizacaodetectou que a velocidade era de 1.5 metros por segundo (5.4 km/h) e que a orientacaoera de 224.5 graus. Os dados retirados a partir do plugin Google Activity Recognitiontambem acrescentam dados, indicando que o usuario estava se movimentando a pe.

13http://es.dbpedia.org/page/Universidad Federal de Santa Catarina

Page 74: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Figura 8. Distancia calculada pela API do Google Maps

6. Conclusoes e trabalhos futuros

Este trabalho apresentou uma revisao bibliografica com os conceitos necessarios ao en-tendimento de questoes referentes ao enriquecimento semantico de dados sobre objetosmoveis e o uso de informacao de contexto em tal enriquecimento. Anotacoes semanticas,que sao a base de tal enriquecimento, podem ser feitas e/ou sua qualidade aferida medi-ante o uso de dados sobre o contexto desses objetos moveis. Assim, este trabalho tambemapresentou um estudo do estado da arte sobre ferramentas de coleta de informacao sobreo contexto de objetos moveis. Finalmente, apresentou um aplicativo desenvolvido paracomplementacao de dados coletados de objetos moveis com informacao de contexto ereportou alguns testes realizados para validar tal aplicativo. Assim, as contribuicoes destetrabalho sao:

1. estudo comparativo de algumas das principais ferramentas para coleta deinformacao sobre o contexto de objetos moveis;

2. desenvolvimento de um aplicativo baseado em uma ferramenta de coleta de dadossobre o contexto para complementar dados coletados de mıdias sociais com dadoscomo coordenadas geograficas;

Page 75: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

3. Um teste caracterizando dados coletados do Twitter e o uso do aplicativo paraassociar coordenadas geograficas a tweets que nao as incluıam.

O teste mostrou que a maioria dos tweets coletados nao possui coordenadas ge-ograficas, que sao necessarias a alguns processos de enriquecimento semantico. O apli-cativo baseado em coleta de dados de contexto foi capaz de obter essas coordenadas eassociar aos tweets que nao as tinha para entao realizar o processo de anotacao semantica.

Para trabalhos futuros sugere-se:

1. pesquisar formas de aprimorar o Tweet Context Collector, diminuindo o consumode bateria e conectando o com outros plugins;

2. realizar experimentos com mais voluntarios e maiores amostras de tweets;3. criar regras ouro para o enriquecimento semantico de tweets.

ReferenciasAchrekar, H., Gandhe, A., Lazarus, R., Yu, S.-H., and Liu, B. (2011). Predicting flu trends

using twitter data. The First International Workshop on Cyber-Physical NetworkingSystems.

Agarwal, A., Xie, B., Vovsha, I., Rambow, O., and Passonneau, R. (2011). Sentimentanalysis of twitter data. LSM ’11 Proceedings of the Workshop on Languages in SocialMedia.

Chen, Z., Fu, R., Zhao, Z., Cheng, P., Cao, C. C., Liu, Z., Tong, Y., Xia, L., Chen, L.,and Zhang, C. J. (2010). gmission: A general spatial crowdsourcing platform. ICTD’10 Proceedings of the 4th ACM/IEEE International Conference on Information andCommunication Technologies and Development.

Chittilappilly, A. I., Chen, L., and Amer-Yahia, S. (2016). A survey of general-purposecrowdsourcing techniques. IEEE Transactions on Knowledge and Data Engineering (Volume: 28, Issue: 9, Sept. 2016.

de Sousa Duarte, P. A., Barreto, F. M., de Almada Gomes, F. A., de Carvalho, W. V., andTrinta, F. A. M. (2014). A model-driven approach to generate context aware applicati-ons. WebMedia ’14 Proceedings of the 20th Brazilian Symposium on Multimedia andthe Web Pages 99-102.

Duarte, P. A. S., Silva, L. F. M. S., Gomes, F. A. A., Viana, W., and Trinta, F. A. M.(2015). Dynamic deployment for context-aware multimedia environments. WebMedia’15 Proceedings of the 21st Brazilian Symposium on Multimedia and the Web Pages197-204.

Ferreira, D., Kostakos, V., and Dey, A. K. (2014). Aware: mobile context instrumen-tation framework. WebMedia ’14 Proceedings of the 20th Brazilian Symposium onMultimedia and the Web Pages 99-102.

Fileto, R., May, C., Renso, C., Pelekis, N., Klein, D., and Theodoridis, Y. (2015). Thebaquara2 knowledge-based framework for semantic enrichment and analysis of move-ment data. Data & Knowledge Engineering.

Frutuoso, D. G. (2014). Recuperacao de informacao e classificacao de entidades organi-zacionais em textos nao estruturados. Master’s thesis, UFPE.

Page 76: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

Garritty, C. and Emam, K. E. (2006). Who’s using pdas? estimates of pda use by healthcare providers: a systematic review of surveys.

Hartung, C., Anokwa, Y., Brunette, W., Lerer, A., Tseng, C., and Borriello, G. (2010).Open data kit: Tools to build information services for developing regions. ICTD ’10Proceedings of the 4th ACM/IEEE International Conference on Information and Com-munication Technologies and Development.

Kouloumpis, E., Wilson, T., and Moore, J. (2011). Twitter sentiment analysis:the goodthe bad and the omg! Fifth International AAAI Conference on Weblogs and SocialMedia.

Kumar, S., Morstatter, F., and Liu, H. (2014). Twitter Data Analytics. Springer Briefs inComputer Science. Springer.

Mathioudakis, M. and Koudas, N. (2010). Twittermonitor: Trend detection over the twit-ter stream. International Conference on Management of data.

Oliveira, O., Bolliger, F., and Florido, A. (2006). Brazil agricultural census 2006: Inno-vations and impacts.

Paul, M. J. and Dredze, M. (2011). You are what you tweet: Analyzing twitter for publichealth. Fifth International AAAI Conference on Weblogs and Social Media.

Wu, F., Li, Z., Lee, W.-C., Wang, H., and Huang, Z. (2015). Semantic annotation ofmobility data using social media. 24th International Conference on World Wide Web.

Page 77: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

76

APÊNDICE B – Modelo do banco de dadospara experimentos de enri-quecimento semântico

Listing B.1 – code/db.sql

1 -- MySQL Script generated by MySQL Workbench2 -- Qui 06 Jul 2017 00:10:55 BRT3 -- Model: New Model Version : 1.04 -- MySQL Workbench Forward Engineering56 SET @OLD_UNIQUE_CHECKS = @@UNIQUE_CHECKS , UNIQUE_CHECKS =0;7 SET @OLD_FOREIGN_KEY_CHECKS = @@FOREIGN_KEY_CHECKS ,

FOREIGN_KEY_CHECKS =0;8 SET @OLD_SQL_MODE =@@SQL_MODE , SQL_MODE =’TRADITIONAL ,

ALLOW_INVALID_DATES ’;9

10 -- -----------------------------------------------------11 -- Schema mydb12 -- -----------------------------------------------------1314 -- -----------------------------------------------------15 -- Schema mydb16 -- -----------------------------------------------------17 CREATE SCHEMA IF NOT EXISTS ‘mydb ‘ DEFAULT CHARACTER SET utf8 ;18 USE ‘mydb ‘ ;1920 -- -----------------------------------------------------21 -- Table ‘mydb ‘.‘state ‘22 -- -----------------------------------------------------23 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘state ‘ (24 )25 ENGINE = InnoDB ;262728 -- -----------------------------------------------------29 -- Table ‘mydb ‘.‘ DataSource ‘30 -- -----------------------------------------------------31 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ DataSource ‘ (32 ‘idDSource ‘ INT NOT NULL ,33 ‘name ‘ VARCHAR (30) NOT NULL ,

Page 78: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 77

34 ‘url ‘ VARCHAR (45) NULL ,35 PRIMARY KEY (‘idDSource ‘))36 ENGINE = InnoDB ;373839 -- -----------------------------------------------------40 -- Table ‘mydb ‘.‘ DataSet ‘41 -- -----------------------------------------------------42 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ DataSet ‘ (43 ‘idDSet ‘ INT NOT NULL ,44 ‘name ‘ VARCHAR (30) NOT NULL ,45 ‘idSource ‘ INT NOT NULL ,46 ‘dateBeginGathering ‘ DATE NOT NULL ,47 ‘dateEndGathering ‘ DATE NOT NULL ,48 PRIMARY KEY (‘idDSet ‘),49 INDEX ‘fk_Movement Dataset_Source1_idx ‘ (‘idSource ‘ ASC),50 CONSTRAINT ‘fk_Movement Dataset_Source1 ‘51 FOREIGN KEY (‘idSource ‘)52 REFERENCES ‘mydb ‘.‘ DataSource ‘ (‘idDSource ‘)53 ON DELETE NO ACTION54 ON UPDATE NO ACTION )55 ENGINE = InnoDB ;565758 -- -----------------------------------------------------59 -- Table ‘mydb ‘.‘User ‘60 -- -----------------------------------------------------61 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘User ‘ (62 ‘idUser ‘ BIGINT NOT NULL ,63 ‘idDSource ?‘ INT NOT NULL ,64 ‘idO ‘ BIGINT NOT NULL ,65 ‘screenname ‘ VARCHAR (15) NULL COMMENT ’The screen name , handle ,

or alias that this user identifies themselves with.screen_names are unique but subject to change . ’,

66 ‘name ‘ VARCHAR (20) NULL COMMENT ’The name of the user , as theyvedefined it. Not necessarily a persons name .\n’,

67 ‘location ‘ VARCHAR (70) NULL COMMENT ’The user - defined locationfor this accounts profile . Not necessarily a location norparseable ’,

68 ‘description ‘ VARCHAR (160) NULL COMMENT ’The user - defined UTF -8string describing their account .’,

69 ‘isprotected ‘ TINYINT (1) NULL COMMENT ’When true , indicates thatthis user has chosen to protect their Tweets ’,

70 ‘followerscount ‘ INT NULL COMMENT ’The number of followers thisaccount currently has. Under certain conditions of duress ,this field will temporarily indicate 0’,

71 ‘friendscount ‘ INT NULL COMMENT ’The number of users this

Page 79: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 78

account is following ’,72 ‘createdate ‘ DATETIME NULL COMMENT ’The UTC datetime that the

user account was created on Twitter .\n’,73 ‘favoritecount ‘ INT NULL COMMENT ’The number of tweets this user

has favorited in the accounts lifetime . ’,74 ‘utcoffset ‘ INT NULL COMMENT ’The offset from GMT/UTC in seconds

.’,75 ‘timezone ‘ VARCHAR (50) NULL COMMENT ’ A string describing the

Time Zone this user declares themselves within .’,76 ‘lang ‘ VARCHAR (6) NULL COMMENT ’The BCP 47 code for the users

self - declared user interface language ’,77 ‘postscount ‘ INT NULL COMMENT ’The number of tweets ( including

retweets ) issued by the user.’,78 ‘isgeoenabled ‘ TINYINT (1) NULL COMMENT ’When true , indicates

that the user has enabled the possibility of geotagging theirTweets .’,

79 ‘isverified ‘ TINYINT (1) NULL COMMENT ’When true , indicates thatthe user has a verified account ’,

80 ‘istranslator ‘ TINYINT (1) NULL COMMENT ’When true , indicatesthat the user is a participant in Twitters translatorcommunity ’,

81 ‘listedcount ‘ INT NULL COMMENT ’The number of public lists thatthis user is a member of.’,

82 ‘url ‘ VARCHAR (60) NULL COMMENT ’A URL provided by the user inassociation with their profile .\n’,

83 PRIMARY KEY (‘idUser ‘),84 INDEX ‘fk_User_DataSource_idx ‘ (‘ idDSource ?‘ ASC),85 INDEX ‘fk_User_Object_idx ‘ (‘idO ‘ ASC),86 CONSTRAINT ‘fk_User_DataSource ‘87 FOREIGN KEY (‘ idDSource ?‘)88 REFERENCES ‘mydb ‘.‘ DataSource ‘ (‘idDSource ‘)89 ON DELETE NO ACTION90 ON UPDATE NO ACTION ,91 CONSTRAINT ‘fk_User_Object ‘92 FOREIGN KEY (‘idO ‘)93 REFERENCES ‘mydb ‘.‘ Object ‘ (‘idO ‘)94 ON DELETE NO ACTION95 ON UPDATE NO ACTION )96 ENGINE = InnoDB ;979899 -- -----------------------------------------------------

100 -- Table ‘mydb ‘.‘ Object ‘101 -- -----------------------------------------------------102 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Object ‘ (103 ‘idDSource ‘ INT NOT NULL ,104 ‘idO ‘ BIGINT NOT NULL ,

Page 80: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 79

105 INDEX ‘fk_Moving Object_user1_idx ‘ (‘idO ‘ ASC),106 PRIMARY KEY (‘idDSource ‘, ‘idO ‘),107 INDEX ‘fk_Object_MDSource1_idx ‘ (‘idDSource ‘ ASC),108 CONSTRAINT ‘fk_Moving Object_user1 ‘109 FOREIGN KEY (‘idO ‘)110 REFERENCES ‘mydb ‘.‘User ‘ (‘idO ‘)111 ON DELETE NO ACTION112 ON UPDATE NO ACTION ,113 CONSTRAINT ‘fk_Object_MDSource1 ‘114 FOREIGN KEY (‘idDSource ‘)115 REFERENCES ‘mydb ‘.‘ DataSource ‘ (‘idDSource ‘)116 ON DELETE RESTRICT117 ON UPDATE RESTRICT )118 ENGINE = InnoDB ;119120121 -- -----------------------------------------------------122 -- Table ‘mydb ‘.‘ Position ‘123 -- -----------------------------------------------------124 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Position ‘ (125 ‘idDSet ‘ INT NOT NULL ,126 ‘idO ‘ INT NOT NULL ,127 ‘idPosition ‘ BIGINT NOT NULL ,128 ‘timestamp ‘ DATETIME NOT NULL ,129 ‘geom ‘ POINT NULL ,130 PRIMARY KEY (‘idDSet ‘, ‘idO ‘, ‘idPosition ‘),131 INDEX ‘fk_Position_MDSet1_idx ‘ (‘idDSet ‘ ASC),132 INDEX ‘fk_Position_Moving_Object1_idx ‘ (‘idO ‘ ASC),133 CONSTRAINT ‘fk_Position_MDSet1 ‘134 FOREIGN KEY (‘idDSet ‘)135 REFERENCES ‘mydb ‘.‘ DataSet ‘ (‘idDSet ‘)136 ON DELETE NO ACTION137 ON UPDATE NO ACTION ,138 CONSTRAINT ‘fk_Position_Moving_Object1 ‘139 FOREIGN KEY (‘idO ‘)140 REFERENCES ‘mydb ‘.‘ Object ‘ (‘idO ‘)141 ON DELETE RESTRICT142 ON UPDATE RESTRICT )143 ENGINE = InnoDB144 COMMENT = ’ ’;145146147 -- -----------------------------------------------------148 -- Table ‘mydb ‘.‘ resourse ‘149 -- -----------------------------------------------------150 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ resourse ‘ (151 ‘idresourse ‘ INT NOT NULL ,

Page 81: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 80

152 ‘resoursecol ‘ VARCHAR (45) NULL ,153 PRIMARY KEY (‘idresourse ‘))154 ENGINE = InnoDB ;155156157 -- -----------------------------------------------------158 -- Table ‘mydb ‘.‘ KSource ‘159 -- -----------------------------------------------------160 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ KSource ‘ (161 ‘idKSource ‘ INT NOT NULL ,162 ‘name ‘ VARCHAR (30) NOT NULL ,163 ‘dateOfGathering ‘ DATETIME NOT NULL ,164 ‘version ‘ VARCHAR (45) NULL ,165 PRIMARY KEY (‘idKSource ‘))166 ENGINE = InnoDB ;167168169 -- -----------------------------------------------------170 -- Table ‘mydb ‘.‘ Resource ‘171 -- -----------------------------------------------------172 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Resource ‘ (173 ‘idKSource ‘ INT NOT NULL ,174 ‘idResource ‘ INT NOT NULL ,175 ‘uri ‘ VARCHAR (150) NOT NULL ,176 PRIMARY KEY (‘idKSource ‘, ‘idResource ‘),177 INDEX ‘fk_resourse_source_idx ‘ (‘idKSource ‘ ASC),178 CONSTRAINT ‘fk_resourse_source ‘179 FOREIGN KEY (‘idKSource ‘)180 REFERENCES ‘mydb ‘.‘ KSource ‘ (‘idKSource ‘)181 ON DELETE NO ACTION182 ON UPDATE NO ACTION )183 ENGINE = InnoDB ;184185186 -- -----------------------------------------------------187 -- Table ‘mydb ‘.‘Label ‘188 -- -----------------------------------------------------189 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘Label ‘ (190 ‘idResource ‘ INT NOT NULL ,191 ‘idLabel ‘ INT NOT NULL ,192 ‘value ‘ VARCHAR (150) NOT NULL ,193 PRIMARY KEY (‘idLabel ‘, ‘idResource ‘),194 INDEX ‘fk_label_resourse1_idx ‘ (‘idResource ‘ ASC),195 CONSTRAINT ‘fk_label_resourse1 ‘196 FOREIGN KEY (‘idResource ‘)197 REFERENCES ‘mydb ‘.‘ Resource ‘ (‘idResource ‘)198 ON DELETE NO ACTION

Page 82: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 81

199 ON UPDATE NO ACTION )200 ENGINE = InnoDB ;201202203 -- -----------------------------------------------------204 -- Table ‘mydb ‘.‘ Method ‘205 -- -----------------------------------------------------206 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Method ‘ (207 ‘idMethod ‘ INT NOT NULL ,208 ‘name ‘ VARCHAR (45) NULL ,209 ‘description ‘ TEXT NULL ,210 ‘version ‘ VARCHAR (45) NULL ,211 PRIMARY KEY (‘idMethod ‘))212 ENGINE = InnoDB ;213214215 -- -----------------------------------------------------216 -- Table ‘mydb ‘.‘ Person ‘217 -- -----------------------------------------------------218 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Person ‘ (219 ‘idPerson ‘ INT NOT NULL ,220 ‘nome ‘ VARCHAR (25) NOT NULL ,221 ‘cargo ‘ CHAR NOT NULL COMMENT ’U = undergraduate student ; M =

Masters student ; D - Doctorate student ; P = Posdoc ; A =Academic Staff (professor , scholar , etc .); T = Technicalstaff; V = Visitor ; O = Other\n’,

222 PRIMARY KEY (‘idPerson ‘))223 ENGINE = InnoDB ;224225226 -- -----------------------------------------------------227 -- Table ‘mydb ‘.‘ Experiment ‘228 -- -----------------------------------------------------229 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Experiment ‘ (230 ‘idMethod ‘ INT NOT NULL ,231 ‘idExperiment ‘ INT NOT NULL AUTO_INCREMENT ,232 ‘beginTime ‘ DATETIME NOT NULL ,233 ‘endTime ‘ DATETIME NOT NULL ,234 ‘idRespPerson ‘ INT NOT NULL ,235 PRIMARY KEY (‘idMethod ‘, ‘idExperiment ‘),236 INDEX ‘fk_experiment_Method1_idx ‘ (‘idMethod ‘ ASC),237 INDEX ‘fk_Experiment_Responsavel1_idx ‘ (‘ idRespPerson ‘ ASC),238 CONSTRAINT ‘fk_experiment_Method1 ‘239 FOREIGN KEY (‘idMethod ‘)240 REFERENCES ‘mydb ‘.‘ Method ‘ (‘idMethod ‘)241 ON DELETE RESTRICT242 ON UPDATE RESTRICT ,

Page 83: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 82

243 CONSTRAINT ‘fk_Experiment_Responsavel1 ‘244 FOREIGN KEY (‘ idRespPerson ‘)245 REFERENCES ‘mydb ‘.‘ Person ‘ (‘idPerson ‘)246 ON DELETE RESTRICT247 ON UPDATE RESTRICT )248 ENGINE = InnoDB249 COMMENT = ’ ’;250251252 -- -----------------------------------------------------253 -- Table ‘mydb ‘.‘ Segment ‘254 -- -----------------------------------------------------255 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Segment ‘ (256 ‘idDSet ‘ INT NOT NULL ,257 ‘idO ‘ INT NOT NULL ,258 ‘idSegment ‘ INT NOT NULL ,259 ‘idInitialPosition ‘ BIGINT NOT NULL ,260 ‘idFinalPosition ‘ BIGINT NOT NULL ,261 ‘predicate ‘ VARCHAR (45) NULL ,262 PRIMARY KEY (‘idDSet ‘, ‘idO ‘, ‘idSegment ‘) ,263 INDEX ‘fk_Segment_position1_idx ‘ (‘ idInitialPosition ‘ ASC),264 INDEX ‘fk_Segment_position2_idx ‘ (‘ idFinalPosition ‘ ASC),265 INDEX ‘fk_Segment_Movement Dataset1_idx ‘ (‘idDSet ‘ ASC),266 INDEX ‘fk_Segment_Moving Object1_idx ‘ (‘idO ‘ ASC),267 CONSTRAINT ‘fk_Segment_position1 ‘268 FOREIGN KEY (‘ idInitialPosition ‘)269 REFERENCES ‘mydb ‘.‘ Position ‘ (‘idPosition ‘)270 ON DELETE NO ACTION271 ON UPDATE NO ACTION ,272 CONSTRAINT ‘fk_Segment_position2 ‘273 FOREIGN KEY (‘ idFinalPosition ‘)274 REFERENCES ‘mydb ‘.‘ Position ‘ (‘idPosition ‘)275 ON DELETE NO ACTION276 ON UPDATE NO ACTION ,277 CONSTRAINT ‘fk_Segment_Movement Dataset1 ‘278 FOREIGN KEY (‘idDSet ‘)279 REFERENCES ‘mydb ‘.‘ DataSet ‘ (‘idDSet ‘)280 ON DELETE NO ACTION281 ON UPDATE NO ACTION ,282 CONSTRAINT ‘fk_Segment_Moving Object1 ‘283 FOREIGN KEY (‘idO ‘)284 REFERENCES ‘mydb ‘.‘ Object ‘ (‘idO ‘)285 ON DELETE NO ACTION286 ON UPDATE NO ACTION )287 ENGINE = InnoDB ;288289

Page 84: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 83

290 -- -----------------------------------------------------291 -- Table ‘mydb ‘.‘ SegmAssociation ‘292 -- -----------------------------------------------------293 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ SegmAssociation ‘ (294 ‘idMethod ‘ INT NOT NULL ,295 ‘idExperiment ‘ INT NOT NULL ,296 ‘idSegment ‘ INT NOT NULL ,297 ‘idResource ‘ INT NOT NULL ,298 ‘score ‘ FLOAT NULL ,299 PRIMARY KEY (‘idMethod ‘, ‘idExperiment ‘, ‘idSegment ‘, ‘

idResource ‘),300 INDEX ‘fk_match_resourse1_idx ‘ (‘idResource ‘ ASC),301 INDEX ‘fk_association_Experiment1_idx ‘ (‘idMethod ‘ ASC , ‘

idExperiment ‘ ASC),302 INDEX ‘fk_association_Segment1_idx ‘ (‘idSegment ‘ ASC),303 CONSTRAINT ‘fk_match_resourse1 ‘304 FOREIGN KEY (‘idResource ‘)305 REFERENCES ‘mydb ‘.‘ Resource ‘ (‘idResource ‘)306 ON DELETE NO ACTION307 ON UPDATE NO ACTION ,308 CONSTRAINT ‘fk_association_Experiment1 ‘309 FOREIGN KEY (‘idMethod ‘ , ‘idExperiment ‘)310 REFERENCES ‘mydb ‘.‘ Experiment ‘ (‘idMethod ‘ , ‘idExperiment ‘)311 ON DELETE RESTRICT312 ON UPDATE RESTRICT ,313 CONSTRAINT ‘fk_association_Segment1 ‘314 FOREIGN KEY (‘idSegment ‘)315 REFERENCES ‘mydb ‘.‘ Segment ‘ (‘idSegment ‘)316 ON DELETE NO ACTION317 ON UPDATE NO ACTION )318 ENGINE = InnoDB ;319320321 -- -----------------------------------------------------322 -- Table ‘mydb ‘.‘ Resource_Type ‘323 -- -----------------------------------------------------324 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Resource_Type ‘ (325 ‘idInstace ‘ INT NOT NULL ,326 ‘idType ‘ INT NOT NULL ,327 PRIMARY KEY (‘idInstace ‘, ‘idType ‘),328 INDEX ‘fk_resource_type_resource1_idx ‘ (‘idInstace ‘ ASC),329 INDEX ‘fk_resource_type_resourceInstance1_idx ‘ (‘idType ‘ ASC),330 CONSTRAINT ‘fk_resource_type_resource1 ‘331 FOREIGN KEY (‘idInstace ‘)332 REFERENCES ‘mydb ‘.‘ Resource ‘ (‘idResource ‘)333 ON DELETE RESTRICT334 ON UPDATE RESTRICT ,

Page 85: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 84

335 CONSTRAINT ‘fk_resource_type_resourceInstance1 ‘336 FOREIGN KEY (‘idType ‘)337 REFERENCES ‘mydb ‘.‘ Resource ‘ (‘idResource ‘)338 ON DELETE RESTRICT339 ON UPDATE RESTRICT )340 ENGINE = InnoDB ;341342343 -- -----------------------------------------------------344 -- Table ‘mydb ‘.‘Place ‘345 -- -----------------------------------------------------346 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘Place ‘ (347 ‘idPlace ‘ VARCHAR (16) NOT NULL ,348 ‘name ‘ VARCHAR (60) NULL COMMENT ’Short human - readable

representation of the places name.’,349 ‘fullname ‘ VARCHAR (80) NULL COMMENT ’Full human - readable

representation of the places name.’,350 ‘countrycode ‘ VARCHAR (2) NULL COMMENT ’Shortened country code

representing the country containing this place.’,351 ‘country ‘ VARCHAR (40) NULL COMMENT ’Name of the country

containing this place. ’,352 ‘placetype ‘ VARCHAR (12) NULL COMMENT ’The type of location

represented by this place.’,353 ‘url ‘ VARCHAR (60) NULL COMMENT ’URL representing the location of

additional place metadata for this place.’,354 ‘bbminlon ‘ DOUBLE NULL COMMENT ’A bounding box of coordinates

which encloses this place. min longitude \n’,355 ‘bbminlat ‘ DOUBLE NULL COMMENT ’A bounding box of coordinates

which encloses this place. min latitude \n’,356 ‘bbmaxlon ‘ DOUBLE NULL COMMENT ’A bounding box of coordinates

which encloses this place. max longitude \n’,357 ‘bbmaxlat ‘ DOUBLE NULL COMMENT ’A bounding box of coordinates

which encloses this place. mat latitude \n’,358 PRIMARY KEY (‘idPlace ‘))359 ENGINE = InnoDB ;360361362 -- -----------------------------------------------------363 -- Table ‘mydb ‘.‘Post ‘364 -- -----------------------------------------------------365 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘Post ‘ (366 ‘idPost ‘ BIGINT NOT NULL ,367 ‘idUser ‘ BIGINT NOT NULL COMMENT ’The user who posted this Tweet

’,368 ‘idDSet ‘ INT NOT NULL ,369 ‘idO ‘ BIGINT NOT NULL ,370 ‘idPosition ‘ BIGINT NOT NULL ,

Page 86: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 85

371 ‘idRepost ‘ BIGINT NULL COMMENT ’Users can amplify the broadcastof tweets authored by other users by retweeting .’,

372 ‘idPlace ‘ VARCHAR (20) NULL COMMENT ’When present , indicates thatthe tweet is associated ’,

373 ‘idOrigSource ‘ INT NULL COMMENT ’Utility used to post the Tweet\nCould it be an idMDSource ?’,

374 ‘createdate ‘ DATETIME NULL COMMENT ’UTC time when this Tweet wascreated .’,

375 ‘text ‘ VARCHAR (140) NOT NULL COMMENT ’The actual UTF -8 text ofthe status update ’,

376 ‘istruncated ‘ TINYINT (1) NULL COMMENT ’Indicates whether thevalue of the text parameter was truncated , for example , as aresult of a retweet exceeding the 140 character Tweet length .’,

377 ‘inreplytostatusid ‘ BIGINT NULL COMMENT ’If the representedTweet is a reply , this field will contain the integerrepresentation of the original Tweets ID.’,

378 ‘repostcount ‘ INT NULL COMMENT ’Number of times this Tweet hasbeen retweeted ’,

379 ‘likecount ‘ INT NULL COMMENT ’Indicates approximately how manytimes this Tweet has been liked by Twitter users.’,

380 ‘ispossiblysensitive ‘ TINYINT (1) NULL COMMENT ’This field onlysurfaces when a tweet contains a link. The meaning of thefield doesnt pertain to the tweet content itself , but instead

it is an indicator that the URL contained in the tweet maycontain content or media identified as sensitive content .’,

381 ‘lang ‘ VARCHAR (6) NULL COMMENT ’When present , indicates a BCP 47language identifier corresponding to the machine - detected

language of the Tweet text , or und if no language could bedetected .’,

382 PRIMARY KEY (‘idPost ‘),383 INDEX ‘fk_tweet_position1_idx ‘ (‘idPosition ‘ ASC),384 INDEX ‘fk_tweet_tweet1_idx ‘ (‘idRepost ‘ ASC),385 INDEX ‘fk_tweet_place_idx ‘ (‘idPlace ‘ ASC),386 INDEX ‘fk_post_user_idx ‘ (‘idUser ‘ ASC),387 INDEX ‘fk_Post_object_idx ‘ (‘idO ‘ ASC),388 INDEX ‘fk_post_datasry_idx ‘ (‘idDSet ‘ ASC),389 INDEX ‘fk_post_datasource_idx ‘ (‘ idOrigSource ‘ ASC),390 CONSTRAINT ‘fk_post_position ‘391 FOREIGN KEY (‘idPosition ‘)392 REFERENCES ‘mydb ‘.‘ Position ‘ (‘idPosition ‘)393 ON DELETE NO ACTION394 ON UPDATE NO ACTION ,395 CONSTRAINT ‘fk_post_post ‘396 FOREIGN KEY (‘idRepost ‘)397 REFERENCES ‘mydb ‘.‘Post ‘ (‘idPost ‘)398 ON DELETE NO ACTION

Page 87: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 86

399 ON UPDATE NO ACTION ,400 CONSTRAINT ‘fk_post_place ‘401 FOREIGN KEY (‘idPlace ‘)402 REFERENCES ‘mydb ‘.‘Place ‘ (‘idPlace ‘)403 ON DELETE NO ACTION404 ON UPDATE NO ACTION ,405 CONSTRAINT ‘fk_post_user ‘406 FOREIGN KEY (‘idUser ‘)407 REFERENCES ‘mydb ‘.‘User ‘ (‘idUser ‘)408 ON DELETE NO ACTION409 ON UPDATE NO ACTION ,410 CONSTRAINT ‘fk_post_datasry ‘411 FOREIGN KEY (‘idDSet ‘)412 REFERENCES ‘mydb ‘.‘ DataSet ‘ (‘idDSet ‘)413 ON DELETE NO ACTION414 ON UPDATE NO ACTION ,415 CONSTRAINT ‘fk_Post_object ‘416 FOREIGN KEY (‘idO ‘)417 REFERENCES ‘mydb ‘.‘ Object ‘ (‘idO ‘)418 ON DELETE NO ACTION419 ON UPDATE NO ACTION ,420 CONSTRAINT ‘fk_post_datasource ‘421 FOREIGN KEY (‘ idOrigSource ‘)422 REFERENCES ‘mydb ‘.‘ DataSource ‘ (‘idDSource ‘)423 ON DELETE NO ACTION424 ON UPDATE NO ACTION )425 ENGINE = InnoDB ;426427428 -- -----------------------------------------------------429 -- Table ‘mydb ‘.‘ RelevantWord ‘430 -- -----------------------------------------------------431 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ RelevantWord ‘ (432 ‘idRW ‘ INT NOT NULL ,433 ‘RWcategory ‘ CHAR NOT NULL COMMENT ’Hashtag , NamedEntity ,

Mofological \n’,434 ‘RWvalue ‘ VARCHAR (45) NOT NULL ,435 ‘RWinitialPosText ‘ INT NULL ,436 ‘RWfinalPosText ‘ INT NULL ,437 PRIMARY KEY (‘idRW ‘))438 ENGINE = InnoDB ;439440441 -- -----------------------------------------------------442 -- Table ‘mydb ‘.‘ MentionsUser ‘443 -- -----------------------------------------------------444 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ MentionsUser ‘ (

Page 88: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 87

445 ‘idPost ‘ BIGINT NOT NULL ,446 ‘idUser ‘ BIGINT NOT NULL ,447 PRIMARY KEY (‘idPost ‘, ‘idUser ‘),448 INDEX ‘fk_tweet_has_user_user1_idx ‘ (‘idUser ‘ ASC),449 INDEX ‘fk_mentionedUser_tweet1_idx ‘ (‘idPost ‘ ASC),450 CONSTRAINT ‘fk_tweet_has_user_user1 ‘451 FOREIGN KEY (‘idUser ‘)452 REFERENCES ‘mydb ‘.‘User ‘ (‘idO ‘)453 ON DELETE NO ACTION454 ON UPDATE NO ACTION ,455 CONSTRAINT ‘fk_mentionedUser_tweet1 ‘456 FOREIGN KEY (‘idPost ‘)457 REFERENCES ‘mydb ‘.‘Post ‘ (‘idPost ‘)458 ON DELETE NO ACTION459 ON UPDATE NO ACTION )460 ENGINE = InnoDB ;461462463 -- -----------------------------------------------------464 -- Table ‘mydb ‘.‘ Post_has_RW ‘465 -- -----------------------------------------------------466 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Post_has_RW ‘ (467 ‘idPost ‘ BIGINT NOT NULL ,468 ‘idRW ‘ INT NOT NULL ,469 PRIMARY KEY (‘idPost ‘, ‘idRW ‘),470 INDEX ‘fk_tweet_has_hashtag_hashtag1_idx ‘ (‘idRW ‘ ASC),471 INDEX ‘fk_tweet_has_hashtag_tweet1_idx ‘ (‘idPost ‘ ASC),472 CONSTRAINT ‘fk_tweet_has_hashtag_tweet1 ‘473 FOREIGN KEY (‘idPost ‘)474 REFERENCES ‘mydb ‘.‘Post ‘ (‘idPost ‘)475 ON DELETE NO ACTION476 ON UPDATE NO ACTION ,477 CONSTRAINT ‘fk_tweet_has_hashtag_hashtag1 ‘478 FOREIGN KEY (‘idRW ‘)479 REFERENCES ‘mydb ‘.‘ RelevantWord ‘ (‘idRW ‘)480 ON DELETE NO ACTION481 ON UPDATE NO ACTION )482 ENGINE = InnoDB483 COMMENT = ’Post has relevant word ’;484485486 -- -----------------------------------------------------487 -- Table ‘mydb ‘.‘ Geometry ‘488 -- -----------------------------------------------------489 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Geometry ‘ (490 ‘idGeometry ‘ INT NOT NULL ,491 ‘geom ‘ GEOMETRYCOLLECTION NOT NULL ,

Page 89: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 88

492 PRIMARY KEY (‘idGeometry ‘))493 ENGINE = InnoDB ;494495496 -- -----------------------------------------------------497 -- Table ‘mydb ‘.‘ Resource_has_Geom ‘498 -- -----------------------------------------------------499 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Resource_has_Geom ‘ (500 ‘idResource ‘ INT NOT NULL ,501 ‘idGeometry ‘ INT NOT NULL ,502 PRIMARY KEY (‘idResource ‘, ‘idGeometry ‘),503 INDEX ‘fk_resource_has_location_location1_idx ‘ (‘idGeometry ‘ ASC

),504 INDEX ‘fk_resource_has_location_resource1_idx ‘ (‘idResource ‘ ASC

),505 CONSTRAINT ‘fk_resource_has_location_resource1 ‘506 FOREIGN KEY (‘idResource ‘)507 REFERENCES ‘mydb ‘.‘ Resource ‘ (‘idResource ‘)508 ON DELETE NO ACTION509 ON UPDATE NO ACTION ,510 CONSTRAINT ‘fk_resource_has_location_location1 ‘511 FOREIGN KEY (‘idGeometry ‘)512 REFERENCES ‘mydb ‘.‘ Geometry ‘ (‘idGeometry ‘)513 ON DELETE NO ACTION514 ON UPDATE NO ACTION )515 ENGINE = InnoDB ;516517518 -- -----------------------------------------------------519 -- Table ‘mydb ‘.‘ Parameter ‘520 -- -----------------------------------------------------521 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Parameter ‘ (522 ‘idMethod ‘ INT NOT NULL ,523 ‘idParameter ‘ INT NOT NULL ,524 ‘name ‘ VARCHAR (45) NULL ,525 PRIMARY KEY (‘idMethod ‘, ‘idParameter ‘),526 INDEX ‘fk_Parameter_Method1_idx ‘ (‘idMethod ‘ ASC),527 CONSTRAINT ‘fk_Parameter_Method1 ‘528 FOREIGN KEY (‘idMethod ‘)529 REFERENCES ‘mydb ‘.‘ Method ‘ (‘idMethod ‘)530 ON DELETE RESTRICT531 ON UPDATE RESTRICT )532 ENGINE = InnoDB ;533534535 -- -----------------------------------------------------536 -- Table ‘mydb ‘.‘ Exper_uses_Param ‘

Page 90: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 89

537 -- -----------------------------------------------------538 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Exper_uses_Param ‘ (539 ‘idMethod ‘ INT NOT NULL ,540 ‘idExperiment ‘ INT NOT NULL ,541 ‘idParameter ‘ INT NOT NULL ,542 ‘value ‘ FLOAT NOT NULL ,543 PRIMARY KEY (‘idMethod ‘, ‘idExperiment ‘, ‘idParameter ‘),544 INDEX ‘fk_Parameter_has_Experiment_Experiment1_idx ‘ (‘

idExperiment ‘ ASC),545 INDEX ‘fk_Parameter_has_Experiment_Parameter1_idx ‘ (‘idMethod ‘

ASC , ‘idParameter ‘ ASC),546 CONSTRAINT ‘fk_Parameter_has_Experiment_Parameter1 ‘547 FOREIGN KEY (‘idMethod ‘ , ‘idParameter ‘)548 REFERENCES ‘mydb ‘.‘ Parameter ‘ (‘idMethod ‘ , ‘idParameter ‘)549 ON DELETE RESTRICT550 ON UPDATE RESTRICT ,551 CONSTRAINT ‘fk_Parameter_has_Experiment_Experiment1 ‘552 FOREIGN KEY (‘ idExperiment ‘)553 REFERENCES ‘mydb ‘.‘ Experiment ‘ (‘ idExperiment ‘)554 ON DELETE RESTRICT555 ON UPDATE RESTRICT )556 ENGINE = InnoDB ;557558559 -- -----------------------------------------------------560 -- Table ‘mydb ‘.‘ Segment_has_SubSegment ‘561 -- -----------------------------------------------------562 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Segment_has_SubSegment ‘ (563 ‘idDSet ‘ INT NOT NULL ,564 ‘idMO ‘ INT NOT NULL ,565 ‘idSuperSegm ‘ INT NOT NULL ,566 ‘idSubSegm ‘ INT NOT NULL ,567 PRIMARY KEY (‘idDSet ‘, ‘idMO ‘, ‘idSuperSegm ‘, ‘idSubSegm ‘),568 INDEX ‘fk_Segment_has_Segment_Segment2_idx ‘ (‘idSubSegm ‘ ASC),569 INDEX ‘fk_Segment_has_Segment_Segment1_idx ‘ (‘idDSet ‘ ASC , ‘idMO

‘ ASC , ‘idSuperSegm ‘ ASC),570 CONSTRAINT ‘fk_Segment_has_Segment_Segment1 ‘571 FOREIGN KEY (‘idDSet ‘ , ‘idMO ‘ , ‘idSuperSegm ‘)572 REFERENCES ‘mydb ‘.‘ Segment ‘ (‘idDSet ‘ , ‘idO ‘ , ‘idSegment ‘)573 ON DELETE NO ACTION574 ON UPDATE NO ACTION ,575 CONSTRAINT ‘fk_Segment_has_Segment_Segment2 ‘576 FOREIGN KEY (‘idSubSegm ‘)577 REFERENCES ‘mydb ‘.‘ Segment ‘ (‘idSegment ‘)578 ON DELETE NO ACTION579 ON UPDATE NO ACTION )580 ENGINE = InnoDB ;

Page 91: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 90

581582583 -- -----------------------------------------------------584 -- Table ‘mydb ‘.‘ table1 ‘585 -- -----------------------------------------------------586 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ table1 ‘ (587 )588 ENGINE = InnoDB ;589590591 -- -----------------------------------------------------592 -- Table ‘mydb ‘.‘ RWAssociation ‘593 -- -----------------------------------------------------594 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ RWAssociation ‘ (595 ‘idMethod ‘ INT NOT NULL ,596 ‘idExperiment ‘ INT NOT NULL ,597 ‘idPost ‘ BIGINT NOT NULL ,598 ‘idRW ‘ INT NOT NULL ,599 ‘idSource ‘ INT NOT NULL ,600 ‘idResource ‘ INT NOT NULL ,601 PRIMARY KEY (‘idPost ‘, ‘idRW ‘, ‘idMethod ‘, ‘idExperiment ‘, ‘

idSource ‘, ‘idResource ‘),602 INDEX ‘fk_Experiment_has_RelevantWord_RelevantWord1_idx ‘ (‘idRW ‘

ASC),603 INDEX ‘fk_Experiment_has_RelevantWord_Experiment1_idx ‘ (‘

idMethod ‘ ASC , ‘idExperiment ‘ ASC),604 INDEX ‘fk_RWAssociation_Resource1_idx ‘ (‘idSource ‘ ASC , ‘

idResource ‘ ASC),605 CONSTRAINT ‘fk_Experiment_has_RelevantWord_Experiment1 ‘606 FOREIGN KEY (‘idMethod ‘ , ‘idExperiment ‘)607 REFERENCES ‘mydb ‘.‘ Experiment ‘ (‘idMethod ‘ , ‘idExperiment ‘)608 ON DELETE RESTRICT609 ON UPDATE RESTRICT ,610 CONSTRAINT ‘fk_Experiment_has_RelevantWord_RelevantWord1 ‘611 FOREIGN KEY (‘idRW ‘)612 REFERENCES ‘mydb ‘.‘ RelevantWord ‘ (‘idRW ‘)613 ON DELETE RESTRICT614 ON UPDATE RESTRICT ,615 CONSTRAINT ‘fk_RWAssociation_Resource1 ‘616 FOREIGN KEY (‘idSource ‘ , ‘idResource ‘)617 REFERENCES ‘mydb ‘.‘ Resource ‘ (‘idKSource ‘ , ‘idResource ‘)618 ON DELETE RESTRICT619 ON UPDATE RESTRICT )620 ENGINE = InnoDB ;621622623 -- -----------------------------------------------------

Page 92: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE B. Modelo do banco de dados para experimentos de enriquecimento semântico 91

624 -- Table ‘mydb ‘.‘ Experiment_extracts_RW ‘625 -- -----------------------------------------------------626 CREATE TABLE IF NOT EXISTS ‘mydb ‘.‘ Experiment_extracts_RW ‘ (627 ‘idMethod ‘ INT NOT NULL ,628 ‘idExperiment ‘ INT NOT NULL ,629 ‘idPost ‘ BIGINT NOT NULL ,630 ‘idRW ‘ INT NOT NULL ,631 PRIMARY KEY (‘idMethod ‘, ‘idExperiment ‘, ‘idPost ‘, ‘idRW ‘),632 INDEX ‘fk_Experiment_has_Post_has_RW_Post_has_RW1_idx ‘ (‘idPost ‘

ASC , ‘idRW ‘ ASC),633 INDEX ‘fk_Experiment_has_Post_has_RW_Experiment1_idx ‘ (‘idMethod

‘ ASC , ‘idExperiment ‘ ASC),634 CONSTRAINT ‘fk_Experiment_has_Post_has_RW_Experiment1 ‘635 FOREIGN KEY (‘idMethod ‘ , ‘idExperiment ‘)636 REFERENCES ‘mydb ‘.‘ Experiment ‘ (‘idMethod ‘ , ‘idExperiment ‘)637 ON DELETE RESTRICT638 ON UPDATE RESTRICT ,639 CONSTRAINT ‘fk_Experiment_has_Post_has_RW_Post_has_RW1 ‘640 FOREIGN KEY (‘idPost ‘ , ‘idRW ‘)641 REFERENCES ‘mydb ‘.‘ Post_has_RW ‘ (‘idPost ‘ , ‘idRW ‘)642 ON DELETE RESTRICT643 ON UPDATE RESTRICT )644 ENGINE = InnoDB ;645646647 SET SQL_MODE = @OLD_SQL_MODE ;648 SET FOREIGN_KEY_CHECKS = @OLD_FOREIGN_KEY_CHECKS ;649 SET UNIQUE_CHECKS = @OLD_UNIQUE_CHECKS ;

Page 93: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

92

APÊNDICE C – Código fonte Tweet ContextCollector

Listing C.1 – code/MainActivity.java

1 package com. example . karran . myapplication ;23 import android . content . BroadcastReceiver ;4 import android . content . ContentValues ;5 import android . content . Context ;6 import android . content . Intent ;7 import android . content . IntentFilter ;8 import android . content .pm. PackageManager ;9 import android . database . Cursor ;

10 import android .net.Uri;11 import android .os. AsyncTask ;12 import android .os. Handler ;13 import android . support .v4. content . ContextCompat ;14 import android . support .v7.app. AppCompatActivity ;15 import android .os. Bundle ;16 import android .util.Log;17 import android .view.View;18 import android . widget . TextView ;1920 import com.aware. Accelerometer ;21 import com.aware. Applications ;22 import com.aware.Aware;23 import com.aware. Aware_Preferences ;24 import com.aware. Barometer ;25 import com.aware. Gyroscope ;26 import com.aware.Light;27 import com.aware. Magnetometer ;28 import com.aware. Rotation ;29 import com.aware. Temperature ;30 import com.aware. plugin . google . activity_recognition .

Google_AR_Provider ;31 import com.aware. plugin . google . fused_location . Provider ;32 import com.aware. providers . Accelerometer_Provider ;33 import com.aware. providers . Applications_Provider ;34 import com.aware. providers . Barometer_Provider ;35 import com.aware. providers . Gravity_Provider ;36 import com.aware. providers . Gyroscope_Provider ;37 import com.aware. providers . Light_Provider ;

Page 94: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 93

38 import com.aware. providers . Locations_Provider ;39 import com.aware. providers . Magnetometer_Provider ;40 import com.aware. providers . Rotation_Provider ;41 import com.aware. providers . Temperature_Provider ;42 import com.aware.ui. PermissionsHandler ;4344 import java.io. BufferedInputStream ;45 import java.io. BufferedReader ;46 import java.io. IOException ;47 import java.io. InputStream ;48 import java.io. InputStreamReader ;49 import java.io. OutputStream ;50 import java.net. HttpURLConnection ;51 import java.net.URL;52 import java.util. ArrayList ;53 import java.util.Timer;54 import java.util. TimerTask ;5556 import javax.net.ssl. HttpsURLConnection ;5758 import static com.aware.Aware. stopAccelerometer ;59 import static com.aware.Aware. stopBarometer ;60 import static com.aware.Aware. stopGravity ;61 import static com.aware.Aware. stopGyroscope ;62 import static com.aware.Aware. stopLight ;63 import static com.aware.Aware. stopMagnetometer ;64 import static com.aware.Aware. stopRotation ;65 import static com.aware.Aware. stopTemperature ;6667 public class MainActivity extends AppCompatActivity {68 private StatusListener ssl = new StatusListener ();69 private ArrayList <String > REQUIRED_PERMISSIONS = new ArrayList

<>();70 private Timer timer = new Timer ();71 private ArrayList <String > sensorsList = new ArrayList ();72 private ArrayList <Uri > uriList = new ArrayList ();73 private int actualSensorId = 0;74 private boolean makeSync = false ;75 private boolean onProcess = false;7677 class TpauseSensors extends TimerTask {78 public void run () {79 setSensorsEnabled ( false );80 if ( actualSensorId ==0) {81 if (! makeSync ) {82 sendLowFrequency ();83 timer. cancel ();

Page 95: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 94

84 return ;85 }86 Aware. startAccelerometer ( getApplicationContext ());87 actualSensorId ++;88 } else if ( actualSensorId ==1){89 Aware. startBarometer ( getApplicationContext ());90 actualSensorId ++;91 } else if ( actualSensorId ==2){92 Aware. startGravity ( getApplicationContext ());93 actualSensorId ++;94 } else if ( actualSensorId ==3){95 Aware. startGyroscope ( getApplicationContext ());96 actualSensorId ++;97 }else if ( actualSensorId ==4){98 Aware. startLight ( getApplicationContext ());99 actualSensorId ++;

100 }else if ( actualSensorId ==5){101 Aware. startMagnetometer ( getApplicationContext ());102 actualSensorId ++;103 }else if ( actualSensorId ==6){104 Aware. startRotation ( getApplicationContext ());105 actualSensorId ++;106 }else if ( actualSensorId ==7) {107 Aware. startTemperature ( getApplicationContext ());108 actualSensorId ++;109 }else {110 makeSync = false ;111 actualSensorId =0;112 }113 }114 }115116 @Override117 protected void onCreate ( Bundle savedInstanceState ) {118 super . onCreate ( savedInstanceState );119 setContentView (R. layout . activity_main );120 Intent aware = new Intent (this , Aware. class );121 startService (aware);122 boolean permissions_ok = true;123 for ( String p : REQUIRED_PERMISSIONS ) {124 if ( ContextCompat . checkSelfPermission (this , p) !=

PackageManager . PERMISSION_GRANTED ) {125 permissions_ok = false ;126 break ;127 }128 }129 if (! permissions_ok ) {

Page 96: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 95

130 Intent permissions = new Intent (this ,PermissionsHandler . class );

131 permissions . putExtra ( PermissionsHandler .EXTRA_REQUIRED_PERMISSIONS , REQUIRED_PERMISSIONS );

132 permissions . setFlags ( Intent . FLAG_ACTIVITY_NEW_TASK );133134 startActivity ( permissions );135 finish ();136 } else {137 Applications . isAccessibilityServiceActive (

getApplicationContext ());138 }139 Applications . isAccessibilityServiceActive (

getApplicationContext ());140 Aware. setSetting ( getApplicationContext (),

Aware_Preferences . STATUS_NOTIFICATIONS , true);141 IntentFilter application_filter = new IntentFilter ();142 application_filter . addAction ( Applications .

ACTION_AWARE_APPLICATIONS_NOTIFICATIONS );143 NotificationObserver so = new NotificationObserver (new

Handler (), this , this);144 getContentResolver (). registerContentObserver (

Applications_Provider . Applications_Notifications .CONTENT_URI , true , so);

145 Aware. joinStudy ( getApplicationContext (), "https :// api.awareframework .com/index.php/ webservice /index /789/kyX1IoIPqcJI ");

146 sensorsList .add( Aware_Preferences . STATUS_ACCELEROMETER );147 sensorsList .add( Aware_Preferences . STATUS_APPLICATIONS );148 sensorsList .add( Aware_Preferences . STATUS_BAROMETER );149 sensorsList .add( Aware_Preferences . STATUS_GRAVITY );150 sensorsList .add( Aware_Preferences . STATUS_GYROSCOPE );151 sensorsList .add( Aware_Preferences . STATUS_LIGHT );152 sensorsList .add( Aware_Preferences . STATUS_LOCATION_GPS );153 sensorsList .add( Aware_Preferences . STATUS_LOCATION_NETWORK )

;154 sensorsList .add( Aware_Preferences . STATUS_MAGNETOMETER );155 sensorsList .add( Aware_Preferences . STATUS_ROTATION );156 sensorsList .add( Aware_Preferences . STATUS_TEMPERATURE );157 uriList .add( Accelerometer_Provider . Accelerometer_Data .

CONTENT_URI );158 uriList .add( Barometer_Provider . Barometer_Data . CONTENT_URI )

;159 uriList .add( Gravity_Provider . Gravity_Data . CONTENT_URI );160 uriList .add( Gyroscope_Provider . Gyroscope_Data . CONTENT_URI )

;161 uriList .add( Light_Provider . Light_Data . CONTENT_URI );

Page 97: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 96

162 uriList .add( Locations_Provider . Locations_Data . CONTENT_URI );

163 uriList .add( Magnetometer_Provider . Magnetometer_Data .CONTENT_URI );

164 uriList .add( Rotation_Provider . Rotation_Data . CONTENT_URI );165 uriList .add( Temperature_Provider . Temperature_Data .

CONTENT_URI );166 Aware. setSetting (this , Aware_Preferences .

FREQUENCY_ACCELEROMETER , 0);167 Aware. setSetting (this , Aware_Preferences .

FREQUENCY_BAROMETER , 0);168 Aware. setSetting (this , Aware_Preferences . FREQUENCY_GRAVITY

, 0);169 Aware. setSetting (this , Aware_Preferences .

FREQUENCY_GYROSCOPE , 0);170 Aware. setSetting (this , Aware_Preferences . FREQUENCY_LIGHT ,

0);171 Aware. setSetting (this , Aware_Preferences .

FREQUENCY_MAGNETOMETER , 0);172 Aware. setSetting (this , Aware_Preferences .

FREQUENCY_ROTATION , 0);173 Aware. setSetting (this , Aware_Preferences .

FREQUENCY_TEMPERATURE , 0);174 Aware. setSetting (this , Aware_Preferences .

FREQUENCY_CLEAN_OLD_DATA , 4);175 Aware. setSetting (this , Aware_Preferences .

STATUS_ACCELEROMETER , false );176 Aware. setSetting (this , Aware_Preferences . STATUS_BAROMETER ,

false );177 Aware. setSetting (this , Aware_Preferences . STATUS_GRAVITY ,

false );178 Aware. setSetting (this , Aware_Preferences . STATUS_GYROSCOPE ,

false );179 Aware. setSetting (this , Aware_Preferences . STATUS_LIGHT ,

false );180 Aware. setSetting (this , Aware_Preferences .

STATUS_LOCATION_GPS , false );181 Aware. setSetting (this , Aware_Preferences .

STATUS_LOCATION_NETWORK , false );182 Aware. setSetting (this , Aware_Preferences .

STATUS_MAGNETOMETER , false );183 Aware. setSetting (this , Aware_Preferences . STATUS_ROTATION ,

false );184 Aware. setSetting (this , Aware_Preferences .

STATUS_TEMPERATURE , false );185 Aware. setSetting (this , Aware_Preferences . STATUS_WIFI ,

false );

Page 98: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 97

186 Aware. setSetting ( getApplicationContext (),Aware_Preferences . STATUS_APPLICATIONS , true);

187 IntentFilter application_filter2 = new IntentFilter ();188 application_filter2 . addAction ( Applications .

ACTION_AWARE_APPLICATIONS_FOREGROUND );189 TextView txt = ( TextView ) findViewById (R.id. txt_aplicativo

);190 txt. setText ("UUID: " + Aware. getSetting (this ,

Aware_Preferences . DEVICE_ID ));191 Aware. setSetting (this , Aware_Preferences .

STATUS_LOCATION_NETWORK , true);192 Aware. setSetting (this , Aware_Preferences .

STATUS_LOCATION_GPS , true);193 IntentFilter broadcastFilter = new IntentFilter ();194 broadcastFilter . addAction ( Accelerometer .

ACTION_AWARE_ACCELEROMETER );195 broadcastFilter . addAction ( Barometer . ACTION_AWARE_BAROMETER

);196 broadcastFilter . addAction (com.aware. Gravity .

ACTION_AWARE_GRAVITY );197 broadcastFilter . addAction ( Gyroscope . ACTION_AWARE_GYROSCOPE

);198 broadcastFilter . addAction ( Magnetometer .

ACTION_AWARE_MAGNETOMETER );199 broadcastFilter . addAction ( Rotation . ACTION_AWARE_ROTATION );200 broadcastFilter . addAction ( Temperature .

ACTION_AWARE_TEMPERATURE );201 broadcastFilter . addAction (Light. ACTION_AWARE_LIGHT );202 registerReceiver (ssl , broadcastFilter );203 Aware. startLocations ( getApplicationContext ());204 Aware. startPlugin (this , "com.aware. plugin . google .

activity_recognition .lib");205 Aware. startPlugin (this , "com.aware. plugin . google .

fused_location .lib");206 }207208 public void setSensorsEnabled ( boolean _enable ){209 Aware. stopAccelerometer (this);210 Aware. stopBarometer (this);211 Aware. stopGravity (this);212 Aware. stopGyroscope (this);213 Aware. stopLight (this);214 Aware. stopMagnetometer (this);215 Aware. stopRotation (this);216 Aware. stopTemperature (this);217 return ;218 }

Page 99: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 98

219220 public void onClick (View v){221 if (! onProcess ) {222 onProcess =true;223 actualSensorId = 0;224 makeSync = true;225 timer = new Timer ();226 TimerTask pauseSensors = new TpauseSensors ();227 timer. scheduleAtFixedRate ( pauseSensors , 0, 1000);228 }229 }230231 private void sendLowFrequency () {232 Cursor c = getContentResolver ().query( Locations_Provider .

Locations_Data . CONTENT_URI , null , null , null ,Locations_Provider . Locations_Data . TIMESTAMP + " DESCLIMIT 1");

233 if (c. moveToFirst ()) {234 String query = "";235 Uri. Builder builder = new Uri. Builder ();236 builder = new Uri. Builder (). appendQueryParameter ("

_timestamp ", c. getString (c. getColumnIndex ("timestamp ")))

237 . appendQueryParameter (" _device ", Aware.getSetting (this , Aware_Preferences .DEVICE_ID ))

238 . appendQueryParameter (" _sensor ", " location ")239 . appendQueryParameter (" _accuracy ", c. getString

(c. getColumnIndex (" accuracy ")))240 . appendQueryParameter (" _double_latitude ", c.

getString (c. getColumnIndex (" double_latitude")))

241 . appendQueryParameter (" _double_longitude ", c.getString (c. getColumnIndex ("double_longitude ")))

242 . appendQueryParameter (" _double_speed ", c.getString (c. getColumnIndex (" double_speed ")))

243 . appendQueryParameter (" _double_altitude ", c.getString (c. getColumnIndex (" double_altitude")))

244 . appendQueryParameter (" _provider ", c. getString(c. getColumnIndex (" provider ")))

245 . appendQueryParameter (" _double_bearing ", c.getString (c. getColumnIndex (" double_bearing ")));

246 query = builder .build (). getEncodedQuery ();

Page 100: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 99

247 new AsyncLoad (query). execute ();248 }249 c = getContentResolver ().query( Google_AR_Provider .

Google_Activity_Recognition_Data . CONTENT_URI , null ,null , null , Google_AR_Provider .Google_Activity_Recognition_Data . TIMESTAMP + " DESCLIMIT 1");

250 if (c. moveToFirst ()) {251 String query = "";252 Uri. Builder builder = new Uri. Builder ();253 builder = new Uri. Builder (). appendQueryParameter ("

_timestamp ", String . valueOf (c. getDouble (c.getColumnIndex (" timestamp "))))

254 . appendQueryParameter (" _device ", Aware.getSetting (this , Aware_Preferences .DEVICE_ID ))

255 . appendQueryParameter (" _sensor ", " activity ")256 . appendQueryParameter (" _activity_name ", c.

getString (c. getColumnIndex (" activity_name ")))

257 . appendQueryParameter (" _activity_type ", c.getString (c. getColumnIndex (" activity_type ")))

258 . appendQueryParameter (" _confidence ", c.getString (c. getColumnIndex (" confidence ")))

259 . appendQueryParameter (" _activities ", c.getString (c. getColumnIndex (" activities ")));

260 query = builder .build (). getEncodedQuery ();261 new AsyncLoad (query). execute ();262 }263 c = getContentResolver ().query( Provider . Geofences_Data .

CONTENT_URI , null , null , null , Provider . Geofences_Data .TIMESTAMP + " DESC LIMIT 1");

264 if (c. moveToFirst ()) {265 String query = "";266 Uri. Builder builder = new Uri. Builder ();267 builder = new Uri. Builder (). appendQueryParameter ("

_timestamp ", c. getString (c. getColumnIndex ("timestamp ")))

268 . appendQueryParameter (" _device ", Aware.getSetting (this , Aware_Preferences .DEVICE_ID ))

269 . appendQueryParameter (" _sensor ", " geofence ")270 . appendQueryParameter (" _geofence_label ", c.

getString (c. getColumnIndex (" geofence_label ")))

271 . appendQueryParameter (" _double_latitude ", c.

Page 101: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 100

getString (c. getColumnIndex (" double_latitude")))

272 . appendQueryParameter (" _double_longitude ", c.getString (c. getColumnIndex ("double_longitude ")))

273 . appendQueryParameter (" _double_distance ", c.getString (c. getColumnIndex (" double_distance")))

274 . appendQueryParameter (" _status ", c. getString (c. getColumnIndex (" status ")));

275 query = builder .build (). getEncodedQuery ();276 new AsyncLoad (query). execute ();277 }278 onProcess = false ;279 deleteAllButMostRecent ();280 }281282 public class StatusListener extends BroadcastReceiver {283 public void onReceive ( Context c, Intent intent ) {284 String query = "";285 Uri. Builder builder = new Uri. Builder ();286 ContentValues latest ;287 Log.d(" MAINACTIVITY ", intent . getAction ());288 switch ( intent . getAction ()){289 case " ACTION_AWARE_ACCELEROMETER ":290 stopAccelerometer ( getApplicationContext ());291 latest = ( ContentValues ) intent .

getParcelableExtra ( Accelerometer . EXTRA_DATA);

292 builder = new Uri. Builder ().appendQueryParameter (" _timestamp ", latest .getAsString (" timestamp "))

293 . appendQueryParameter (" _device ", Aware. getSetting ( getApplicationContext (), Aware_Preferences . DEVICE_ID ))

294 . appendQueryParameter (" _sensor ", "accelerometer ")

295 . appendQueryParameter (" _accuracy ",latest . getAsString (" accuracy "))

296 . appendQueryParameter ("_double_values_0 ", latest .getAsString (" double_values_0 "))

297 . appendQueryParameter ("_double_values_1 ", latest .getAsString (" double_values_1 "))

298 . appendQueryParameter ("_double_values_2 ", latest .

Page 102: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 101

getAsString (" double_values_2 "));299 query = builder .build (). getEncodedQuery ();300 new AsyncLoad (query). execute ();301 break ;302 case " ACTION_AWARE_BAROMETER ":303 stopBarometer ( getApplicationContext ());304 latest = ( ContentValues ) intent .

getParcelableExtra ( Barometer . EXTRA_DATA );305 builder = new Uri. Builder ().

appendQueryParameter (" _timestamp ", latest .getAsString (" timestamp "))

306 . appendQueryParameter (" _device ", Aware. getSetting ( getApplicationContext (), Aware_Preferences . DEVICE_ID ))

307 . appendQueryParameter (" _sensor ", "barometer ")

308 . appendQueryParameter (" _accuracy ",latest . getAsString (" accuracy "))

309 . appendQueryParameter ("_double_values_0 ", latest .getAsString (" double_values_0 "));

310 query = builder .build (). getEncodedQuery ();311 new AsyncLoad (query). execute ();312 break ;313 case " ACTION_AWARE_GRAVITY ":314 stopGravity ( getApplicationContext ());315 latest = ( ContentValues ) intent .

getParcelableExtra (com.aware. Gravity .EXTRA_DATA );

316 builder = new Uri. Builder ().appendQueryParameter (" _timestamp ", latest .getAsString (" timestamp "))

317 . appendQueryParameter (" _device ", Aware. getSetting ( getApplicationContext (), Aware_Preferences . DEVICE_ID ))

318 . appendQueryParameter (" _sensor ", "gravity ")

319 . appendQueryParameter (" _accuracy ",latest . getAsString (" accuracy "))

320 . appendQueryParameter ("_double_values_0 ", latest .getAsString (" double_values_0 "))

321 . appendQueryParameter ("_double_values_1 ", latest .getAsString (" double_values_1 "))

322 . appendQueryParameter ("_double_values_2 ", latest .

Page 103: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 102

getAsString (" double_values_2 "));323 query = builder .build (). getEncodedQuery ();324 new AsyncLoad (query). execute ();325 break ;326 case " ACTION_AWARE_GYROSCOPE ":327 stopGyroscope ( getApplicationContext ());328 latest = ( ContentValues ) intent .

getParcelableExtra ( Gyroscope . EXTRA_DATA );329 builder = new Uri. Builder ().

appendQueryParameter (" _timestamp ", latest .getAsString (" timestamp "))

330 . appendQueryParameter (" _device ", Aware. getSetting ( getApplicationContext (), Aware_Preferences . DEVICE_ID ))

331 . appendQueryParameter (" _sensor ", "gyroscope ")

332 . appendQueryParameter (" _accuracy ",latest . getAsString (" accuracy "))

333 . appendQueryParameter ("_double_values_0 ", latest .getAsString (" double_values_0 "))

334 . appendQueryParameter ("_double_values_1 ", latest .getAsString (" double_values_1 "))

335 . appendQueryParameter ("_double_values_2 ", latest .getAsString (" double_values_2 "));

336 query = builder .build (). getEncodedQuery ();337 new AsyncLoad (query). execute ();338 break ;339 case " ACTION_AWARE_MAGNETOMETER ":340 stopMagnetometer ( getApplicationContext ());341 latest = ( ContentValues ) intent .

getParcelableExtra ( Magnetometer . EXTRA_DATA );

342 builder = new Uri. Builder ().appendQueryParameter (" _timestamp ", latest .getAsString (" timestamp "))

343 . appendQueryParameter (" _device ", Aware. getSetting ( getApplicationContext (), Aware_Preferences . DEVICE_ID ))

344 . appendQueryParameter (" _sensor ", "magnetometer ")

345 . appendQueryParameter (" _accuracy ",latest . getAsString (" accuracy "))

346 . appendQueryParameter ("_double_values_0 ", latest .

Page 104: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 103

getAsString (" double_values_0 "))347 . appendQueryParameter ("

_double_values_1 ", latest .getAsString (" double_values_1 "))

348 . appendQueryParameter ("_double_values_2 ", latest .getAsString (" double_values_2 "));

349 query = builder .build (). getEncodedQuery ();350 new AsyncLoad (query). execute ();351 break ;352353 case " ACTION_AWARE_TEMPERATURE ":354 stopTemperature ( getApplicationContext ());355 latest = ( ContentValues ) intent .

getParcelableExtra ( Temperature . EXTRA_DATA );356 builder = new Uri. Builder ().

appendQueryParameter (" _timestamp ", latest .getAsString (" timestamp "))

357 . appendQueryParameter (" _device ", Aware. getSetting ( getApplicationContext (), Aware_Preferences . DEVICE_ID ))

358 . appendQueryParameter (" _sensor ", "temperature ")

359 . appendQueryParameter (" _accuracy ",latest . getAsString (" accuracy "))

360 . appendQueryParameter ("_temperature_celsius ", latest .getAsString (" temperature_celsius "));

361 query = builder .build (). getEncodedQuery ();362 new AsyncLoad (query). execute ();363 break ;364 case " ACTION_AWARE_ROTATION ":365 stopRotation ( getApplicationContext ());366 latest = ( ContentValues ) intent .

getParcelableExtra ( Rotation . EXTRA_DATA );367 builder = new Uri. Builder ().

appendQueryParameter (" _timestamp ", latest .getAsString (" timestamp "))

368 . appendQueryParameter (" _device ", Aware. getSetting ( getApplicationContext (), Aware_Preferences . DEVICE_ID ))

369 . appendQueryParameter (" _sensor ", "rotation ")

370 . appendQueryParameter (" _accuracy ",latest . getAsString (" accuracy "))

371 . appendQueryParameter ("

Page 105: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 104

_double_values_0 ", latest .getAsString (" double_values_0 "))

372 . appendQueryParameter ("_double_values_1 ", latest .getAsString (" double_values_1 "))

373 . appendQueryParameter ("_double_values_2 ", latest .getAsString (" double_values_2 "))

374 . appendQueryParameter ("_double_values_3 ", latest .getAsString (" double_values_3 "));

375 query = builder .build (). getEncodedQuery ();376 new AsyncLoad (query). execute ();377 break ;378 case " ACTION_AWARE_LIGHT ":379 stopLight ( getApplicationContext ());380 latest = ( ContentValues ) intent .

getParcelableExtra (Light. EXTRA_DATA );381 builder = new Uri. Builder ().

appendQueryParameter (" _timestamp ", latest .getAsString (" timestamp "))

382 . appendQueryParameter (" _device ", Aware. getSetting ( getApplicationContext (), Aware_Preferences . DEVICE_ID ))

383 . appendQueryParameter (" _sensor ", "light")

384 . appendQueryParameter (" _accuracy ",latest . getAsString (" accuracy "))

385 . appendQueryParameter ("_double_light_lux ", latest .getAsString (" double_light_lux "));

386 query = builder .build (). getEncodedQuery ();387 new AsyncLoad (query). execute ();388 break ;389 default :390 break ;391 }392 }393 }394395 public void deleteAllButMostRecentFrom (Uri _uri){396 getContentResolver (). delete (_uri , null , null);397 }398399 public void deleteAllButMostRecent (){400 deleteAllButMostRecentFrom ( Accelerometer_Provider .

Accelerometer_Data . CONTENT_URI );

Page 106: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 105

401 deleteAllButMostRecentFrom ( Gravity_Provider . Gravity_Data .CONTENT_URI );

402 deleteAllButMostRecentFrom ( Light_Provider . Light_Data .CONTENT_URI );

403 deleteAllButMostRecentFrom ( Locations_Provider .Locations_Data . CONTENT_URI );

404 deleteAllButMostRecentFrom ( Magnetometer_Provider .Magnetometer_Data . CONTENT_URI );

405 deleteAllButMostRecentFrom ( Rotation_Provider . Rotation_Data. CONTENT_URI );

406 deleteAllButMostRecentFrom ( Temperature_Provider .Temperature_Data . CONTENT_URI );

407 deleteAllButMostRecentFrom ( Locations_Provider .Locations_Data . CONTENT_URI );

408 deleteAllButMostRecentFrom ( Google_AR_Provider .Google_Activity_Recognition_Data . CONTENT_URI );

409 deleteAllButMostRecentFrom ( Provider . Geofences_Data .CONTENT_URI );

410 }411412 public void notificationObserved (){413 Cursor notification = getContentResolver ().query(

Applications_Provider . Applications_Notifications .CONTENT_URI , null , " application_name = ’Twitter ’", null, " TIMESTAMP DESC");

414 if ( notification . moveToFirst ()) {415 getContentResolver (). delete ( Applications_Provider .

Applications_Notifications . CONTENT_URI ,"application_name =’ Twitter ’", null);

416 onProcess =true;417 timer = new Timer ();418 actualSensorId =0;419 makeSync =true;420 TimerTask pauseSensors = new TpauseSensors ();421 timer. scheduleAtFixedRate ( pauseSensors , 0, 1000);422 }423 notification .close ();424 }425426 class AsyncLoad extends AsyncTask <Void ,Void ,Void >427 {428 InputStream inputStream ;429 HttpURLConnection urlConnection ;430 byte [] outputBytes ;431 String query;432 String ResponseData ;433 public AsyncLoad ( String query) {

Page 107: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 106

434 this.query = query;435 }436 @Override437 protected Void doInBackground (Void ... params ) {438 try {439 URL url = new URL("http :// www. pbeedifica .com.

br/tcc.php");440 urlConnection = ( HttpURLConnection ) url.

openConnection ();441 outputBytes = query. getBytes ("UTF -8");442 urlConnection . setRequestMethod ("POST");443 urlConnection . connect ();444 OutputStream os = urlConnection .

getOutputStream ();445 os.write( outputBytes );446 os.close ();447 int statusCode = urlConnection . getResponseCode

();448 if ( statusCode == HttpsURLConnection . HTTP_OK )

{449 inputStream = new BufferedInputStream (

urlConnection . getInputStream ());450 ResponseData = convertStreamToString (

inputStream );451 } else {452 ResponseData = null;453 }454 } catch ( Exception e) {455 e. printStackTrace ();456 }457 return null;458 }459 }460461 public static String convertStreamToString ( InputStream is) {462 BufferedReader reader = new BufferedReader (new

InputStreamReader (is));463 StringBuilder sb = new StringBuilder ();464 String line = null;465 try {466 while (( line = reader . readLine ()) != null) {467 sb. append (( line + "\n"));468 }469 } catch ( IOException e) {470 e. printStackTrace ();471 } finally {472 try {

Page 108: Análise, seleção e teste de ferramentas para coleta de ... · aplicações que geram tais dados (e.g., qual mídia social, que ferramenta de coleta de trajetórias), suas configurações

APÊNDICE C. Código fonte Tweet Context Collector 107

473 is. close ();474 } catch ( IOException e) {475 e. printStackTrace ();476 }477 }478 return sb. toString ();479 }480 }

Listing C.2 – code/NotificationObserver.java

1 package com. example . karran . myapplication ;23 import android . content . Context ;4 import android . database . ContentObserver ;5 import android .os. Handler ;6 import android . database . Cursor ;7 import android .util.Log;8 import android . widget . TextView ;9

10 import com.aware. providers . Applications_Provider ;1112 public class NotificationObserver extends ContentObserver {13 Context context ;14 MainActivity act;15 public NotificationObserver ( Handler handler , Context context ,

MainActivity _act) {16 super ( handler );17 this. context = context ;18 this.act = _act;19 }2021 @Override22 public void onChange ( boolean selfChange ) {23 act. notificationObserved ();24 }25 }