Pós-Graduação em Ciência da Computação DBST: Uma API para Criação de Trajetórias Semânticas no SGBD PostgreSQL/Postgis Por Rodrigo da Rocha Borges de Santana Dissertação de Mestrado Profissional Universidade Federal de Pernambuco [email protected] www.cin.ufpe.br/~posgraduacao RECIFE, Abril/2013 UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE INFORMÁTICA PÓS- GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO Rodrigo da Rocha Borges de Santana DBST: Uma API para Criação de Trajetórias Semânticas no SGBD PostgreSQL/Postgis Este trabalho foi apresentado à Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco como requisito parcial para obtenção do grau de Mestre Profissional em Ciência da Computação. ORIENTADOR (A): Valéria Cesário Times Recife, Abril/2013 Catalogação na fonte Bibliotecária Jane Souto Maior, CRB4-571 Santana, Rodrigo da Rocha Borges de DBST: uma API para criação de trajetórias semânticas no SGBD PostgreSQL/Postgis. / Rodrigo da Rocha Borges de Santana - Recife: O Autor, 2013. xi, 101 f.: fig., tab., quadros Orientador: Valéria Cesário Times. Dissertação (mestrado) - Universidade Pernambuco. CIn, Ciência da Computação, 2013. Federal de Inclui bibliografia e apêndice. 1. Banco de dados. 2. Sistema de informação geográfica. I. Times, Valéria Cesário (orientadora). II. Título. 025.04 CDD (23. ed.) MEI2013 – 078 Dissertação de Mestrado Profissional apresentada por Rodrigo da Rocha Borges de Santana à Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco, sob o título, “DBST: Uma API para Criação de Trajetórias Semânticas no SGBD PostgreSQL/Postgis”, orientada pela Professora Valéria Cesário Times e aprovada pela Banca Examinadora formada pelos professores: ______________________________________________ Prof. Fernando da Fonseca de Souza Centro de Informática / UFPE __________________________________________ Prof. Marizete Silva Santos Universidade Federal Rural de Pernambuco ___________________________________________ Prof. Valéria Cesário Times Centro de Informática / UFPE Visto e permitida a impressão. Recife, 19 de abril de 2013. ___________________________________________________ Profª. EDNA NATIVIDADE DA SILVA BARROS Coordenadora da Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco. i Dedico essa vitória primeiramente a DEUS! Também a minha família que é a inspiração para minhas batalhas... ii Agradecimentos Considero-me uma pessoa abençoada! Por pertencer a uma família solidária, ser casado com uma pedra preciosa e rara, além de ser rodeado de amigos irmãos, trabalhar com o que gosto e me sentir como uma pessoa querida dentre as que eu convivo. Primeiro que tudo enalteço a DEUS por tudo que tem feito na minha vida! Sem Ele nada seria possível. Agradeço a minha mãe, uma das pessoas mais batalhadoras e incríveis que conheci. É principalmente por ela que busco uma constante evolução em minha vida profissional e pessoal. Uma pessoa realmente impressionante! Agradeço também a minha vó Irene, que teve uma participação constante na minha criação, me passando sempre muito conhecimento de vida. Também agradeço a minha tia Iracy que sempre me incentivou a estudar. Minha esposa foi a pessoa mais próxima a mim durante esta etapa de minha vida. Uma mulher maravilhosa, apaixonante, dedicada a família e acima de tudo, é a mulher que escolhi para viver, minha princesa. É por estes motivos e sentimentos que deixo aqui o meu agradecimento a ela. Muito obrigado a minha querida e amável esposa. Agradeço também a minha amiga e gerente Marlice Novais, por todo o apoio dado e principalmente pela oportunidade de fazer este Mestrado. Uma pessoa que sempre esteve proporcionando possibilidades de crescimento profissional a minha pessoa. Foi ela que também intermediou uma melhora na minha condição financeira para que eu pudesse me graduar e chegar a fazer o Mestrado. Obrigado por tudo. Professora Valéria, minha orientadora, um anjo dentre outros que DEUS colocou no meu caminho, uma pessoa formidável, serena e paciente. Obridado pela paciência e confiança depositada a mim, e que DEUS continue iluminando o seu caminho e da sua família. Não sei como agradecê-la, digo apenas obrigado, obrigado, muito iii obrigado. O que posso fazer neste momento de reflexão é “dedicar a primeira fatia do bolo” a ela. Sem dúvida a pessoa mais importante desta minha jornada no decorrer do mestrado e por quem a minha admiração só aumentou. Agradeço a meus amigos (Mário, Ednei, Roberto, Melo, Diogo, Júlio, Djailson, Jorge, Adriano, Márcio) do Centro de Informática da UFPE pelo apoio e demonstração de confiança a mim depositada. Em especial, agradeço às minhas duas amigas irmãs: Juliana e Nadja. Muito obrigado pela ajuda e principalmente pelas revisões dos textos da dissertação. Agradeço a todos pelas conversas de apoio, dando sempre uma “injeção” de ânimo e perseverança. Muito obrigado ao meu grande amigo Clécio, pois sem ele não teria nem começado a minha graduação. Ele não só me incentivou bastante a ingressar em uma universidade como pagou o meu vestibular em um momento financeiro difícil passado por mim. Na época, ele acreditou mais em mim do que eu mesmo. Deixo aqui também o meu muito obrigado a André que tanto me ajudou desde o primeiro momento em que me conheceu. Agradeço também às pessoas que em silêncio torceram e oraram por mim. Muito obrigado! iv Portas da vida Se você abre uma porta, você pode ou não entrar em uma nova sala. Você pode não entrar e ficar observando a vida. Mas se você vence a dúvida, o medo, e entra, dá um grande passo, nesta sala vive-se. Mas, também tem um preço... São inúmeras outras portas que você descobre. Às vezes quebra-se a cara, às vezes curte-se mil e uma. O grande segredo é saber quando e qual porta deve ser aberta. A vida não é rigorosa. Ela propicia erros e acertos. Os erros podem ser transformados em acertos quando com eles se aprende. Não existe a segurança do certo eterno. A vida é generosa. A cada sala que se vive, descobrem-se tantas outras portas. E a vida enriquece quem se arrisca a abrir novas portas. Ela privilegia quem descobre seus segredos e generosamente oferece afortunadas portas. Mas a vida também pode ser dura e severa. Se você não ultrapassar a porta, terá sempre a mesma porta pela frente. E a repetição perante a criação, é a monotonia monocromática perante a multiplicidade das cores; é a estagnação da vida... Para a vida, as portas não são obstáculos, mas diferentes passagens... Içami Tiba v Resumo Atualmente, cada vez mais existem Sistemas de Gerenciamento de Banco de dados (SGBD) que disponibilizam tipos de dados com características geométricas e temporais, para indicar a localização de um dado objeto móvel no espaço e no tempo, ou demarcar topologicamente uma dada região. Isso se deve ao aumento do uso de tecnologias de localização geográfica, tal como o Sistema de Posicionamento Global (GPS). Cada vez mais cresce o uso de GPS por aplicações de domínios distintos. No entanto, os dados coletados por dispositivos de localização acoplados a objetos móveis que se deslocam ao longo do espaço e do tempo, não apresentam informações semânticas, dificultando a análise e compreensão destes dados. Por isso, foi identifcado a falta de SGBD capazes de representar e manipular trajetórias semânticas. Existem vários trabalhos na literatura voltados para modelagem de trajetórias semânticas e para análise de trajetórias brutas obtidas de GPS para extração de conhecimento. Uma vez geradas e modeladas, as trajetórias semânticas precisam ser armazenadas em um SGBD. Por isso, este trabalho tem como objetivo estender o SGBD PostgreSQL/Postgis com novos tipos de dados para representação de trajetória semântica. Para facilitar a utilização desses novos tipos de dados, é também proposta uma Application Programming Interface (API) denominada de DBST (Database of Semantic Trajectories). A validação destes novos tipos de dados e da API DBST foi feita pela geração de bases de dados de trajetórias semânticas para dois domínios de aplicação distintos e com base em dados reais de trajetórias de objetos móveis. Palavras-Chaves: Trajetória bruta, trajetória semântica, dados espaço-temporais, objetos móveis, API. vi Abstract Currently, there are more and more Systems Management Database (DBMS) that provide data types with geometric and temporal features, to indicate the location of a given moving object in space and time, or to topologically demarcate a given region. This is due to the increased use of geo-location technology such as Global Positioning System (GPS). There is an increasing use of GPS by applications from different domains. However, data collected by tracking devices attached to mobile objects moving across space and time, have no semantic information, making it difficult to analyze and understand these data. Therefore, was identified a lack of DBMS able to represent and manipulate semantic trajectories. Several studies in the literature have focused on the modeling of semantic trajectories and on the analysis of raw trajectories extracted from GPS for knowledge discovery. Once generated and modeled the semantic trajectories must be stored in a DBMS. Therefore, this study aims to extend the DBMS PostgreSQL / PostGIS with new data types for representing semantic trajectories. To facilitate the use of these new data types, it is also proposed an Application Programming Interface (API) called DBST (Database of Semantic Trajectories). The validation of these new data types and of the DBST API was done by generating semantic trajectories databases for two different application domains, and based on real trajectory data of moving objects. Keywords: Raw trajectories, semantic trajectories, spatiotemporal data, moving objects, API. vii Índice 1. Introdução .......................................................................................................................................... 1 1.1. Motivação................................................................................................................................ 2 1.2. Objetivos ................................................................................................................................. 4 1.3. Estrutura da Dissertação ......................................................................................................... 4 2. Fundamentação Teórica ..................................................................................................................... 6 2.1. Introdução ............................................................................................................................... 7 2.2. Representação de Dados Espaciais e Temporais .................................................................... 7 2.2.1. Representação de Dados Espaciais ..................................................................................... 7 2.2.2. Representação de Dados Temporais ................................................................................... 9 2.3. Representação de Trajetórias .................................................................................................. 14 2.3.1. Representação de Trajetória Bruta ..................................................................................... 18 2.3.2. Representação de Trajetória Semântica ........................................................................... 19 2.3.3. Modelagem Conceitual de Trajetória ................................................................................ 24 2.3.3.1. O Modelo de Paradas e Movimentos ......................................................................... 24 2.3.3.2. Outros Modelos Conceituais ...................................................................................... 27 2.4. API ............................................................................................................................................. 28 2.5. Conclusões............................................................................................................................. 30 3. Trabalhos Correlatos ........................................................................................................................ 32 3.1. Introdução ................................................................................................................................ 33 3.2. API para Dados Geográficos ..................................................................................................... 33 3.2.1. A API TerraLib .................................................................................................................... 34 3.2.2. A API ArcSDE ...................................................................................................................... 34 3.3. Comparação entre API DBST x TerraLib x ArcSDE ................................................................. 35 3.4. Representação de Trajetórias Semânticas em BD ................................................................ 36 3.4.1. Proposta de Fajardo .......................................................................................................... 37 3.5. Comparação entre API DBST e o trabalho de Fajardo .......................................................... 38 3.6. Conclusões ................................................................................................................................ 41 4. A API DBST (DataBase of Semantic Trajectories) ............................................................................. 43 4.1. Introdução ............................................................................................................................. 44 4.2. Tipos de Dados da API DBST .................................................................................................. 44 4.2.1. Dados de Paradas e Movimentos ...................................................................................... 45 4.2.2. Dados de Trajetórias.......................................................................................................... 47 viii 4.2.3. Dados de Anotações Semânticas....................................................................................... 49 4.3. Implementação da API DBST .................................................................................................... 58 4.3.1. Estrutura de Classes da API DBST ...................................................................................... 58 4.4. Conclusão .............................................................................................................................. 62 5. Exemplos de Aplicação ..................................................................................................................... 64 5.1. Introdução ............................................................................................................................. 65 5.2. Preparação do Ambiente ...................................................................................................... 65 5.3. Uso de Tipos de Dados da API DBST...................................................................................... 66 5.4. Cenário 1 - Monitoramento de Pássaros................................................................................... 69 5.4.1. Trajetórias de Pássaros....................................................................................................... 69 5.4.2. Exemplos de Consultas ...................................................................................................... 70 5.5. Cenário 2: Gerenciamento de Transporte Público ................................................................ 76 5.5.1. Trajetórias de Ônibus ......................................................................................................... 76 5.5.2. Exemplos de Consultas ...................................................................................................... 77 5.6. Conclusões............................................................................................................................. 81 6. Conclusões ........................................................................................................................................ 83 6.1. Considerações Finais ............................................................................................................. 84 6.2. Principais Contribuições ........................................................................................................ 85 6.3. Limitações ............................................................................................................................. 85 6.4. Trabalhos Futuros.................................................................................................................. 86 Referências Bibliográficas ..................................................................................................................... 88 Apêndice A ............................................................................................................................................ 96 Scripts DDL PostgreSQL/Postgis ........................................................................................................ 96 Cenário 1 – Gerenciamento de Trajetória de Pássaros ................................................................. 96 Cenário 2 – Gerenciamento de Transportes Públicos ................................................................... 98 ix Lista de Figuras Figura 1 - Rede geográfica do globo terrestre mostrando o sistema de coordenadas (x,y) .... 9 Figura 2 - Tempo consecutivo e linearmente ordenado ............................................................... 10 Figura 3 - Representação do tempo ramificado ............................................................................ 10 Figura 4 - Representação do tempo circular .................................................................................. 11 Figura 5 - O caminho percorrido pelo objeto móvel em vários segmentos espaço-temporal. 15 Figura 6 - Paradas e movimentos ao longo de uma trajetória bruta .......................................... 18 Figura 7 - Processo de limpeza dos dados de uma trajetória bruta ........................................... 19 Figura 8 - Exemplo de uma trajetória semântica ........................................................................... 20 Figura 9 - Reconstrução de uma trajetória semântica .................................................................. 21 Figura 10 - Modelagem conceitual de uma trajetória ................................................................... 25 Figura 11 - Mapeamento do modelo de paradas e movimentos para uma aplicação de monitoramento de pássaro ............................................................................................................... 26 Figura 12 - Processo de descoberta do conhecimento a partir de dados espaços-temporais ............................................................................................................................................................... 38 Figura 13 - Representação Gráfica da Estrutura de Classes da API DBST. ............................ 59 Figura 14 - Diagrama de classes da API DBST ............................................................................ 61 Figura 15 - Estrutura da tabela de armazenamento de trajetórias de pássaros. ..................... 70 Figura 16 - Esquema lógico do monitoramento de pássaros. ..................................................... 75 Figura 17 - Estrutura de uma das tabelas de armazenamento dos trajetos dos ônibus. ........ 77 x Lista de Quadros Quadro 1 - Classificações da variação do tempo.......................................................................... 12 Quadro 2 - Forma de representação do elemento primitivo instante ......................................... 13 Quadro 3 - Forma de representação do elemento primitivo intervalo. ....................................... 14 Quadro 4 - Características pertencentes a uma trajetória. .......................................................... 16 Quadro 5 - Elementos contidos em uma trajetória........................................................................ 17 Quadro 6 - Quadro comparativo entre as APIs: DBST, TerraLib e ArcSDE ............................. 36 Quadro 7 - Quadro comparativo entre a Proposta de Fajardo e a API DBST. ......................... 39 Quadro 8 - Tipo de dado que representa os movimentos de objetos móveis .......................... 45 Quadro 9 - Tipo de dado que representa as paradas de objetos móveis. ................................ 47 Quadro 10 - Tipo de dado referente às trajetórias brutas. ........................................................... 48 Quadro 11 - Tipo de dado referente às trajetórias semânticas. .................................................. 49 Quadro 12 - Tipo de dado referente à anotação semântica. ....................................................... 50 Quadro 13 - Tipo de dado referente à anotação sobre o comportamento do objeto. ............. 52 Quadro 14 - Tipo de dado referente à anotação sobre as atividades realizadas pelos objetos móveis. ................................................................................................................................................. 53 Quadro 15 - Tipo de dado referente à anotação sobre o ambiente transitado pelo objeto móvel .................................................................................................................................................... 54 Quadro 16 - Tipo de dado referente à anotação sobre eventos ocorridos no percurso do objeto móvel. ....................................................................................................................................... 55 Quadro 17 - Tipo de dado referente à anotação sobre o objetivo da trajetória. ....................... 56 Quadro 18 - Tipo de dado referente ao meio de transporte do objeto móvel. .......................... 57 Quadro 19 - Código de criação dos tipos de dados semânticos da API DBST. ...................... 67 Quadro 20 - Código de criação dos tipos de dados semânticos para o SGBD........................ 68 Quadro 21 - de linha do arquivo de entrada da API DBST.......................................................... 68 Quadro 22 - Código para Importação de dados. ........................................................................... 68 Quadro 23 - Código de armazenamento das informações de trajetórias em arrays. .............. 69 xi Principais Abreviações Abreviação Significado BD Banco de dados SGBD Sistema de Gerenciamento de Banco de Dados SGBDR Sistema de Gerenciamento de Banco de Dados Relacional SGBDOR Sistema de Gerenciamento de Banco de Dados Objeto-Relacional BDG Banco de Dados Geográfico API Application Programming Interface SQL Structured Query Language DBST Database of Semantic Trajectories ISO International Organization for Standardization OGC Open Geospatial Consortium GPS Global Positioning System RFID Radio-Frequency IDentification TB Trajetória Bruta TS Trajetória Semântica IFP Início e Fim de uma Parada Semântica Capítulo 1 Introdução Este capítulo apresenta a descrição da motivação da pesquisa executada neste trabalho, os objetivos traçados para a pesquisa, além de mostrar a estrutura organizacional deste documento, contendo a sinopse de cada capítulo. 1 2 1.1. Motivação Atualmente há um crescimento no uso de dispositivos de monitoramento, capazes de monitorar o percurso de um objeto móvel qualquer no espaço, durante um dado período de tempo, seja no espaço terrestre, aquático ou aéreo. O uso destes dispositivos tende a crescer a cada momento, devido à redução de custo dos dispositivos e da disponibilidade de novas tecnologias de rastreamento (LOY, A. M., 2011). Por isso, tem crescido o monitoramento de objetos móveis por meio de tecnologias de posicionamento, como Sistema de Posicionamento Global (GPS), Identificação por Rádio Frequência (RFID), dentre outras. Houve também um crescimento na área de pesquisa sobre análise de dados de trajetória, especialmente referente às seguintes subáreas: modelagem de dados de trajetória, processamento e enriquecimento semântico (YAN et. al., 2012). Para este trabalho dissertativo, o dispositivo de rastreamento tomado como base foi o GPS. Com o dispositivo de GPS, são coletadas informações espaço-temporais definidas a partir de coordenadas geográficas (denotadas aqui por ((x, y), t)) de trajetórias dos objetos móveis rastreáveis (e. g. aparelho celular, veículos, mercadorias, animais, dentre outros). Os dados coletados por estes dispositivos são classificados como dados brutos, nos quais praticamente não há significado. Para extrair informações contextuais e até mesmo conhecimento, a partir dos dados de uma dada trajetória, existe a necessidade de aplicação de algoritmos de mineração de dados espaciais ou de sobreposição da trajetória bruta com camadas de informações espacias (e.g. sobreposição da trajetória bruta com um mapa cadastral urbano). Uma trajetória pode conter uma quantidade imensa de dados que podem ser analisados e sobrepostos com várias camadas de dados espaciais. No entanto, estas camadas de dados espaciais nem sempre estão disponíveis para a aplicação. Os dados coletados durante o deslocamento de um objeto móvel no espaço e ao longo do tempo, geralmente, não traz informações semânticas, que são de fundamental relevância para análise e entendimento destes dados. Por isso, alguns autores consideram que a análise dos dados de trajetória tem um custo computacional elevado, e é complicada do ponto de vista do usuário (VAISMAN et. al., 2007) pois requer o conhecimento do especialista de domínio. 3 A captura de trajetórias de objetos móveis cresce gradativamente ao longo do tempo em diferentes domínios de aplicação. Com isso, aumenta a necessidade de análise e extração de conhecimento destes dados (VAISMAN et. al., 2007). Os SGBD atuais, tais como: Oracle (Murray et. al., 2006), Secondo (GUTING et. al., 2011), dentre outros, oferecem suporte aos dados de trajetórias espaço-temporais, mas não contemplam, dessa forma, as informações semânticas que podem aumentar o universo de consultas que podem ser feitas sobre esses dados (SILVA, M. C. T., 2012). Este trabalho propõe a extensão da tecnologia do SGBD PostgreSQL/Postgis, com a construção de tipos de dados semânticos que são independentes de uma aplicação específica, e são capazes de representar trajetórias semânticas. Para facilitar a manipulação desses novos tipos de dados aqui propostos, foi desenvolvida uma Application Programming Interface (API) pela qual o usuário pode estender de forma automática o SGBD com os tipos de dados semânticos que o mesmo deseja usar. Além disso, existe a disponibilização dos recursos relativos a uma API, tais como: funções, classes, protocolos, dentre outros, para auxiliar na manipulação destes novos tipos de dados. Os tipos de dados estendidos pertencem a três categorias distintas: anotações semânticas (que representam o comportamento, o objetivo, o evento, a atividade, o ambiente e o meio de transporte usado pelo objeto móvel), episódios (que denotam paradas e movimentos de trajetórias) e trajetória (que representam a trajetória semântica e a trajetória espaço-temporal bruta). Com a criação destes novos tipos de dados, o responsável pelo banco de dados terá de forma pré-definida os tipos de dados específicos para trabalhar com informações semânticas de trajetórias. Ou seja, os tipos de dados já foram mapeados previamente, poupando tempo na identificação dos mesmos. Caso ocorra a necessidade de utilizar outra anotação semântica que não tenha sido previamente projetada por este trabalho, o desenvolvedor poderá criar suas próprias anotações semânticas de trajetórias para que possa vir a usá-las no desenvolvimento de suas aplicações. 4 1.2. Objetivos O objetivo principal deste trabalho é estender o SGBD PostgreSQL/Postgis propondo novos tipos de dados para representação de trajetória semântica. Para facilitar a utilização desses novos tipos de dados, também é proposta uma API denominada de DBST (Database of Semantic Trajectories). Os objetivos específicos deste trabalho são listados como segue: (1) Especificar novos tipos de dados para representação de trajetórias semânticas em BD do SGBD PostgreSQL/Postgis; (2) Desenvolver uma API para auxiliar na manipulação dos novos tipos de dados para representação de trajetórias semânticas; (3) Criar Banco de Dados (BD) de trajetórias semânticas a partir de trajetórias brutas reais para validar o trabalho proposto. 1.3. Estrutura da Dissertação Este trabalho dissertativo, além deste capítulo, está organizado como segue. Capítulo 2 – Fundamentação Teórica: Apresenta os conceitos básicos sobre os temas discutidos neste trabalho. São eles: dados espaço-temporais, trajetória bruta, trajetória semântica, API, além de uma discussão sobre modelagem conceitual de trajetórias semânticas. Capítulo 3 – Trabalhos Correlatos: Discute os trabalhos correlatos ao trabalho proposto nesta dissertação. Ele descreve cada trabalho correlato e os compara com a proposta deste trabalho, apresentando as principais diferenças e semelhanças entre eles. Capitulo 4 – A API DBST (Database of Semantic Trajectories): Apresenta a API e os tipos de dados propostos por este trabalho dissertativo. Descreve os tipos de dados especificados para a API DBST, que correspondem aos novos tipos de dados estendidos para o SGBD PostgreSQL/Postgis, que também são propostos 5 nesta dissertação. Para um melhor entendimento do uso dos tipos de dados, é exibido um cenário ilustrando a aplicação de cada tipo de dado proposto para representação de trajetórias semânticas. Capítulo 5 – Exemplo de Aplicações: Neste capítulo, são apresentados dois exemplos de uso dos tipos de dados da API DBST em dois cenários de domínios distintos: monitoramento de trajetórias de pássaros e gerenciamento de transportes públicos. Capítulo 6 – Conclusões: Relata as principais contribuições realizadas por este trabalho dissertativo. Além disso, são indicadas algumas sugestões de pesquisas futuras e é sumarizado o trabalho realizado. Capítulo 2 Fundamentação Teórica Este capítulo apresenta a fundamentação teórica relacionada à proposta desta dissertação, abordando os conceitos básicos sobre dados espaço-temporais, trajetória bruta, trajetória semântica, API, além da discussão sobre modelagem conceitual de trajetórias semânticas. 7 2.1. Introdução Neste capítulo são apresentados alguns conceitos que são considerados importantes para o entendimento do trabalho descrito nesta dissertação e está estruturado como segue. Na Seção 2.2, são mostrados conceitos relacionados aos dados espaço-temporais, exibindo alguns tipos de suas representações espaciais e temporais. A Seção 2.3 contém as definições relacionadas à trajetória, incluindo a descrição e ilustração da diferença entre uma trajetória bruta e uma trajetória semântica, além da discussão de uma proposta de modelagem conceitual para trajetórias semânticas que foi definida por Spaccapietra et. al. ( 2009). Na Seção 2.4, são exibidos os conceitos correspondentes a Application Programming Interface (API), explicitando quando, onde e porque se deve utilizar uma API. Por fim, algumas conclusões sobre este capítulo são dadas na Seção 2.5. 2.2. Representação de Dados Espaciais e Temporais Esta seção está estruturada da seguinte forma: a Seção 2.2.1 discorre sobre a representação de dados espaciais, enquanto que a Seção 2.2.2 detalha os aspectos de representação de dados temporais. 2.2.1. Representação de Dados Espaciais Foi definido em Yi, B (2004), que qualquer fenômeno que esteja associado a uma dimensão espacial, é classificado como dado espacial. Estes dados podem ser modelados de forma matricial ou vetorial, onde a representação matricial é geralmente definida por uma matriz de células de tamanhos regulares, e cada célula é respectivamente associada a uma região geográfica. No formato vetorial, os dados espaciais são descritos por uma combinação de formas geométricas (e.g. pontos, linhas e polígonos). A escolha pelo uso do modelo matricial ou vetorial geralmente depende da aplicação. Dados espaciais são informações geo-referenciadas, também denominadas de geoespaciais, que representam a localização de um objeto qualquer no globo terrestre, num determinado período ou instante de tempo (MEDEIROS, et. al., 1996). Costa (2011) reporta que a informação relativa à localização espacial do fenômeno de interesse é usada por procedimentos de 8 pesquisa de análise espacial. Para este trabalho, apenas são considerados dados no formato vetorial, representados por pontos e segmentos de linha. Na representação de dados no formato vetorial, os objetos podem ter múltiplas representações geométricas. Por exemplo, as escolas, os restaurantes e as casas podem ser representados por um ponto ou polígono espacial, dependendo da escala cartográfica escolhida para construção do mapa. Uma linha geoespacial, é composta por um grupo de pontos sequenciados, que consiste na localização espacial do objeto móvel. Por exemplo, rios, ruas e rodovias podem ser simbolizados na superfície terrestre por uma linha. Um polígono pode denotar um estado, país ou continente, e constitui um conjunto de linhas que demarcam topologicamente uma determinada região espacial. Vale ressaltar que a forma geométrica de representação espacial a ser utilizada é decorrente da escala de medida pela qual os dados geoespaciais são definidos (BARROS, R. C., 2012). Em Barros (2012), é dito que dados espaciais são oriundos de fenômenos ocorridos no espaço e representam suas localizações e formatos. Dados espaciais são especializados em dados geográficos que representam a localização de objetos ou fenômenos associados à superfície terrestre, através da referência topológica de um sistema de coordenadas, que pode também ser denotado como um sistema de referência para posicionamento de pontos geoespaciais. Estes sistemas de referência espacial surgiram a partir da criação de uma rede quadriculada de linhas imaginárias verticais e horizontais, que cortam o globo terrestre inteiramente. Cada quadrante desta rede representa um par de coordenadas do tipo latitude e longitude, definidos como um ponto (x, y), sendo “x” correspondente à longitude e “y” à latitude. A Figura 1 exibe a rede geográfica da terra com o sistema de coordenadas (x,y). 9 Figura 1 - Rede geográfica do globo terrestre mostrando o sistema de coordenadas (x,y). Fonte: BARROS, R. C., 2012. O relacionamento espacial é classificado geralmente em três tipos: o relacionamento topológico, que envolve relações geométricas, tais como: adjacência, sobreposição e disjunção; o relacionamento de direção, que é relativo ao sentido, por exemplo, ao norte de, sudeste de; e por fim, o tipo de relacionamento métrico, que se refere às características de medida, tais como: distância menor que 100 metros. Dentre os tipos citados, o mais utilizado e que possui uma maior atenção por parte dos pesquisadores, é o relacionamento topológico (BARROS, R. C., 2012). As informações geo-referenciadas possuem três características principais: (1) temática ou descritiva, que descreve “o que” está associado à localização espacial; (2) espacial, que informa a localização de “onde” ocorreu o fenômeno, associando o fenômeno ocorrido com as propriedades geométricas e/ou topológicas; e por fim, (3) a característica temporal que relata “quando” ocorreu a coleta do fenômeno em uma determinada localização espacial (MEDEIROS, et. al., 1996). 2.2.2. Representação de Dados Temporais Na representação de dados temporais, devem ser considerados os aspectos de ordem, variação e granularidade (DIAS et. al., 2005). Em relação ao aspecto de ordem, o tempo pode ser sucessivo e ordenado de forma linear, como é apresentado na Figura 2. Com isso, um conjunto de dois ou mais instantes de tempo 10 possui uma ordenação sequencial entre eles, como por exemplo: a evolução da idade de uma pessoa. Figura 2 - Tempo consecutivo e linearmente ordenado. Fonte: DIAS et. al., 2005. É possível haver uma ramificação do tempo, referente à possibilidade de fatos ocorridos no passado ou previstos no futuro ocorrerem. Em se tratando do futuro ramificado, pode haver dados históricos que influenciarão um determinado fato no tempo presente, possibilitando alternativas de acontecimentos futuros (Figura 3a). Por exemplo, uma pessoa pode viajar ou comprar um bem material, por ter recebido um dinheiro extra. No passado ramificado, por meio de um conjunto de acontecimentos é possível obter hipóteses sobre a existência de um fato em um determinado tempo futuro (Figura 3b). Por exemplo, uma pessoa viajará porque tirou férias e recebeu um dinheiro extra. Figura 3 - Representação do tempo ramificado. Fonte: DIAS et. al., 2005. A Figura 3a ilustra o tempo ramificado no futuro possuindo diferentes alternativas ou sucessores, enquanto a Figura 3b mostra a ramificação do passado onde existem diferentes hipóteses antecessoras (EDELWEISS, N. e OLIVEIRA, J. P., 1994). Para fatos recorrentes, a representação do tempo é circular, pois os fatos acontecem periodicamente na mesma referência de tempo, ou seja, o evento se 11 repete sempre em uma mesma temporalidade que foi definida anteriormente. Por exemplo, em todo verão, uma determinada loja de vendas de roupas oferece promoção de agasalhos de inverno. Seguindo o mesmo raciocínio, tem-se o fato de que em todo inverno, um grupo de pessoas esquiam na neve. A Figura 4 ilustra as situações citadas. Em outro exemplo, uma pessoa chega ao local de trabalho sempre às 08:00h e sai às 18:00h, durante todos os dias de trabalho. Figura 4 - Representação do tempo circular. - Nenhum evento - Temporada para esquiar | - Promoção de verão | - Nenhum evento Fonte: DIAS et. al., 2005. No aspecto temporal referente à variação, o tempo pode ser representado como contínuo ou discreto. Segundo Dias et. al. (2005), quando se representa o tempo no âmbito computacional, é necessário que o mesmo seja definido de forma discreta, de modo que sua variação segue uma linha referencial de tempo que é composta por sucessivos chronons com duração idêntica. Um Chronon é um intervalo de tempo que não pode ser decomposto (EDELWEISS, N. e OLIVEIRA, J. P., 1994), e que independe da granularidade temporal, por exemplo: ano, mês, dia, hora. Uma sucessão de pontos sequenciados com a variação discreta, linear e finita, representa um eixo temporal (RENOLEN, A. 1997). O Quadro 1 apresenta e descreve as variações do tempo classificando-as em três tipos: (1) Ponto-a-ponto, onde é considerado como valor de tempo válido apenas os pontos temporais que são definidos; (2) Escada, cujo valor de tempo válido permanece até o momento em 12 que outro valor de tempo é definido; (3) e Determinação de uma função, onde é definida uma função de interpolação para identificar valores válidos. Quadro 1 - Classificações da variação do tempo. Classificação Tempo Válido Ponto-a-ponto Conjunto de pontos temporais definidos. Escada Até que outro valor válido é definido. Determinação de uma função Variação por intermédio de uma função. Fonte: RENOLEN, A. 1997. A granularidade temporal está relacionada ao nível de chronon que é estabelecido. Quanto menos níveis de chronons são definidos, maior a sumarização dos dados em relação ao tempo, e por sua vez, quanto mais chronons são definidos, então consequentemente, um maior nível de detalhamento da informação temporal é obtido. Por exemplo, se forem definidos apenas os níveis de granularidade ano e mês para um sistema de rastreamento, o máximo de detalhamento da informação temporal que se pode conseguir é mensal, pois não é possível obter informações temporais diárias, a menos que seja definido o chronon dia. Em Langran (1993), são definidas as formas de representar os atributos temporais: instante, intervalo e elemento temporal. Estes atributos são chamados de elementos primitivos e usados na representação da granularidade de tempo. O Instante é definido como um ponto na linha do tempo cuja duração é infinitamente pequena, e caso sua variação seja discreta, o mesmo pode ser representado por um chronon no eixo temporal. No Quadro 2, são apresentados dois casos como exemplos da utilização do elemento primitivo instante. No primeiro caso, o tempo é discreto com a variação pontual, tendo o ano como representante de um instante de tempo. No segundo caso, o tempo também é discreto, porém com a variação por escada, tendo o chronon mês como representante do instante de tempo. 13 Quadro 2 - Forma de representação do elemento primitivo instante CAMPEÕES DO CAMPEONATO BRASILEIRO de 2000 (Tempo discreto (pontual) - Chronon: ano) Time Pontos Instante Time A 80 2012 Time B 78 2010 Time C 75 2008 EMPREGADOS (Tempo discreto (por escada, intervalo de validade controlada pela aplicação) Chronon: mês) Nome Salário Instante José R$ 600,00 Maio/2010 Maria R$ 630,00 Junho/2011 Francisco R$ 661,50 Julho/2012 Fonte: O Autor. Um intervalo é a agregação de instantes de tempos que equivale à duração do tempo decorrido entre dois instantes, também chamados de pontos. Em se tratando de tempo discreto, um intervalo é representado por um aglomerado finito de chronons consecutivos. Quando se trata do tempo contínuo, os instantes de tempo dentro de um intervalo são infinitos. O Quadro 3 apresenta dois exemplos de uso do elemento primitivo intervalo. O primeiro exemplo corresponde ao salário de empregados que representa o tempo discreto e com variação do tipo escada, e possui o mês como chronon do intervalo. O segundo exemplo é referente à escala de limpeza, com o tempo representado de forma discreta e com variação pontual, e tendo o dia como chronon do intervalo. 14 Quadro 3 - Forma de representação do elemento primitivo intervalo. EMPREGADOS (Tempo Discreto e por escada – Chronon: mês) Nome Salário Início Fim José R$ 600,00 Maio/2009 Maio/2010 José R$ 630,00 Junho/2010 Junho/2011 José R$ 661,50 Julho/2011 Julho/2012 Manoel R$ 700,00 Outubro/2010 Outubro/2011 Manoel R$ 735,00 Novembro/2011 Novembro/2012 ESCALA DE LIMPEZA (Tempo discreto e pontual – Chronon: dia) Nome Local Inicio Fim (Bloco) José A 01/01/2011 03/01/2011 Manoel B 05/01/2011 07/01/2011 José C 04/02/2012 06/02/2012 Fonte: O Autor Um conjunto finito de intervalos de tempo caracteriza o atributo de tempo do tipo elemento temporal, que produz um novo elemento temporal através da disponibilização de operações de conjunto como união, interseção e complemento. As informações espaço-temporais podem ser coletadas a partir de um sistema de coordenadas bidimensional, contendo informações sobre a latitude e longitude de um ponto no plano para um determinado instante ou período de tempo ((x,y),t), ou em três dimensões com a latitude, longitude e altitude associadas ao instante ou período de tempo do registro da localização, que é definido como ((x,y,z),t). Informações espaço-temporais correspondem a onde e quando tal fato aconteceu (SPACCAPIETRA S. e PARENT, C et. al., 2007). 2.3. Representação de Trajetórias Trajetória é definida como um registro da evolução da posição geográfica de um objeto que está se movendo no espaço durante um determinado intervalo de tempo, a fim de atingir algum objetivo (SPACCAPIETRA. et. al., 2007). Também 15 pode ser definida como o caminho percorrido pelo objeto móvel, e cujo percurso é denotado por uma sequência de pontos geométricos representados pelas coordenadas espaço-temporais (x,y,z) coletadas a cada instante ou período de tempo (t), formando a sequencia de informação do tipo ((x,y,z),t). Em uma trajetória, pode haver paradas (stops) e pelo menos um movimento (move) que se estende por toda trajetória ou vários movimentos ao longo dela, que podem ser segmentos de movimentos ou segmentos de subtrajetória. Durante o tempo em que o objeto se movimenta em busca de seu objetivo, ele pode percorrer um ou mais segmentos espaço-temporais, um após o outro (SILVA, M. C. T., 2009). A Figura 5 ilustra esta situação. É importante ressaltar que nem todo movimento ou nem toda parada do objeto deve ser visto como informação relevante para aplicação. A relevância pode ser definida de várias maneiras, por exemplo, por meio do tempo de parada e tempo de movimento. Figura 5 - O caminho percorrido pelo objeto móvel em vários segmentos espaçotemporal. Fonte: SPACCAPIETRA. et. al., 2007. A Figura 5 ilustra as paradas, os instantes de tempo, as trajetórias, o caminho percorrido e os segmentos espaço-temporais, onde (tx) representa o instante de tempo das paradas e (Tx) indica as trajetórias. A linha tracejada representa o caminho percorrido pelo objeto móvel, e os segmentos são representados por cinco trajetórias percorridas ao longo da vida útil do objeto em seu percurso. É possível observar que nem todo intervalo de tempo percorrido é considerado pela aplicação como uma trajetória. Por exemplo, os intervalos de tempo percorridos entre [“t1 e t2”, “t4 e t5”, “t6 e t7”, “t8 e tnow”] não foram classificados como uma trajetória. O Quadro 4 lista algumas das possíveis características 16 pertencentes a uma trajetória que foi especificada em Bogorny (2012). Elas se referem às propriedades que devem ser contempladas na trajetória de um objeto móvel qualquer. Elas também estão associadas à forma geométrica da trajetória, às segmentações relativas às trajetórias, ao comportamento do objeto móvel na trajetória, além de denotarem propriedades correspondentes ao tempo, tais como: duração, arranjo e características dos períodos de execução das trajtórias. Quadro 4 - Características pertencentes a uma trajetória. Característica Descrição Forma Toda trajetória contempla um ou mais tipos de forma geométrica Segmentação Uma trajetória é o segmento espaço-temporal de um percurso percorrido pelo objeto. Duração Toda trajetória possui um tempo de início e fim. Esta característica é relativa ao tempo de duração de uma trajetória Arranjo Ordem dos períodos de tempo. Distância Refere-se ao comprimento/fragmento da trajetória no espaço. Períodos Refere-se à velocidade constante, aceleração, desaceleração. Dinâmica Refere-se ao comportamento do objeto móvel. Características dos Início e término, duração, posições iniciais e finais, períodos velocidades iniciais e finais, média de velocidade, direção. Fonte: BOGORNY, V. 2012. No Quadro 5, são listados e descritos, quatro elementos básicos que uma trajetória deve contemplar, segundo Spaccapietra (SPACCAPIETRA, S., 2009). Uma trajetória deve ser representada por meio desses elementos básicos, que pertencem ao modelo conceitual de paradas e movimentos de uma trajetória que foi apresentado em (SPACCAPIETRA, S., 2008). 17 Característica Atributos/ Quadro 5 - Elementos contidos em uma trajetória. Descrição Refere-se às propriedades de uma trajetória Componentes Links Corresponde aos relacionamentos entre os objetos Restrições Regras, diretrizes definidas em relação ao comportamento ou ao monitoramento dos objetos. Início e fim Diz respeito ao instante de tempo de início e fim de uma parada ou movimento de uma trajetória qualquer, além da demarcação da delimitação temporal da mesma. Fonte: SPACCAPIETRA, S., 2009 Uma trajetória é composta de elementos espaço-temporais. Um movimento é caracterizado por duas paradas consecutivas. Uma parada corresponde ao segmento do percurso do objeto móvel, que contém um intervalo de tempo de parada [TinícioParada , TfimParada] (SPACCAPIETRA et. al., 2007). Uma trajetória pode ser analisada sobre duas perspectivas: Pela visão geométrica, que se refere aos dados espaço-temporais que definem o deslocamento do objeto móvel, e são obtidos por um sistema de coordenadas (latitude, longitude e altitude), indicando a localização do objeto no espaço terrestre, e o (tempo) que corresponde ao momento da coleta de uma determinada coordenada, gerando o conjunto ((x,y,z),t); e Pela visão semântica, que consiste em sequências de paradas e movimentos, as quais podem estar vinculadas às anotações semânticas que dão significados aos trechos da trajetória aos quais pertencem. A união destas duas visões forma uma trajetória do tipo espaço-temporal semântica, onde cada tupla de coordenada da visão geométrica pode ter um significado definido na visão semântica correspondente (ALMEIDA et. al., 2011). 18 2.3.1. Representação de Trajetória Bruta Trajetória bruta é definida por Boulmakoul et. al. (2012) como o registro da informação sobre a localização de um objeto qualquer em movimento em um dado espaço físico e por certo período de tempo. Estes autores também relatam que uma trajetória bruta consiste em uma sequência do registro da localização do objeto móvel, que é obtido por meio da captura de coordenadas geográficas geradas a partir de um dispositivo de monitoramento. Spaccapietra (2009) informa que uma trajetória bruta é apenas o posicionamento físico adquirido através de um dispositivo de monitoramento indicado por uma sequência de pontos. Ele também informa que os dados brutos relativos aos movimentos do objeto móvel necessitam frequentemente de serem limpos antes de serem utilizados em análises espaciais. Pode-se dizer que uma trajetória bruta informa apenas a localização georeferenciada do objeto móvel em relação à terra, pois se trata apenas das informações espaço-temporais correspondentes ao caminho percorrido pelo objeto durante a execução de sua trajetória. A Figura 6 mostra graficamente o percurso realizado por um objeto móvel ao longo de uma trajetória bruta, que é representada por uma sequência de pontos coletados por um dispositivo de localização. Figura 6 - Paradas e movimentos ao longo de uma trajetória bruta Fonte: SPACCAPIETRA, S., 2009. Um problema da trajetória bruta é a sua falta de significado em função dos dados coletados a partir dos dispositivos de localização não terem semântica, tais como: meio de locomoção do objeto móvel, locais de parada e de movimento, objetivos das paradas e dos movimentos (FAJARDO, B. S., 2008). Depois de coletados os dados brutos, é importante que se realize a limpeza dos mesmos, passando os dados por uma etapa de filtragem para remoção de informações incorretas, chamadas de outliers. (SPACCAPIETRA, S., 2009). Esse processo denominado de limpeza dos dados é mostrado na Figura 7. 19 Figura 7 - Processo de limpeza dos dados de uma trajetória bruta. Fonte: SPACCAPIETRA, S., 2009. 2.3.2. Representação de Trajetória Semântica Ao contrário de uma trajetória bruta, as trajetórias semânticas trazem além dos dados de localização, informações semânticas associadas aos mesmos. As informações semânticas agregam valor aos dados coletados pelos dispositivos de localização, pois com os dados semânticos é possível obter informações do tipo: se uma pessoa parou em um local (e.g. restaurante, hotel, casa), quanto tempo passou em um determinado lugar e o que estava fazendo. A utilização de informações semânticas nas trajetórias de objetos móveis vem aumentando de forma linear (SILVA, M. C. T, 2012), desde a representação de modelos conceituais para caracterizar trajetórias como uma sequência de paradas e movimentos (SPACCAPIETRA et. al., 2008), até a definição de segmentações de trajetórias em movimentos, com base em critérios semânticos definidos pela aplicação (YAN et. al., 2011). Na Figura 8, é apresentada uma trajetória enriquecida com informação semântica. Essa trajetória é referente a um passeio na cidade de Paris, na França, onde cada local classificado como parada é atribuído um rótulo que descreve o local de parada do objeto móvel e representa sua respectiva semântica. 20 Figura 8 - Exemplo de uma trajetória semântica. Fonte: SPACCAPIETRA, S., 2009. Nem toda parada é caracterizada como uma parada relevante para a aplicação, ou seja, nem toda parada física é definida como uma parada conceitual considerada relevante para a aplicação (FAJARDO, B. S., 2008). A relevância depende de vários fatores configurados na aplicação, tais como: tempo de parada, local de parada e o horário da parada. As paradas podem assumir diferentes formas geométricas, dependendo do tipo de objeto que se monitora. Por exemplo, no monitoramento de aves, uma parada pode assumir a forma de um polígono (( x 1 , y1 ), ( x2 , y2 ), ... , ( xn , yn )), pois se trata da região de parada das aves, enquanto que no monitoramente de automóveis uma parada pode assumir a forma geométrica de um ponto. Uma vez coletados os dados brutos, algoritmos de descoberta de padrões espaço-temporais (CAO et. al., 2008, GIANNOTTI et. al., 2007, LOY et. al., 2010, LOY et. al., 2011) e de segmentação de trajetórias podem ser aplicados sobre as trajetórias brutas para geração de anotações semânticas de trajetórias ou trajetórias semânticas. A Figura 9 ilustra a reconstrução de uma trajetória semântica, e o processo de limpeza para reconstruí-la (SPACCAPIETRA, S., 2009). 21 Figura 9 - Reconstrução de uma trajetória semântica. Fonte: SPACCAPIETRA, S., 2009. O foco principal da limpeza dos dados de uma trajetória é a remoção dos erros ocasionados pelos dispositivos de localização, como GPS (PARENT et. al., 2013). Dois tipos de erros, que podem ocorrer durante a captura de informações de localização de objetos móveis por dispositivos de GPS, foram identificados em Jun (2006): (1) Erros sistemáticos, devido a limitações do sistema de localização, gerando posições inválidas, devido ao baixo número de satélites encontrados pelo dispositivo; e (2) Erros aleatórios, que estão relacionados à precisão de localização do dispositivo, chegando a mais ou menos 15 metros de diferença do local correto. Com os dados semânticos extraídos, é possível obter conhecimento sobre o deslocamento no espaço de um objeto durante um intervalo de tempo, identificando e rotulando cada ponto visitado e cada trajeto realizado, enriquecendo a trajetória semanticamente. Neste trabalho dissertativo, é considerado que o registro de anotações semânticas sobre as trajetórias brutas foi realizado a priori, por meio de algum algoritmo de análise espacial de trajetórias, pelo qual é possível extrair 22 conhecimento significativo sobre o caminho realizado pelo objeto móvel na trajetória percorrida. As anotações semânticas correspondentes aos seis aspectos de mobilidade definidos em Bogorny et. al. (2013) e Silva, M. C. T. (2009) são discutidas a seguir, e foram usadas no desenvolvimento da API proposta neste documento. São elas: a) Objetivo – Esta anotação pode estar associada a uma parada, movimento ou trajetória, e indica o motivo pelo qual ocorreu a parada e representa a razão do movimento. Pode ocorrer o fato de o objetivo ter a mesma definição da atividade, por exemplo: uma pessoa com o objetivo exercitar-se, correndo diariamente, e para alcançar este objetivo, a pessoa pratica a atividade de correr diariamente. b) Atividade – As atividades estão associadas a um movimento ou a uma parada. No caso de uma parada, o objeto precisa estar em repouso totalmente, pois uma parada pode ser representada por um conjunto de pontos pertencentes a um mesmo local (e.g. restaurante, shopping) ou uma região. Uma parada ou movimento pode estar associado(a) a mais de uma atividade, ou seja, em um mesmo movimento ou parada pode ocorrer de ser realizado duas ou mais atividades, dependendo da modelagem e/ou das restrições especificadas pela aplicação. c) Ambiente – Refere-se às características contextuais referentes aos aspectos naturais, tais como: temperatura, clima, umidade do ar, vento, e pressão atmosférica. Essas informações são dinâmicas, pois durante a execução de uma trajetória, podem sofrer alterações. Esta anotação pode estar associada a uma parada, movimento ou a uma trajetória como todo. d) Evento – Pode estar associado a uma parada ou a um movimento, pela possibilidade de ser a causa de uma parada ou da mudança do movimento do objeto monitorado. Um evento pode ser um show, um jogo de futebol, uma manifestação pública ou outros acontecimentos semelhantes. O interesse em registrar esse tipo de informação é a possibilidade de identificar a causa de uma mudança de comportamento de um objeto monitorado, a fim de obter respostas como: por que tal caminhão mudou de rota? Por que ele ficou tanto tempo parado? Por qual motivo ele atrasou a entrega das mercadorias? 23 e) Transporte – Corresponde ao meio de transporte utilizado no deslocamento do objeto móvel, podendo ocorrer diversos registros deste tipo ao longo de uma mesma trajetória. Este tipo de anotação se associa apenas ao movimento. Os meios de transportes utilizados podem ser de três tipos: terrestres (e.g. carro, bicicleta), aquáticos (e.g. barco, navio) ou aéreos (e.g. helicóptero, avião). f) Comportamento – Com esta anotação é possível registrar informações sobre características referentes ao movimento do objeto no âmbito comportamental. Este tipo de anotação é associado ao movimento quando ocorre uma mudança de comportamento do objeto móvel. Exemplos de casos comportamentais relevantes que podem ocorrer em uma ou mais trajetórias são: fuga, liderança e encontro de objetos móveis, incluindo a movimentação conjunta por certo período de tempo. Alguns destes padrões comportamentais de objetos móveis são detalhados como segue. Em Laube et. al. (2004) foi definida uma coleção de padrões espaçotemporais que se baseiam na direção do movimento e na localização do objeto móvel. Alguns desses padrões são citados em Loy et. al. (2011). O padrão do tipo Flock denota um conjunto de trajetórias de objetos móveis, que tem seus deslocamentos realizados de forma conjunta em uma dada região no espaço. O padrão Leadership requer que as trajetórias estejam dentro de uma determinada distância de tolerância. O padrão Convergence indica que há um conjunto de trajetórias que se encontram em uma determinada região espacial. Existe a proposta do padrão Encounter que se assemelha ao padrão Convergence, mas a diferença é que as trajetórias devem estar juntas no mesmo período de tempo e não numa região espacial. Em Loy et. al. (2011), é relatado o estudo de padrões comportamentais em trajetórias de objetos móveis, que está sendo desenvolvido principalmente sob duas óticas de pesquisa: a semântica, que pretende dar significado aos dados brutos coletados por um dispositivo de monitoramento, tal como GPS, e a geométrica, que refere-se às coordenadas sem praticamente qualquer semântica associada. É importante ressaltar três pontos: (1) nem todo registro de parada, movimento ou trajetória deve ser obrigatoriamente associado a uma anotação 24 semântica; (2) deve ser registrada toda informação espaço-temporal relevante para a aplicação independente de ter ou não uma semântica associada; e (3) não é necessário que uma aplicação use todas às seis anotações semânticas descritas na literatura, pois elas são sugestões de como dar significado às trajetórias brutas geradas por dispositivos de localização de objetos móveis. 2.3.3. Modelagem Conceitual de Trajetória Esta seção está organizada da seguinte forma. Na Seção 2.3.3.1, o modelo conceitual de paradas e movimentos que foi utilizado como base para o desenvolvimento deste trabalho é descrito. Além disso, outras propostas de modelagem conceitual são detalhadas na Seção 2.3.3.2. 2.3.3.1. O Modelo de Paradas e Movimentos Uma trajetória é representada explicitamente pelos componentes: paradas, movimentos, início e fim. Ela é caracterizada por relacionamentos, atributos e restrições. Spaccapietra et. al. (2007) propuseram um modelo conceitual para representação de trajetórias semânticas, no qual são modelados os objetos de paradas e movimentos de uma trajetória, como: o objeto móvel que viaja na trajetória, os relacionamentos entre esses objetos e as restrições especificadas através das cardinalidades relativas aos relacionamentos entre os objetos. A Figura 10 ilustra o modelo definido em Spaccapietra et. al. (2007), o qual pode ser estendido com novos construtores conceituais que reflitam a realidade de uma aplicação de gerenciamento de trajetórias. 25 Figura 10 - Modelagem conceitual de uma trajetória. Fonte: SPACCAPIETRA et. al., 2007. Na Figura 10, o tipo de objeto “Objeto Móvel” é referente ao objeto que realiza uma trajetória, enquanto o objeto “Trajetória” corresponde à trajetória propriamente dita. O ciclo de vida é indicado por um intervalo de tempo denotado pela primeira e pela última parada do objeto móvel na trajetória. O objeto “I. F. P.” é composto por um intervalo de tempo [TinícioParada , TfimParada] e por uma geometria, que é representada geralmente por um ponto. Um I. F. P. é uma parada com um intervalo de tempo. Isso implica em afirmar que cada trajetória tem pelo menos dois componentes de parada. O componente “move” descrito no modelo é caracterizado por duas paradas, com um intervalo de tempo, delimitado pelo [T fimParada e TinícioParada] e uma geometria de ponto com tempo variável. Ambos os componentes de parada e movimento estão associados pelos relacionamentos “de” e “para”, deixando explícito que cada 26 movimento tem seu início e fim, denotados cada um deles por uma parada. Os objetos “local transitado1” e “local transitado2” referem-se ao local percorrido pelo objeto móvel, enquanto os relacionamentos “está em” correspondem às restrições que podem ser modeladas para uma trajetória, tal como: uma trajetória deve sempre estar associada a uma determinada região (i.e. estado, país, cidade). Os objetos descritos no modelo por linhas pontilhadas são opcionais. A Figura 11 ilustra um exemplo de uso do modelo proposto por Spaccapietra et. al. (2009) em uma aplicação para monitoramento de pássaros. Figura 11 - Mapeamento do modelo de paradas e movimentos para uma aplicação de monitoramento de pássaro. Fonte: Adaptado de SPACCAPIETRA, S., 2009. A Figura 11 exibe o mapeamento do modelo conceitual de paradas e movimentos de trajetória, para uma aplicação de monitoramento de pássaros. Este mapeamento é mostrado pelas linhas tracejadas. A entidade Objeto Móvel 27 corresponde ao pássaro. A entidade Trajetória é transcrita com o nome correspondente ao tipo de trajetória gerenciada pela aplicação, por exemplo: migração, passeio, dentre outras. A entidade I.F.P. corresponde ao tempo inicial e final de uma parada, e é mapeada para o relacionamento “parou em”. A entidade Local transitado1 é mapeada para região espacial definida pela aplicação (i.e. “País”). Com isso, é possível identificar o local de parada de cada pássaro monitorado. Para alcançar os objetivos desta dissertação, o modelo conceitual proposto em Spaccapietra et. al. (2009) ilustrado na Figura 10, foi tomado como base para criação dos tipos de dados brutos e semânticos que serão descritos no Capítulo 4. Estes tipos são capazes de representar na base de dados, as trajetórias semânticas e as trajetórias brutas. A escolha pelo modelo conceitual proposto em Spaccapietra et. al. (2009) para o desenvolvimento deste trabalho se deve ao fato do mesmo ter sido usado como base na maioria dos demais modelos conceituais da área, por contemplar os elementos básicos para representação de uma trajetória semântica, tais como: parada, movimento, restrições, relacionamento e o objeto móvel, e ser classificado pelos pesquisadores da área, como um dos principais modelos conceituais para representação de trajetória semântica (BARIS et. al., 2008, BOGORNY et. al., 2013, VAISMAN et. al., 2007). 2.3.3.2. Outros Modelos Conceituais Vaisman et. al. (2007) propuseram um modelo conceitual de enriquecimento de trajetórias com informação semântica, e especificaram uma fase de préprocessamento de dados para associar informação semântica às trajetórias, com a finalidade de facilitar a análise de dados de trajetória em aplicações de domínios distintos. O modelo desenvolvido por eles é genérico, não sendo restrito a uma aplicação específica. Eles também desenvolveram um algoritmo que calcula as partes importantes de uma dada trajetória (e. g. paradas e movimentos), mostrando que se o modelo proposto for usado, a complexidade da consulta para a análise semântica de trajetórias é reduzida de forma significativa em comparação à análise sobre os dados brutos de trajetórias. Em Baris et. al. (2008) foi proposto um modelo conceitual para anotação semântica de trajetórias geradas por dispositivos de GPS. Ele é composto de dois 28 tipos de elementos semânticos: episódios que correspondem à composição de uma trajetória, e viagens que consiste em uma sequência de episódios que pertencem a um objetivo comum. Para o desenvolvimento deste modelo, foram especificados quatro tipos de anotação semântica, como segue: atividade, transporte, parada e objetivo, permitindo agregar informação sobre o deslocamento do objeto móvel e de contabilidade da trajetória. Bogorny et. al. (2013) desenvolveram um modelo conceitual de dados para trajetória semântica de objetos móveis, intitulado de Constante. O modelo é dividido em duas partes: a primeira corresponde às informações relacionadas ao objeto móvel, ao dispositivo de rastreamento, à trajetória semântica, às subtrajetórias (segmentos da trajetória) semânticas, aos pontos semânticos, ao meio ambiente e aos possíveis eventos. A segunda parte é composta pelo objetivo semântico da trajetória, pelas subtrajetórias semânticas, pelo meio de transporte e por fim, pelo comportamento das subtrajetórias semânticas. Neste modelo, é utilizado fortemente o conceito de subtrajetória. É sugerida a utilização de métodos de mineração de dados para instanciar os elementos referentes à segunda parte do modelo Constante. Para mineração de dados de trajetória podem ser utilizados os métodos implementados por Lee et. al. (2008), Giannotti et. al. (2007), Cao (2007), Li et. al. (2010), Loy et. al. (2011), Nanni et. al. (2008). 2.4. API Uma API é definida por Ferreira (2003) como um conjunto de funções que facilitam a troca de mensagens ou dados entre dois ou mais sistemas distintos. Fraga et. al. (2011) definem API como uma interface projetada por um sistema, com o objetivo de permitir que outros sistemas possam interagir entre si, possibilitando assim, a sua comunicação. Pode-se definir API como uma interface de comunicação, que fornece um conjunto de operações encapsuladas e acessíveis por meio de protocolos pré-definidos, e cujo usuário deve conhecer a assinatura de suas funções. O uso de API tem o objetivo de mitigar a complexidade e aumentar o reuso de procedimentos, deixando a codificação mais simples para o desenvolvedor. Ou seja, uma API é uma camada de software que é utilizada como meio de desenvolvimento, fazendo parte do processo de implementação de outras aplicações, e não sendo a aplicação final. O intuito de se criar uma API é facilitar o 29 desenvolvimento de aplicações e não de ser a aplicação. O conceito de API se aproxima mais de bibliotecas computacionais, que são arquivos que contêm um conjunto de funções que são chamadas quando necessário. Quando se pretende desenvolver um sistema de informação, dependendo de sua natureza, ou da natureza do problema que se busca resolver, a sua implementação pode se tornar complexa. Geralmente, API são usadas para facilitar o desenvolvimento de software, onde o desenvolvedor se abstrai de grande parte da complexidade da codificação. Isto ocorre porque ele precisa saber apenas a assinatura das funções disponibilizadas, tais como: tipo de retorno, nome da função e informações referentes aos parâmetros da função chamada. O desenvolvedor se abstrai da codificação das funções implementadas na API, pois as mesmas não ficam explícitas e não é necessário que o usuário saiba como determinada função foi implementada. O uso de uma API é interessante pelo fato da mesma simplificar o desenvolvimento de uma aplicação computacional. Uma API pode ser estendida e/ou até mesmo refatorada, para melhor atender às necessidades de desenvolvimento de uma determinada aplicação, criando novas funcionalidades e classes. A facilidade do uso de API depende do nível de conhecimento do desenvolvedor, pois diferentemente da codificação, a documentação sobre o uso de API é disponibilizada Desenvolvimento exemplificam ao Integrado desenvolvedor conhecido superficialmente como por meio popularmente instanciar um de um Ambiente como recurso IDE. As de IDE disponibilizado implicitamente em uma API, informando, por exemplo, os nomes e tipos dos parâmetros da função instanciada, além da ordem de precedência dos mesmos. Isso é disponibilizado a partir da documentação criada na implementação da API para cada recurso disponibilizado por ela. Para simplificar o uso de trajetórias semânticas em aplicações de bancos de dados com tipos nativos ou estendidos, podem ser utilizadas API. Elas podem ser desenvolvidas com o intuito de abstrair do usuário, a complexidade na programação da codificação das operações de acesso ao sistema de banco de dados. A API é um paradigma de desenvolvimento muito utilizado atualmente. Isto tem ocorrido porque 30 ela reduz o tempo de implementação da aplicação, ocultando a complexidade, dentre outros benefícios que a mesma oferece. 2.5. Conclusões Com os dados espaço-temporais coletados a partir de dispositivos de rastreamento, tal como GPS, métodos de segmentação de trajetórias e algoritmos de descoberta de padrões espaço-temporais podem ser usados para extração de conhecimento. A partir deste conhecimento, anotações semânticas são vinculadas às trajetórias brutas de objetos móveis. Com isso, é possível saber, por exemplo, a descrição do local, quando e porque o objeto móvel parou ou se movimentou no espaço aéreo, terrestre ou aquático. Pode-se afirmar que uma trajetória é composta basicamente de informação espaço-temporal, denominada de trajetória bruta, que pode ser estendida com informações do objetivo do movimento realizado pelo objeto móvel, do meio de transporte usado pelo objeto móvel durante o movimento, dentre outras, para se tornar uma trajetória semântica. Isso propicia um enriquecimento semântico aos dados coletados por um determinado dispositivo de monitoramento. Para obter elementos que representem as paradas e os movimentos dos objetos móveis, foram elaborados por pesquisadores da área, alguns métodos de análise de trajetória, tais como: CB-SmoT (PALMA et. al., 2008), DB-SmoT (ROCHA et. al., 2010) e IB-SmoT (ALVARES et. al., 2007) que são capazes de extrair informações sobre as paradas e os movimentos realizados pelo objeto móvel na trajetória (SILVA, M. C. T., 2012). As definições de novos algoritmos de análise de trajetória não fazem parte do escopo do trabalho aqui descrito, porém sempre poderão ser usadas novas técnicas de análise de dados de trajetórias, como por exemplo, novas técnicas de clusterização de dados espaço-temporais. O uso destas novas técnicas não invalida os resultados obtidos nesta pesquisa e pelo contrário, reforçam a importância de se ter um mecanismo de geração de trajetórias semânticas em aplicações de banco de dados. Este mecanismo pode ser disponibilizado por meio do desenvolvimento de uma API para auxiliar o desenvolvedor na construção de aplicações de BD de trajetórias semânticas. 31 No próximo capítulo, são abordados os trabalhos correlatos, apresentando um comparativo entre os trabalhos encontrados na literatura que abordam as API criadas para manipulação de dados de trajetórias. Capítulo 3 Trabalhos Correlatos Este capítulo discorre sobre algumas API para manipulação de dados de trajetórias, e exibe um quadro comparativo entre tais API e a API proposta neste trabalho dissertativo. Além disso, é discutida uma extensão nativa do SQL para representação de trajetórias semânticas em BD. 33 3.1. Introdução Neste capítulo, são apresentadas propostas correlatas ao trabalho proposto nesta dissertação. Ele discute algumas API desenvolvidas para manipulação de dados de trajetórias, e discorre sobre uma extensão para representação de trajetórias semânticas em BD. O mesmo está organizado como segue. A Seção 3.2 apresenta duas API. Uma delas foi desenvolvida para permitir operações espaciais em BD geográficos, que é denominada de TerraLib e consiste em uma biblioteca de classes estruturadas em três partes: Kernel, que possui classes básicas para representação de dados geográficos, Drivers que corresponde às classes específicas para cada SGBD, e Functions, que contém os algoritmos que utilizam as estruturas básicas do Kernel. A outra é a API ArcSDE, que corresponde a uma interface entre o ArcGIS e diferentes SGBD para manipulação de dados geográficos. Ambas são usadas como interface para a construção de aplicativos geográficos. Posteriormente, é apresentado na Seção 3.3, um comparativo entre as API TerraLib, ArcSDE e a API DBST. Na Seção 3.4, é abordado o trabalho de Fajardo (2008) que tem a finalidade de representar trajetórias semânticas em BD. Em seguida, é apresentada na Seção 3.5, uma análise comparativa entre o trabalho de Fajardo e este trabalho dissertativo. Esta análise comparativa é referente à extensão do SGBD para representar trajetórias semânticas em BD, que foi realizada por ambos os trabalhos. Por fim, são exibidas as conclusões deste capítulo na Seção 3.6. 3.2. API para Dados Geográficos Nesta seção, são discutidas duas API: uma desenvolvida para permitir operações espaciais em BD geográficos e descrita na Seção 3.2.1, que consiste em uma biblioteca de classes usada para a construção de aplicativos geográficos. A outra é exibida na Seção 3.2.2, que corresponde a uma biblioteca de funções para armazenar, manipular e gerenciar dados geográficos através da provsão de uma interface entre o ArcGIS e os SGBD considerados pela mesma. 34 3.2.1. A API TerraLib A API TerraLib foi desenvolvida a partir de um projeto de software livre, promovendo o trabalho conjunto entre as comunidades de desenvolvimento de aplicações geográficas, disponibilizando funções para prototipação de novas técnicas, e facilitando o desenvolvimento de aplicações espaço-temporais colaborativas (VINHAS, L. e FERREIRA, K. R., 2005). Ela consiste em uma biblioteca de classes, que auxilia na construção de aplicativos geográficos. Esta biblioteca foi desenvolvida e disponibilizada na linguagem de programação C++ (MAIA, R. 2004), e tem código fonte aberto, sendo assim, distribuída como software livre. Além disso, ela disponibiliza operações para decodificação de dados geográficos, criação de estruturas de dados espaçotemporais, e para processamento de algoritmos de análise espacial. Ela tem suporte a projeções cartográficas, operações espaciais, além de proporcionar o armazenamento e a recuperação de dados espaço-temporais em BD objetorelacional (VINHAS, L. e FERREIRA, K. R., 2005). A TerraLib permite a execução de operações espaciais mas provê pouca flexibilidade ao desenvolvedor para criar suas próprias funções, ficando assim ele limitado às funcionalidades disponibilizadas pela API em questão. A mesma tem suporte a diferentes tipos de SGBD com ou sem extensão espacial. O esquema de dados criado pelo uso desta API é o lógico, permitindo a representação de dados geográficos e espaço-temporais em um SGBD. Ela possui uma arquitetura integrada, disponibilizando tanto operações sobre dados geográficos armazenados em SGBD relacionais (SGBDR), quanto operações para dados mantidos em SDBD objeto-relacionais (SGBDOR) (FERREIRA, K. R., 2003). 3.2.2. A API ArcSDE ArcSDE é uma interface de comunicação com sistemas de BD espaciais, produzida e comercializada pela instituição ESRI, permitindo a utilização de SGBD relacionais para o gerenciamento de dados espaciais. Ela foi desenvolvida para armazenar, manipular e gerenciar dados geo-referenciados a partir de um dos seguintes SGBD: IBM DB2 (STOIZE, K. 2005), IBM Informix (ANDERSON et. al., 2001), Microsoft SQL Server (MISTRY, R. e MISNER, S. 2010), Oracle (MURRAY et. 35 al., 2006) e mais recentemente PostgreSQL (ESRI, 2004). Ela fornece uma interface entre os componentes do ArcGIS (MAHER, M M. 2010) (ArcInfo, ArcEditor, ArcView GIS e ArcIMS) e o SGBD espacial usado. A mesma também possibilita a construção de aplicações personalizadas a partir das API ArcSDE C e ArcSDE Java (ESRI, 2004), bem como ArcGIS, ArcObjects e ArcIMS (FERREIRA, K. R., 2003). Dentre suas principais funcionalidades, pode-se destacar: (1) a definição de como o dado espacial é armazenado e gerenciado pelo SGBD; (2) suporte para versionamento e arquivamento; e (3) a provisão de tipos de dados espaciais para os SGBD Oracle e SQL Server, definidos de acordo com os padrões ISO e OGC (ESRI, 2004). ArcSDE tem o código fonte fechado, disponibilizando o acesso de suas funcionalidades customizadas a partir de duas API: uma desenvolvida na linguagem de programação C; e outra na linguagem JAVA. Ferreira, K. R. (2003) relata que o ArcSDE possui dois tipos de API para realização de operações espaciais: (1) uma que disponibiliza funções que executam operações em memória e (2) a SQL API que foi projetada para permitir a execução de operações em SQL e contém operadores e funções espaciais para os sistemas de banco de dados Informix Spatial DataBlade e o IBM DB2 Spatial Extender. 3.3. Comparação entre API DBST x TerraLib x ArcSDE Para um melhor entendimento sobre as diferenças e semelhanças entre as API correlatas e a API DBST proposta neste trabalho, é apresentada no Quadro 6, uma análise comparativa entre as três API: API DBST, TerraLib e ArcSDE. As API em questão foram comparadas a partir de cinco critérios: (1) linguagem de programação disponibilizada para os desenvolvedores e usuários da API; (2) o tipo de código da API (aberto ou fechado); (3) SGBD permitidos; (4) flexibilidade na criação de funções customizadas pelo o usuário; e por fim (5) o tipo de dado manipulado pela API. 36 Quadro 6 - Quadro comparativo entre as APIs: DBST, TerraLib e ArcSDE. Critério Linguagem de API DBST TerraLib ArcDSE Java C++ C e Java Aberto Aberto Fechado PostgreSQL/ Diferentes tipos Diferentes tipos Postgis de SGBD de SGBD Alta Baixa Alta Espaço-temporal Espaço-temporal Espaço-temporal e e Semântico e Geográfico Geográfico programação Tipo de código Suporte ao SGBD Flexibilidade de criar funções customizadas Tipo de dado manipulado No Quadro 6, é possível verificar que a API DBST possui a flexibilidade de criação de funções customizadas. Para isso, foram especificadas classes que podem ser utilizadas nas customizações realizadas pelo usuário no desenvolvimento de suas aplicações. O mesmo tem a flexibilidade de personalizar suas próprias funções. Além disso, foram desenvolvidas funções com finalidades específicas, onde o usuário tem pouca flexibilidade para personalizar suas próprias funções. A API DBST é flexível para o desenvolvedor que a utiliza, porque com ela, é possível manipular dois tipos de dados: o espaço-temporal e o semântico. Porém, o tipo de dado principal da API DBST é o semântico, pois a mesma foi desenvolvida para facilitar a manipulação de trajetórias semânticas, mantidas pelo sistema de BD PostgreSQL/Postgis. 3.4. Representação de Trajetórias Semânticas em BD Na Seção 3.4.1, é descrito o trabalho de Fajardo (2008) que provê a representação de trajetórias semânticas em BD, consiste em uma extensão nativa do SGBD SQL Server, e define um processo para realização de descoberta de conhecimentos em trajetórias brutas. 37 3.4.1. Proposta de Fajardo Em Fajardo (2008), é detalhada uma extensão nativa do SGBD SQL Server para representação de trajetórias semânticas. As trajetórias são representadas por paradas e movimentos. O objetivo final é a representação de trajetórias semânticas em BD. O processo para representação das trajetórias é composto de três etapas: (1) pré-processamento, que é responsável pelo tratamento, limpeza e redução do volume de dados; (2) extração de padrões sequenciais, que está relacionada aos recursos de mineração de dados utilizados; e (3) pós-processamento, que visa o refinamento dos resultados através dos padrões armazenados no próprio banco de dados, depois de passar pelas etapas anteriores. Todo processo é baseado numa árvore de prefixo para estruturação das sequências de fatos, e para a definição de relacionamentos entre pontos no espaço e no tempo. Diferentes granularidades espaciais e temporais podem ser definidas pelo usuário, além do mesmo poder definir os aspectos que devem ser considerados no processo de descoberta de conhecimento através dos dados espaço-temporais. A partir destes parâmetros especificados pelo usuário juntamente com os dados brutos coletados, é que se inicia a extração dos padrões referentes às trajetórias. No processo de descoberta de conhecimento sobre dados espaço-temporais, um BD contendo as trajetórias brutas (TB) passa por um pré-processamento, tendo os dados sobrepostos com um BD geográfico (BDG), obtendo como resultado as trajetórias com semânticas (TS). Essas TS passam por uma fase de transformação, na qual são aplicadas as granularidades espaço-temporais definidas pelos usuários. Todos os padrões encontrados são armazenados em um BD para serem usados em futuras consultas. Depois de armazenados, eles passam pela etapa de pósprocessamento, onde é realizado o refinamento dos resultados. Todo esse processo pode ser repetido inúmeras vezes, até que o resultado obtido seja satisfatório para o usuário. A Figura 12 ilustra todo o processo de descoberta do conhecimento a partir dos dados espaço-temporais. 38 Figura 12 - Processo de descoberta do conhecimento a partir de dados espaçostemporais Fonte: FAJARDO, B. S., 2008. Em Fajardo (2008), não foram criados tipos de dados espaço-temporais ou tipos de trajetórias semânticas para qualquer SGBD. No entanto, é discutido um algoritmo escrito em SQL capaz de efetuar as diferentes etapas do processo de descoberta de conhecimento sobre trajetórias. Neste caso, apenas a anotação semântica referente ao movimento e à parada de uma determinada trajetória são armazenados no BD. Em consultas posteriores, por exemplo, a descrição do local de parada e o trajeto do movimento executado pelo objeto móvel podem ser obtidos da base de dados. Na etapa de pré-processamento ocorre uma redução no volume dos dados, que pode ocasionar em perdas de informações espaço-temporais relevantes, referentes ao tráfego do objeto móvel em uma dada trajetória. Os dados brutos são usados apenas para detectar padrões geométricos com base na sobreposição com alguma camada de informação geográfica. Exemplos destes padrões é a definição de áreas densas ou de similaridade entre trajetórias. 3.5. Comparação entre API DBST e o trabalho de Fajardo Para entender as diferenças e semelhanças entre o trabalho proposto em Fajardo (2008) e este trabalho dissertativo, é exibida no Quadro 7, uma análise comparativa entre eles. Para esta comparação, foram definidos quatro critérios: (1) SGBD permitidos; (2) o tipo de informação semântica armazenada no BD; (3) a criação de tipos de dados semânticos para representação de trajetórias semânticas (TS), e por fim, (4) a extração de informações semânticas. 39 Quadro 7 - Quadro comparativo entre a Proposta de Fajardo (FAJARDO, B. S., 2008) e a API DBST. Critério Proposta de Fajardo Proposta deste trabalho SGBD escolhido SQL Server PostgreSQL/Postgis Paradas e Movimentos Paradas, Movimentos e Tipo de informação semântica armazenada em BD Anotações Semânticas Criação de tipos de dados para Não permite Permite Permite Não permite representação de TS Extração de informações semânticas Fonte: O Autor. No Quadro 7, é informado que em ambas as propostas, foi desenvolvido um trabalho para um SGBD específico. Porém, o tipo de informação semântica usada difere, pois em Fajardo (2008), são utilizadas as informações referentes às paradas e movimentos, capturadas pelo deslocamento do objeto móvel na execução de uma dada trajetória. Por sua vez, a extensão proposta nesta dissertação foi desenvolvida para o SGBD PostgreSQL/Postgis, com o objetivo de estender este SGBD com tipos de dados que permitam a representação de trajetórias semânticas. Os tipos de dados especificados pertencem a três categorias: Episódio que corresponde às paradas e movimentos, Trajetória que é referente à Trajetória Semântica e Bruta, e Anotação Semântica que contempla seis informações sobre a mobilidade de objetos móveis: atividade, comportamento, evento, meio de transporte, objetivo e ambiente. Os tipos de dados estendidos por este trabalho atende a diversos tipos de objetos móveis, e podem ser utilizados em aplicações de naturezas distintas. Os episódios (paradas e movimentos) podem ser identificados por intermédio da aplicação de algoritmos capazes de extrair informações sobre o deslocamento do objeto móvel durante uma dada trajetória (e. g. CB-SmoT, DB-SmoT e IB-SmoT), dos dados espaço-temporais capturados por dispositivos de rastreamento. A forma como essas informações são adquiridas e aferidas depende do algoritmo utilizado 40 durante o processo de extração. É importante destacar que este trabalho tem como proposta, a criação de tipos de dados que representam trajetórias semânticas em um SGBD. Estes tipos estão descritos no Capítulo 2. A proposta também inclui o desenvolvimento de uma API com a finalidade de facilitar o uso desses tipos de dados. No entanto, a extração de informações semânticas a partir de trajetórias brutas não faz parte do escopo definido para este trabalho dissertativo. Em Fajardo (2008), foi desenvolvido um algoritmo classificado por ele como uma extensão nativa do SGBD SQL Server, com a finalidade de representar as trajetórias semânticas, identificando as paradas e os movimentos através dos dados espaço-temporais de uma trajetória bruta qualquer. Este algoritmo efetua o cruzamento de dados brutos com os dados contidos em um BD geográfico, para obter como resultado as trajetórias semânticas. Como as informações semânticas são extraídas apenas de BD de contexto geográfico, é possível obter significados sobre os locais de paradas ou sobre o tráfego do objeto monitorado, tais como: qual a rua que o objeto móvel transitou e em que lugar o objeto móvel parou, dentre outros. Mas não é possível obter informações como: por que o objeto móvel parou, o que o levou a transitar em tal rua, por que o mesmo mudou de percurso, por que se atrasou, dentre outras informações. A extensão proposta por Fajardo (2008) tem como finalidade a representação de trajetória semântica. Para isso, foi desenvolvido um algoritmo para o SGBD SQL Server para realizar o processo de descoberta de conhecimento de trajetórias semânticas a partir dos dados brutos gerados por dispositivos GPS, identificando as paradas e os movimentos de uma dada trajetória bruta de forma automática. As trajetórias semânticas são armazenadas em uma base de dados para possibilitar a execução de consultas futuras sobre elas. O trabalho desenvolvido por Fajardo (2008) apenas permite a representação de paradas e movimentos de objetos móveis, enquanto este trabalho dissertativo possibilita a criação de tipos de dados para representação de trajetórias semânticas, relativas tanto às paradas e aos movimentos, quanto às anotações semânticas (atividade, evento, ambiente, objetivo, meio de transporte e comportamento). Para facilitar a manipulação dos tipos de dados propostos neste trabalho, foi desenvolvida a API DBST. 41 3.6. Conclusões A API TerraLib corresponde a uma biblioteca de classes com a finalidade de construir aplicativos geográficos, e é estruturada em três partes: Kernel, Drivers e Functions, com suporte a SGBD relacionais e objeto-relacionais (VINHAS, L. e FERREIRA, K. R., 2005 e FERREIRA, K. R., 2003). Existe também uma API que consiste em uma interface de comunicação com sistemas de BD espaciais, denominada de ArcSDE, que permite a utilização de dados espaciais em SGBD (ESRI, 2004). O trabalho proposto por Fajardo (2008) consiste em uma extensão nativa do SGBD SQL Server para descoberta de conhecimento a partir de dados de trajetórias brutas. Para isso, é realizado o cruzamento entre os dados espaçotemporais e os geográficos, e são obtidos como resultados, os padrões de trajetórias semânticas, identificando suas paradas e seus movimentos. Tanto as API TerraLib e ArcSDE quanto a API DBSTprovêem operações de manipulação de dados espaciais mantidos por sistemas de BD, as quais auxiliam no desenvolvimento de aplicações georeferenciadas. No entanto, a API DBST tem como principal diferença, a sua capacidade de representação de trajetórias semânticas e a criação automática de novos tipos de dados para o SGBD Postgres/Postgis. Esses tipos são utilizados como meio de armazenamento de informações sobre trajetórias semânticas. O trabalho proposto por Fajardo (2008) é semelhante ao trabalho aqui desenvolvido, porque ambos representam trajetórias semânticas em BD. Porém, a proposta de Fajardo tem a capacidade de extração de informações semânticas de trajetórias de objetos móveis, mas não permite a criação de tipos de dados capazes de representar trajetórias semânticas de objetos móveis em banco de dados, tal como a API DBST. Além disso, não se tem conhecimento sobre existência de trabalhos na literatura que permitam a criação de tipos de trajetórias semânticas para o SGBD Postgres/Postigis. No capítulo seguinte, é detalhada a API DBST em conjunto com os tipos de dados criados para representar trajetórias semânticas em BD. Além disso, são exibidos dois diagramas de componentes da API DBST: (1) um deles descreve a estrutura de pacotes, mostrando como a API proposta é composta dos novos tipos de dados e (2) um diagrama de classes, exibindo os relacionamentos, os tipos, as funções e as restrinções de instanciação. No próximo capítulo, também é 42 apresentado um cenário exibindo a aplicação de cada tipo de dado manipulado pela API proposta. Capítulo 4 A API DBST (DataBase of Semantic Trajectories) Este capítulo descreve os tipos de dados especificados para a API DBST que é proposta nesta dissertação. Ele descreve três categorias de tipos de dados: (i) Episódios: que representam paradas e movimentos, (ii) Trajetória: que modelam trajetórias semânticas e brutas, e (iii) Anotações Semânticas: que representam outras características do deslocamento do objeto móvel, incluindo: a atividade, o comportamento, o evento,o meio de transporte, o objetivo e o ambiente. Também é descrito um cenário onde é mostrada a aplicação de cada tipo de dado criado para a API DBST, além de dois diagramas de classe da API em questão. 44 4.1. Introdução Neste capítulo, é apresentada a API DBST (DataBase of Semantic Trajectories) proposta neste trabalho dissertativo. Neste capítulo, são descritos os tipos de dados criados para estender o SGBD PostgreSQL/Postgis que permitirão o desenvolvimento de aplicações de naturezas distintas, que representem e manipulem trajetórias semânticas de objetos móveis. Este capítulo está estruturado da seguinte forma: na Seção 4.2, é exibida a descrição da API DBST, incluindo as definições dos tipos de dados semânticos que foram criados para o SGBD PostgreSQL. A Seção 4.3 contém a implementação da API DBST conjunta com os tipos de dados semânticos. Por fim, são listadas algumas conclusões deste capítulo na Seção 4.4. Para um melhor entendimento dos tipos de dados sugeridos nesta dissertação, foi criado um cenário que é usado como exemplo ilustrativo, no qual é mostrada a aplicação de cada tipo de dado proposto que pode ser manipulado pela API DBST. Para isso, é descrito o cenário onde o monitoramento de objetos móveis é feito a partir do GPS de cada atleta participante de uma competição de corrida (e.g. São Silvestre). Nesta competição, os atletas deverão executar uma trajetória de 30 km, e poderão realizar até três paradas para se recomporem. Neste cenário, os objetos móveis são os atletas participantes da corrida. O objetivo deste cenário é ilustrar os dados extraídos do GPS e mostrar como eles podem ser enriquecidos com semântica para serem inseridos no PostgreSQL, por meio da API DBST proposta nesta dissertação. 4.2. Tipos de Dados da API DBST Nesta seção são apresentas as três categorias de tipos de dados: Episódios, Trajetória e Anotação Semântica propostas neste trabalho e contidas na API DBST. Na Seção 4.2.1, são descritos os tipos de dados referentes aos episódios de paradas e movimentos. Na Seção 4.2.2, é exibida uma discussão sobre os tipos de dados de trajetórias, enquanto na Seção 4.2.3, são descritos os tipos de dados relativos às anotações semânticas. Em todas estas seções é apresentado um cenário mostrando a aplicação dos tipos. 45 4.2.1. Dados de Paradas e Movimentos Estes tipos de dados são responsáveis por armazenar informações relacionadas às paradas e aos movimentos do objeto móvel, que ocorrem durante a execução de uma dada trajetória. Um conjunto de paradas e movimentos faz parte da composição de uma trajetória qualquer. É importante notar, que a duração do deslocamento do objeto móvel durante a execução da trajetória é correspondente ao instante de tempo contido entre duas instâncias de paradas, a primeira parada [TinícioParada] e o última [TfimParada]. As duas paradas são interligadas por um ou mais movimentos e paradas. Um movimento é composto por duas paradas consecutivas (SPACCAPIETRA et. al., 2007). Para representar os dados referentes aos movimentos dos objetos móveis que compõem uma determinada trajetória, foi especificado o tipo MoveType que encapsula quatro atributos: description, speedAverage, beginIntervalTime e EndIntervalTime. No Quadro 8, é apresentada a descrição de todos estes atributos que compõem o tipo MoveType. Quadro 8 - Tipo de dado que representa os movimentos de objetos móveis MoveType Atributos Description Tipo Descrição String Texto descritivo de um determinado movimento. SpeedAverage Float Velocidade média atingida em um dado movimento realizado pelo objeto. BeginIntervalTime Timestamp Data e hora do início do registro do movimento. EndIntervalTime Timestamp Data e hora do término do registro do movimento. Fonte: O Autor Aplicação do tipo MoveType: Os atletas iniciam a competição partindo de uma parada denominada de linha de largada. Neste momento, é registrado o tempo inicial da duração do movimento realizado por eles na competição. Quando eles 46 realizam suas próximas paradas durante ou no fim da competição, é registrado o término do movimento. Desta maneira, é definida a duração temporal do movimento realizado pelos atletas. Percebe-se que neste cenário, o atleta poderá realizar até quatro movimentos, pois de acordo com as regras da competição, é prevista a ocorrência de três paradas que segmentam a trajetória dos atletas da competição em quatro trechos, (1) da largada à primeira parada para os atletas se recomporem; (2) saindo da primeira parada onde os atletas se recompuseram, chegando à segunda; (3) partindo da segunda parada e chegando à terceira parada; e por fim (4) partindo da terceira parada até a linha de chegada. É importante destacar que o movimento se caracteriza por duas paradas consecutivas. No tipo de dado MoveType, é armazenado cada movimento realizado pelos atletas durante a competição. Neste tipo, é registrada a descrição do movimento executado, a velocidade média atingida por cada atleta durante a execução da trajetória na competição e o tempo de duração de cada movimento realizado pelos mesmos. Para representar os dados referentes às paradas dos objetos móveis que executam uma trajetória qualquer, foi especificado o tipo StopType descrito no Quadro 9. Este tipo armazena os dados espaço-temporais do objeto rastreado. Com relação ao atributo localização contido no tipo em questão, o mesmo pode armazenar informações referentes a quaisquer tipos geométricos que seja reconhecido pelo SGBD PostgreSQL/Postgis. Esta flexibilidade faz com que o desenvolvedor da aplicação possa escolher o tipo de geometria que melhor satisfaça seus requisitos dentre o conjunto de tipos geométricos do PostgreSQL/Postgis. Por meio deste tipo, é possível obter a localização do objeto móvel através do atributo localização que contém as coordenadas espaciais coletadas em um instante ou período de tempo. A localização do objeto móvel pode ser representada por diversas formas geométricas (e.g. ponto, polígono, Multiponto, MultiPoligono). O tipo StopType é formado por cinco beginIntervalTime e EndIntervalTime. atributos: description, localization, srid, 47 Quadro 9 - Tipo de dado que representa as paradas de objetos móveis. StopType Atributos description Tipos Descrição String Texto descritivo de uma determinada parada do percurso do objeto móvel. localization PGgeometry Localização espaço-temporal da parada do objeto móvel. Srid beginIntervalTime Int Número referencial do GPS. Timestamp Data e hora do início do registro da parada. EndIntervalTime TimeStamp Data e hora do término do registro da parada Fonte: O Autor Aplicação do tipo de dado StopType: Durante a competição, os atletas podem realizar até cinco paradas que são previstas pelo comitê organizacional da competição, como segue: uma parada relativa à largada, três paradas para os atletas se recomporem, e a última parada que configura o fim da competição. Com o tipo de dado StopType, cada parada realizada pelo atleta durante a competição é representada pela descrição e pela localização espacial do local da parada. Além disso, são armazenados o tempo de duração da parada e a referência do dispositivo de localização espacial do atleta. Com estas informações é possível saber onde e em que momento da competição o atleta parou, e quanto tempo durou tal parada. 4.2.2. Dados de Trajetórias Utilizando os tipos de dados descritos nesta seção, é possível armazenar informações de uma trajetória bruta ou semântica em um único tipo de dado, o qual é composto de paradas e movimentos, que por sua vez possuem zero ou mais anotações semânticas. Para representar os dados referentes às trajetórias brutas dos objetos móveis, foi especificado o tipo de dados TrajectoryType descrito no Quadro 10. Este tipo é composto por duas estruturas de dados heterogêneas (dois arrays com tipos de dados distintos), onde uma delas foi criada para armazenar os dados referentes às 48 paradas (uma coleção do tipo StopType) e a outra para manter os movimentos (uma coleção do tipo MoveType). A única semântica contida no tipo TrajectoryType é a identificação das paradas e dos movimentos da trajetória. Para possibilitar o armazenamento da coleção de MoveType foi definido o atributo moviments. Para o armazenamento da coleção de StopType foi especificado o atributo stops. Quadro 10 - Tipo de dado referente às trajetórias brutas. TrajectoryType Atributos moviments Tipos Descrição MoveType[] Um array com todos os movimentos de uma trajetória qualquer. stops StopType[] Um array com todas as paradas de uma trajetória qualquer. Fonte: O Autor Aplicação do tipo de dado TrajectoryType: Durante a competição, cada atleta pode realizar diversos movimentos e paradas, isso acarretaria em várias tuplas na tabela do BD, pois cada movimento e parada efetivados por cada atleta seriam armazenados em tuplas distintas da tabela do BD. Com este tipo, todos os registros de paradas e movimentos de um atleta da competição são armazenados em uma única tupla do BD. Isso é possível porque todas as paradas e todos os movimentos são armazenados em um array correspondente, contido no tipo TrajectoryType. Com isso, para cada atleta da corrida é suficiente a gravação de uma única tupla na tabela do BD, onde serão armazenadas as informações de todas as paradas e todos os movimentos válidos para a aplicação. As paradas são armazenadas através do atributo StopType[] e os movimentos através do atributo MoveType[]. Ambos os atributos são encapsulados pelo tipo TrajectoryType. Nos dados referentes às trajetórias semânticas dos objetos móveis, foi especificado o tipo TrajectorySemanticType listado e descrito no Quadro 11. Este tipo é composto por duas estruturas de dados heterogêneas (uma coleção do tipo de dado StopType e uma coleção do tipo de dado MoveType). Além disso, os atributos goal e status indicam o objetivo de execução da trajetória e sua situação atual, respectivamente. As anotações semânticas correspondentes aos aspectos de 49 mobilidade poderão estar vinculadas às paradas e aos movimentos que também estarão contidos nas respectivas estruturas de dados heterogêneas. Quadro 11 - Tipo de dado referente às trajetórias semânticas. TrajectorySemanticType Atributos moviments Tipos MoveType[] Descrição Um array com todos os movimentos de uma trajetória. stops StopType[] Um array com todas as paradas de uma trajetória. goal String Motivo pelo qual a trajetória foi realizada. status bool Informa se a trajetória foi concluída. Fonte: O Autor Aplicação do tipo de dado TrajectorySemanticType: Neste tipo de dado, os movimentos e as paradas realizados por um atleta são armazenados em arrays correspondentes ao tipo de episódio modelado (parada ou movimento). Os movimentos são armazenados por meio do atributo MoveType[], e as paradas pelo atributo StopType[]. Com este tipo de dado, também podem ser armazenadas as seguintes informações: a descrição do objetivo traçado pelo atleta para competição, o atributo goal que indica o objetivo de execução da trajetória; e a indicação (sim ou não) se o objetivo almejado foi alcançado, que é registrada no atributo status. 4.2.3. Dados de Anotações Semânticas Estes tipos de dados foram propostos para oferecer um significado às informações referentes aos movimentos e às paradas de uma dada trajetória. Com as anotações semânticas de trajetórias é possível obter um entendimento mais preciso dos fatos, e consequentemente, uma análise mais detalhada sobre os dados pode ser realizada. Os dados coletados durante o percurso do objeto móvel, quando associados às anotações semânticas, poderão indicar o que, quando e onde ocorreu determinado fenômeno. As anotações semânticas descrevem os aspectos de 50 mobilidade, tais como: os eventos ocorridos durante a viagem do objeto móvel, o meio de transporte utilizado pelo objeto móvel, o estado do ambiente percorrido, o objetivo do movimento ou da parada, a atividade realizada pelo objeto móvel e o comportamento durante a execução do movimento. Para representar as anotações semânticas referentes aos trajetos dos objetos móveis, foi especificado o tipo de dado AnnotationType como mostrado no Quadro 12. Ele foi implementado para armazenar informações semânticas vinculadas aos dados espaço-temporais, enriquecendo uma dada trajetória semanticamente. A criação deste tipo de dado foi proposta para o desenvolvedor armazenar de forma genérica, qualquer uma das seis anotações semânticas descritas no Capítulo 2 deste documento. Com isso, todas as anotações poderão ser armazenadas em uma única tabela do banco de dados, evitando junções. As anotações semânticas usadas neste trabalho são: Atividade, Comportamento, Evento, Meio de transporte, Objetivo, e Ambiente. O tipo de dado AnnotationType também permite que o desenvolvedor crie suas próprias anotações semânticas e as classifique com a categoria e o tipo ao qual pertencem. Quadro 12 - Tipo de dado referente à anotação semântica. AnnotationType Atributos description Tipos Descrição String Descreve uma determinada anotação semântica escolhida pelo usuário. beginIntervalTime Timestamp Data e hora do início do registro da anotação em questão. EndIntervalTime TimeStamp Data e hora do término do registro da anotação em questão. CategoryNote String Descreve a categoria que a anotação pertence. kindNote String Informa qual é o tipo da anotação (e.g. Atividade, Comportamento, Evento, Meio de Transporte, Objetivo e Ambiente). Fonte: O Autor 51 Aplicação do tipo de dado AnnotationType: Durante a disputa da competição, diversas informações sobre os atletas podem ser identificadas e posteriormente armazenadas no banco de dados. Utilizando o tipo de dado AnnotationType, é possível armazenar informações associadas às paradas e aos movimentos do atleta durante sua trajetória na competição. Estas informações incluem: a atividade que o atleta executou, a categoria e o tipo do comportamento que o atleta teve, o evento ocorrido durante a disputa, o meio de transporte que o atleta usou em um dado movimento, o objetivo que foi traçado pelo mesmo, e como estava o ambiente em determinados momentos da competição. Com este tipo, é armazenada a descrição da anotação semântica, o intervalo de tempo do acontecimento da mesma, além da classificação da anotação (e.g. física, para anotação de atividade, ou liderança, para anotação de comportamento). Com ele também podem ser armazenadas as anotações semânticas que melhor satisfaçam o usuário, independente das seis abordadas neste trabalho. O tipo de dado NoteBehaviorType foi especificado para representar aspectos comportamentais dos objetos rastreados, que representam o movimento executado pelo objeto móvel em um dado período de tempo, ou em segmentos de um mesmo movimento. O Quadro 13 lista e descreve o tipo de dado NoteBehaviorType que é composto por seis atributos: description, beginIntervalTime, EndIntervalTime, Veering, Category e Kind. Ele foi criado para armazenar informações sobre tipos de comportamentos que sejam considerados significativos para a aplicação. 52 Quadro 13 - Tipo de dado referente à anotação sobre o comportamento do objeto. NoteBehaviorType Atributos description Tipos Descrição String Texto descritivo sobre o comportamento realizado pelo objeto móvel. beginIntervalTime Timestamp Data e hora do início da anotação. EndIntervalTime Timestamp Data e hora do término da anotação. Informa se houve ou não uma mudança Veering bool significativa de comportamento no trajeto do objeto. Category String Informa a categoria do comportamento realizado (e.g. Desvio). Kind String Informa o tipo da categoria do comportamento realizado (e.g. Intensional, provocado). Fonte: O Autor Aplicação do tipo de dado NoteBehaviorType: Durante a competição, algum(ns) atleta(s) pode(m) querer se beneficiar pegando um atalho no percurso definido para competição. Isso caracterizaria um desvio de comportamento, pois este comportamento executado pelo atleta não é validado pelas regras da competição. Esta atitude do atleta pode ser armazenada no BD através do tipo de dado NoteBehaviorType, por caracterizar uma mudança no comportamento do atleta durante a execução da trajetória na competição, além de registrar o tempo de duração do comportamento indevido. Neste tipo, também são registrados a categoria do comportamento do atleta, e o tipo da categoria do comportamento. Para a representação das atividades realizadas pelos objetos móveis, foi especificado o tipo de dado NoteActivateType que é apresentado no Quadro 14. Este tipo armazena informação sobre a atividade realizada pelo objeto móvel em um determinado intervalo de tempo, que está associada a uma parada e/ou movimento. É composto por seis atributos: description, beginIntervalTime, EndIntervalTime, status, Category e Kind. 53 Quadro 14 - Tipo de dado referente à anotação sobre as atividades realizadas pelos objetos móveis. NoteActivateType Atributos Tipos description Descrição String Texto descritivo sobre a atividade realizada. beginIntervalTime Timestamp Data e hora do início da atividade. EndIntervalTime Timestamp Data e hora do término da atividade. status bool Informa se a atividade foi concluída ou não. Category String Informa a categoria da atividade executada (e.g. física). Kind String Informa o tipo da categoria da atividade executada (e.g. correr, caminhar). Fonte: O Autor Aplicação do tipo de dado NoteActivateType: Durante o movimento ou a parada efetivada pelo atleta da competição, o mesmo pode estar realizando uma atividade qualquer. No caso do cenário em questão, a atividade realizada pelo atleta durante o movimento pode ser “correr” ou “caminhar”. Nota-se que em um dado movimento, o atleta pode realizar duas atividades distintas (“correr” e “caminhar”). Durante as paradas dos atletas nos locais demarcados pela competição assume-se que eles podem executar a atividade de alimentação e/ou beber água. Com o tipo de dado NoteActivateType, é possível armazenar a descrição das atividades realizadas pelos atletas durante a competição e registrar se a atividade foi concluída ou não, registrando também o tempo de duração da atividade. Além disso, é registrada a categoria em que se classifica a atividade e o tipo de tal categoria. Foi especificado o tipo NoteEnvironmentType descrito no Quadro 15 para representar as anotações semânticas referentes ao estado do ambiente em que o objeto móvel se encontra. Este tipo armazena informação sobre a situação da região transitada pelo objeto móvel. Ele encapsula beginIntervalTime, EndIntervalTime, Category e Kind. cinco atributos: description, 54 Quadro 15 - Tipo de dado referente à anotação sobre o ambiente transitado pelo objeto móvel. NoteEnvironmentType Atributos description Tipos Descrição String Texto descritivo sobre o ambiente transitado pelo objeto. beginIntervalTime Timestamp Data e hora do início do registro referente á condição do ambiente. EndIntervalTime Timestamp Data e hora do término do registro referente à condição do ambiente. Category String Informa a categoria da condição do ambiente (e.g. Temperatura). Kind String Informa o tipo da categoria da condição do ambiente (e.g. interna, externa). Fonte: O Autor Aplicação do tipo de dado NoteEnvironmentType: Informações sobre as condições do ambiente de competição dos atletas podem ser significativas para a aplicação de monitoramento dos mesmos. Informações tais como: a temperatura em graus célsius na qual os atletas disputaram a competição, a velocidade do vento e a umidade relativa do ar podem ajudar a compreender o rendimento que os atletas tiveram na competição. Estas informações podem ser armazenadas com o tipo de dado NoteEnvironmentType, através do atributo description, que consiste em armazenar a descrição das condições do ambiente transitado pelo atleta em um determinado momento da competição. Com os atributos beginIntervalTime e EndIntervalTime é possível armazenar o intervalo de tempo de duração do fenômeno natural que caracteriza a condição do ambiente. Além disso, poderá ser armazenada a categoria e tipo ao qual o fenômeno natural pertence (e.g. temperatura (interna ou externa)). Para representar os dados semânticos com relação aos possíveis eventos ocorridos durante uma dada trajetória de um objeto móvel qualquer, foi especificado o tipo NoteEventType apresentado no Quadro 16. Este tipo foi criado para 55 armazenar informação sobre eventos ocorridos durante o percurso executado pelo objeto móvel em uma trajetória qualquer. O mesmo é composto por cinco atributos: description, beginIntervalTime, EndIntervalTime, Category e Kind. Quadro 16 - Tipo de dado referente à anotação sobre eventos ocorridos no percurso do objeto móvel. NoteEventType Atributos description Tipos Descrição String Texto descritivo sobre eventos ocorridos na trajetória. beginIntervalTime Timestamp Data e hora do início da ocorrência do evento. EndIntervalTime Category TimeStamp Data e hora do término da ocorrência do evento. String Informa a categoria do evento ocorrido (e.g. calamidade pública) Kind String Informa o tipo da categoria do evento ocorrido (e.g. alagamento, deslizamento de terra). Fonte: O Autor Aplicação do tipo de dado NoteEventType: Durante a competição, podem ocorrer fenômenos condizentes com a região da competição, por exemplo, a ocorrência de um alagamento, obstruindo o caminho a ser percorrido pelos atletas. Caso este fenômeno seja significativo para a aplicação de monitoramento dos atletas, o mesmo poderá ser armazenado no BD através do tipo de dado NoteEventType, onde a descrição do fenômeno em questão e o intervalo de tempo em que o mesmo ocorreu são registrados. Além disso, a categoria do evento e o tipo da categoria correspondente são registrados no BD. As anotações semânticas referentes ao objetivo almejado pelo objeto móvel ao executar uma trajetória qualquer, são representadas pelo tipo NoteGoalType. Este tipo é apresentado no Quadro 17, com a listagem e descrição dos seus atributos. Ele é responsável pelo armazenamento do objetivo almejado pelo objeto móvel, ao realizar seu movimento ou sua parada ao longo da trajetória. Este tipo é formado por quatro atributos: description, status. beginIntervalTime, EndIntervalTime e 56 Quadro 17 - Tipo de dado referente à anotação sobre o objetivo da trajetória. NoteGoalType Atributos description Tipos Descrição String Texto descritivo sobre o objetivo do objeto móvel em seu percurso. beginIntervalTime Timestamp Data e hora do início da realização do objetivo do objeto móvel. EndIntervalTime Timestamp Data e hora do término da realização do objetivo do objeto móvel. status bool Informa se o objetivo foi alcançado ou não. Fonte: O Autor Aplicação do tipo de dado NoteGoalType: Todos os atletas da competição têm objetivos a serem alcançados na disputa da prova, i.e. ser o primeiro, segundo ou terceiro lugar, conseguir concluir toda a prova ou trechos dela, em outras palavras, os competidores podem traçar um objetivo geral que é chegar ao fim da corrida, e traçar objetivos específicos referentes a cada trecho da competição. Esses objetivos podem ser armazenados através do tipo NoteGoalType, que consiste em armazenar, por exemplo: a descrição do objetivo almejado pelo atleta, a duração de tempo que o mesmo levou para alcançar tal objetivo, e a informação se o objetivo foi ou não alcançado. Em uma trajetória, pode haver diversos movimentos realizados pelo objeto móvel por vários meios de transportes. Para isso, foi especificado o tipo NoteMeanTransportType descrito no Quadro 18, que denota as informações relativas ao meio de transporte usado pelo objeto móvel em uma dada trajetória. Este tipo consiste em armazenar informação sobre o meio de transporte utilizado pelo objeto móvel em uma determinada região no espaço, incluindo detalhes sobre a categoria (Terrestre, Aquática, Aérea) e o tipo (Carro, Navio, Avião) do transporte utilizado. Este tipo é composto por cinco atributos: Description, Category, Kind, beginIntervalTime e EndIntervalTime. 57 Quadro 18 - Tipo de dado referente ao meio de transporte do objeto móvel. NoteMeanTransportType Atributos Description Tipos Descrição String Texto descritivo sobre o meio de transporte que foi utilizado no trajeto do objeto. beginIntervalTime Timestamp Data e hora do início do intervalo que foi registrado o meio de transporte do objeto móvel. EndIntervalTime Timestamp Data e hora do término do intervalo que foi registrado o meio de transporte do objeto móvel. Category String Informa a categoria do meio de transporte usado. Kind String Informa o tipo do meio de transporte que foi utilizado. Fonte: O Autor. Aplicação do tipo de dado NoteMeanTransportType: Durante a competição, um atleta pode precisar usar meios de transportes distintos em diferentes trechos da competição (e.g. barco e bicicleta). Com o tipo de dado NoteMeanTransportType informações como: a descrição do meio de transporte usado pelo atleta durante um dado percurso, a categoria (Terrestre, Aéreo ou Aquático) e o tipo do transporte usado (bicicleta ou barco) são mantidas no BD. Além disso, é importante registrar o intervalo de tempo em que foi utilizado tal meio de transporte. Uma vez definidas as informações referentes a cada tipo de dado proposto nesta dissertação, elas poderão ser armazenadas em um BD e posteriormente poderão ser manipuladas por um programa computacional de análise de dados de trajetória semântica. Na seção seguinte, é apresentada a implementação da API DBST. 58 4.3. Implementação da API DBST Esta seção está organizada como segue: a Seção 4.3.1 ilustra como a API DBST foi estrururada mostrando os pacotes, as classes, as funções e os tipos correspondentes aos novos tipos de dados que foram desenvolvidos para estender o SBGD PostgreSQL/Postgis. Além disso, ela exibe um diagrama de classes, que ilustra detalhadamente os relacionamentos e as restrições existentes entre as mesmas. 4.3.1. Estrutura de Classes da API DBST Na Figura 13, é apresentada graficamente a estrutura de classes da API DBST com os tipos de dados estendidos para o SGBD PostgreSQL. Eles pertencem a três categorias: Episódios, Trajetórias e Anotações Semânticas, e foram encapsulados em seus respectivos pacotes, como ilustrado na Figura 13. 59 Figura 13 - Representação Gráfica da Estrutura de Classes da API DBST. Fonte: O Autor 60 Percebe-se que a API DBST persiste em quatro pacotes, como ilustrado pela Figura 13. O pacote Annotation Semantic, corresponde às classes que representam as anotações semânticas de trajetórias, enquanto o pacote Episodes, se refere aos episódios de paradas e movimentos que fazem parte da composição de uma dada trajetória. O pacote Trajectory corresponde aos tipos de dados usados para representar as trajetórias em BD. O pacote Utilities possui duas classes: (1) a TypesTrajectorySemantic, que disponibiliza aos usuários as funções destinadas à criação automática dos tipos de dados estendidos para o SGBD PostgreSQL; e (2) a classe MigrationDataForDB, que consiste em migrar as paradas e os movimentos de trajetórias para o BD através de um arquivo passado como parâmetro pelo usuário. Para isso, os usuários informam apenas a instanciação das funções destas classes. As setas bidirecionais da Figura 13 correspondem aos relacionamentos entre as classes. Nessa figura, existe um relacionamento entre as classes do pacote Episodes e as classes contidas no pacote Annotation Semantic. Fonte: O Autor. Figura 14 - Diagrama de classes da API DBST 61 62 A Figura 14 apresenta de forma detalhada os relacionamentos existentes entre as classes, os quais são ilustrados através das linhas de associação. Além disso, nessa figura, é mostrada a cardinalidade de cada associação existente, onde são sinalizadas as restrições do relacionamento entre elas. Percebe-se que no relacionamento entre as classes StopType (ou MoveType) e TrajectorySemanticType (ou TrajectoryType), é ilustrada a afirmação de que uma trajetória se caracteriza por pelo menos, duas instâncias de paradas e uma de movimento. 4.4. Conclusão Os tipos de dados da API DBST correspondem aos tipos de dados estendidos para o SGBD PostgreSQL/Postgis descritos no Capítulo 2. A API em questão tem o objetivo de facilitar a manipulação de dados semânticos relativos às paradas e aos movimentos, às trajetórias e às anotações sobre o deslocamento de objetos móveis. A API DBST foi desenvolvida especificamente para os tipos de dados que foram estendidos para SGBD PostgreSQL/Postgis, que foram apresentados no Capítulo 2. Através da API proposta em conjunto com os tipos de dados semânticos sugeridos neste trabalho, é possível armazenar todos os movimentos e todas as paradas pertencentes a uma dada trajetória de algum objeto móvel, utilizando apenas o tipo de dado TrajectoryType ou TrajectorySemanticType. Usando estes tipos, apenas uma tupla da tabela do BD é suficiente para representar toda a trajetória. Utilizando a API DBST, o desenvolvedor pode instanciar as funções contidas na mesma, para criar os novos tipos de dados de representação semântica no SGBD PostgreSQL/Postgis. Com isso, o desenvolvedor poderá usar as funções para criar cada tipo de dado de interesse dentre os tipos de dados sugeridos neste trabalho. Esses tipos representam: as paradas e os movimentos, as trajetórias brutas e as semânticas, além das seis anotações semânticas (Atividade, Evento, Meio de transporte, Objetivo, Ambiente e Comportamento). A criação dos tipos de dados MoveType, StopType, TrajectoryType e TrajectorySemanticType para o SGBD PostgreSQL/Postgis pode ser diretamente realizada através da função PreparedDB, disponibilizada para o desenvolvedor pela API DBST. Para isso, o 63 desenvolvedor deverá passar como parâmetro a string de conexão de acesso ao BD. A API DBST foi especificada de forma flexível para facilitar a personalização da codificação do desenvolvedor na representação de trajetórias semânticas. Os tipos de dados foram criados de forma a oferecer uma maior flexibilidade possível no desenvolvimento de uma dada aplicação, com a capacidade de permitir customizações por parte do desenvolvedor na criação de aplicações de naturezas distintas. No próximo capítulo, são mostrados os exemplos de uso da API DBST em conjunto com os novos tipos de dados propostos por este trabalho dissertativo. Para isso, foram realizadas algumas consultas referentes a dois cenários: gerenciamento de transportes públicos e monitoramento de pássaros. Capítulo 5 Exemplos de Aplicação Este capítulo apresenta dois exemplos de aplicação em cenários distintos: um tocante ao monitoramente de pássaros e outro ao gerenciamento de transportes públicos. Estes exemplos têm a finalidade de mostrar a aplicabilidade dos tipos de dados propostos neste trabalho por meio da API DBST. 65 5.1. Introdução Neste capítulo é mostrada a aplicabilidade dos tipos de dados estendidos para o SGBD PostgreSQL/Postgis por intermédio da API DBST, usando dois cenários de aplicações distintas. Inicialmente, na Seção 5.2, é exposta a preparação do ambiente para utilização dos tipos de dados propostos e da API DBST. A Seção 5.3 mostra a utilização dos tipos de dados de trajetórias semânticas para o SGBD PostgreSQL/Postgis. Os cenários definidos para exibir a utilização da API DBST em conjunto com os tipos de dados estendidos são: o monitoramento de trajetórias de pássaros discutido na Seção 5.4, e o gerenciamento de trajetórias de transportes públicos (ônibus) apresentado na Seção 5.5. Por fim, na Seção 5.6 são apresentadas as conclusões deste capítulo. Como meio de coleta dos dados de rastreamento de objetos móveis, foi usado o dispositivo de localização de GPS. Em cada exemplo de uso aqui considerado, é apresentada uma breve descrição dos dados coletados e é discutida a aplicação de cada um deles. Além disso, é mostrada a aplicabilidade de cada tipo de dado estendido, criados para representar trajetórias semânticas e para persistilas em uma base de dados do SGBD PostgreSQL/Postgis, a partir da API DBST. Esta API foi desenvolvida com a finalidade de facilitar o uso destes tipos, o qual independe da API DBST. Em ambos os exemplos de aplicação, a localização geográfica dos objetos (ônibus e pássaro), foi capturada e armazenada apenas no formato geométrico do tipo Ponto, representado por (x, y). Porém, outros formatos geométricos (e.g Polígono, Multipoligono, dentre outros), compatíveis com os tipos de dados espaciais reconhecidos no PostgreSQL/Postgis, poderiam ter sido usados para representação da localização de objetos móveis. Tanto a API DBST quanto os tipos de dados de localização do objeto móvel, oferecem suporte a qualquer tipo geométrico reconhecido pelo sistema de BD em questão. 5.2. Preparação do Ambiente Para utilizar a API DBST é necessária a preparação de um ambiente de desenvolvimento, conhecido popularmente como Ambiente de Desenvolvimento Integrado (IDE). Como exemplo de IDE pode-se citar o Eclipse (GONÇALVES E. 66 2006) e o NetBeans (BOCK , H. 2011). Para que o compilador/interpretador da IDE utilizado pelo usuário reconheça os tipos de dados da API DBST, é necessário que a mesma seja importada para o ambiente de desenvolvimento escolhido. Como a API DBST utiliza o tipo de dado PGgeometry contido na API do Postgis, que é uma extensão do PostgreSQL, também é necessário que a API do Postgis seja importada para a IDE. Essas importações são feitas de forma simples. Uma vez que as API são importadas, todos os tipos e todas as funções contidas nas mesmas podem ser manipulados a partir da IDE escolhida. O SGBD PostgreSQL/Postgis dá suporte aos tipos de dados de trajetórias semânticas, através dos tipos de dados semânticos propostos por este trabalho. Este suporte pode ser realizado automaticamente, necessitando apenas, por parte do usuário, da instanciação da função “PreparedDB” encapsulada pela API DBST. O usuário pode criar também, de forma automatizada e independente, cada tipo de dado referente à anotação semântica, ou seja, são criados no BD apenas os tipos de dados necessários para o desenvolvimento de uma determinada aplicação. O ambiente de teste criado para execução da validação deste estudo se baseou nas seguintes tecnologias: IDE Eclipse versão 4.2.1, para experimentos com a API DBST; PostgreSQL versão 9.1.5 e sua extensão espacial Postgis versão 2.0, como tecnologia de banco de dados; PgAdmin III versão 1.14.3 como ferramenta de administração e manipulação de dados no BD; Sistema Operacional Windows 7 Professional com SP1 na arquitetura 32 bits, utilizado para instalação das tecnologias; e Processador Pentium M 1.73GHz, 1,5GB de RAM. 5.3. Uso de Tipos de Dados da API DBST Nesta seção é exemplificado o uso dos tipos de dados desenvolvidos para o SGBD PostgreSQL/Postgis através da API DBST. Ela pode ser utilizada a partir de uma IDE de desenvolvimento (e. g. Eclipse, NetBeans (Böck , H. 2011)), onde a mesma é importada como biblioteca. Trechos de códigos são apresentados com a finalidade de ilustrar as operações que podem ser realizadas com a API DBST: 67 instanciação dos tipos de dados, criação dos tipos de dados semânticos no SGBD PostgreSQL/Postgis, importação automática dos dados de uma trajetória qualquer a partir de um arquivo dado como entrada, e inserção dos dados no BD PostgreSQL, tais como: tipos compostos e arrays, além de consultas previamente definidas. Os tipos de dados são instanciados de forma convencional como exibido no código listado no Quadro 19. Quadro 19 - Código de criação dos tipos de dados semânticos da API DBST. Fonte: O Autor A API DBST disponibiliza ao desenvolvedor, funções para que o mesmo possa preparar o SGBD com os tipos de dados de trajetória semântica. Automaticamente, esses tipos são criados no SGBD PostgreSQL/Postgis pela aplicação destas funções. Para isso, devem ser realizadas as operações listadas no Quadro 20. 68 Quadro 20 - Código de criação dos tipos de dados semânticos para o SGBD PostgreSQL/Postgis. Fonte: O Autor Caso o desenvolvedor prefira importar os dados relativos às paradas e aos movimentos de uma dada trajetória para o BD, é possível passar um arquivo como parâmetro de entrada, a partir da função Migration disponibilizada pela API DBST. Este arquivo deve atender às restrições de formato de linha de registro, que são dadas no Quadro 21. Quadro 21 - de linha do arquivo de entrada da API DBST. Fonte: O Autor Para executar a operação de importação de dados, o desenvolvedor deve instanciar a classe MigrationDataForDB e chamar a função Migration. Isso é realizado como mostra o código do Quadro 22. Quadro 22 - Código para Importação de dados. Fonte: O Autor 69 A API DBST manipula os tipos de dados primitivos (e. g. double), os objetos (e.g. String), os tipos compostos (e.g. os tipos de dados referentes às anotações semânticas e aos episódios de paradas e movimentos), e arrays (e.g. os tipos de dados que representam as trajetórias). A seguir é mostrada no Quadro 23, uma das formas de armazenar no BD, os tipos de dados pertencentes a uma trajetória qualquer, através da API DBST. Quadro 23 - Código de armazenamento das informações de trajetórias em arrays. Fonte: O Autor 5.4. Cenário 1 - Monitoramento de Pássaros Este exemplo de aplicação faz uso de dados referentes ao monitoramento de pássaros. Neste monitoramento, foi mapeado o percurso das cegonhas durante um período de oito anos, e este conjunto de dados está descrito na Seção 5.4.1. Também são listados os dados descritivos contidos na base de dados de monitoramento espacial e algumas considerações sobre os mesmos. Por fim, na Seção 5.4.2, é exibido o conjunto de consultas relativo a este cenário. 5.4.1. Trajetórias de Pássaros Os dados coletados para este cenário são as trajetórias de migração de cegonhas. A captura dos dados foi concretizada através do dispositivo de localização de GPS que foi colocado em algumas aves. Um grupo de pesquisadores receberam os dados das trajetórias das aves, e deram um nome a cada uma delas. O monitoramento perdurou do período de 20 de agosto de 1998 a 30 de abril de 1 - O cast é necessário porque o tipo composto é armazenado como uma linha pelo SGBD PostgreSQL e o tipo ARRAY não aceita linhas como elementos do array. 70 2006, finalizado com um total de 1.886 registros. A ave que mais teve o registro de sua localização foi a Prinzesschen, nome escolhido pelos pesquisadores, com um total de 528 registros dentre o montante de 1.886 registros coletados entre as 18 aves Monitoradas (MORENO et. al., 2010). A base de dados contendo os registros das trajetórias dos pássaros comporta as seguintes informações: o nome do pássaro, a data da coleta, além das coordenadas geográficas de latitude e longitude, correspondentes à localização dos pássaros durante a(s) trajetória(s) dos mesmos. Os dados coletados não apresentam semântica sobre o trajeto dos pássaros, ou seja, são dados considerados brutos. Para demonstração da aplicabilidade dos tipos de dados semânticos que foram desenvolvidos neste trabalho, as anotações semânticas são associadas de forma hipotética e aleatória a alguns registros da base de dados de trajetórias de pássaros. A Figura 15 ilustra a estrutura da tabela de armazenamento das informações referentes às trajetórias dos pássaros descritas nesta seção. Figura 15 - Estrutura da tabela de armazenamento de trajetórias de pássaros. BirdName TimeDate Latitude Longitude Prinzesschen 30-Oct-03 13.727 33.995 Prinzesschen 3-Dec-03 9.183 33.35 Louka 06/mar/00 28.843 -10.844 Penelope 16/mar/00 -2.722 34.302 ... ... ... 24/mar/06 -3.096 34.398 ... Annamarie Fonte: MORENO et. al., 2010 5.4.2. Exemplos de Consultas Para este cenário, os dados referentes às trajetórias de pássaros foram analisados como segue: o objeto móvel adotado é o pássaro, a localização espacial de cada objeto móvel persiste nas coordenadas de longitude e latitude, representadas pelo objeto do tipo Ponto. Por serem dados brutos, ou seja, apenas espaço-temporais, eles foram associados, de forma hipotética, às informações semânticas propostas neste trabalho. Alguns questionamentos referentes às 71 trajetórias dos pássaros podem ser levantados, como segue: (1) qual a região que a maioria dos pássaros se deslocou durante uma dada estação do ano?; (2) Por que em uma estação do ano, os pássaros migram para uma determinada região?; (3) O que levou os pássaros durante uma migração a mudarem o percurso bruscamente? A primeira questão pode ser esclarecida com o uso de dados brutos, necessitando apenas de características do objeto (pássaro) e da localização espaço-temporal do percurso dos mesmos. Porém, para responder às duas últimas, os dados brutos não são suficientes, sendo necessária a associação destes dados com informações semânticas relativas ao domínio de cada situação. Respostas para essas questões podem ser úteis para o gerenciamento da migração das aves, ajudando a entender determinados comportamentos e costumes das mesmas. Respostas de consultas sobre trajetórias semânticas podem ser obtidas de forma direta (não há necessidade de cruzar os dados brutos coletados com dados geográficos) a partir da utilização dos tipos de dados semânticos que foram desenvolvidos neste trabalho e que podem ser manipulados através da API DBST. Vale ressaltar que as informações semânticas são supostamente associadas aos dados brutos coletados anteriormente. Uma das formas de associá-las é através de algoritmos de extração de trajetória semântica descritos no Capítulo 2. Os tipos de dados semânticos desenvolvidos por este trabalho, em conjunto com a API DBST, foram propostos para auxiliar na resolução de consultas, como mostrado a seguir. Consulta 1: Qual o objetivo das aves migrarem para uma determinada região em uma dada estação temporal (Verão, Primavera, Outono e Inverno) no ano de 2011? Para responder esse tipo de consulta, é preciso mapear as atividades realizadas pelas aves nesta região, os objetivos traçados, o período dos movimentos e a localização geográfica da região. Para isso, é necessário consultar o tipo de dado NoteActivateType, além dos tipos de dados MoveType e StopType pertencentes à categoria dos episódios para entender o intervalo de tempo e a razão dessa migração. As informações que podem ser obtidas a partir da execução da Consulta 1 sobre cada tipo de dado identificado são: 72 StopType - A localização geo-referenciada e a descrição da região frequentada pelas aves durando o ano de 2011; MoveType - Os movimentos executados durante o ano 2011 e o período em que os movimentos foram executados. Com isso, é possível identificar as estações do ano; e NoteActivateType - As atividades realizadas pelas aves na região em questão. Com isso, é possível identificar o motivo pelo qual as mesmas viajam. Consulta 2: As aves migram nos períodos mais frios para as regiões mais quentes do planeta, em busca de maior oferta de comida e retornam na primavera ao local de origem para reproduzir. Mediante a isso, podem surgir perguntas como: por que as aves retornaram ao local de origem antes da primavera? Para obter a resposta desta consulta, é necessário identificar o intervalo de tempo em que as aves se mantiveram na região migrada e a localização desta região. Além disso, é preciso obter a informação de algum fenômeno natural, ou da existência de algum fato responsável pelo retorno das aves antes da primavera. Essas informações podem ser obtidas a partir de três tipos de dados: StopType, NoteEnvironmentType e NoteEventType. Alternadamente, é possível usar o tipo de dado NoteBehaviorType que modela os aspectos comportamentais. As informações que podem ser obtidas a partir de cada tipo de dado considerado útil neste exemplo são: StopType - A localização geo-referenciada da região, além da data e hora em que as aves saíram desta localidade. Ou seja, deve ser considerado o tempo de saída da parada (região); NoteEnvironmetType - Identifica o clima e a temperatura do ambiente onde as aves estavam habitando. Com isso, é possível conseguir informações sobre a ocorrência de algum fenômeno natural responsável pela saída das aves; 73 NoteEventType - Informa se houve algum fato isolado que foi significativo para o retorno das aves ao seu habitat de origem; e NoteBehaviorType - Identifica se ocorreu alguma mudança de comportamento das aves. Através dos tipos NoteEventType e NoteBehaviorType é possível entender a razão desta mudança de comportamento. Consulta 3: Quanto tempo levou para que as aves tenham migrado de um ponto ao outro, e para que? Esta consulta pode ser processada utilizando os tipos de dados StopType e MoveType relativos aos episódios (paradas e movimentos), além do tipo NoteActivateType. Desta forma, é possível aferir o tempo de deslocamento espacial das aves, a origem e o destino referente ao deslocamento e o que as aves foram fazer na localidade. As informações que podem ser obtidas a partir de cada tipo de dado são: StopType - Representa o local de origem e destino das aves; NoteActivateType - Informa a atividade realizada na localidade de destino das aves; e MoveType - Indica o tempo de execução da trajetória. Consulta 4: Quais os pontos de uma dada região habitada por uma ave, por um período maior que trinta dias, em cada estação do ano 2012? Quais foram as atividades realizadas por ela em cada um desses pontos? Para processar este tipo de consulta, é viável mapear as paradas realizadas pela espécie, além das atividades que ela executou no ano de 2012 na região. Para isso, é necessária a utilização do tipo de dado StopType e do tipo NoteActivateType. Por meio deles podem ser mapeados a descrição, o tempo de permanência do pássaro na localidade em questão e as atividades que o mesmo realizou durante a sua permanência na região. 74 As informações que podem ser obtidas a partir de cada tipo de dado usado neste exemplo de consulta são: StopType - A localização geo-referenciada de cada região e a duração da permanência em cada região visitada com data e hora; e NoteActivateType - Informa as atividades realizadas pelas aves em um dado período de tempo em cada região, onde a permanência durou mais de um mês. Consulta 5: Quantos km as aves voaram para executar uma dada trajetória, quais os pontos de parada antes de chegarem ao destino, e qual a velocidade média atingida durante o translado? Para responder a esse tipo de consulta, é necessário processar as paradas e os movimentos. Para isso, podem ser utilizados os tipos de dados StopType e MoveType. Através deles, é possível mapear o local de origem e destino da trajetória, além das paradas realizadas durante o percurso, e a média de velocidade atingida na viagem. Com a informação da origem e destino da trajetória é possível saber a distância do deslocamento das aves. As informações que podem ser obtidas em cada tipo de dado identificado são: StopType - A localização geo-referenciada do local de origem e destino da trajetória, e os pontos de descanso; e MoveType - A média da velocidade atingida. O esquema lógico usado para este cenário foi modelado com cinco anotações semânticas (e. g. comportamento, atividade, objetivo, evento e ambiente), além dos episódios (paradas e movimentos). Este esquema é apresentado na Figura 16, que ilustra os dados usados para solucionar consultas sobre trajetórias semânticas da aplicação de monitoramento de pássaros. Fonte: O Autor. Figura 16 - Esquema lógico do monitoramento de pássaros. 75 76 Na Figura 16, as entidades Comportamentos, Objetivos, Atividades, EstadoAmbiente e Eventos representam os tipos de dados sobre anotações semânticas, que foram incluídas hipoteticamente ao esquema lógico deste cenário. A entidade Migração equivale à trajetória, a entidade Passaro é relativa ao objeto móvel, e a entidade LocalizacaoEspacial refere-se às paradas realizadas pelos pássaros em uma dada região, onde cada instância de parada é representada pelo tipo de dado StopType. 5.5. Cenário 2: Gerenciamento de Transporte Público Este exemplo de aplicação utiliza dados referentes ao gerenciamento de transporte público. Este gerenciamento visa facilitar o cotidiano das pessoas em relação à locomoção das mesmas por meio dos ônibus. Na Seção 5.5.1, são listados os dados das trajetórias dos ônibus, além de algumas considerações sobre estes dados. Por fim, na Seção 5.5.2, é mostrada a aplicação dos tipos de dados criados para o gerenciamento de transporte público, por meio da listagem de um conjunto de consultas possíveis sobre estes dados. 5.5.1. Trajetórias de Ônibus A base de dados usada neste exemplo de aplicação contém registros de trajetórias de ônibus, e cada registro possui as seguintes informações: itinerário, características dos veículos, localização de cada transporte terrestre durante os trajetos, dentre outras. Para exibir a aplicabilidade dos tipos de dados semânticos desenvolvidos para este trabalho, as anotações semânticas foram associadas de forma hipotética e aleatória a alguns registros relacionados ao gerenciamento de rotas de ônibus. A Figura 17 ilustra a tabela de armazenamento das informações sobre os trajetos dos ônibus de um sistema de transporte público. 77 Figura 17 - Estrutura de uma das tabelas de armazenamento dos trajetos dos ônibus. Empresa SPA NLinha 718 NSerie 14379 Latitude -8,02418 Longitude -34,893 ... ... DataHora 2012-08-05 23:59:20.833000 SPA 742 94308 -8,02425 -34,8936 ... 2012-08-05 23:59:21.890000 GLO 622 149575 -7,98932 -34,934 ... 2012-08-05 23:59:22.220000 GLO 623 149098 -8,01134 -34,9345 ... 2012-08-05 23:59:22.877000 ... ... ... ... ... ... ... CDA 960 1828 -7,91238 -34,8231 ... 2012-08-05 23:59:23.977000 Fonte: SALGADO et. al., 2011. 5.5.2. Exemplos de Consultas Para este exemplo de aplicação, os dados de trajetórias dos ônibus foram analisados como segue: o objeto móvel é o ônibus, a trajetória corresponde às viagens dos ônibus, e a localização geoespacial de cada objeto móvel (ônibus) consiste nas coordenadas de latitude e longitude. As coordenadas foram representadas pela geometria do tipo Ponto. Os dados sobre o tráfego dos transportes públicos têm informações apenas espaço-temporais. Por isso, eles foram hipoteticamente associados a informações semânticas por meio da instanciação de alguns dos tipos de dados propostos neste trabalho. A movimentação de veículos aumenta de forma gradativa nas grandes cidades, devido, principalmente, ao crescimento do número de veículos nas vias, dificultando o tráfego de transportes públicos, e dos demais. Os tipos de dados semânticos propostos por este trabalho podem ajudar na aquisição de informações sobre os transtornos causados no serviço de transporte público. Esses tipos de dados são capazes de auxiliar na resolução de perguntas, tais como: Consulta 1: Quais foram os pontos de retenção do tráfego, qual o tempo médio desperdiçado nesses pontos, e qual a razão da retenção? Para adquirir a resposta para esta consulta, é necessário identificar os locais em que os ônibus ficaram retidos no trânsito, e o tempo gasto por eles nestes locais, além do motivo pelo qual os mesmos ficaram retidos. Para isso, podem ser utilizados os tipos de dados StopType, o NoteGoalType e o NoteEventType. 78 As informações que podem ser obtidas a partir de cada tipo de dado usado neste exemplo são: StopType - Identifica os locais em que os ônibus permaneceram parados, ou em baixa velocidade, dependendo da aplicação; NoteEventType - Informa a situação que ocasionou retenção do ônibus, por exemplo: congestionamento, manifestação pública, ônibus quebrado, dentre outros; e NoteGoalType - Indica se o ônibus se reteve no trânsito devido a algum motivo programado, tal como: esperando um grupo de passageiros, ou por qualquer outro objetivo. Consulta 2: Quais são as cinco piores linhas de ônibus que mais se atrasam em suas viagens, e por que? Para responder essa consulta, é preciso mapear as viagens das cinco linhas de ônibus e verificar se houve algum problema durante as viagens. Para isso, é necessário usar os tipos de dados MoveType e NoteEventType. A solução desta consulta pode ser obtida pelo uso dos seguintes tipos de dados: MoveType - Indica as viagens de cada ônibus e o tempo gasto em cada viagem.; e NoteEventType - Informa se houve algum problema ao longo das trajetórias de ida e volta dos ônibus alocados para as cinco linhas. Consulta 3: Qual a velocidade média atingida pelos ônibus que estiveram em congestionamentos no dia 15 de Janeiro de 2013? Para responder a esta consulta, devem ser mapeadas as viagens (trajetórias) de ida e volta executadas pelos ônibus, identificando o tempo gasto em cada viagem, e o comportamento de todos os ônibus monitorados. Para obter essas informações podem ser utilizados os tipos de dados MoveType e NoteBehaviorType. 79 As informações que podem ser obtidas a partir de cada tipo de dado são: MoveType - Informa quanto tempo durou cada trajetória de ônibus e a velocidade média entre as trajetórias; e NoteBehaviorType - Indica os comportamentos executados pelos ônibus que foram significativos para a média de velocidade atingida. Consulta 4: Por que os ônibus necessitam de ar-condicionado, e quais as viagens em que se tem uma temperatura não satisfatória para os passageiros dos ônibus? Qual a média da temperatura do ambiente entre os horários de 07h00min e 16h00min e qual a duração de cada viagem neste horário? As pessoas que dependem de ônibus para trabalhar, estudar, passear, dentre outras atividades, podem chegar ao destino com certo grau de stress. A causa para esse problema, pode ser a temperatura interna dos transportes públicos, pois além de não serem climatizados, costumam transportar as pessoas com a lotação máxima ultrapassada, aumentando ainda mais a temperatura interna destes veículos. Para responder a esta consulta, é preciso obter informações sobre o estado do ambiente externo e interno dos ônibus e as viagens executadas pelo mesmo no período de 07h00min às 16h00min. Para isso, podem ser usados os tipos de dados NoteEnvironmentType e o MoveType. As informações que podem ser obtidas de cada tipo de dado são: MoveType - Indica o intervalo de tempo de cada viagem executada pelo ônibus para que possa ser identificada em que momento da viagem a temperatura do ambiente é maior; e NoteEnvironmentType - Informa a temperatura do ambiente em um dado instante ou período de tempo. Consulta 5: Qual o tempo médio desperdiçado de um ônibus nos trajetos de ida nos fins de semana do mês de março, e qual a temperatura do ambiente no momento de cada parada? 80 Para responder a esta consulta, devem ser identificados os momentos em que o ônibus permaneceu parado durante toda a semana, e constatar a temperatura interna do ônibus. Para isso, podem ser usados os tipos de dados StopType, MoveType e NoteEnvironmentType. As informações que podem ser obtidas por cada tipo de dado são: StopType - Informa todas as paradas realizadas pelo ônibus durante os fins de semana, e o tempo gasto em cada parada; MoveType - Informa o tempo total da duração de cada trajeto de ida e volta do ônibus nos fins de semana; e NoteEnvironmentType - Indica a temperatura do ambiente no momento de cada parada do ônibus. O esquema lógico adotado para este cenário foi modelado com as seguintes anotações semânticas (e. g. comportamento, atividade, objetivo, evento e ambiente), incluindo os episódios de paradas e movimentos. Este esquema é mostrado na Figura 18. Esta Figura ilustra os dados usados para resolver as consultas sobre gerenciamento de transporte público que ilustram a aplicação dos tipos de dados semânticos propostos nesta dissertação. 81 Figura 18 - Esquema lógico de gerenciamento de transporte público. Fonte: O Autor Na Figura 18, as entidades ComportamentosTransito, Objetivos, Atividades, EstadoAmbiente e Eventos correspondem aos tipos de dados relativos às anotações semânticas, que foram incluídas hipoteticamente ao esquema lógico deste cenário. A entidade Trajetos equivale à trajetória, a entidade Onibus se refere ao objeto móvel, e LocalizacaoEspacial está associada às paradas realizadas pelos ônibus durante os trajetos de ida e volta. Cada instância de parada é representada pelo tipo de dado StopType. A entidade Categoria informa se o ônibus é normal ou intercalado, e a entidade Direção registra se o trajeto é de ida ou de retorno. 5.6. Conclusões Este capítulo apresentou o uso dos tipos de dados semânticos, manipulados através da API DBST, que foi desenvolvida para auxiliar o desenvolvedor na criação de trajetórias semãnticas para o SGBD PostgreSQL/Postgis e que estão descritos no Capítulo 4. A ilustração do uso da API DBST e dos tipos de dados propostos por este trabalho foi realizada para dois domínios de aplicação: monitoramento de trajetórias 82 de pássaros e gerenciamento de transporte público. Para cada um dos domínios, foi dada a descrição do cenário, dos dados usados e das consultas que podem ser realizadas com os tipos de dados semânticos desenvolvidos para este trabalho dissertativo. Os dados originais de ambos cenários de aplicação possuíam apenas informações espaço-temporais. Por isso, ambos cenários foram enriquecidos hipoteticamente com informações semânticas, com a finalidade de possibilitar consultas específicas de um dado domínio. Tais consultas foram definidas nos domínios de aplicação para exemplificar o uso dos tipos de dados semânticos propostos e da API DBST em aplicações de domínios distintos. Para exibir o uso da API DBST com os tipos de dados semânticos criados para o SGBD PostgreSQL/Postgis, foi realizada a preparação do ambiente de desenvolvimento, com a escolha de uma IDE onde a API DBST foi importada em conjunto com a API do Postgis. Além disso, foi realizada a preparação de um BD no PostgreSQL/Postgis. Os esquemas lógicos dos cenários utilizados como exemplo de uso, foram gerados pela ferramenta de modelagem de dados DBDesign (MARÇULA, M. 2010) e estão listados no Apêndice A. No próximo capítulo, são apresentadas as conclusões gerais deste trabalho dissertativo, contribuições e indicações de trabalhos futuros. destacando suas principais Capítulo 6 Conclusões Este capítulo apresenta as considerações finais sobre este trabalho dissertativo, abordando um resumo do trabalho realizado, as principais contribuições e a indicação de pesquisas futuras. 84 6.1. Considerações Finais A pesquisa na área de trajetórias de objetos móveis cresce de forma gradativa. Esse crescimento é maior nas áreas de modelagem de dados de trajetória, processamento e enriquecimento semântico de trajetórias brutas (YAN et. al., 2012). No segmento de modelagem de dados, pode-se citar os trabalhos de Vaisman et. al. (2007), Baris et. al. (2008), Bogorny et. al. (2013) e Spaccapietra et. al. (2008). Na categoria de processamento de dados de trajetórias, diversos trabalhos foram propostos, tais como: Fajardo (FAJARDO, B. S., 2008), Li et. al. (LI et. al., 2010), Giannotti et. al. (GIANNOTTI et. al., 2007). Para o enriquecimento semântico de trajetórias, existem, dentre outros, os trabalhos de Li et. al. (2010) e Loy et. al. (2011). No entanto, foi identificada a falta de SGBD disponíveis no mercado e na academia que permitam a representação e manipulação de trajetórias semânticas. Para oferecer suporte ao desenvolvimento de aplicações de trajetórias semânticas em domínios distintos, este trabalho dissertativo propõe novos tipos de dados capazes de representar informações de trajetórias semânticas no SGBD PostgreSQL/Postgis. Além disso, foi desenvolvida uma API denominada de API DBST que tem a finalidade de facilitar a manipulação desses tipos de dados pelo desenvolvedor. Portanto, foram mapeados os aspectos de mobilidade para possibilitar o enriquecimento semântico dos dados de uma dada trajetória de objetos móveis, tais como: evento, comportamento, objetivo, meio de transporte, ambiente e atividade. Ademais, foram incluídos os tipos de episódios de paradas e movimentos, além da representação de trajetórias brutas e semânticas. O uso dos novos tipos de dados propostos por esta dissertação independe do uso da API DBST. Contudo, o uso da API DBST implica no uso dos tipos de dados semânticos por meio de recursos (classes, funções) disponibilizados pela API. Eles correspondem aos tipos de dados de representação de trajetórias semânticas propostos neste trabalho dissertativo. Este trabalho não tem como escopo a extração das informações semânticas, mas sim o armazenamento delas no SGBD PostgreSQL/Postgis. A extração de semântica a partir de trajetórias brutas pode ser encontrada na definição de métodos de clusterização espacial (ALVARES et. al., 85 2007, PALMA et. al., 2008, ROCHA et. al., 2010,) que são capazes de extrair informações sobre as paradas e os movimentos realizados pelo objeto móvel. No Capítulo 5, a validação das ideias propostas neste documento foi realizada pela construção de dois cenários distintos, onde é mostrado o uso conjunto da API DBST com os tipos de dados que compõem uma trajetória semântica: um cenário referente ao gerenciamento de transporte público; e outro ao monitoramento de pássaros. É importante notar que o uso destes tipos de dados não é obrigatório. Isto ocorre porque, nem sempre é importante para uma dada aplicação relacionar semântica a uma parada e/ou um movimento de uma trajetória bruta. 6.2. Principais Contribuições Esta seção apresenta as principais contribuições deste trabalho dissertativo. Criação de novos tipos de dados para representação de trajetórias semânticas Neste trabalho, foram especificados onze tipos de dados que compõem uma trajetória semântica qualquer. Esses tipos foram classificados em três categorias como segue: Episódios (Paradas e Movimentos), Trajetória (Trajetória Semântica e Bruta), e as Anotações Semânticas (Atividades, Meio de Transporte, Ambiente, Objetivo, Comportamento e Evento). Esses tipos foram criados para estender o SGBD PostgreSQL/Postgis. Desenvolvimento de uma API Foi desenvolvida uma API denominada de DBST, com a finalidade de facilitar o uso dos tipos de dados que compõem as trajetórias semânticas. Para isso, foram implementadas na API, as classes correspondentes aos tipos de dados aqui sugeridos para o SGBD PostgreSQL/Postgis. 6.3. Limitações Nesta seção são apresentadas as limitações deste trabalho dissertativo como segue. A API DBST e os novos tipos de dados propostos por este trabalho 86 oferencem suporte apenas ao SGBD PostgreSQL/Postgis; e Não foram definidos operadores para uma linguagem de consulta sobre trajetórias semânticas. 6.4. Trabalhos Futuros Esta seção apresenta as sugestões de pesquisas futuras como continuação do trabalho descrito nesta dissertação. Extensão dos tipos de dados propostos por este trabalho para outros SGBD. Este trabalho tem como proposta a criação de novos tipos de dados para representação de trajetórias semânticas. Porém, estes tipos foram desenvolvidos apenas para o SGBD PostgreSQL/Postgis. Com a extensão desses tipos para outros SGBD, poderá abranger mais usuários, pois cada desenvolvedor e/ou empresa tem preferências ou necessidades de utilizar determinado SGBD. Portabilidade da API para outras linguagens de programação. Para facilitar o uso dos novos tipos de dados propostos neste trabalho foi desenvolvida uma API na linguagem de programação Java. Atualmente na área de desenvolvimento computacional, existem diversos perfis de desenvolvedores e empresas do ramo, tais como: o uso de diversas linguagens de programação no desenvolvimento de aplicações, e o uso de uma linguagem específica. Com a portabilidade desta API para outras linguagens de desenvolvimento, o uso da mesma será expandido, aumentando a flexibilidade em relação à linguagem de programação a ser utilizada pelo desenvolvedor. Portabilidade da API para outros SGBD. A API DBST foi desenvolvida com funções específicas para o SGBD PostgreSQL/Postgis. Com o refatoramento da mesma, fazendo com que ela promova o suporte a outros SGBD, o desenvolvedor terá uma maior flexibilidade 87 para utilizar o SGBD que lhe seja de maior interesse no processo de desenvolvimento de uma aplicação qualquer. Definir operadores para uma linguagem de consulta sobre trajetórias semânticas. A definição de operadores para realização de consultas sobre trajetórias semânticas será relevante para o usuário. Com isso, ele poderá consultar as informações armazenadas no BD através dos novos tipos de dados propostos por este trabalho dissetativo. 88 Referências Bibliográficas (COSTA, A. C. C, 2011) - COSTA, A. C. C., Modelos Dinâmicos Hierárquicos Espaços-Temporais para Dados na Família Exponencial, Instituto de Matemática Departamento de Métodos Estatísticos, dissertação de mestrado, 2011. (DIAS et. al., 2005) - DIAS, T. L., CÂMERA G., DAVIS. C. A., Modelos EspaçosTemporais, São José dos Campos, Bancos de dados geográficos, INPE-12832PRE/8122, 2005. (EDELWEISS, N.; OLIVEIRA, J. P., 1994) - EDELWEISS, N.; OLIVEIRA, J. P. M. Modelagem de aspectos temporais de sistemas de informação. Livro texto da Escola de Computação. 9a Escola de Computação, Universidade Federal de Pernambuco, Recife, 1994. (RENOLEN, A., 1997) - RENOLEN, A. Conceptual modelling and spatiotemporal information systems: how to model the real world. In: 6th SCANDINAVIAN RESEARCH CONFERENCE ON GIS (SCANGIS’97), Estocolmo, 1997. (LANGRAN, G. 1993) - LANGRAN, G. Time in Geographic Information Systems. London/Washington, DC: Taylor & Francis. 189p.,1993. (BOGORNY, V., 2008) - BOGORNY, V., Trajetórias de objetos móveis: você já pensou que pode estar sendo monitoriado?, Information society Tecnologies, UFSC, acessado em 20/12/2012: http://www.google.com.br/url?sa=t&rct=j&q=Aula7- Trajetorias+&source=web&cd=1&ved=0CDAQFjAA&url=http%3A%2F%2Fwww.inf.uf sc.br%2F~bosco%2Fensino%2Fine6406%2FUbiComp%2FAula7Trajetorias.ppt&ei=8kTkUKayNInK9gTPjYHoBg&usg=AFQjCNEy8w5g9X5qvqui17H wQCbjLxjoTg&bvm=bv.1355534169,d.eWU&cad=rja 89 (SILVA, M. C. T, 2009) - SILVA, M. C. T., ETL: Uma ferramenta de ETL para Trajetórias de objetos móveis, Universidade Federal de Pernambuco – UFPE, Monografia de Graduação, Recife, 2009. (SPACCAPIETRA, S., 2009) SPACCAPIETRA, S., Semantic Trajectories, SeCoGIS, École Polytechnique Fedérale de Lausanne, Gramado, 2009. (FAJARDO, B. S., 2008) - FAJARDO, B. S., Uma extensão nativa do sql para minaração de trajetória semântica, Information society Tecnologies, Universidade Federal do Rio Grande do Sul – UFRS, Monografia de graduação, Posto Alegre, 2008. (SPACCAPIETRA et. al., 2008) - SPACCAPIETRA, S., PARENT, C.; DAMIANI, M. L.; MACEDO, J. A., PORTO, F.; VANGENOT, C. A conceptual view on trajectories. Data Knowl. Eng., 65(1), 126–146, 2008. (SPACCAPIETRA, et. al., 2007) - SPACCAPIETRA, S.; PARENT, C.; ZIMÁNYI, E., Spatio-Temporal and Multi-Representation Modeling: A Contribution to Active Conceptual Modeling, in Active Conceptual Modeling for Learning, LNCS 4512, 2007. (YAN et. al., 2011) - YAN, Z.; CHAKRABORTY, D.; PARENT, C.; SPACCAPIETRA, S., and ABERER, K. Semitri: a framework for semantic annotation of heterogeneous trajectories. In Proceedings of the 14th International Conference on Extending Database Technology, EDBT/ICDT '11, pages 259-270, New York, NY, USA. ACM, 2011. (SILVA, M. C. T., 2012) SILVA, M. C. T, Um Modelo Conceitual para Data Warehouse Semântico de Trajetórias, Universidade Federal de Pernambuco – UFPE, dissertação de mestrado do centro de informática, Recife, 2012. (YAN et. al., 2010) - YAN, Z.; PARENT, C.; SPACCAPIETRA, S., and CHAKRABORTY, D. A hybrid model and computing platform for spatio-semantic trajectories. In Proceedings of the 7th international conference on The Semantic Web: research and Applications - Volume Part I, ESWC'10, pages 60–75, Berlin, Heidelberg. Springer-Verlag, 2010. 90 (SPACCAPIETRA et. al., 1998) - SPACCAPIETRA, S.; ZIMANYI, E.; DONINI, P.; PLAZANET, C.; VAGENOT, C.; PARENT, C., Modeling Spatial Data in the MADS Conceptual Model; Published in: Proc. of the 8th Int. Symp. on Spatial Data Handling, 1998. (JUN et. al., 2006) - JUN, J., GUENSLER, R., AND OGLE, J. 2006) JUN, J., GUENSLER, R., AND OGLE, J. 2006. Smoothing Methods to Minimize Impact of Global Positioning System Random Error on Travel Distance, Speed, and Acceleration Profile Estimates. Transportation Research Record: Journal of the Transportation Research Board, 1972. (PARENT et. al., 2013) - PARENT, C. ; SPACCAPIETRA, S. ; RENSO, C. ; ADRIENKO, G. ; ADRIENKO, N. ; BOGORNY, V. ; Damiani, M. L. ; GKOULALASDIVANIS, A. ; MACEDO, J. A. F. ; PELEKIS, N. ; THEODORIDIS, Y. ; Yan, Z . Semantic Trajectories Modeling and Analysis. ACM Computing Surveys, v. 45, p. 138, 2013. (FRAGA et. al., 2011) - FRAGA, J. S. e COELA, R. A. V, Uma API Java para Acesso a Banco de Dados Relacional usando o OGSA-DAÍ, Universidade Estadual do Mato Grosso do Sul, monografia de graduação, 2011. (ALVARES et. al., 2007) - ALVARES, L.; BOGORNY, V.; KUIJPERS, B.; VAISMAN, A; MACEDO, J; MELANS, B., A Model for Enriching Trajectories with Semantic Geographical Information, In: Proc. Of the ACM 15th International Symposium on Advances in Geographic Information Systems, Seattle, Washington, 2007. (ALMEIDA, et. al., 2011) - ALMEIDA, C. A. S.; PIRES, C.E.; SCHIEL, U. Um Modelo de Dados para Trajetórias de Objetos Móveis com suporte a Agregação de Movimentos. Revista Brasileira de Sistemas de Informação (iSys), Vol. 4. 2011. (LOY et. al. 2011) - LOY, A. M.; BOGORNY, V.; RENSO, C.; ALVARES, L. O. Um algoritmo para identificar padrões comportamentais tipo avoidance, Instituto de Informática – Universidade Federal do Rio Grande do SUL – UFRGS, GEOINFO, Campos do Jordão, 2011. 91 (LOY, A. M. 2011) - LOY, A. M., identificando padrões comportamentais do tipo avoidence em trajetórias de objetos móveis, Instituto de Informática – Jornal of the Brasilian Computer Society Volume 17, Number 3, p. 193-203. 2011. (YI, B. 2004) - YI, B. Um modelo de dados para objetos móveis, Instituto da computação – Universidade Estadual de Campinas - UNICAMP, dissertação de mestrado, São Paulo, 2004. (PALMA et. al., 2008) - PALMA, A. T., BOGORNY, V., KUIJPERS, B., and ALVARES, L. O. A clustering-based approach for discovering interesting places in trajectories. In Proceedings of the 2008 ACM symposium on Applied Computing, SAC'08, (December), 863, 2008. (ROCHA et. al., 2010) - ROCHA, J. A. M. R., TIMES, V. C., OLIVEIRA, G., ALVARES, L. O., and BOGORNY, V. Db-smot: A direction-based spatio-temporal clustering method. In IEEE Conf. of Intelligent Systems, pages 114–119. IEEE, 2010. (ALVARES et. al., 2007) - ALVARES, L. O.; BOGORNY, V.; KUIJPERS, B. MACEDO, J. A. F.; MOELANS, B.; VAISMAN, A. A model for enriching trajectories with semantic geographical information. In Proceedings of the 15th annual ACM international symposium on Advances in geographic information systems, GIS '07, pages 22:1–22:8, New York, NY, USA. ACM, 2007. (MEDEIROS et. al., 1996) - MEDEIROS, C. M. B.; CÂMERA, G.; CASANOVA, M. A.; HEMERLY, A. S.; MAGALHÃES, G. C. Anatomia de Sistemas de Informação Geográfica. Instituto de Computação – UNICAMP, Divisão de Processamento de Imagens – INPE, Centro Latino Americano de Soluções para Educação Superior e Pesquisa - IBM Brasil, Departamento de Sistemas de Operação - CPqD/TELEBRÁS. Rio de Janeiro, abril de 1996. (BOULMAKOUl et. al., 2012) - BOULMAKOUl, A.; Karim, L.; Lbath, A., Moving Object Trajectories Meta-Model and Spatial-Temporal Queries. International Journal of Database Management Systems ( IJDMS ) Vol.4, No.2, April 2012. 92 (UI, B. 2004) - UI, B. Um Modelo de Dados para Objetos Móveis, Instituto de computação, Universidade Estadual de Campinas – IC-UNICAMP, GEOINFO, São Paulo, 9 de Junho de 2004. (BOGORNY et. al., 2013) - BOGORNY, V. ; RENSO, C. ; AQUINO, A. ; SIQUEIRA, F. L. ; ALVARES, L. O. . CONSTAnT - A Conceptual Data Model for Semantic Trajectories of Moving Objects. Transactions in GIS (Print) v. 10, p. n/a-n/a, 2013; ISSN/ISBN: 13611682. (LEE et. al., 2008) - LEE, J.; HAN, J.; LI, X.; and GONZALEZ, H. TraClass: trajectory classiFIcation using hierarchical region-based and trajectory-based clustering. PVLDB, 1(1):1081-1094, 2008. (CAO et. al., 2007) - CAO, H.; MAMOULIS, N.; and CHEUNG, D. W. Discovery of periodic patterns in spatiotemporal sequences. IEEE Trans. Knowl. Data Eng., 19(4):453-467, 2007. (GIANNOTTI et. al., 2007) - GIANNOTTI, F.; NANNI, M.; PINELLI, F.; and PEDRESCHI, D. Trajectory pattern mining. In Pavel Berkhin, Rich Caruana, and Xindong Wu, editors, KDD, pages 330-339. ACM Press, 2007. (LI et. al., 2010) – LI, Z.; DING, B.; HAN, J.; KAYS, R.; and NYE, P. Mining periodic behaviors for moving objects. In Rao B,Krishnapuram B, Tomkins A, and Yang Q, editors, KDD, pages 1099-1108. ACM, 2010. (NANNI et. al., 2008) – NANNI, M.; KUIJPERS, B.; KORNER, C.; MAY, M. and PEDRESCHI D. Spatiotemporal data mining. In Giannotti, F. and Pedreschi, D., editors, Mobility, Data Mining and Privacy, pages 267-296. Springer, 2008. (ESRI, 2004) - ESRI, Understandong ArcSDE, 380 New York Street, Redlands, CA 92373-8100, USA, United States of America. 2004 (FERREIRA, K. R. 2003) - FERREIRA, K. R. Interface para operações espaciais em banco de dados geográficos. Ministério da ciência e tecnologia – Instituto Nacional de Pesquisa Espacial – INPE. Dissertação de Mestrado em Computação Aplicada, São José dos Campos, São Paulo, 2003. 93 (YAN et. al., 2012) - YAN, Z.; CHAKRABORTY, D.; PARENT, C.; SPACCAPIETRA, S.; ABERER, K. Semantic Trajectories: Mobility Data Computation and Annotation. ACM Transactions on Intelligent Systems and Technology, Vol. 9, No. 4, Article 39, Publication date: March 2012. (BARROS, R. C. 2012) - BARROS, R. C. Uma Abordagem de Raciocínio Espacial em Lógica de descrições. Programa de Pós-graduação em ciência da computação, Centro de Informática da Universidade Federal de Pernambuco (Cin-UFPE), RECIFE, Agosto 2012. (MURRAY et. al., 2006) - MURRAY, C.; ABUGOV, D.; ALEXANDER, N.; BLACKWELL, B.; BLOWNEY, J.; GERINGER, D.; GODFRIND, A.; HORHAMMER, M.; KOTHURI, R.; PITTS, R.; RAO, V.; RAVADA, S.; WANG, J.; YANG, J. Oracle Spatial User’s Guide and Reference, 10g Release 2 (10.2), B14255-03 , Março de 2006 (VAISMAN et. al., 2007) - VAISMAN, A.; ALVARES, L. O.; BOGORNY, V.; MACEDO, J. A. F.; MOLEANS, B. A model for enriching trajectories with semantic geographical information. Published in: GIS '07 Proceedings of the 15th annual ACM international symposium on Advances in geographic information systems, Article No. 22, ISBN: 978-1-59593-914-2, ACM New York, NY, USA, 2007 (GUTING et, al., 2011) - GUTING, R. H.; ANSORGE, D.; BEHR, T.; DUNTGEN, C.; JANDT, S.; SPIEKERMANN, M. SECONDO – User Manual v.1. Faculty for Mathematics and Computer Sience, Database Systems for New Applications, Hagen, Germany, 2011 (MORENO et. al., 2010) - MORENO, B. ; TIMES, V. C. ; RENSO, C. ; BOGORNY, V. . Looking inside the stops of trajectories of moving objects. In: Simpósio Brasileiro de Geoinformatica, 2010, Campos do Jordão. SBC. São José dos Campos: INPE, 2010. p. 9-20. (VINHAS, L. e FERREIRA, K. R., 2005) - VINHAS, L. e FERREIRA, K. R., Banco de Dados geográficos. Ministério da ciência e tecnologia – Instituto Nacional de 94 pesquisa Espacial – INPE. Dissertação de Mestrado em Computação Aplicada São José dos Campos, São Paulo, 2005: INPE-12837-PRE/8127. (BARIS et. al., 2008) - BARIS, G, MAY, M.; SAYGIN, Y.; KORNER, C. Semantic Annotation of GPS Trajectories. th AGILE International Conference on Geographic Information Science. University of Girona, Spain, 2008. (SALGADO et. al., 2011) - SALGADO, A. C.; TEDESCO, P.; DOHERTY, M. J.; RISTAR, A. R. R.; SANTOS, L. M.; TITO, A. O. UbiBus: Um Sistema de Informações Inteligentes para Transporte Público. Centro de Informática – Universidade Federal de Pernambuco (UFPE), Recife, PE, Brasil, 2011. (BOCK , H. 2011) - BOCK , H. The Definitive Guide to NetBeans™ Platform 7. ISBN13: 978-1-4302-4101-0, Publication Date: December 28, 2011. (MAIA, R. 2004) - MAIA, R. A linguagem C++, TecGraf/PUC-Rio, Novembro de 2004. (MARÇULA, M. 2010) - MARÇULA, M. DBDesigner 4. Fabulous Force Database Tools, Tutorial de Banco de Dados. Março de 2010. (GONÇALVES E. 2006) - GONÇALVES, E. DOMINANDO ECLIPSE - Tudo que o Desenvolvedor Java precisa para criar Aplicativos para Desktop. ISBN: 8573934867, ISBN-13: 9788573934861. 1ª Edição, Editora: Ciência Moderna. Pág. 326, 2006. (STOIZE, K. 2005) - STOIZE, K. DB2 Spatial Extender performance tuning. IBM Corporation. Acessado em 25/12/2012. http://www.ibm.com/developerworks/data/library/techarticle/dm-0510stolze/. Outubro de 2005. (ANDERSON et. al., 2001) -. Anderson, J; Ashkenas, D. Working with the Geodetic and Spatial DataBlade Modules. IBM Corporation. Acessado em 25/12/2012. http://www.ibm.com/developerworks/data/zones/informix/library/techarticle/ids_geo_s patial.html. Dezembro de 2001. (MISTRY, R. e MISNER, S. 2010) - MISTRY, R; MISNER, S. Introducing Microsoft SQL Server 2008 R2. Published by Microsoft Press – A Division of Microsoft 95 Corporation. Redmond, Washington 98052-6399. Ed. Online Training Solutions, Inc. 2010. (MAHER, M M. 2010) - MAHER, M M. Living Up Data in Arcgis – A Guide to Map Projections. ISBN-10: 1589482492. ISBN-13: 978-1589482494. Published by ESRI Press. Pág. 200, Junho 2010. 96 Apêndice A Scripts DDL PostgreSQL/Postgis Cenário 1 – Gerenciamento de Trajetória de Pássaros CREATE TABLE ATIVIDADE ( ID SERIAL NOT NULL, LOCALIZACAOESPACIAL_ID INTEGER NOT NULL, ACAO NoteActivateType, CONSTRAINT PK_ATIVIDADE PRIMARY KEY (ID) ); CREATE INDEX IXFK_ATIVIDADE_1_LOCALIZACAOESPACIAL_ID ON ATIVIDADE (LOCALIZACAOESPACIAL_ID); CREATE TABLE COMPORTAMENTOS ( ID SERIAL NOT NULL, MIGRACAO_ID INTEGER NOT NULL COMPORTAMENTO NoteBehaviorType, CONSTRAINT PK_COMPORTAMENTOS PRIMARY KEY (ID) ); CREATE INDEX IXFK_COMPORTAMENTOS_1_MIGRACAO_ID ON COMPORTAMENTOS (MIGRACAO_ID); CREATE TABLE EVENTO ( ID SERIAL NOT NULL, LOCALIZACAOESPACIAL_ID INTEGER NOT NULL ACONTECIMENTO NoteEventType, CONSTRAINT PK_EVENTO PRIMARY KEY (ID) ); CREATE INDEX IXFK_EVENTO_1_LOCALIZACAOESPACIAL_ID ON EVENTO (LOCALIZACAOESPACIAL_ID); CREATE TABLE OBJETIVOS ( ID SERIAL NOT NULL, MOTIVACAO NoteGoalType, CONSTRAINT PK_OBJETIVOS PRIMARY KEY (ID) ); CREATE TABLE PASSARO ( ID SERIAL NOT NULL, NAME VARCHAR(20), CONSTRAINT PK_PASSARO PRIMARY KEY (ID) 97 ); CREATE TABLE REGIAO ( ID SERIAL NOT NULL, PAIS VARCHAR(50), ESTADO VARCHAR(30), CONSTRAINT PK_REGIAO PRIMARY KEY (ID) ); CREATE TABLE ESTADOAMBIENTE ( ID SERIAL NOT NULL, AMBIENTE NoteEnvironmmentType, CONSTRAINT PK_ESTADOAMBIENTE PRIMARY KEY (ID) ); CREATE TABLE LOCALIZACAOESPACIAL ( ID SERIAL NOT NULL, REGIAO_ID INTEGER NOT NULL, ESTADOAMBIENTE_ID INTEGER NOT NULL LOCALIZACAO StopType, CONSTRAINT PK_LOCALIZACAOESPACIAL PRIMARY KEY (ID) ); CREATE INDEX IXFK_LOCALIZACAOESPACIAL_1_ESTADOAMBIENTE_ID ON LOCALIZACAOESPACIAL (ESTADOAMBIENTE_ID); CREATE INDEX IXFK_LOCALIZACAOESPACIAL_2_REGIAO_ID ON LOCALIZACAOESPACIAL (REGIAO_ID); CREATE TABLE MIGRACAO ( ID SERIAL NOT NULL, OBJETIVOS_ID INTEGER NOT NULL, REGIAO_ID INTEGER NOT NULL, DESLOCAMENTO MoveType, CONSTRAINT PK_MIGRACAO PRIMARY KEY (ID) ); CREATE INDEX IXFK_MIGRACAO_1_REGIAO_ID ON MIGRACAO (REGIAO_ID); CREATE INDEX IXFK_MIGRACAO_2_OBJETIVOS_ID ON MIGRACAO (OBJETIVOS_ID); CREATE TABLE MIGRACAO_HAS_PASSARO ( MIGRACAO_ID INTEGER NOT NULL, PASSARO_ID INTEGER NOT NULL, CONSTRAINT PK_MIGRACAO_HAS_PASSARO PRIMARY KEY (MIGRACAO_ID, PASSARO_ID) ); CREATE INDEX IXFK_MIGRACAO_HAS_PASSARO_1_MIGRACAO_ID ON MIGRACAO_HAS_PASSARO (MIGRACAO_ID); CREATE INDEX IXFK_MIGRACAO_HAS_PASSARO_2_PASSARO_ID ON MIGRACAO_HAS_PASSARO (PASSARO_ID); ALTER TABLE ATIVIDADE ADD CONSTRAINT FK_ATIVIDADE_LOCALIZACAOESPACIAL FOREIGN KEY (LOCALIZACAOESPACIAL_ID) REFERENCES LOCALIZACAOESPACIAL (ID); ALTER TABLE COMPORTAMENTOS ADD CONSTRAINT FK_COMPORTAMENTOS_MIGRACAO FOREIGN KEY (MIGRACAO_ID) 98 REFERENCES MIGRACAO (ID); ALTER TABLE EVENTO ADD CONSTRAINT FK_EVENTO_LOCALIZACAOESPACIAL FOREIGN KEY (LOCALIZACAOESPACIAL_ID) REFERENCES LOCALIZACAOESPACIAL (ID); ALTER TABLE LOCALIZACAOESPACIAL ADD CONSTRAINT FK_LOCALIZACAOESPACIAL_ESTADOAMBIENTE FOREIGN KEY (ESTADOAMBIENTE_ID) REFERENCES ESTADOAMBIENTE (ID); ALTER TABLE LOCALIZACAOESPACIAL ADD CONSTRAINT FK_LOCALIZACAOESPACIAL_REGIAO FOREIGN KEY (REGIAO_ID) REFERENCES REGIAO (ID); ALTER TABLE MIGRACAO ADD CONSTRAINT FK_MIGRACAO_REGIAO FOREIGN KEY (REGIAO_ID) REFERENCES REGIAO (ID); ALTER TABLE MIGRACAO ADD CONSTRAINT FK_MIGRACAO_OBJETIVOS FOREIGN KEY (OBJETIVOS_ID) REFERENCES OBJETIVOS (ID); ALTER TABLE MIGRACAO_HAS_PASSARO ADD CONSTRAINT FK_MIGRACAO_HAS_PASSARO_MIGRACAO FOREIGN KEY (MIGRACAO_ID) REFERENCES MIGRACAO (ID); ALTER TABLE MIGRACAO_HAS_PASSARO ADD CONSTRAINT FK_MIGRACAO_HAS_PASSARO_PASSARO FOREIGN KEY (PASSARO_ID) REFERENCES PASSARO (ID); Cenário 2 – Gerenciamento de Transportes Públicos CREATE TABLE ATIVIDADE ( ID SERIAL NOT NULL, LOCALIZACAOESPACIAL_ID INTEGER NOT NULL, ACAO NoteActivateType, CONSTRAINT PK_ATIVIDADE PRIMARY KEY (ID) ); CREATE INDEX IXFK_ATIVIDADE_1_LOCALIZACAOESPACIAL_ID ON ATIVIDADE (LOCALIZACAOESPACIAL_ID); CREATE TABLE CATEGORIA ( ID SERIAL NOT NULL, DESRICAO VARCHAR(20), CONSTRAINT PK_CATEGORIA PRIMARY KEY (ID) ); CREATE TABLE COMPORTAMENTOSTRANSITO ( ID SERIAL NOT NULL, TRAJETOS_ID INTEGER NOT NULL, COMPORTAMENTO NoteBehaviorType, CONSTRAINT PK_COMPORTAMENTOSTRANSITO PRIMARY KEY (ID) ); 99 CREATE INDEX IXFK_COMPORTAMENTOSTRANSITO_1_TRAJETOS_ID ON COMPORTAMENTOSTRANSITO (TRAJETOS_ID); CREATE TABLE DIRECAO ( ID SERIAL NOT NULL, IDA BOOLEAN, CONSTRAINT PK_DIRECAO PRIMARY KEY (ID) ); CREATE TABLE EVENTO ( ID SERIAL NOT NULL, TRAJETOS_ID INTEGER NOT NULL, LOCALIZACAOESPACIAL_ID INTEGER NOT NULL ACONTECIMENTO NoteEventType, CONSTRAINT PK_EVENTO PRIMARY KEY (ID) ); CREATE INDEX IXFK_EVENTO_1_LOCALIZACAOESPACIAL_ID ON EVENTO (LOCALIZACAOESPACIAL_ID); CREATE INDEX IXFK_EVENTO_2_TRAJETOS_ID ON EVENTO (TRAJETOS_ID); CREATE TABLE OBJETIVOS ( ID SERIAL NOT NULL, MOTIVACAO NoteGoalType, CONSTRAINT PK_OBJETIVOS PRIMARY KEY (ID) ); CREATE TABLE REGIAODESTINO ( ID SERIAL NOT NULL, TRAJETOS_ID INTEGER NOT NULL, CIDADE VARCHAR(30), BAIRRO VARCHAR(50) CONSTRAINT PK_REGIAODESTINO PRIMARY KEY (ID) ); CREATE INDEX IXFK_REGIAODESTINO_1_TRAJETOS_ID ON REGIAODESTINO (TRAJETOS_ID); CREATE TABLE TRAJETOS ( ID SERIAL NOT NULL, ESTADOAMBIENTE_ID INTEGER NOT NULL, OBJETIVOS_ID INTEGER NOT NULL, DIRECAO_ID INTEGER NOT NULL, DESLOCAMENTO MoveType, CONSTRAINT PK_TRAJETOS PRIMARY KEY (ID) ); CREATE INDEX IXFK_TRAJETOS_1_DIRECAO_ID ON TRAJETOS (DIRECAO_ID); CREATE INDEX IXFK_TRAJETOS_2_OBJETIVOS_ID ON TRAJETOS (OBJETIVOS_ID); CREATE INDEX IXFK_TRAJETOS_3_ESTADOAMBIENTE_ID ON TRAJETOS (ESTADOAMBIENTE_ID); CREATE TABLE TRAJETOS_HAS_ONIBUS ( TRAJETOS_ID INTEGER NOT NULL, ONIBUS_ID INTEGER NOT NULL, CONSTRAINT PK_TRAJETOS_HAS_ONIBUS PRIMARY KEY (TRAJETOS_ID, ONIBUS_ID) ); 100 CREATE INDEX IXFK_TRAJETOS_HAS_ONIBUS_1_TRAJETOS_ID ON TRAJETOS_HAS_ONIBUS (TRAJETOS_ID); CREATE INDEX IXFK_TRAJETOS_HAS_ONIBUS_2_ONIBUS_ID ON TRAJETOS_HAS_ONIBUS (ONIBUS_ID); CREATE TABLE ESTADOAMBIENTE ( ID SERIAL NOT NULL, AMBIENTE NoteEnvironmentType, CONSTRAINT PK_ESTADOAMBIENTE PRIMARY KEY (ID) ); CREATE TABLE LOCALIZACAOESPACIAL ( ID SERIAL NOT NULL REGIAODESTINO_ID INTEGER NOT NULL LOCALIZACAO StopType, CONSTRAINT PK_LOCALIZACAOESPACIAL PRIMARY KEY (ID) ); CREATE INDEX IXFK_LOCALIZACAOESPACIAL_1_REGIAODESTINO_ID ON LOCALIZACAOESPACIAL (REGIAODESTINO_ID); CREATE TABLE ONIBUS ( ID SERIAL NOT NULL, CATEGORIA_ID INTEGER NOT NULL, NAME VARCHAR(20), NACENTOS INTEGER, CAPACIDADEPASSAGEIROS INTEGER, EMPRESA VARCHAR(20), CONSTRAINT PK_ONIBUS PRIMARY KEY (ID) ); CREATE INDEX IXFK_ONIBUS_1_CATEGORIA_ID ON ONIBUS (CATEGORIA_ID); ALTER TABLE ATIVIDADE ADD CONSTRAINT FK_ATIVIDADE_LOCALIZACAOESPACIAL FOREIGN KEY (LOCALIZACAOESPACIAL_ID) REFERENCES LOCALIZACAOESPACIAL (ID); ALTER TABLE COMPORTAMENTOSTRANSITO ADD CONSTRAINT FK_COMPORTAMENTOSTRANSITO_TRAJETOS FOREIGN KEY (TRAJETOS_ID) REFERENCES TRAJETOS (ID); ALTER TABLE EVENTO ADD CONSTRAINT FK_EVENTO_LOCALIZACAOESPACIAL FOREIGN KEY (LOCALIZACAOESPACIAL_ID) REFERENCES LOCALIZACAOESPACIAL (ID); ALTER TABLE EVENTO ADD CONSTRAINT FK_EVENTO_TRAJETOS FOREIGN KEY (TRAJETOS_ID) REFERENCES TRAJETOS (ID); ALTER TABLE REGIAODESTINO ADD CONSTRAINT FK_REGIAODESTINO_TRAJETOS FOREIGN KEY (TRAJETOS_ID) REFERENCES TRAJETOS (ID); ALTER TABLE TRAJETOS ADD CONSTRAINT FK_TRAJETOS_DIRECAO FOREIGN KEY (DIRECAO_ID) REFERENCES DIRECAO (ID); 101 ALTER TABLE TRAJETOS ADD CONSTRAINT FK_TRAJETOS_OBJETIVOS FOREIGN KEY (OBJETIVOS_ID) REFERENCES OBJETIVOS (ID); ALTER TABLE TRAJETOS ADD CONSTRAINT FK_TRAJETOS_ESTADOAMBIENTE FOREIGN KEY (ESTADOAMBIENTE_ID) REFERENCES ESTADOAMBIENTE (ID); ALTER TABLE TRAJETOS_HAS_ONIBUS ADD CONSTRAINT FK_TRAJETOS_HAS_ONIBUS_TRAJETOS FOREIGN KEY (TRAJETOS_ID) REFERENCES TRAJETOS (ID); ALTER TABLE TRAJETOS_HAS_ONIBUS ADD CONSTRAINT FK_TRAJETOS_HAS_ONIBUS_ONIBUS FOREIGN KEY (ONIBUS_ID) REFERENCES ONIBUS (ID); ALTER TABLE LOCALIZACAOESPACIAL ADD CONSTRAINT FK_LOCALIZACAOESPACIAL_REGIAODESTINO FOREIGN KEY (REGIAODESTINO_ID) REFERENCES REGIAODESTINO (ID); ALTER TABLE ONIBUS ADD CONSTRAINT FK_ONIBUS_CATEGORIA FOREIGN KEY (CATEGORIA_ID) REFERENCES CATEGORIA (ID);