·
Análise e Desenvolvimento de Sistemas ·
Banco de Dados
Send your question to AI and receive an answer instantly
Recommended for you
38
Trabalho Academico - Big Data
Banco de Dados
UNINTER
4
Atividade Pratica de Nosql_2024
Banco de Dados
UNINTER
9
Banco de Dados Relacional
Banco de Dados
UNINTER
2
Atividade Avaliativa 3-2022 2
Banco de Dados
UFRN
3
Criar Banco de Dado e Tabelas
Banco de Dados
FATEC
1
Criação de Tabela
Banco de Dados
COTEMIG
32
Projeto de Banco de Dados Relacional
Banco de Dados
IFSP
30
Projeto de Banco de Dados Relacional
Banco de Dados
IFSP
1
Atividade 1 - Banco de Dados - 53_2024
Banco de Dados
UNICESUMAR
9
Trabalho em Banco de Dados
Banco de Dados
IFSP
Preview text
ATIVIDADE PRÁTICA NoSQL Roteiro Elaborado por Prof MSc Guilherme Ditzel Patriota ANO 2024 Roteiro de Atividade Prática de NoSQL 1 SUMÁRIO SUMÁRIO 1 INTRODUÇÃO 2 MOTIVAÇÃO DO TRABALHO 2 RESUMO DO QUE FAZER 3 ORIENTAÇÕES GERAIS 6 FORMATO DE ENTREGA 6 CRITÉRIOS DE AVALIAÇÃO 7 FORMATO DA APRESENTAÇÃO 8 IDENTIFICAÇÃO PESSOAL 9 CÓDIGOQUERY 10 IMAGENS 11 RESPOSTA 12 EXEMPLO DE APRESENTAÇÃO DE QUESTÃO 13 PRÁTICAS 14 DESCRIÇÃO DO CONJUNTO DE DADOS E PROJETO 14 DETALHAMENTO DOS PASSOS A SEREM REALIZADOS NO TRABALHO 18 CRIAÇÃO DE UM NOVO DBMS LOCAL EM VERSÃO 4 18 TESTE DO DBMS CRIADO E FUNCIONANDO COM A BIBLIOTECA APOC 41 EXEMPLO DE COMANDO DE CRIAÇÃO DE NÓS E RELACIONAMENTOS COM BASE NOS ARQUIVOS JSON DA PASTA IMPORT 43 QUESTÃO 01 IMPORTAÇÃO DOS ARQUIVOS JSON E CRIAÇÃO DE NÓS E ARESTAS COM BASE NOS DADOS DOS ARQUIVOS 48 QUESTÃO 02 DESCOBERTA DA HASHTAG PRINCIPAL 55 QUESTÃO 03 ANÁLISE DOS DADOS SEGUNDO VIÉS A SUA ESCOLHA 58 RESPOSTAS AS DÚVIDAS MAIS FREQUÊNTES 60 Roteiro de Atividade Prática de NoSQL 2 INTRODUÇÃO Olá a todos Sejam todos muito bemvindos Esta avaliação foi planejada e preparada para a disciplina de Banco de Dados NoSQL dos Cursos de Tecnologia do Centro Universitário Internacional Uninter O objetivo desta atividade é fazer com que você aluno desenvolva os conhecimentos teóricos aprendidos na rota de aprendizagem de maneira prática e aplicável no mercado de trabalho Para tanto será necessário o uso das ferramentas apresentadas nas aulas práticas em especial na aula prática de Neo4j Ao longo desse roteiro serão passadas as orientações gerais para realização da avaliação bem como os seus critérios de correção Na sequência apresentase um exemplo comentado de como se deve ser entregue uma questão Seguindo o roteiro estarão as práticas a serem realizadas cada uma delas possui uma explicação de como deve ser feita como será cobrada e algumas dicas Por fim apresento uma seção com as respostas das dúvidas mais frequentes realizadas por vocês Bons estudos No mais desejolhe boa atividade prática em nome dos professores da disciplina de Banco de Dados NoSQL As práticas desse roteiro utilizam 547 arquivos JSON sugerimos usar de 3 a 10 arquivos em sequência apenas com dados de Tweets coletados entre 31122019 e 01042021 com apenas uma hashtag como filtro para as mensagens Sua tarefa é descobrir qual é esta hashtag apenas ela aparece em todas os tweets originais coletados excluindose os retweets mensagens de citação e mensagens de resposta e escolher algum viés de análise de relacionamento entre os dados coletados para apresentação em um grafo com os nós como os usuários ou os tweets e os relacionamentos como retweets ou citações ou outra forma de relacionamento que você perceba como relevante O desafio principal é a aplicação de todos os seus conhecimentos adquiridos até o momento para a realização de uma análise de dados com aplicação em banco orientado a grafos bem como uso de seu senso crítico na escolha do que analisar e de qual janela de tempo analisar o dado em questão MOTIVAÇÃO DO TRABALHO Análise de dados de redes sociais é o grande consumidor de técnicas e aplicações de bancos de dados NoSQL Sendo assim treinar com uma aplicação em situação real de mercado é de suma importância Saber separar suas opiniões e convicções de sua análise técnica e imparcial de um dado é o que o tornará valorizado como excelente profissional Roteiro de Atividade Prática de NoSQL 3 RESUMO DO QUE FAZER 1 Instalar Neo4j localmente ou em nuvem 2 Criar banco de dados vazio DBMS Local em versão 4 sugerida 3 Instalar biblioteca APOC neste DBMS criado 4 Abra a pasta import do DBMS criado e coloque nela de 3 a 10 arquivos JSON em sequência numérica dos 547 arquivos fornecidos que contém os tweets e metadados coletados a serem analisados sugestão para não causar demora na importação mas você pode usar todos os arquivos JSON se desejar 5 Crie ou copie dos arquivos do trabalho em sua rota o arquivo apocconf na pasta conf do seu DBMS novo para permitir acesso aos arquivos da pasta import 6 Inicie seu DBMS e abra o Browser dele para realizar queries Cypher nele 7 Carregar dados dos arquivos JSON da pasta import usando uma query Cypher para criação dos nós e relacionamentos no seu DBMS vazio nós e arestas com importação de dados dos arquivos JSON da pasta import incluir o dado de referencedtweetstype nos nós de Tweet Observações Não esqueça de explicar o funcionamento destes comandos na sua legenda Dicas e comandos sugeridos necessário adaptar e complementar de acordo com sua necessidade a Colocar o dado de referencedtweetstype b Colocar demais dados que serão necessários para a última questão ver item 7 c MERGE identificadorRU ru RU12345678 d CALL apocloaddirectoryjson YIELD value WITH value as arquivo CALL apocloadjsonarquivo YIELD value UNWIND valuedata as tweet MERGE uUser userid tweetauthorid MERGE tTweet idtuite tweetid ON CREATE SET t Coloque aqui os dados que você deseja Coloque aqui os demais nós e relacionamentos que você deseja criar FOREACH hash IN tweetentitieshashtags MERGE hHashtag tag apoctextreplaceapoctextcleanhashtagazAZ09 MERGE hPOSSUIt MERGE uUSOUh FOREACH reftweet IN tweetreferencedtweets SET ttiporef coalescettiporef reftweettype tidref coalescetidref reftweetid 8 Alterar os nós de Tweet que contenham o dado referencedtweets na estrutura JSON para nós dos tipos dados em referencedtweetstype estes nós não são Tweets e sim Retweets ou Quoted ou Roteiro de Atividade Prática de NoSQL 4 Repliedto e não podem influenciar na sua resposta da busca da hashtag principal Comandos sugeridos a MATCH t WHERE retweeted IN ttiporef REMOVE tTweet SET tRetweet b MATCH t WHERE repliedto IN ttiporef REMOVE tTweet SET tResposta c MATCH t WHERE quoted IN ttiporef REMOVE tTweet SET tCitacao 9 Fazer uma query de busca nos dados do seu banco para encontrar a hashtag principal que aparece em todos os nós do tipo Tweet não nos demais nós de mensagem não originais Estilos de query sugeridos necessário adaptar para seus dados a MATCH nNoImportanterRELACIONAMENTOQUALQUERoOutroNo WITH n COUNTr AS contagem ORDER BY contagem DESC LIMIT 1 WITH n contagem MATCH nrRELACIONAMENTOQUALQUERoOutroNo ruRU RETURN n o r contagem ru LIMIT 15 b MATCH oOutroNo WITH collecto AS listaDeMensagens MATCH nNoImportante WHERE ALLo IN listaDeMensagens WHERE NOT isEmptynrRELACIONAMENTOQUALQUERor WITH n MATCH nrRELACIONAMENTOQUALQUERoOutroNo ruRU RETURN n o r ru LIMIT 15 10 Gerar um grafo de visualização que contenha o nó principal como a hashtag encontrada e todos os demais tweets interligados nela limitar visualização entre 10 e 20 nós contando com o central de hashtag Os de mensagens e o seu nó de RU se existir 11 Fazer uma busca nos dados do seu banco em busca de alguma informação que você ache interessante a destacar Sugestões de questões a serem respondidas Algumas sugestões precisam ter a inclusão de dados nos atributos dos nós com base nos dados dos arquivos JSON e devem ser incluídos na criação do seu banco e não após Roteiro de Atividade Prática de NoSQL 5 a Qual o usuário que mais movimentou a rede de acordo com seus dados necessário criar nós de usuários e seus relacionamentos com os nós de mensagem b Qual o equipamento mais usado para postar mensagens necessário criação de nós de equipamento e relacionamentos com as mensagens c Quais as 3 hashtags menos usadas d Qual o período granularidade de hora com maior movimentação da rede Necessário adicionar atributo com dado de createdat 12 Gerar um grafo de visualização que contenha o foco da sua informação buscada limitar visualização entre 10 e 20 Não esquecer o seu nó de RU se existir 13 Abra o arquivo DOCX caderno de resposta e cole seus dados conforme solicitado 14 Entregue o trabalho Roteiro de Atividade Prática de NoSQL 6 ORIENTAÇÕES GERAIS FORMATO DE ENTREGA A entrega desta atividade prática deverá ser realizada pela área de Trabalhos em formato PDF com o caderno de resolução da atividade prática Em seu caderno de resolução deverão constar as imagens referentes às duas questões com o códigoquery usado para geração do resultado apresentado o resultado da questão e mais o seu RU em algum lugar da imagem e do código sua IP Identificação Pessoal seu RU O formato de entrega desejável dos prints das práticas desse roteiro deve estar de acordo com o que é visto na seção EXEMPLO DE APRESENTAÇÃO DE PRÁTICA Recomendase que os trabalhos sejam enviados no formato pdf Uma vez que formatos doc ou docx podem apresentar falhas do tipo na codificação carregamento ou apresentação de imagens Sendo assim fica por conta e risco do estudante se houver problemas com o documento enviados no formato doc ou docx ou outro formato editável Roteiro de Atividade Prática de NoSQL 7 CRITÉRIOS DE AVALIAÇÃO Os critérios de avaliação desse trabalho visam deixar a avaliação o mais justa e transparente possível Nessa avaliação teremos um total de 100 pontos de trabalho sendo 8 partes com valores iguais de 125 pontos cada divididas em 3 questões A primeira questão será composta por print do código e uma imagem com o resultado do código resultado textual sem geração de grafos ou tabelas As segunda e terceira questões conterão 1 parte de código 1 parte de imagem com um grafo e 1 parte de resposta As questões serão avaliadas e corrigidas individualmente conforme a seguinte equação 𝑁 𝐹𝐸 𝐼𝑃𝐶𝑂𝐷𝑐𝑟𝑖𝑎çã𝑜 𝐼𝑀𝐺𝑄01𝑃𝐼𝐼 𝐼𝑃 𝐶𝑂𝐷𝑎𝑛á𝑙𝑖𝑠𝑒1 𝐼𝑀𝐺𝑄02𝑃𝐼𝐼 𝑅𝐸𝑆𝑃𝑄02𝑃𝐼𝐼𝐼 𝐼𝑃𝐶𝑂𝐷𝑎𝑛á𝑙𝑖𝑠𝑒2 𝐼𝑀𝐺𝑄03𝑃𝐼𝐼 𝑅𝐸𝑆𝑃𝑄03𝑃𝐼𝐼𝐼 8 Em que 𝑁 𝑁𝑜𝑡𝑎 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 Nota total do trabalho podendo variar de 0 até 100 𝐹𝐸 𝐹𝑜𝑟𝑚𝑎𝑡𝑜 𝑑𝑎 𝐸𝑛𝑡𝑟𝑒𝑔𝑎 Nota do Formato de Entrega podendo variar de 0 até 1 𝐼𝑃 𝐼𝑑𝑒𝑛𝑡𝑖𝑓𝑖𝑐𝑎çã𝑜 𝑃𝑒𝑠𝑠𝑜𝑎𝑙 Nota Identificação Pessoal seu RU podendo variar de 0 até 1 𝐶𝑂𝐷𝑐𝑟𝑖𝑎çã𝑜 𝐶ó𝑑𝑖𝑔𝑜𝑠 𝑑𝑒 𝑐𝑟𝑖𝑎çã𝑜 𝑑𝑜 𝑏𝑎𝑛𝑐𝑜 Nota do CódigoQuery usado para criar o banco de dados a serem colocados na Questão 01 Parte I podendo variar de 0 até 100 𝐼𝑀𝐺𝑄01𝑃𝐼𝐼 𝐼𝑚𝑎𝑔𝑒𝑛𝑠 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 01 𝑃𝑎𝑟𝑡𝑒 𝐼𝐼 Nota das Imagems com resultado esperado a serem colocadas na Questão 01 Parte II podendo variar de 0 até 100 𝐶𝑂𝐷𝑎𝑛á𝑙𝑖𝑠𝑒1 𝐶ó𝑑𝑖𝑔𝑜𝑠 𝑑𝑒 𝑎𝑛á𝑙𝑖𝑠𝑒 𝑑𝑒 𝑑𝑎𝑑𝑜𝑠 𝑑𝑜 𝑏𝑎𝑛𝑐𝑜 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 02 Nota do CódigoQuery usado para criar o banco de dados a serem colocados na Questão 02 Parte I podendo variar de 0 até 100 𝐼𝑀𝐺𝑄02𝑃𝐼𝐼 𝐼𝑚𝑎𝑔𝑒𝑛𝑠 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 02 𝑃𝑎𝑟𝑡𝑒 𝐼𝐼 Nota das Imagems com resultado esperado a serem colocadas na Questão 02 Parte II podendo variar de 0 até 100 𝑅𝐸𝑆𝑃𝑄02𝑃𝐼𝐼𝐼 𝑅𝑒𝑠𝑝𝑜𝑠𝑡𝑎 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 02 𝑃𝑎𝑟𝑡𝑒 𝐼𝐼𝐼 Nota da Resposta com resultado correto para a Questão 02 Parte III podendo ser 0 ou 100 𝐶𝑂𝐷𝑎𝑛á𝑙𝑖𝑠𝑒2 𝐶ó𝑑𝑖𝑔𝑜𝑠 𝑑𝑒 𝑎𝑛á𝑙𝑖𝑠𝑒 𝑑𝑒 𝑑𝑎𝑑𝑜𝑠 𝑑𝑜 𝑏𝑎𝑛𝑐𝑜 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 03 Nota do CódigoQuery usado para criar o banco de dados a serem colocados na Questão 03 Parte I podendo variar de 0 até 100 𝐼𝑀𝐺𝑄03𝑃𝐼𝐼 𝐼𝑚𝑎𝑔𝑒𝑛𝑠 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 03 𝑃𝑎𝑟𝑡𝑒 𝐼𝐼 Nota das Imagems com resultado esperado a serem colocadas na Questão 03 Parte II podendo variar de 0 até 100 𝑅𝐸𝑆𝑃𝑄03𝑃𝐼𝐼𝐼 𝑅𝑒𝑠𝑝𝑜𝑠𝑡𝑎 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 03 𝑃𝑎𝑟𝑡𝑒 𝐼𝐼𝐼 Nota da Resposta com resultado correto para a Questão 03 Parte III podendo ser 0 ou 100 Cada um dos itenscritérios que compõe a equação acima será detalhado nas subseções a seguir Se mesmo assim houver dúvidas não hesite em perguntar O desconhecimento dos critérios não será aceito como desculpa Roteiro de Atividade Prática de NoSQL 8 FORMATO DA APRESENTAÇÃO O formato da apresentação é um dos critérios de avaliação pois um profissional deve ser capaz de seguir normas no momento de elaboração de relatórios técnicos manuais e outros documentos afins bem como ser capaz de apresentar seus dados de forma limpa e compreensível As possíveis notas desse critério são apresentadas na tabela a seguir Tabela 1 Possíveis notas no formato de apresentação NOTA DESCRIÇÃO NA DEVOLUTIVA COMENTÁRIOS 100 Formato da apresentação está correto Está de acordo com o exemplo ver a seção EXEMPLO DE APRESENTAÇÃO DE PRÁTICA para maiores detalhes 070 Formato da apresentação está parcialmente correto Está muito próximo do exemplo mas apresenta alguns erros 050 Formato da apresentação está incorreto Não seguiu o exemplo Roteiro de Atividade Prática de NoSQL 9 IDENTIFICAÇÃO PESSOAL Todas as questões deverão apresentar um identificador pessoal nas seguintes partes No código ou query deve haver ao menos uma variável cujo nome seja composto pelo seu RU eg contadorxxxxxx onde o x s deve ser substituído pelo seu RU mesmo que esta variável não seja utilizada em nenhuma parte do código ou query Nas imagensresultados onde deverá conter seu RU escrito em algum local As possíveis notas para esse critério são apresentadas na tabela a seguir Tabela 2 Possíveis notas critério de Identificação Pessoal NOTA DESCRIÇÃO NA DEVOLUTIVA COMENTÁRIOS 100 Apresentou o identificador pessoal no códigoquery e nas imagensfotos Está de acordo com o exemplo ver a seção EXEMPLO DE APRESENTAÇÃO DE QUESTÃO para maiores detalhes 080 Apresentou identificador pessoal na imagem mas não no código Não apresentou um identificador no código eg o RU como parte do nome de uma variável 070 Apresentou o identificador pessoal no código mas não nas imagensprints Não apresentou um identificador na imagem 050 Não apresentou identificador pessoal no códigoquery e nem nas imagensprints Questão sem nenhuma identificação de autoria 000 Apresentou o identificador de outra pessoa nas prints eou no códigoquery A questão veio com identificador pessoal de outra pessoa Roteiro de Atividade Prática de NoSQL 10 CÓDIGOQUERY A apresentação do códigoquery compõe um terço da nota total das questões Este será avaliado conforme a tabela a seguir As possíveis notas para esse critério são apresentadas na tabela a seguir Tabela 3 Possíveis notas na apresentação do código NOTA DESCRIÇÃO NA DEVOLUTIVA COMENTÁRIOS 100 Código ou query coerente com a resposta encontrada e apresentado no formato imagem Está de acordo com o exemplo ver a seção EXEMPLO DE APRESENTAÇÃO DE QUESTÃO para maiores detalhes 70 Código ou query coerente com a resposta encontrada e apresentado no formato texto Acertou o código ou query mas copiou o texto do código ao invés de tirar print 60 Código ou query parcialmente correto e apresentado no formato imagem Errou um pouco código ou query mas colocou no trabalho no formato imagem 40 Código ou query parcialmente correto e apresentado no formato texto Errou um pouco código e copiou o texto do código ou query ao invés de tirar print 0 Sem códigoquery ou com códigoquery incorreto A questão não apresentou códigoquery ou o códigoquery estava errado OBS 1 NÃO ESQUECER DO IDENTIFICADOR PESSOAL Ex COLOCAR SEU RU NO NOME DE UMA VARIÁVEL OU LOCAL DE SUA QUERY Roteiro de Atividade Prática de NoSQL 11 IMAGENS As imagens compõem um terço da nota total de cada questão Essas normalmente são prints dos grafos gerados pela sua busca na base de dados criada com os arquivos JSON fornecidos Cada práticaquestão dessa atividade prática virá com instruções de como devem ser essas imagens Entendese que a legenda faz parte de uma imagem Sendo assim as legendas serão avaliadas As possíveis notas para esse critério são apresentadas na tabela a seguir Tabela 4 Possíveis notas na apresentação das imagensfotos NOTA DESCRIÇÃO NA DEVOLUTIVA COMENTÁRIOS 100 Imagens corretas e com legenda adequada Está de acordo com o exemplo ver a seção EXEMPLO DE APRESENTAÇÃO DE QUESTÃO para maiores detalhes 90 Imagens correta mas com legenda superficial Ex de legenda superficial Figura 1 Nuvem de palavras 80 Imagens corretas mas com legenda precária Ex de legenda precária Figura 1 Imagem 70 Imagens correta mas sem legenda Apresentou imagens corretas mas não colocou legenda 60 Imagens parcialmente corretas mas com legenda adequada Imagem que não consiga identificar o que esteja acontecendo ou a falta de uma das imagens se encaixam nesse grupo 50 Imagens parcialmente correta e com legenda superficial Similar ao segundo item de cima para baixo dessa tabela mas com pelo menos uma das imagens com problemas 40 Imagens parcialmente corretas e com legenda precária Similar ao terceiro item de cima para baixo dessa tabela mas com pelo menos uma das imagens com problemas 30 Imagens parcialmente correta e sem legenda Similar ao quarto item de cima para baixo dessa tabela mas com pelo menos uma das imagens com problemas 0 Sem imagens ou com imagens incorretas A questão veio sem imagens ou com imagens erradas OBS 1 NÃO ESQUECER DO IDENTIFICADOR PESSOAL Ex Colocar seu RU dentro da nuvem de palavras Roteiro de Atividade Prática de NoSQL 12 RESPOSTA A apresentação da resposta correta será avaliada de forma booleana As possíveis notas para esse critério são 0 ou 100 Tabela 5 Possíveis notas na apresentação das respostas NOTA DESCRIÇÃO NA DEVOLUTIVA COMENTÁRIOS 100 Resposta correta Está de acordo com o exemplo ver a seção EXEMPLO DE APRESENTAÇÃO DE QUESTÃO para maiores detalhes 0 Resposta incorreta A questão não apresentou a resposta correta para a pergunta Roteiro de Atividade Prática de NoSQL 13 EXEMPLO DE APRESENTAÇÃO DE QUESTÃO Prática XX Título da prática Questão XX Enunciado curto da questão Enunciado Enunciado mais descritivo sobre o que fazer na questão I Apresentação do Código não esquecer do identificador pessoal Figura 1 Query de busca de dados no banco de dados já criado II Apresentação das ImagensPrints não esquecer do identificador pessoal a Grafo com o viés XYZ Figura 2 Resultado do grafo com os registros encontrados sobre o assunto XYZ Ao centro vemos o tweet que gerou mai s interação e em volta todos os tweets de interação como retweets respostas citações e outros OBS1 Nas suas imagens não precisa circular e apontar o identificador pessoal OBS2 Caso necessário junte as imagens dos códigos garantindo que não ocorra perda de clareza nem de organização OBS4 Este é apenas um exemplo e nem o código mostrado e nem o grafo são referentes à atividade prática que você deverá entregar mas são muito próximos Identificador Pessoal Seu RU em um nó no grafo e em texto no código Roteiro de Atividade Prática de NoSQL 14 PRÁTICAS DESCRIÇÃO DO CONJUNTO DE DADOS E PROJETO Você deverá utilizar de 3 a 10 dos 547 arquivos disponibilizados e que são parte de um conjunto de mais de 1000 arquivos coletados entre 2006 e 2022 da plataforma X antigo Twitter usando como filtro apenas uma hashtag específica Cada arquivo contém aproximadamente 100 tweets que estão separados em 4 principais grandes contêineres de dados data Principal fonte de dados para este projeto Contém a mensagem e informações de contexto da mensagem como nomes de usuários hashtags usadas se foi um retweet dado em referencedtweetstype ou não se possui menção a outros usuários e muito mais errors Contém detalhes sobre erros ocorridos durante a coleta dos dados como usuários não encontrados ou deletados ou banidos ou suspensos Estas podem não ser informações muito úteis neste trabalho Nem todos os arquivos possuem estes dados includes Contém dados sobre anexos arquivos de mídia links informações extras sobre os tweets e informações extras sobre os usuários meta Metadados sobre o arquivo JSON coletado Aqui encontramos apenas 4 informações id do tweet mais recente coletado id do tweet mais antigo coletado código token para coletar o próximo tweet da pesquisa e quantidade de mensagens contidas neste arquivo Para facilitar segue estrutura padrão de um arquivo JSON deste trabalho Estrutura geral Estrutura básica de um tweet original veja que referencedtweets não aparece em mensagens originais Roteiro de Atividade Prática de NoSQL 15 Estrutura básica de um erro Estrutura básica de um include do tipo media foto Roteiro de Atividade Prática de NoSQL 16 Roteiro de Atividade Prática de NoSQL 17 Estrutura básica de um include do tipo place lugar Estrutura básica de um dado meta Roteiro de Atividade Prática de NoSQL 18 DETALHAMENTO DOS PASSOS A SEREM REALIZADOS NO TRABALHO CRIAÇÃO DE UM NOVO DBMS LOCAL EM VERSÃO 4 1 Criar novo projeto 1 2 Roteiro de Atividade Prática de NoSQL 19 2 Renomear projeto 1 2 Roteiro de Atividade Prática de NoSQL 20 3 Adicionar novo DBMS local 1 2 Roteiro de Atividade Prática de NoSQL 21 4 Renomear DBMS para algo que faça sentido para seu projeto e escolher a versão do DBMS a ser criado 5 Sugerimos usar qualquer versão antes da 5 para ter acesso à biblioteca APOC por completo após versão 5 a biblioteca APOC foi incorporada à base do CYPHER porém alguns métodos não foram 1 Roteiro de Atividade Prática de NoSQL 22 implementados ainda 1 2 3 Roteiro de Atividade Prática de NoSQL 23 6 Coloque uma senha de 8 dígitos e clique em criar 1 Roteiro de Atividade Prática de NoSQL 24 7 Aguarde o download e criação do banco Roteiro de Atividade Prática de NoSQL 25 8 Com o banco criado verifique se a versão está correta número ao lado do nome do seu DBMS criado e clique em cima da parte branca ao lado do número da versão 1 2 Roteiro de Atividade Prática de NoSQL 26 9 Clique na aba Plugins e instale a biblioteca APOC 1 2 Roteiro de Atividade Prática de NoSQL 27 Roteiro de Atividade Prática de NoSQL 28 10 Clique nos três pontinhos ao lado do botão Open na barra com o nome do seu DBMS clique em Open folder e clique em Configuration para abrir a pasta Configuration no seu gerenciador de arquivos do sistema operacional 1 2 3 Roteiro de Atividade Prática de NoSQL 29 11 Uma mensagem em azul será mostrada avisando que a pasta foi aberta Use o ALTTAB do seu teclado para ir até a pasta aberta Roteiro de Atividade Prática de NoSQL 30 12 Clique em New Documento de texto 1 2 Troque de txt para conf Roteiro de Atividade Prática de NoSQL 31 13 Apague todo o nome do arquivo incluindo o txt que não está marcado inicialmente e coloque como nome apocconf Ao apertar ENTER o sistema perguntará se você realmente quer mudar a extensão do arquivo de txt para conf Clique em Sim Yes 1 Garanta que ficou apocconf e não apocconftxt 2 Roteiro de Atividade Prática de NoSQL 32 14 Clique com o botão direito do mouse no arquivo criado apocconf e escolha abrir com o bloco de notas 1 2 Roteiro de Atividade Prática de NoSQL 33 15 Adicione a seguinte linha neste arquivo salveo e fecheo apocimportfileenabledtrue Roteiro de Atividade Prática de NoSQL 34 Roteiro de Atividade Prática de NoSQL 35 16 No Neo4j inicie o DBMS 1 2 Roteiro de Atividade Prática de NoSQL 36 Roteiro de Atividade Prática de NoSQL 37 17 Clique em Open Neo4j Browser para abrir a tela de comandos Cypher deste DBMS 1 2 Roteiro de Atividade Prática de NoSQL 38 18 Teste se a biblioteca APOC está funcionando corretamente com o comando CALL apochelp apoc Para executar o comando aperte no ícone de play azul ou pressione enter 2 1 Comando executado OK Roteiro de Atividade Prática de NoSQL 39 19 De volta ao Neo4j Desktop clique nos três pontos do seu DBMS clique em Open folder e em seguida em Import 1 2 3 Roteiro de Atividade Prática de NoSQL 40 20 Uma mensagem em azul será mostrada avisando que sua pasta foi aberta no seu gerenciador de arquivos Vá até a janela do gerenciador de arquivos que foi aberta pasta Import Mensagem normal Roteiro de Atividade Prática de NoSQL 41 21 Coloque nesta pasta alguns arquivos JSON do trabalho Para testes iniciais sugiro colocar apenas 2 arquivos e para o trabalho final sugiro usar apenas 5 arquivos Neste exemplo usarei todos os arquivos para demonstração TESTE DO DBMS CRIADO E FUNCIONANDO COM A BIBLIOTECA APOC 1 De volta ao Neo4j Browser vamos testar se a importação de arquivos da pasta Import está funcionando corretamente Copie o nome de um doas arquivos que você colocou na pasta Import e faça o seguinte comando troque a parte vermelha pelo nome do seu arquivo com a extensão json CALL apocloadjsonnome do seu arquivojson YIELD value RETURN value Roteiro de Atividade Prática de NoSQL 42 Roteiro de Atividade Prática de NoSQL 43 2 As configurações iniciais para o trabalho estão prontas Vamos testar alguns comandos APOC para lermos a pasta Import completa e retornar os nomes dos arquivos presentes nela com o seguinte comando CALL apocloaddirectoryjson YIELD value EXEMPLO DE COMANDO DE CRIAÇÃO DE NÓS E RELACIONAMENTOS COM BASE NOS ARQUIVOS JSON DA PASTA IMPORT 1 Agora vamos criar nós de mensagem com base em apenas 1 arquivo da pasta Import Usaremos o arquivo tweetscoletados499json como exemplo Primeiro precisamos conhecer a estrutura deste JSON Para isso vamos abrir o arquivo no bloco de notas botão direito em cima do arquivo e selecionar Editar no Bloco de Notas Roteiro de Atividade Prática de NoSQL 44 Podemos perceber que o arquivo tem uma estrutura de lista dentro da chave data e que cada elemento desta lista é uma mensagem que pode ser um tuíte original um retuite uma resposta para uma mensagem ou uma citação de uma mensagem Para este trabalho vamos nos focar principalmente nos tuítes originais Também é possível encontrar informações como a hashtags usadas datahashtagstag b data e hora de criação da mensagem datacreatedat c id do autor da mensagem dataauthorid 2 Para criarmos nós de mensagem teremos que iterar na lista de mensagens data O mesmo vale para a criação de nós de usuário e de hashtags Na mesma iteração será possível criar tanto o nó de mensagem quanto o nó de usuário e os nós das hashtags usadas nesta mensagem Veja que para hashtags também temos uma lista na qual teremos que iterar para acharmos todas as hashtags Nestas mesmas iterações já podemos criar os devidos relacionamentos entre os nós para não perdermos a informações de qual usuário postou qual mensagem e quais hashtags foram usadas 3 Vamos criar um comando simples para criar apenas nós de mensagem usando o comando UNWIND para iterarmos na lista data Mostrando que o banco está vazio com o comando MATCH n RETURN n Roteiro de Atividade Prática de NoSQL 45 Agora sim realizando o comando de criação simples CALL apocloadjsontweetscoletados499json YIELD value UNWIND valuedata as tweet MERGE tTweet tweetid tweetid Roteiro de Atividade Prática de NoSQL 46 Veja que o Neo4j retorna a quantidade de nós criados 79 nós a quantidade de etiquetas adicionadas em nós 79 labels um para cada nó e com o texto Tweet que é o texto que colocamos depois dos dois pontos na declaração do alias dos nós t Para vermos todos os dados criados em nosso banco podemos gerar um grafo de visualização do banco todo usando novamente o comando MATCH n RETURN n Atenção Este comando não deve ser usado em bancos de dados grandes pois pode travar o computador sugerimos o uso de um limitador ou um filtro como MATCH n RETURN n LIMIT 10 ou MATCH nTweet WHERE Roteiro de Atividade Prática de NoSQL 47 ntweetid1234357352616341509 RETURN n 4 Agora que conseguimos iterar na chave data do arquivo podemos apagar o que fizemos até aqui para não duplicar nada apesar de que nada será duplicado pois estamos usando o comando MERGE para gerar os nós e não o CREATE O MERGE verifica se o nó já existe e apenas adiciona o que for diferente do campo entre chaves tweetid tweetid Para apagar o banco fazemos MATCH n DETACH DELETE n Roteiro de Atividade Prática de NoSQL 48 Mensagem de êxito informando que 79 nós foram deletados QUESTÃO 01 IMPORTAÇÃO DOS ARQUIVOS JSON E CRIAÇÃO DE NÓS E ARESTAS COM BASE NOS DADOS DOS ARQUIVOS Antes de realmente buscar dados em um banco de dados devemos popular ele com nossos dados Para isso vamos criar nós e relacionamentos usando as informações constantes nos arquivos JSON de nossa pasta import que acabamos de colocar Usaremos a biblioteca APOC para ler os arquivos JSON e criar nossos nós e relacionamentos com base nestes dados Na parte I da questão 01 apresente os comandos de criação do banco e na parte II mostre os prints de execução estes comandos não deverão ser mostrados nenhum print contendo grafos DICAS PARA A QUESTÃO 01 Primeiro vamos criar seu nó de Identificador Pessoal MERGE ruRU RU RU12345678 Substitua o número pelo seu RU Em seguida 1 Como nosso comando de criação de nós de mensagem feito na seção anterior EXEMPLO DE COMANDO DE CRIAÇÃO DE NÓS E RELACIONAMENTOS COM BASE NOS ARQUIVOS JSON Roteiro de Atividade Prática de NoSQL 49 DA PASTA IMPORT criou apenas 1 atributo em cada nó o tweetid com o valor existente em dataid que é igual à tweetid pois renomeamos data para tweet vamos agora criar estes mesmos nós mas agora com mais dados o ideal é colocarmos todos os dados que serão necessário no futuro para não precisarmos mais ficar recriando o banco de dados Além deles vamos criar os nós de usuário e de hashtags Abaixo vamos analisar o comando que usaremos Primeira parte do comando permanece igual Importa o conteúdo do arquivo JSON para a variável value CALL apocloadjsontweetscoletados499json YIELD value Esta próxima parte fará a iteração dentro da chave data renomeado para tweet UNWIND valuedata AS tweet Aqui vamos criar os nós de mensagem como antes MERGE tTweet tweetid tweetid Aqui vamos adicionar mais atributos para nossos nós de mensagem É importante termos ao menos as informações de texto data de criação e reftype para sabermos se é tweet original ou retweet ou citação ou resposta para ON CREATE SET ttext tweettext tcreatedat datetimetweetcreatedat tconversationidtweetconversationid Para podermos adicionar a informação de referencedtweet e reftype precisamos fazer uma iteração extra pois este campo pode conter uma lista Além disto não podemos usar o UNWIND pois este campo é opcional e quando a mensagem é original estes campos não existem causando erros na importação os nós não serão criados Sendo assim usaremos a iteração do FOREACH que só é realizada quando o dado existir e não retorna erro se não existir Usamos o coalesce para criar a lista vazia se não existir para nos permitir adicionar elementos na lista FOREACH reftweet IN tweetreferencedtweets SET ttiporef coalescettiporef reftweettype tidref coalescetidref reftweetid Agora vamos criar o nó do usuário desta mensagem e fazer o relacionamento dele com o nó de mensagem MERGE uUser useridtweetauthorid MERGE uTUITOUt Por último deixamos os nós de hashtag pois usaremos o UNWIND para criarmos quantos nós forem necessários para cada mensagem mensagens Roteiro de Atividade Prática de NoSQL 50 sem hashtags serão ignoradas Primeiro escolhemos os dados a serem usados com base no comando WITH WITH t tweet tweetentitieshashtags AS hashtags Agora fazemos a iteração na lista das hashtags UNWIND hashtags AS hashtag Fazemos a criação e formatação dos dados das tags para eliminarmos repetições de palavras muito parecidas como BBB20 e bbb20 Deixaremos tudo em minúsculo e sem traços ou outros elementos que não sejam letras ou números Para isso usaremos o apoctextclean retira acentos e transformas maiúsculas em minúsculas e o apoctextreplace com o RegEx azAZ09 para substituir tudo o que não for número ou letra para vazio WITH t apoctextreplaceapoctextcleanhashtagtag azAZ09 AS cleanedHashtag Criação dos nós de Hashtag MERGE hHashtag tag cleanedHashtag Para aproveitarmos uma única leitura do arquivo JSON vamos finalizar com a criação do relacionamento entre o nó de mensagem e todos os nós de hashtag criados nesta iteração MERGE tPOSSUIh 2 Finalmente veja que foram criados 159 labels etiquetas 159 nós configuradas 516 propriedades atributos nos nós e criados 265 relacionamentos entre os nós Para vermos o resultados faremos MATCH n RETURN n usamos este comando somente por termos menos de 300 nós no banco Roteiro de Atividade Prática de NoSQL 51 Veja que se você estiver trabalhando pelo neo4j online será necessário incluir os relacionamentos no seu comando MATCHRETURN para que eles sejam mostrados 3 Para incluir neste comando todos os arquivos da pasta Import basta incluir o comando apocloaddirectory no início um UNWIND para iterar na lista de arquivos e um WITH para continuar os demais comandos apenas com a variável arquivo na memória para não dar conflito de nome já existente com value CUIDADO Este comando poderá demorar bastante para ser completado a depender da quantidade de arquivos na sua pasta Import Em meu caso levou 8 minutos para os 500 arquivos resultando em 79453 nós e labels além de 133272 relacionamentos Buscar nomes dos arquivos na pasta Import CALL apocloaddirectoryjson YIELD value Fazer o UNWIND na lista de arquivos UNWIND value AS arquivo Primeira parte do comando permanece igual Importa o conteúdo do arquivo JSON para a variável value WITH arquivo CALL apocloadjsonarquivo YIELD value Esta próxima parte fará a iteração dentro da chave data renomeado para tweet UNWIND valuedata AS tweet Roteiro de Atividade Prática de NoSQL 52 Aqui vamos criar os nós de mensagem como antes MERGE tTweet tweetid tweetid Aqui vamos adicionar mais atributos para nossos nós de mensagem É importante termos ao menos as informações de texto data de criação e reftype para sabermos se é tweet original ou retweet ou citação ou resposta para ON CREATE SET ttext tweettext tcreatedat datetimetweetcreatedat tconversationidtweetconversationid Para podermos adicionar a informação de referencedtweet e reftype precisamos fazer uma iteração extra pois este campo pode conter uma lista Além disto não podemos usar o UNWIND pois este campo é opcional e quando a mensagem é original estes campos não existem causando erros na importação os nós não serão criados Sendo assim usaremos a iteração do FOREACH que só é realizada quando o dado existir e não retorna erro se não existir Usamos o coalesce para criar a lista vazia se não existir para nos permitir adicionar elementos na lista FOREACH reftweet IN tweetreferencedtweets SET ttiporef coalescettiporef reftweettype tidref coalescetidref reftweetid Agora vamos criar o nó do usuário desta mensagem e fazer o relacionamento dele com o nó de mensagem MERGE uUser useridtweetauthorid MERGE uTUITOUt Por último deixamos os nós de hashtag pois usaremos o UNWIND para criarmos quantos nós forem necessários para cada mensagem mensagens sem hashtags serão ignoradas Primeiro escolhemos os dados a serem usados com base no comando WITH WITH t tweet tweetentitieshashtags AS hashtags Agora fazemos a iteração na lista das hashtags UNWIND hashtags AS hashtag Fazemos a criação e formatação dos dados das tags para eliminarmos repetições de palavras muito parecidas como BBB20 e bbb20 Deixaremos tudo em minúsculo e sem traços ou outros elementos que não sejam letras ou números Para isso usaremos o apoctextclean retira acentos e transformas maiúsculas em minúsculas e o apoctextreplace com o RegEx azAZ09 para substituir tudo o que não for número ou letra para vazio WITH t apoctextreplaceapoctextcleanhashtagtag azAZ09 AS cleanedHashtag Criação dos nós de Hashtag MERGE hHashtag tag cleanedHashtag Roteiro de Atividade Prática de NoSQL 53 Para aproveitarmos uma única leitura do arquivo JSON vamos finalizar com a criação do relacionamento entre o nó de mensagem e todos os nós de hashtag criados nesta iteração MERGE tPOSSUIh Roteiro de Atividade Prática de NoSQL 54 4 Agora que você tem seu banco de dados criado basta usar o banco para encontrar as informações necessárias Não é mais necessário usar comandos APOC e nem acessar os arquivos JSON pois os dados já estão importados para o banco em forma de nós e arestas Observe apenas que como o visualizador de nós possui limitação padrão de 300 nós por vez na visualização caso você tente ver o grafo de todos os seus dados não será possível e o resultado será algo como a imagem abaixo ATENÇÃO Este grafo é apenas para demonstração do limite de nós e não deve ser mostrado no trabalho O comando MATCH n RETURN n não deve ser apresentado em nenhum momento no seu trabalho 5 Neste caso é necessário ou configurar o limite para mais nós quanto mais nós mais memória será consumida do seu computador o deixando lento ou criar comandos MATCHRETURN com filtros específicos para analisar os dados de acordo com sua perguntademanda Para aumentar o limite de 300 nós vá em Browser Settings do neo4j Browser e mude o valor do campo Graph Visualization Initial Node Display sugiro não passar de 3000 nós Roteiro de Atividade Prática de NoSQL 55 ATENÇÃO Este grafo é apenas para demonstração do limite de nós e não deve ser mostrado no trabalho O comando MATCH n RETURN n não deve ser apresentado em nenhum momento no seu trabalho QUESTÃO 02 DESCOBERTA DA HASHTAG PRINCIPAL Sua missão na questão 02 será encontrar qual hashtag foi usada para gerar todos os arquivos JSON Para isso descubra qual delas está presente em todos os tweets mensagens originais e não em retweets quotedcitação nem repliedtoresposta coletados Confirme sua descoberta com a geração de um grafo de visualização usando o banco de dados já criado anteriormente que mostre um nó central tendo esta hashtag e os demais nós como tweets que contém esta hashtag limitar a visualização entre 10 e 20 nós Não esqueça de mostrar seu nó de RU nesta visualização Sugerimos utilizar apenas 1 dia de mensagens ou menos nesta representação não é obrigatório filtrar por data desde que atinja o mínimo de 10 nós contando com o central para evitar um grafo muito poluído Caso o tempo de 1 dia seja muito grande reduzao até conseguir um grafo que seja visível Na parte I do seu caderno de respostas cole todos os seus comandos utilizados para encontrar a hashtag principal Na parte II do seu caderno de respostas cole o grafo gerado pelo comando da parte I Seu print do grafo deve estar sem zoom e mostrar o grafo e a legenda de cores dos nós à direita como mostrado no exemplo da imagem a seguir comprovando que apenas 1 nó de hashtag foi apresentado Não esqueça de colocar seu RU tanto no código quanto no grafo antes de salvar seu arquivo em PDF Roteiro de Atividade Prática de NoSQL 56 Por fim na parte III responda à pergunta Qual foi a hashtag usada como filtro para coleta dos dados analisados Esta hashtag só estará presente em nós do tipo Tweet e não em Retweet e a resposta deve conter apenas 1 palavra com o texto da hashtag Para auxílio seguem alguns links interessantes httpsneo4jcomblogtwitterhashtagimpactneo4jpythonjavascript httpsdevelopertwittercomendocstwitterapidatadictionaryexamplepayloads Dicas importantes 1 Aqui você não deve usar comandos contendo CREATE nem MERGE bem como não deve realizar nenhuma leitura nos arquivos JSON Esta etapa já foi realizada anteriormente para criar o banco de dados Aqui você deve apenas usar o banco de dados criado para gerar o grafo de visualização de dados com a informação buscada 2 Exemplo de grafo a ser gerado a Perceba que houve limitação de nós que apenas 1 nó de hashtag é mostrado b Perceba que a hashtag bbb2o exemplificada aqui não é resposta da questão c Perceba que em volta do nó de hashtag temos alguns exemplos de nós de mensagem ligados à essa hashtag incluindo Tweets Retweets e Quotes Citações além do nó de RU fictício que você deve criar usando seu RU d Para criar este grafo de visualização seu comando será muito parecido com estes i MATCH nNoImportanterRELACIONAMENTOQUALQUERoOutroNo WITH n COUNTr AS contagem ORDER BY contagem DESC LIMIT 1 WITH n contagem MATCH nrRELACIONAMENTOQUALQUERoOutroNo ruRU RETURN n o r contagem ru LIMIT 15 ou ii MATCH oOutroNo WITH collecto AS listaDeMensagens Roteiro de Atividade Prática de NoSQL 57 MATCH nNoImportante WHERE ALLo IN listaDeMensagens WHERE NOT isEmptynrRELACIONAMENTOQUALQUERor WITH n MATCH nrRELACIONAMENTOQUALQUERoOutroNo ruRU RETURN n o r ru LIMIT 15 ATENÇÃO Você deve criar e executar um comando Cypher em seu banco de dados para descobrir qual hashtag está presente em todas as mensagens originais excluindo mensagens de retweet citação e resposta Este comando não deve fazer uso da biblioteca APOC Caso seu comando tente retornar mais de 300 nós a configuração padrão do Neo4j Browser impedirá a exibição de mais de 300 nós Seu comando não pode ser MATCH n RETURN n Por fim na parte I cole seus comandos na parte II cole o grafo gerado e inclua uma legenda explicativa sobre o grafo e como interpretálo e na parte III responda à pergunta Qual foi a hashtag usada como filtro para coleta dos dados analisados esta hashtag deverá estar presente em todas as mensagens originais e sua análise deve desconsiderar nós de mensagens do tipo retweeted Roteiro de Atividade Prática de NoSQL 58 QUESTÃO 03 ANÁLISE DOS DADOS SEGUNDO VIÉS A SUA ESCOLHA Agora que você já sabe como criar um grafo de visualização a partir dos dados no seu banco de dados o maior desafio é conseguir extrair informações úteis de grandes quantidades de dados que podem parecer desconexos Sua tarefa aqui é analisar os dados do banco e definir qual informação você gostaria de obter e que tenha potencial de gerar um grafo com mais de 10 nós interligados entre si e menos de 200 Com base em sua escolha você pode optar não obrigatório por definir um período para realizar sua análise que seja grande o suficiente para apresentar os resultados que você deseja porém que não criem um grafo ilegível A sugestão é criar um grafo com mais de 10 nós e menos de 200 com base em uma busca nos dados do seu banco à procura de alguma informação que você ache interessante a destacar Algumas sugestões de questões a serem respondidas são Algumas destas opções precisam ter a inclusão de dados nos atributos dos nós com base nos dados dos arquivos JSON e devem ser incluídos na criação do seu banco e não após 1 Qual o usuário que mais movimentou a rede de acordo com seus dados necessário criar nós de usuários e seus relacionamentos com os nós de mensagem 2 Qual o equipamento mais usado para postar mensagens necessário criação de nós de equipamento e relacionamentos com as mensagens 3 Quais as 3 hashtags menos usadas 4 Qual o período granularidade de hora com maior movimentação da rede Necessário adicionar atributo com dado de createdat 5 Qual o dispositivo mais usado para tuitar depende de seu banco de dados já possuir os nós de equipamentos usados criados na questão 01 6 Qual a Hashtag que menos foi usada 7 Quais os usuários mais citados depende dos seus nós de mensagem possuírem esta informação ou de relacionamentos terem sido criados para este fim Para realizar a consulta ao banco use comandos MATCHRETURN parecidos com o usado na questão 01 Aqui você não deve realizar nenhum comando contendo leitura dos arquivos JSON nem uso da biblioteca APOC mas pode utilizar MERGE e CREATE caso ache necessário incluir nós e relacionamentos baseados nos dados já existentes no seu banco e não nos arquivos JSON Então crie a consulta ao banco de dados que apresente os dados que você escolheu analisar e gere o grafo de sua consulta para colocação no seu caderno de respostas ATENÇAO Seu comando não pode ser MATCH n RETURN n Roteiro de Atividade Prática de NoSQL 59 Por fim na parte I cole seus comandosqueryes com legendas explicando o funcionamento do seu comando na parte II cole o grafo e inclua uma legenda sobre ele e como interpretálo e na parte III explique qual foi a análise realizada incluindo sua linha de raciocínio para criação da query Cypher e qual era sua expectativa de resultado antes da análise comparandoa com o resultado realmente obtido após execução do comando Roteiro de Atividade Prática de NoSQL 60 RESPOSTAS AS DÚVIDAS MAIS FREQUÊNTES 1 Como faço para coletar meus próprios tweets R Infelizmente a coleta de Tweets deixou de ser gratuita para pesquisadores após aquisição e alteração do nome da rede social de Twitter para X No momento existem apenas coletas de mensagens em tempo real com poucas opções e baixo fluxo de dados ou contas corporativas com custos mensais superiores à 5 mil dólares para realizar o mesmo tipo de coleta 2 Estou terminando o curso tem como fazer um questionário para atividade prática R Não 3 Eu não possuo máquina para realizar esta atividade Como devo proceder R Você poderá usar um computador em seu polo Nossas atividades são pensadas para execução em computador disponível nos polos porém você pode optar por usar sua própria máquina 4 Professor eu fiz o download dos arquivos e o JSON veio dividido em um monte de arquivos pequenos O que eu faço R Conhecer o neo4j e as ferramentas para manipulação de dados JSON é de suma importância para o mercado de trabalho nesta área Pesquise na documentação do Neo4j para todas as informações necessárias para esta importação httpsneo4jcomdocs 5 Professor não estou conseguindo configurar o Neo4j para importar arquivos JSON Só aparece erro de falta da biblioteca APOC Como eu começo R Para começar o trabalho segue alguns passos que poderão agilizar o início 1 Configurações iniciais 11 Instale o Neo4j e executeo 12 Crie um projeto neo4j Roteiro de Atividade Prática de NoSQL 61 13 Crie um banco de dados local dentro do novo projeto 14 Clique sobre o nome do banco e instale a biblioteca APOC menu lateral direito Ver mais em httpsneo4jcomlabsapoc44installation Escolha uma versão 4 Roteiro de Atividade Prática de NoSQL 62 15 Abra a pasta de arquivos de configuração do seu novo DBMS clique nos 3 pontos ao lado do nome do seu banco Open File Configure adicione um novo arquivo de texto e renomeie para apocconfig Inclua nele a linha veja mais em httpsneo4jcomlabsapoc44config apocimportfileenabledtrue Roteiro de Atividade Prática de NoSQL 63 16 Inicie seu DBMS criado 17 Abra a pasta Import do seu DBMS e crie a pasta jsonFolder para facilitar a importação dos arquivos em lote Roteiro de Atividade Prática de NoSQL 64 18 Coloque um dos arquivos json do trabalho na pasta Import não coloque na jsonFolder ainda para testes DICAS Para este trabalho você deverá utilizar a biblioteca APOC do Neo4j Não é necessário criação de nenhum script em linguagem de programação apenas comandos Cypher queries Não importa quantos arquivos json existam Você só precisará de dois comandos principais uma boa dose de lógica e bons conhecimentos dos comandos CYPHER Comece fazendo o exemplo de uso desta página httpsneo4jcomlabsapoc43overviewapocloadapocloadjson Depois faça o exemplo de uso desta página httpsneo4jcomlabsapoc43overviewapocloadapocloaddirectoryasyncadd ou desta httpsneo4jcomlabsapoc43overviewapocloadapocloaddirectory Quando conseguir rodar os dois faça uma tentativa com um dos arquivos json dos dados do trabalho Explicação O comando apocloadjson carrega os dados de um arquivo json que esteja na pasta Import do seu DBMS e cria uma variável com eles Assim é possível criar nós com utilizando estes dados como propriedades dos nós que é o que queremos O comando apocloaddirectoryasyncadd cria uma tarefa automática que será executada sempre que um novo arquivo com a extensão que você determinar for colocado em uma pasta que você definir por exemplo na pasta jsonFolder criado no passo 17 anterior O comando apocloaddirectory permite criar uma lista com todos os arquivos de um determinado tipo de dentro de uma pasta e suas subpastas Com esta lista é possível iterar nela com os nomes e caminhos de sistema para dentro do comando apocloadjson Você se deparará com muitas configurações a serem feitas Todas elas são descritas nos site mencionados anteriormente Crie todos os nós e relacionamentos no mesmo comando de importação do arquivo JSON para aproveitar a leitura dos dados no mesmo tweet tem o autor as hashtags e a mensagem que podem ser criados e interligados sem precisar criar filtros para isso Crie nós com todas as propriedades que você achar pertinente ou que poderá utilizar nas análises como incluir data e hora de criação da mensagem incluir id do autor incluir todas as hashtags etc Cuidado ao tentar importar todos os arquivos Provavelmente você não precisará de todos eles para fazer o trabalho Cabe a você analisar os dados e tomar esta decisão O comando UNWIND permitirá que você acesse níveis mais internos dos dados JSON como hashtagstag ou outros dados agrupados em listas Roteiro de Atividade Prática de NoSQL 65 Troque seu CREATE pelo MERGE Ele criará um nó caso a propriedade com determinado valor não exista ou se encontrar um MATCH não duplicará o nó apenas adicionará os dados extras Não use o UNWIND com variáveis que não sejam do próprio arquivo Isto só vai aumentar a complexidade e tempo de execução Sugestão de comando tudo numa mesma célulade uma vez só Cuidado Deixe apenas 3 ou 4 arquivos na pasta para testes pois o carregamento de tudo pode demorar até 2 horas dependendo do computador Só execute com tudo quando estiver certo de que é isto que você quer CALL apocloaddirectoryjson YIELD value WITH value as arquivos ORDER BY arquivos DESC CALL apocloadjsonarquivos YIELD value UNWIND valuedata AS tweet MERGE tTweet tweetid tweetid SET ttext tweettext tuserid tweetauthorid tconversationidtweetconversationid MERGE uUser useridtweetauthorid MERGE tTWEETOUu FOREACH hashtag IN tweetentitieshashtags MERGE hHashtag tag apoctextreplaceapoctextcleanhashtagtag azAZ09 MERGE hrESTAEMt FOREACH ref IN tweetreferencedtweets SET ttiporef coalescettiporef reftype tidref coalescetidref refid Observe que no comando acima não são criados os nós de hashtag e não é feito nenhum tratamento do dado das tags como normalização tudo em minúsculas Use o comando apoctextreplace com o apoctextclean para deixar todas as hashtags padronizadas e eliminar criação de nós semelhantes Exemplo CasaNova e casanova geram dois nós e significam a mesma ideia Estes comandos ajudarão a padronizar esta situação 6 Professor como eu devo colocar meu RU nos prints dos grafos Roteiro de Atividade Prática de NoSQL 66 R Crie um nó com Label RU e com propriedade ruseunúmero Isto criará um nó de cor diferente dos demais Para alterar a legenda que aparece em determinado grupo de nós faça como nas imagens abaixo Sendo assim desejo a todos um ótimo aprendizado e nos vemos na tutoria Atenciosamente Professor Guilherme D Patriota
Send your question to AI and receive an answer instantly
Recommended for you
38
Trabalho Academico - Big Data
Banco de Dados
UNINTER
4
Atividade Pratica de Nosql_2024
Banco de Dados
UNINTER
9
Banco de Dados Relacional
Banco de Dados
UNINTER
2
Atividade Avaliativa 3-2022 2
Banco de Dados
UFRN
3
Criar Banco de Dado e Tabelas
Banco de Dados
FATEC
1
Criação de Tabela
Banco de Dados
COTEMIG
32
Projeto de Banco de Dados Relacional
Banco de Dados
IFSP
30
Projeto de Banco de Dados Relacional
Banco de Dados
IFSP
1
Atividade 1 - Banco de Dados - 53_2024
Banco de Dados
UNICESUMAR
9
Trabalho em Banco de Dados
Banco de Dados
IFSP
Preview text
ATIVIDADE PRÁTICA NoSQL Roteiro Elaborado por Prof MSc Guilherme Ditzel Patriota ANO 2024 Roteiro de Atividade Prática de NoSQL 1 SUMÁRIO SUMÁRIO 1 INTRODUÇÃO 2 MOTIVAÇÃO DO TRABALHO 2 RESUMO DO QUE FAZER 3 ORIENTAÇÕES GERAIS 6 FORMATO DE ENTREGA 6 CRITÉRIOS DE AVALIAÇÃO 7 FORMATO DA APRESENTAÇÃO 8 IDENTIFICAÇÃO PESSOAL 9 CÓDIGOQUERY 10 IMAGENS 11 RESPOSTA 12 EXEMPLO DE APRESENTAÇÃO DE QUESTÃO 13 PRÁTICAS 14 DESCRIÇÃO DO CONJUNTO DE DADOS E PROJETO 14 DETALHAMENTO DOS PASSOS A SEREM REALIZADOS NO TRABALHO 18 CRIAÇÃO DE UM NOVO DBMS LOCAL EM VERSÃO 4 18 TESTE DO DBMS CRIADO E FUNCIONANDO COM A BIBLIOTECA APOC 41 EXEMPLO DE COMANDO DE CRIAÇÃO DE NÓS E RELACIONAMENTOS COM BASE NOS ARQUIVOS JSON DA PASTA IMPORT 43 QUESTÃO 01 IMPORTAÇÃO DOS ARQUIVOS JSON E CRIAÇÃO DE NÓS E ARESTAS COM BASE NOS DADOS DOS ARQUIVOS 48 QUESTÃO 02 DESCOBERTA DA HASHTAG PRINCIPAL 55 QUESTÃO 03 ANÁLISE DOS DADOS SEGUNDO VIÉS A SUA ESCOLHA 58 RESPOSTAS AS DÚVIDAS MAIS FREQUÊNTES 60 Roteiro de Atividade Prática de NoSQL 2 INTRODUÇÃO Olá a todos Sejam todos muito bemvindos Esta avaliação foi planejada e preparada para a disciplina de Banco de Dados NoSQL dos Cursos de Tecnologia do Centro Universitário Internacional Uninter O objetivo desta atividade é fazer com que você aluno desenvolva os conhecimentos teóricos aprendidos na rota de aprendizagem de maneira prática e aplicável no mercado de trabalho Para tanto será necessário o uso das ferramentas apresentadas nas aulas práticas em especial na aula prática de Neo4j Ao longo desse roteiro serão passadas as orientações gerais para realização da avaliação bem como os seus critérios de correção Na sequência apresentase um exemplo comentado de como se deve ser entregue uma questão Seguindo o roteiro estarão as práticas a serem realizadas cada uma delas possui uma explicação de como deve ser feita como será cobrada e algumas dicas Por fim apresento uma seção com as respostas das dúvidas mais frequentes realizadas por vocês Bons estudos No mais desejolhe boa atividade prática em nome dos professores da disciplina de Banco de Dados NoSQL As práticas desse roteiro utilizam 547 arquivos JSON sugerimos usar de 3 a 10 arquivos em sequência apenas com dados de Tweets coletados entre 31122019 e 01042021 com apenas uma hashtag como filtro para as mensagens Sua tarefa é descobrir qual é esta hashtag apenas ela aparece em todas os tweets originais coletados excluindose os retweets mensagens de citação e mensagens de resposta e escolher algum viés de análise de relacionamento entre os dados coletados para apresentação em um grafo com os nós como os usuários ou os tweets e os relacionamentos como retweets ou citações ou outra forma de relacionamento que você perceba como relevante O desafio principal é a aplicação de todos os seus conhecimentos adquiridos até o momento para a realização de uma análise de dados com aplicação em banco orientado a grafos bem como uso de seu senso crítico na escolha do que analisar e de qual janela de tempo analisar o dado em questão MOTIVAÇÃO DO TRABALHO Análise de dados de redes sociais é o grande consumidor de técnicas e aplicações de bancos de dados NoSQL Sendo assim treinar com uma aplicação em situação real de mercado é de suma importância Saber separar suas opiniões e convicções de sua análise técnica e imparcial de um dado é o que o tornará valorizado como excelente profissional Roteiro de Atividade Prática de NoSQL 3 RESUMO DO QUE FAZER 1 Instalar Neo4j localmente ou em nuvem 2 Criar banco de dados vazio DBMS Local em versão 4 sugerida 3 Instalar biblioteca APOC neste DBMS criado 4 Abra a pasta import do DBMS criado e coloque nela de 3 a 10 arquivos JSON em sequência numérica dos 547 arquivos fornecidos que contém os tweets e metadados coletados a serem analisados sugestão para não causar demora na importação mas você pode usar todos os arquivos JSON se desejar 5 Crie ou copie dos arquivos do trabalho em sua rota o arquivo apocconf na pasta conf do seu DBMS novo para permitir acesso aos arquivos da pasta import 6 Inicie seu DBMS e abra o Browser dele para realizar queries Cypher nele 7 Carregar dados dos arquivos JSON da pasta import usando uma query Cypher para criação dos nós e relacionamentos no seu DBMS vazio nós e arestas com importação de dados dos arquivos JSON da pasta import incluir o dado de referencedtweetstype nos nós de Tweet Observações Não esqueça de explicar o funcionamento destes comandos na sua legenda Dicas e comandos sugeridos necessário adaptar e complementar de acordo com sua necessidade a Colocar o dado de referencedtweetstype b Colocar demais dados que serão necessários para a última questão ver item 7 c MERGE identificadorRU ru RU12345678 d CALL apocloaddirectoryjson YIELD value WITH value as arquivo CALL apocloadjsonarquivo YIELD value UNWIND valuedata as tweet MERGE uUser userid tweetauthorid MERGE tTweet idtuite tweetid ON CREATE SET t Coloque aqui os dados que você deseja Coloque aqui os demais nós e relacionamentos que você deseja criar FOREACH hash IN tweetentitieshashtags MERGE hHashtag tag apoctextreplaceapoctextcleanhashtagazAZ09 MERGE hPOSSUIt MERGE uUSOUh FOREACH reftweet IN tweetreferencedtweets SET ttiporef coalescettiporef reftweettype tidref coalescetidref reftweetid 8 Alterar os nós de Tweet que contenham o dado referencedtweets na estrutura JSON para nós dos tipos dados em referencedtweetstype estes nós não são Tweets e sim Retweets ou Quoted ou Roteiro de Atividade Prática de NoSQL 4 Repliedto e não podem influenciar na sua resposta da busca da hashtag principal Comandos sugeridos a MATCH t WHERE retweeted IN ttiporef REMOVE tTweet SET tRetweet b MATCH t WHERE repliedto IN ttiporef REMOVE tTweet SET tResposta c MATCH t WHERE quoted IN ttiporef REMOVE tTweet SET tCitacao 9 Fazer uma query de busca nos dados do seu banco para encontrar a hashtag principal que aparece em todos os nós do tipo Tweet não nos demais nós de mensagem não originais Estilos de query sugeridos necessário adaptar para seus dados a MATCH nNoImportanterRELACIONAMENTOQUALQUERoOutroNo WITH n COUNTr AS contagem ORDER BY contagem DESC LIMIT 1 WITH n contagem MATCH nrRELACIONAMENTOQUALQUERoOutroNo ruRU RETURN n o r contagem ru LIMIT 15 b MATCH oOutroNo WITH collecto AS listaDeMensagens MATCH nNoImportante WHERE ALLo IN listaDeMensagens WHERE NOT isEmptynrRELACIONAMENTOQUALQUERor WITH n MATCH nrRELACIONAMENTOQUALQUERoOutroNo ruRU RETURN n o r ru LIMIT 15 10 Gerar um grafo de visualização que contenha o nó principal como a hashtag encontrada e todos os demais tweets interligados nela limitar visualização entre 10 e 20 nós contando com o central de hashtag Os de mensagens e o seu nó de RU se existir 11 Fazer uma busca nos dados do seu banco em busca de alguma informação que você ache interessante a destacar Sugestões de questões a serem respondidas Algumas sugestões precisam ter a inclusão de dados nos atributos dos nós com base nos dados dos arquivos JSON e devem ser incluídos na criação do seu banco e não após Roteiro de Atividade Prática de NoSQL 5 a Qual o usuário que mais movimentou a rede de acordo com seus dados necessário criar nós de usuários e seus relacionamentos com os nós de mensagem b Qual o equipamento mais usado para postar mensagens necessário criação de nós de equipamento e relacionamentos com as mensagens c Quais as 3 hashtags menos usadas d Qual o período granularidade de hora com maior movimentação da rede Necessário adicionar atributo com dado de createdat 12 Gerar um grafo de visualização que contenha o foco da sua informação buscada limitar visualização entre 10 e 20 Não esquecer o seu nó de RU se existir 13 Abra o arquivo DOCX caderno de resposta e cole seus dados conforme solicitado 14 Entregue o trabalho Roteiro de Atividade Prática de NoSQL 6 ORIENTAÇÕES GERAIS FORMATO DE ENTREGA A entrega desta atividade prática deverá ser realizada pela área de Trabalhos em formato PDF com o caderno de resolução da atividade prática Em seu caderno de resolução deverão constar as imagens referentes às duas questões com o códigoquery usado para geração do resultado apresentado o resultado da questão e mais o seu RU em algum lugar da imagem e do código sua IP Identificação Pessoal seu RU O formato de entrega desejável dos prints das práticas desse roteiro deve estar de acordo com o que é visto na seção EXEMPLO DE APRESENTAÇÃO DE PRÁTICA Recomendase que os trabalhos sejam enviados no formato pdf Uma vez que formatos doc ou docx podem apresentar falhas do tipo na codificação carregamento ou apresentação de imagens Sendo assim fica por conta e risco do estudante se houver problemas com o documento enviados no formato doc ou docx ou outro formato editável Roteiro de Atividade Prática de NoSQL 7 CRITÉRIOS DE AVALIAÇÃO Os critérios de avaliação desse trabalho visam deixar a avaliação o mais justa e transparente possível Nessa avaliação teremos um total de 100 pontos de trabalho sendo 8 partes com valores iguais de 125 pontos cada divididas em 3 questões A primeira questão será composta por print do código e uma imagem com o resultado do código resultado textual sem geração de grafos ou tabelas As segunda e terceira questões conterão 1 parte de código 1 parte de imagem com um grafo e 1 parte de resposta As questões serão avaliadas e corrigidas individualmente conforme a seguinte equação 𝑁 𝐹𝐸 𝐼𝑃𝐶𝑂𝐷𝑐𝑟𝑖𝑎çã𝑜 𝐼𝑀𝐺𝑄01𝑃𝐼𝐼 𝐼𝑃 𝐶𝑂𝐷𝑎𝑛á𝑙𝑖𝑠𝑒1 𝐼𝑀𝐺𝑄02𝑃𝐼𝐼 𝑅𝐸𝑆𝑃𝑄02𝑃𝐼𝐼𝐼 𝐼𝑃𝐶𝑂𝐷𝑎𝑛á𝑙𝑖𝑠𝑒2 𝐼𝑀𝐺𝑄03𝑃𝐼𝐼 𝑅𝐸𝑆𝑃𝑄03𝑃𝐼𝐼𝐼 8 Em que 𝑁 𝑁𝑜𝑡𝑎 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 Nota total do trabalho podendo variar de 0 até 100 𝐹𝐸 𝐹𝑜𝑟𝑚𝑎𝑡𝑜 𝑑𝑎 𝐸𝑛𝑡𝑟𝑒𝑔𝑎 Nota do Formato de Entrega podendo variar de 0 até 1 𝐼𝑃 𝐼𝑑𝑒𝑛𝑡𝑖𝑓𝑖𝑐𝑎çã𝑜 𝑃𝑒𝑠𝑠𝑜𝑎𝑙 Nota Identificação Pessoal seu RU podendo variar de 0 até 1 𝐶𝑂𝐷𝑐𝑟𝑖𝑎çã𝑜 𝐶ó𝑑𝑖𝑔𝑜𝑠 𝑑𝑒 𝑐𝑟𝑖𝑎çã𝑜 𝑑𝑜 𝑏𝑎𝑛𝑐𝑜 Nota do CódigoQuery usado para criar o banco de dados a serem colocados na Questão 01 Parte I podendo variar de 0 até 100 𝐼𝑀𝐺𝑄01𝑃𝐼𝐼 𝐼𝑚𝑎𝑔𝑒𝑛𝑠 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 01 𝑃𝑎𝑟𝑡𝑒 𝐼𝐼 Nota das Imagems com resultado esperado a serem colocadas na Questão 01 Parte II podendo variar de 0 até 100 𝐶𝑂𝐷𝑎𝑛á𝑙𝑖𝑠𝑒1 𝐶ó𝑑𝑖𝑔𝑜𝑠 𝑑𝑒 𝑎𝑛á𝑙𝑖𝑠𝑒 𝑑𝑒 𝑑𝑎𝑑𝑜𝑠 𝑑𝑜 𝑏𝑎𝑛𝑐𝑜 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 02 Nota do CódigoQuery usado para criar o banco de dados a serem colocados na Questão 02 Parte I podendo variar de 0 até 100 𝐼𝑀𝐺𝑄02𝑃𝐼𝐼 𝐼𝑚𝑎𝑔𝑒𝑛𝑠 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 02 𝑃𝑎𝑟𝑡𝑒 𝐼𝐼 Nota das Imagems com resultado esperado a serem colocadas na Questão 02 Parte II podendo variar de 0 até 100 𝑅𝐸𝑆𝑃𝑄02𝑃𝐼𝐼𝐼 𝑅𝑒𝑠𝑝𝑜𝑠𝑡𝑎 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 02 𝑃𝑎𝑟𝑡𝑒 𝐼𝐼𝐼 Nota da Resposta com resultado correto para a Questão 02 Parte III podendo ser 0 ou 100 𝐶𝑂𝐷𝑎𝑛á𝑙𝑖𝑠𝑒2 𝐶ó𝑑𝑖𝑔𝑜𝑠 𝑑𝑒 𝑎𝑛á𝑙𝑖𝑠𝑒 𝑑𝑒 𝑑𝑎𝑑𝑜𝑠 𝑑𝑜 𝑏𝑎𝑛𝑐𝑜 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 03 Nota do CódigoQuery usado para criar o banco de dados a serem colocados na Questão 03 Parte I podendo variar de 0 até 100 𝐼𝑀𝐺𝑄03𝑃𝐼𝐼 𝐼𝑚𝑎𝑔𝑒𝑛𝑠 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 03 𝑃𝑎𝑟𝑡𝑒 𝐼𝐼 Nota das Imagems com resultado esperado a serem colocadas na Questão 03 Parte II podendo variar de 0 até 100 𝑅𝐸𝑆𝑃𝑄03𝑃𝐼𝐼𝐼 𝑅𝑒𝑠𝑝𝑜𝑠𝑡𝑎 𝑑𝑎 𝑄𝑢𝑒𝑠𝑡ã𝑜 03 𝑃𝑎𝑟𝑡𝑒 𝐼𝐼𝐼 Nota da Resposta com resultado correto para a Questão 03 Parte III podendo ser 0 ou 100 Cada um dos itenscritérios que compõe a equação acima será detalhado nas subseções a seguir Se mesmo assim houver dúvidas não hesite em perguntar O desconhecimento dos critérios não será aceito como desculpa Roteiro de Atividade Prática de NoSQL 8 FORMATO DA APRESENTAÇÃO O formato da apresentação é um dos critérios de avaliação pois um profissional deve ser capaz de seguir normas no momento de elaboração de relatórios técnicos manuais e outros documentos afins bem como ser capaz de apresentar seus dados de forma limpa e compreensível As possíveis notas desse critério são apresentadas na tabela a seguir Tabela 1 Possíveis notas no formato de apresentação NOTA DESCRIÇÃO NA DEVOLUTIVA COMENTÁRIOS 100 Formato da apresentação está correto Está de acordo com o exemplo ver a seção EXEMPLO DE APRESENTAÇÃO DE PRÁTICA para maiores detalhes 070 Formato da apresentação está parcialmente correto Está muito próximo do exemplo mas apresenta alguns erros 050 Formato da apresentação está incorreto Não seguiu o exemplo Roteiro de Atividade Prática de NoSQL 9 IDENTIFICAÇÃO PESSOAL Todas as questões deverão apresentar um identificador pessoal nas seguintes partes No código ou query deve haver ao menos uma variável cujo nome seja composto pelo seu RU eg contadorxxxxxx onde o x s deve ser substituído pelo seu RU mesmo que esta variável não seja utilizada em nenhuma parte do código ou query Nas imagensresultados onde deverá conter seu RU escrito em algum local As possíveis notas para esse critério são apresentadas na tabela a seguir Tabela 2 Possíveis notas critério de Identificação Pessoal NOTA DESCRIÇÃO NA DEVOLUTIVA COMENTÁRIOS 100 Apresentou o identificador pessoal no códigoquery e nas imagensfotos Está de acordo com o exemplo ver a seção EXEMPLO DE APRESENTAÇÃO DE QUESTÃO para maiores detalhes 080 Apresentou identificador pessoal na imagem mas não no código Não apresentou um identificador no código eg o RU como parte do nome de uma variável 070 Apresentou o identificador pessoal no código mas não nas imagensprints Não apresentou um identificador na imagem 050 Não apresentou identificador pessoal no códigoquery e nem nas imagensprints Questão sem nenhuma identificação de autoria 000 Apresentou o identificador de outra pessoa nas prints eou no códigoquery A questão veio com identificador pessoal de outra pessoa Roteiro de Atividade Prática de NoSQL 10 CÓDIGOQUERY A apresentação do códigoquery compõe um terço da nota total das questões Este será avaliado conforme a tabela a seguir As possíveis notas para esse critério são apresentadas na tabela a seguir Tabela 3 Possíveis notas na apresentação do código NOTA DESCRIÇÃO NA DEVOLUTIVA COMENTÁRIOS 100 Código ou query coerente com a resposta encontrada e apresentado no formato imagem Está de acordo com o exemplo ver a seção EXEMPLO DE APRESENTAÇÃO DE QUESTÃO para maiores detalhes 70 Código ou query coerente com a resposta encontrada e apresentado no formato texto Acertou o código ou query mas copiou o texto do código ao invés de tirar print 60 Código ou query parcialmente correto e apresentado no formato imagem Errou um pouco código ou query mas colocou no trabalho no formato imagem 40 Código ou query parcialmente correto e apresentado no formato texto Errou um pouco código e copiou o texto do código ou query ao invés de tirar print 0 Sem códigoquery ou com códigoquery incorreto A questão não apresentou códigoquery ou o códigoquery estava errado OBS 1 NÃO ESQUECER DO IDENTIFICADOR PESSOAL Ex COLOCAR SEU RU NO NOME DE UMA VARIÁVEL OU LOCAL DE SUA QUERY Roteiro de Atividade Prática de NoSQL 11 IMAGENS As imagens compõem um terço da nota total de cada questão Essas normalmente são prints dos grafos gerados pela sua busca na base de dados criada com os arquivos JSON fornecidos Cada práticaquestão dessa atividade prática virá com instruções de como devem ser essas imagens Entendese que a legenda faz parte de uma imagem Sendo assim as legendas serão avaliadas As possíveis notas para esse critério são apresentadas na tabela a seguir Tabela 4 Possíveis notas na apresentação das imagensfotos NOTA DESCRIÇÃO NA DEVOLUTIVA COMENTÁRIOS 100 Imagens corretas e com legenda adequada Está de acordo com o exemplo ver a seção EXEMPLO DE APRESENTAÇÃO DE QUESTÃO para maiores detalhes 90 Imagens correta mas com legenda superficial Ex de legenda superficial Figura 1 Nuvem de palavras 80 Imagens corretas mas com legenda precária Ex de legenda precária Figura 1 Imagem 70 Imagens correta mas sem legenda Apresentou imagens corretas mas não colocou legenda 60 Imagens parcialmente corretas mas com legenda adequada Imagem que não consiga identificar o que esteja acontecendo ou a falta de uma das imagens se encaixam nesse grupo 50 Imagens parcialmente correta e com legenda superficial Similar ao segundo item de cima para baixo dessa tabela mas com pelo menos uma das imagens com problemas 40 Imagens parcialmente corretas e com legenda precária Similar ao terceiro item de cima para baixo dessa tabela mas com pelo menos uma das imagens com problemas 30 Imagens parcialmente correta e sem legenda Similar ao quarto item de cima para baixo dessa tabela mas com pelo menos uma das imagens com problemas 0 Sem imagens ou com imagens incorretas A questão veio sem imagens ou com imagens erradas OBS 1 NÃO ESQUECER DO IDENTIFICADOR PESSOAL Ex Colocar seu RU dentro da nuvem de palavras Roteiro de Atividade Prática de NoSQL 12 RESPOSTA A apresentação da resposta correta será avaliada de forma booleana As possíveis notas para esse critério são 0 ou 100 Tabela 5 Possíveis notas na apresentação das respostas NOTA DESCRIÇÃO NA DEVOLUTIVA COMENTÁRIOS 100 Resposta correta Está de acordo com o exemplo ver a seção EXEMPLO DE APRESENTAÇÃO DE QUESTÃO para maiores detalhes 0 Resposta incorreta A questão não apresentou a resposta correta para a pergunta Roteiro de Atividade Prática de NoSQL 13 EXEMPLO DE APRESENTAÇÃO DE QUESTÃO Prática XX Título da prática Questão XX Enunciado curto da questão Enunciado Enunciado mais descritivo sobre o que fazer na questão I Apresentação do Código não esquecer do identificador pessoal Figura 1 Query de busca de dados no banco de dados já criado II Apresentação das ImagensPrints não esquecer do identificador pessoal a Grafo com o viés XYZ Figura 2 Resultado do grafo com os registros encontrados sobre o assunto XYZ Ao centro vemos o tweet que gerou mai s interação e em volta todos os tweets de interação como retweets respostas citações e outros OBS1 Nas suas imagens não precisa circular e apontar o identificador pessoal OBS2 Caso necessário junte as imagens dos códigos garantindo que não ocorra perda de clareza nem de organização OBS4 Este é apenas um exemplo e nem o código mostrado e nem o grafo são referentes à atividade prática que você deverá entregar mas são muito próximos Identificador Pessoal Seu RU em um nó no grafo e em texto no código Roteiro de Atividade Prática de NoSQL 14 PRÁTICAS DESCRIÇÃO DO CONJUNTO DE DADOS E PROJETO Você deverá utilizar de 3 a 10 dos 547 arquivos disponibilizados e que são parte de um conjunto de mais de 1000 arquivos coletados entre 2006 e 2022 da plataforma X antigo Twitter usando como filtro apenas uma hashtag específica Cada arquivo contém aproximadamente 100 tweets que estão separados em 4 principais grandes contêineres de dados data Principal fonte de dados para este projeto Contém a mensagem e informações de contexto da mensagem como nomes de usuários hashtags usadas se foi um retweet dado em referencedtweetstype ou não se possui menção a outros usuários e muito mais errors Contém detalhes sobre erros ocorridos durante a coleta dos dados como usuários não encontrados ou deletados ou banidos ou suspensos Estas podem não ser informações muito úteis neste trabalho Nem todos os arquivos possuem estes dados includes Contém dados sobre anexos arquivos de mídia links informações extras sobre os tweets e informações extras sobre os usuários meta Metadados sobre o arquivo JSON coletado Aqui encontramos apenas 4 informações id do tweet mais recente coletado id do tweet mais antigo coletado código token para coletar o próximo tweet da pesquisa e quantidade de mensagens contidas neste arquivo Para facilitar segue estrutura padrão de um arquivo JSON deste trabalho Estrutura geral Estrutura básica de um tweet original veja que referencedtweets não aparece em mensagens originais Roteiro de Atividade Prática de NoSQL 15 Estrutura básica de um erro Estrutura básica de um include do tipo media foto Roteiro de Atividade Prática de NoSQL 16 Roteiro de Atividade Prática de NoSQL 17 Estrutura básica de um include do tipo place lugar Estrutura básica de um dado meta Roteiro de Atividade Prática de NoSQL 18 DETALHAMENTO DOS PASSOS A SEREM REALIZADOS NO TRABALHO CRIAÇÃO DE UM NOVO DBMS LOCAL EM VERSÃO 4 1 Criar novo projeto 1 2 Roteiro de Atividade Prática de NoSQL 19 2 Renomear projeto 1 2 Roteiro de Atividade Prática de NoSQL 20 3 Adicionar novo DBMS local 1 2 Roteiro de Atividade Prática de NoSQL 21 4 Renomear DBMS para algo que faça sentido para seu projeto e escolher a versão do DBMS a ser criado 5 Sugerimos usar qualquer versão antes da 5 para ter acesso à biblioteca APOC por completo após versão 5 a biblioteca APOC foi incorporada à base do CYPHER porém alguns métodos não foram 1 Roteiro de Atividade Prática de NoSQL 22 implementados ainda 1 2 3 Roteiro de Atividade Prática de NoSQL 23 6 Coloque uma senha de 8 dígitos e clique em criar 1 Roteiro de Atividade Prática de NoSQL 24 7 Aguarde o download e criação do banco Roteiro de Atividade Prática de NoSQL 25 8 Com o banco criado verifique se a versão está correta número ao lado do nome do seu DBMS criado e clique em cima da parte branca ao lado do número da versão 1 2 Roteiro de Atividade Prática de NoSQL 26 9 Clique na aba Plugins e instale a biblioteca APOC 1 2 Roteiro de Atividade Prática de NoSQL 27 Roteiro de Atividade Prática de NoSQL 28 10 Clique nos três pontinhos ao lado do botão Open na barra com o nome do seu DBMS clique em Open folder e clique em Configuration para abrir a pasta Configuration no seu gerenciador de arquivos do sistema operacional 1 2 3 Roteiro de Atividade Prática de NoSQL 29 11 Uma mensagem em azul será mostrada avisando que a pasta foi aberta Use o ALTTAB do seu teclado para ir até a pasta aberta Roteiro de Atividade Prática de NoSQL 30 12 Clique em New Documento de texto 1 2 Troque de txt para conf Roteiro de Atividade Prática de NoSQL 31 13 Apague todo o nome do arquivo incluindo o txt que não está marcado inicialmente e coloque como nome apocconf Ao apertar ENTER o sistema perguntará se você realmente quer mudar a extensão do arquivo de txt para conf Clique em Sim Yes 1 Garanta que ficou apocconf e não apocconftxt 2 Roteiro de Atividade Prática de NoSQL 32 14 Clique com o botão direito do mouse no arquivo criado apocconf e escolha abrir com o bloco de notas 1 2 Roteiro de Atividade Prática de NoSQL 33 15 Adicione a seguinte linha neste arquivo salveo e fecheo apocimportfileenabledtrue Roteiro de Atividade Prática de NoSQL 34 Roteiro de Atividade Prática de NoSQL 35 16 No Neo4j inicie o DBMS 1 2 Roteiro de Atividade Prática de NoSQL 36 Roteiro de Atividade Prática de NoSQL 37 17 Clique em Open Neo4j Browser para abrir a tela de comandos Cypher deste DBMS 1 2 Roteiro de Atividade Prática de NoSQL 38 18 Teste se a biblioteca APOC está funcionando corretamente com o comando CALL apochelp apoc Para executar o comando aperte no ícone de play azul ou pressione enter 2 1 Comando executado OK Roteiro de Atividade Prática de NoSQL 39 19 De volta ao Neo4j Desktop clique nos três pontos do seu DBMS clique em Open folder e em seguida em Import 1 2 3 Roteiro de Atividade Prática de NoSQL 40 20 Uma mensagem em azul será mostrada avisando que sua pasta foi aberta no seu gerenciador de arquivos Vá até a janela do gerenciador de arquivos que foi aberta pasta Import Mensagem normal Roteiro de Atividade Prática de NoSQL 41 21 Coloque nesta pasta alguns arquivos JSON do trabalho Para testes iniciais sugiro colocar apenas 2 arquivos e para o trabalho final sugiro usar apenas 5 arquivos Neste exemplo usarei todos os arquivos para demonstração TESTE DO DBMS CRIADO E FUNCIONANDO COM A BIBLIOTECA APOC 1 De volta ao Neo4j Browser vamos testar se a importação de arquivos da pasta Import está funcionando corretamente Copie o nome de um doas arquivos que você colocou na pasta Import e faça o seguinte comando troque a parte vermelha pelo nome do seu arquivo com a extensão json CALL apocloadjsonnome do seu arquivojson YIELD value RETURN value Roteiro de Atividade Prática de NoSQL 42 Roteiro de Atividade Prática de NoSQL 43 2 As configurações iniciais para o trabalho estão prontas Vamos testar alguns comandos APOC para lermos a pasta Import completa e retornar os nomes dos arquivos presentes nela com o seguinte comando CALL apocloaddirectoryjson YIELD value EXEMPLO DE COMANDO DE CRIAÇÃO DE NÓS E RELACIONAMENTOS COM BASE NOS ARQUIVOS JSON DA PASTA IMPORT 1 Agora vamos criar nós de mensagem com base em apenas 1 arquivo da pasta Import Usaremos o arquivo tweetscoletados499json como exemplo Primeiro precisamos conhecer a estrutura deste JSON Para isso vamos abrir o arquivo no bloco de notas botão direito em cima do arquivo e selecionar Editar no Bloco de Notas Roteiro de Atividade Prática de NoSQL 44 Podemos perceber que o arquivo tem uma estrutura de lista dentro da chave data e que cada elemento desta lista é uma mensagem que pode ser um tuíte original um retuite uma resposta para uma mensagem ou uma citação de uma mensagem Para este trabalho vamos nos focar principalmente nos tuítes originais Também é possível encontrar informações como a hashtags usadas datahashtagstag b data e hora de criação da mensagem datacreatedat c id do autor da mensagem dataauthorid 2 Para criarmos nós de mensagem teremos que iterar na lista de mensagens data O mesmo vale para a criação de nós de usuário e de hashtags Na mesma iteração será possível criar tanto o nó de mensagem quanto o nó de usuário e os nós das hashtags usadas nesta mensagem Veja que para hashtags também temos uma lista na qual teremos que iterar para acharmos todas as hashtags Nestas mesmas iterações já podemos criar os devidos relacionamentos entre os nós para não perdermos a informações de qual usuário postou qual mensagem e quais hashtags foram usadas 3 Vamos criar um comando simples para criar apenas nós de mensagem usando o comando UNWIND para iterarmos na lista data Mostrando que o banco está vazio com o comando MATCH n RETURN n Roteiro de Atividade Prática de NoSQL 45 Agora sim realizando o comando de criação simples CALL apocloadjsontweetscoletados499json YIELD value UNWIND valuedata as tweet MERGE tTweet tweetid tweetid Roteiro de Atividade Prática de NoSQL 46 Veja que o Neo4j retorna a quantidade de nós criados 79 nós a quantidade de etiquetas adicionadas em nós 79 labels um para cada nó e com o texto Tweet que é o texto que colocamos depois dos dois pontos na declaração do alias dos nós t Para vermos todos os dados criados em nosso banco podemos gerar um grafo de visualização do banco todo usando novamente o comando MATCH n RETURN n Atenção Este comando não deve ser usado em bancos de dados grandes pois pode travar o computador sugerimos o uso de um limitador ou um filtro como MATCH n RETURN n LIMIT 10 ou MATCH nTweet WHERE Roteiro de Atividade Prática de NoSQL 47 ntweetid1234357352616341509 RETURN n 4 Agora que conseguimos iterar na chave data do arquivo podemos apagar o que fizemos até aqui para não duplicar nada apesar de que nada será duplicado pois estamos usando o comando MERGE para gerar os nós e não o CREATE O MERGE verifica se o nó já existe e apenas adiciona o que for diferente do campo entre chaves tweetid tweetid Para apagar o banco fazemos MATCH n DETACH DELETE n Roteiro de Atividade Prática de NoSQL 48 Mensagem de êxito informando que 79 nós foram deletados QUESTÃO 01 IMPORTAÇÃO DOS ARQUIVOS JSON E CRIAÇÃO DE NÓS E ARESTAS COM BASE NOS DADOS DOS ARQUIVOS Antes de realmente buscar dados em um banco de dados devemos popular ele com nossos dados Para isso vamos criar nós e relacionamentos usando as informações constantes nos arquivos JSON de nossa pasta import que acabamos de colocar Usaremos a biblioteca APOC para ler os arquivos JSON e criar nossos nós e relacionamentos com base nestes dados Na parte I da questão 01 apresente os comandos de criação do banco e na parte II mostre os prints de execução estes comandos não deverão ser mostrados nenhum print contendo grafos DICAS PARA A QUESTÃO 01 Primeiro vamos criar seu nó de Identificador Pessoal MERGE ruRU RU RU12345678 Substitua o número pelo seu RU Em seguida 1 Como nosso comando de criação de nós de mensagem feito na seção anterior EXEMPLO DE COMANDO DE CRIAÇÃO DE NÓS E RELACIONAMENTOS COM BASE NOS ARQUIVOS JSON Roteiro de Atividade Prática de NoSQL 49 DA PASTA IMPORT criou apenas 1 atributo em cada nó o tweetid com o valor existente em dataid que é igual à tweetid pois renomeamos data para tweet vamos agora criar estes mesmos nós mas agora com mais dados o ideal é colocarmos todos os dados que serão necessário no futuro para não precisarmos mais ficar recriando o banco de dados Além deles vamos criar os nós de usuário e de hashtags Abaixo vamos analisar o comando que usaremos Primeira parte do comando permanece igual Importa o conteúdo do arquivo JSON para a variável value CALL apocloadjsontweetscoletados499json YIELD value Esta próxima parte fará a iteração dentro da chave data renomeado para tweet UNWIND valuedata AS tweet Aqui vamos criar os nós de mensagem como antes MERGE tTweet tweetid tweetid Aqui vamos adicionar mais atributos para nossos nós de mensagem É importante termos ao menos as informações de texto data de criação e reftype para sabermos se é tweet original ou retweet ou citação ou resposta para ON CREATE SET ttext tweettext tcreatedat datetimetweetcreatedat tconversationidtweetconversationid Para podermos adicionar a informação de referencedtweet e reftype precisamos fazer uma iteração extra pois este campo pode conter uma lista Além disto não podemos usar o UNWIND pois este campo é opcional e quando a mensagem é original estes campos não existem causando erros na importação os nós não serão criados Sendo assim usaremos a iteração do FOREACH que só é realizada quando o dado existir e não retorna erro se não existir Usamos o coalesce para criar a lista vazia se não existir para nos permitir adicionar elementos na lista FOREACH reftweet IN tweetreferencedtweets SET ttiporef coalescettiporef reftweettype tidref coalescetidref reftweetid Agora vamos criar o nó do usuário desta mensagem e fazer o relacionamento dele com o nó de mensagem MERGE uUser useridtweetauthorid MERGE uTUITOUt Por último deixamos os nós de hashtag pois usaremos o UNWIND para criarmos quantos nós forem necessários para cada mensagem mensagens Roteiro de Atividade Prática de NoSQL 50 sem hashtags serão ignoradas Primeiro escolhemos os dados a serem usados com base no comando WITH WITH t tweet tweetentitieshashtags AS hashtags Agora fazemos a iteração na lista das hashtags UNWIND hashtags AS hashtag Fazemos a criação e formatação dos dados das tags para eliminarmos repetições de palavras muito parecidas como BBB20 e bbb20 Deixaremos tudo em minúsculo e sem traços ou outros elementos que não sejam letras ou números Para isso usaremos o apoctextclean retira acentos e transformas maiúsculas em minúsculas e o apoctextreplace com o RegEx azAZ09 para substituir tudo o que não for número ou letra para vazio WITH t apoctextreplaceapoctextcleanhashtagtag azAZ09 AS cleanedHashtag Criação dos nós de Hashtag MERGE hHashtag tag cleanedHashtag Para aproveitarmos uma única leitura do arquivo JSON vamos finalizar com a criação do relacionamento entre o nó de mensagem e todos os nós de hashtag criados nesta iteração MERGE tPOSSUIh 2 Finalmente veja que foram criados 159 labels etiquetas 159 nós configuradas 516 propriedades atributos nos nós e criados 265 relacionamentos entre os nós Para vermos o resultados faremos MATCH n RETURN n usamos este comando somente por termos menos de 300 nós no banco Roteiro de Atividade Prática de NoSQL 51 Veja que se você estiver trabalhando pelo neo4j online será necessário incluir os relacionamentos no seu comando MATCHRETURN para que eles sejam mostrados 3 Para incluir neste comando todos os arquivos da pasta Import basta incluir o comando apocloaddirectory no início um UNWIND para iterar na lista de arquivos e um WITH para continuar os demais comandos apenas com a variável arquivo na memória para não dar conflito de nome já existente com value CUIDADO Este comando poderá demorar bastante para ser completado a depender da quantidade de arquivos na sua pasta Import Em meu caso levou 8 minutos para os 500 arquivos resultando em 79453 nós e labels além de 133272 relacionamentos Buscar nomes dos arquivos na pasta Import CALL apocloaddirectoryjson YIELD value Fazer o UNWIND na lista de arquivos UNWIND value AS arquivo Primeira parte do comando permanece igual Importa o conteúdo do arquivo JSON para a variável value WITH arquivo CALL apocloadjsonarquivo YIELD value Esta próxima parte fará a iteração dentro da chave data renomeado para tweet UNWIND valuedata AS tweet Roteiro de Atividade Prática de NoSQL 52 Aqui vamos criar os nós de mensagem como antes MERGE tTweet tweetid tweetid Aqui vamos adicionar mais atributos para nossos nós de mensagem É importante termos ao menos as informações de texto data de criação e reftype para sabermos se é tweet original ou retweet ou citação ou resposta para ON CREATE SET ttext tweettext tcreatedat datetimetweetcreatedat tconversationidtweetconversationid Para podermos adicionar a informação de referencedtweet e reftype precisamos fazer uma iteração extra pois este campo pode conter uma lista Além disto não podemos usar o UNWIND pois este campo é opcional e quando a mensagem é original estes campos não existem causando erros na importação os nós não serão criados Sendo assim usaremos a iteração do FOREACH que só é realizada quando o dado existir e não retorna erro se não existir Usamos o coalesce para criar a lista vazia se não existir para nos permitir adicionar elementos na lista FOREACH reftweet IN tweetreferencedtweets SET ttiporef coalescettiporef reftweettype tidref coalescetidref reftweetid Agora vamos criar o nó do usuário desta mensagem e fazer o relacionamento dele com o nó de mensagem MERGE uUser useridtweetauthorid MERGE uTUITOUt Por último deixamos os nós de hashtag pois usaremos o UNWIND para criarmos quantos nós forem necessários para cada mensagem mensagens sem hashtags serão ignoradas Primeiro escolhemos os dados a serem usados com base no comando WITH WITH t tweet tweetentitieshashtags AS hashtags Agora fazemos a iteração na lista das hashtags UNWIND hashtags AS hashtag Fazemos a criação e formatação dos dados das tags para eliminarmos repetições de palavras muito parecidas como BBB20 e bbb20 Deixaremos tudo em minúsculo e sem traços ou outros elementos que não sejam letras ou números Para isso usaremos o apoctextclean retira acentos e transformas maiúsculas em minúsculas e o apoctextreplace com o RegEx azAZ09 para substituir tudo o que não for número ou letra para vazio WITH t apoctextreplaceapoctextcleanhashtagtag azAZ09 AS cleanedHashtag Criação dos nós de Hashtag MERGE hHashtag tag cleanedHashtag Roteiro de Atividade Prática de NoSQL 53 Para aproveitarmos uma única leitura do arquivo JSON vamos finalizar com a criação do relacionamento entre o nó de mensagem e todos os nós de hashtag criados nesta iteração MERGE tPOSSUIh Roteiro de Atividade Prática de NoSQL 54 4 Agora que você tem seu banco de dados criado basta usar o banco para encontrar as informações necessárias Não é mais necessário usar comandos APOC e nem acessar os arquivos JSON pois os dados já estão importados para o banco em forma de nós e arestas Observe apenas que como o visualizador de nós possui limitação padrão de 300 nós por vez na visualização caso você tente ver o grafo de todos os seus dados não será possível e o resultado será algo como a imagem abaixo ATENÇÃO Este grafo é apenas para demonstração do limite de nós e não deve ser mostrado no trabalho O comando MATCH n RETURN n não deve ser apresentado em nenhum momento no seu trabalho 5 Neste caso é necessário ou configurar o limite para mais nós quanto mais nós mais memória será consumida do seu computador o deixando lento ou criar comandos MATCHRETURN com filtros específicos para analisar os dados de acordo com sua perguntademanda Para aumentar o limite de 300 nós vá em Browser Settings do neo4j Browser e mude o valor do campo Graph Visualization Initial Node Display sugiro não passar de 3000 nós Roteiro de Atividade Prática de NoSQL 55 ATENÇÃO Este grafo é apenas para demonstração do limite de nós e não deve ser mostrado no trabalho O comando MATCH n RETURN n não deve ser apresentado em nenhum momento no seu trabalho QUESTÃO 02 DESCOBERTA DA HASHTAG PRINCIPAL Sua missão na questão 02 será encontrar qual hashtag foi usada para gerar todos os arquivos JSON Para isso descubra qual delas está presente em todos os tweets mensagens originais e não em retweets quotedcitação nem repliedtoresposta coletados Confirme sua descoberta com a geração de um grafo de visualização usando o banco de dados já criado anteriormente que mostre um nó central tendo esta hashtag e os demais nós como tweets que contém esta hashtag limitar a visualização entre 10 e 20 nós Não esqueça de mostrar seu nó de RU nesta visualização Sugerimos utilizar apenas 1 dia de mensagens ou menos nesta representação não é obrigatório filtrar por data desde que atinja o mínimo de 10 nós contando com o central para evitar um grafo muito poluído Caso o tempo de 1 dia seja muito grande reduzao até conseguir um grafo que seja visível Na parte I do seu caderno de respostas cole todos os seus comandos utilizados para encontrar a hashtag principal Na parte II do seu caderno de respostas cole o grafo gerado pelo comando da parte I Seu print do grafo deve estar sem zoom e mostrar o grafo e a legenda de cores dos nós à direita como mostrado no exemplo da imagem a seguir comprovando que apenas 1 nó de hashtag foi apresentado Não esqueça de colocar seu RU tanto no código quanto no grafo antes de salvar seu arquivo em PDF Roteiro de Atividade Prática de NoSQL 56 Por fim na parte III responda à pergunta Qual foi a hashtag usada como filtro para coleta dos dados analisados Esta hashtag só estará presente em nós do tipo Tweet e não em Retweet e a resposta deve conter apenas 1 palavra com o texto da hashtag Para auxílio seguem alguns links interessantes httpsneo4jcomblogtwitterhashtagimpactneo4jpythonjavascript httpsdevelopertwittercomendocstwitterapidatadictionaryexamplepayloads Dicas importantes 1 Aqui você não deve usar comandos contendo CREATE nem MERGE bem como não deve realizar nenhuma leitura nos arquivos JSON Esta etapa já foi realizada anteriormente para criar o banco de dados Aqui você deve apenas usar o banco de dados criado para gerar o grafo de visualização de dados com a informação buscada 2 Exemplo de grafo a ser gerado a Perceba que houve limitação de nós que apenas 1 nó de hashtag é mostrado b Perceba que a hashtag bbb2o exemplificada aqui não é resposta da questão c Perceba que em volta do nó de hashtag temos alguns exemplos de nós de mensagem ligados à essa hashtag incluindo Tweets Retweets e Quotes Citações além do nó de RU fictício que você deve criar usando seu RU d Para criar este grafo de visualização seu comando será muito parecido com estes i MATCH nNoImportanterRELACIONAMENTOQUALQUERoOutroNo WITH n COUNTr AS contagem ORDER BY contagem DESC LIMIT 1 WITH n contagem MATCH nrRELACIONAMENTOQUALQUERoOutroNo ruRU RETURN n o r contagem ru LIMIT 15 ou ii MATCH oOutroNo WITH collecto AS listaDeMensagens Roteiro de Atividade Prática de NoSQL 57 MATCH nNoImportante WHERE ALLo IN listaDeMensagens WHERE NOT isEmptynrRELACIONAMENTOQUALQUERor WITH n MATCH nrRELACIONAMENTOQUALQUERoOutroNo ruRU RETURN n o r ru LIMIT 15 ATENÇÃO Você deve criar e executar um comando Cypher em seu banco de dados para descobrir qual hashtag está presente em todas as mensagens originais excluindo mensagens de retweet citação e resposta Este comando não deve fazer uso da biblioteca APOC Caso seu comando tente retornar mais de 300 nós a configuração padrão do Neo4j Browser impedirá a exibição de mais de 300 nós Seu comando não pode ser MATCH n RETURN n Por fim na parte I cole seus comandos na parte II cole o grafo gerado e inclua uma legenda explicativa sobre o grafo e como interpretálo e na parte III responda à pergunta Qual foi a hashtag usada como filtro para coleta dos dados analisados esta hashtag deverá estar presente em todas as mensagens originais e sua análise deve desconsiderar nós de mensagens do tipo retweeted Roteiro de Atividade Prática de NoSQL 58 QUESTÃO 03 ANÁLISE DOS DADOS SEGUNDO VIÉS A SUA ESCOLHA Agora que você já sabe como criar um grafo de visualização a partir dos dados no seu banco de dados o maior desafio é conseguir extrair informações úteis de grandes quantidades de dados que podem parecer desconexos Sua tarefa aqui é analisar os dados do banco e definir qual informação você gostaria de obter e que tenha potencial de gerar um grafo com mais de 10 nós interligados entre si e menos de 200 Com base em sua escolha você pode optar não obrigatório por definir um período para realizar sua análise que seja grande o suficiente para apresentar os resultados que você deseja porém que não criem um grafo ilegível A sugestão é criar um grafo com mais de 10 nós e menos de 200 com base em uma busca nos dados do seu banco à procura de alguma informação que você ache interessante a destacar Algumas sugestões de questões a serem respondidas são Algumas destas opções precisam ter a inclusão de dados nos atributos dos nós com base nos dados dos arquivos JSON e devem ser incluídos na criação do seu banco e não após 1 Qual o usuário que mais movimentou a rede de acordo com seus dados necessário criar nós de usuários e seus relacionamentos com os nós de mensagem 2 Qual o equipamento mais usado para postar mensagens necessário criação de nós de equipamento e relacionamentos com as mensagens 3 Quais as 3 hashtags menos usadas 4 Qual o período granularidade de hora com maior movimentação da rede Necessário adicionar atributo com dado de createdat 5 Qual o dispositivo mais usado para tuitar depende de seu banco de dados já possuir os nós de equipamentos usados criados na questão 01 6 Qual a Hashtag que menos foi usada 7 Quais os usuários mais citados depende dos seus nós de mensagem possuírem esta informação ou de relacionamentos terem sido criados para este fim Para realizar a consulta ao banco use comandos MATCHRETURN parecidos com o usado na questão 01 Aqui você não deve realizar nenhum comando contendo leitura dos arquivos JSON nem uso da biblioteca APOC mas pode utilizar MERGE e CREATE caso ache necessário incluir nós e relacionamentos baseados nos dados já existentes no seu banco e não nos arquivos JSON Então crie a consulta ao banco de dados que apresente os dados que você escolheu analisar e gere o grafo de sua consulta para colocação no seu caderno de respostas ATENÇAO Seu comando não pode ser MATCH n RETURN n Roteiro de Atividade Prática de NoSQL 59 Por fim na parte I cole seus comandosqueryes com legendas explicando o funcionamento do seu comando na parte II cole o grafo e inclua uma legenda sobre ele e como interpretálo e na parte III explique qual foi a análise realizada incluindo sua linha de raciocínio para criação da query Cypher e qual era sua expectativa de resultado antes da análise comparandoa com o resultado realmente obtido após execução do comando Roteiro de Atividade Prática de NoSQL 60 RESPOSTAS AS DÚVIDAS MAIS FREQUÊNTES 1 Como faço para coletar meus próprios tweets R Infelizmente a coleta de Tweets deixou de ser gratuita para pesquisadores após aquisição e alteração do nome da rede social de Twitter para X No momento existem apenas coletas de mensagens em tempo real com poucas opções e baixo fluxo de dados ou contas corporativas com custos mensais superiores à 5 mil dólares para realizar o mesmo tipo de coleta 2 Estou terminando o curso tem como fazer um questionário para atividade prática R Não 3 Eu não possuo máquina para realizar esta atividade Como devo proceder R Você poderá usar um computador em seu polo Nossas atividades são pensadas para execução em computador disponível nos polos porém você pode optar por usar sua própria máquina 4 Professor eu fiz o download dos arquivos e o JSON veio dividido em um monte de arquivos pequenos O que eu faço R Conhecer o neo4j e as ferramentas para manipulação de dados JSON é de suma importância para o mercado de trabalho nesta área Pesquise na documentação do Neo4j para todas as informações necessárias para esta importação httpsneo4jcomdocs 5 Professor não estou conseguindo configurar o Neo4j para importar arquivos JSON Só aparece erro de falta da biblioteca APOC Como eu começo R Para começar o trabalho segue alguns passos que poderão agilizar o início 1 Configurações iniciais 11 Instale o Neo4j e executeo 12 Crie um projeto neo4j Roteiro de Atividade Prática de NoSQL 61 13 Crie um banco de dados local dentro do novo projeto 14 Clique sobre o nome do banco e instale a biblioteca APOC menu lateral direito Ver mais em httpsneo4jcomlabsapoc44installation Escolha uma versão 4 Roteiro de Atividade Prática de NoSQL 62 15 Abra a pasta de arquivos de configuração do seu novo DBMS clique nos 3 pontos ao lado do nome do seu banco Open File Configure adicione um novo arquivo de texto e renomeie para apocconfig Inclua nele a linha veja mais em httpsneo4jcomlabsapoc44config apocimportfileenabledtrue Roteiro de Atividade Prática de NoSQL 63 16 Inicie seu DBMS criado 17 Abra a pasta Import do seu DBMS e crie a pasta jsonFolder para facilitar a importação dos arquivos em lote Roteiro de Atividade Prática de NoSQL 64 18 Coloque um dos arquivos json do trabalho na pasta Import não coloque na jsonFolder ainda para testes DICAS Para este trabalho você deverá utilizar a biblioteca APOC do Neo4j Não é necessário criação de nenhum script em linguagem de programação apenas comandos Cypher queries Não importa quantos arquivos json existam Você só precisará de dois comandos principais uma boa dose de lógica e bons conhecimentos dos comandos CYPHER Comece fazendo o exemplo de uso desta página httpsneo4jcomlabsapoc43overviewapocloadapocloadjson Depois faça o exemplo de uso desta página httpsneo4jcomlabsapoc43overviewapocloadapocloaddirectoryasyncadd ou desta httpsneo4jcomlabsapoc43overviewapocloadapocloaddirectory Quando conseguir rodar os dois faça uma tentativa com um dos arquivos json dos dados do trabalho Explicação O comando apocloadjson carrega os dados de um arquivo json que esteja na pasta Import do seu DBMS e cria uma variável com eles Assim é possível criar nós com utilizando estes dados como propriedades dos nós que é o que queremos O comando apocloaddirectoryasyncadd cria uma tarefa automática que será executada sempre que um novo arquivo com a extensão que você determinar for colocado em uma pasta que você definir por exemplo na pasta jsonFolder criado no passo 17 anterior O comando apocloaddirectory permite criar uma lista com todos os arquivos de um determinado tipo de dentro de uma pasta e suas subpastas Com esta lista é possível iterar nela com os nomes e caminhos de sistema para dentro do comando apocloadjson Você se deparará com muitas configurações a serem feitas Todas elas são descritas nos site mencionados anteriormente Crie todos os nós e relacionamentos no mesmo comando de importação do arquivo JSON para aproveitar a leitura dos dados no mesmo tweet tem o autor as hashtags e a mensagem que podem ser criados e interligados sem precisar criar filtros para isso Crie nós com todas as propriedades que você achar pertinente ou que poderá utilizar nas análises como incluir data e hora de criação da mensagem incluir id do autor incluir todas as hashtags etc Cuidado ao tentar importar todos os arquivos Provavelmente você não precisará de todos eles para fazer o trabalho Cabe a você analisar os dados e tomar esta decisão O comando UNWIND permitirá que você acesse níveis mais internos dos dados JSON como hashtagstag ou outros dados agrupados em listas Roteiro de Atividade Prática de NoSQL 65 Troque seu CREATE pelo MERGE Ele criará um nó caso a propriedade com determinado valor não exista ou se encontrar um MATCH não duplicará o nó apenas adicionará os dados extras Não use o UNWIND com variáveis que não sejam do próprio arquivo Isto só vai aumentar a complexidade e tempo de execução Sugestão de comando tudo numa mesma célulade uma vez só Cuidado Deixe apenas 3 ou 4 arquivos na pasta para testes pois o carregamento de tudo pode demorar até 2 horas dependendo do computador Só execute com tudo quando estiver certo de que é isto que você quer CALL apocloaddirectoryjson YIELD value WITH value as arquivos ORDER BY arquivos DESC CALL apocloadjsonarquivos YIELD value UNWIND valuedata AS tweet MERGE tTweet tweetid tweetid SET ttext tweettext tuserid tweetauthorid tconversationidtweetconversationid MERGE uUser useridtweetauthorid MERGE tTWEETOUu FOREACH hashtag IN tweetentitieshashtags MERGE hHashtag tag apoctextreplaceapoctextcleanhashtagtag azAZ09 MERGE hrESTAEMt FOREACH ref IN tweetreferencedtweets SET ttiporef coalescettiporef reftype tidref coalescetidref refid Observe que no comando acima não são criados os nós de hashtag e não é feito nenhum tratamento do dado das tags como normalização tudo em minúsculas Use o comando apoctextreplace com o apoctextclean para deixar todas as hashtags padronizadas e eliminar criação de nós semelhantes Exemplo CasaNova e casanova geram dois nós e significam a mesma ideia Estes comandos ajudarão a padronizar esta situação 6 Professor como eu devo colocar meu RU nos prints dos grafos Roteiro de Atividade Prática de NoSQL 66 R Crie um nó com Label RU e com propriedade ruseunúmero Isto criará um nó de cor diferente dos demais Para alterar a legenda que aparece em determinado grupo de nós faça como nas imagens abaixo Sendo assim desejo a todos um ótimo aprendizado e nos vemos na tutoria Atenciosamente Professor Guilherme D Patriota