l3p

Encontrando as relações sociais no Elgg por tipo de ferramentas de interação

Por Dalton Martins. Em 20/02/15 17:27. Atualizada em 04/03/15 18:21.

Continuando o mapeamento de como fazer análise de redes sociais na plataforma Elgg, me deparei essa semana com a necessidade de extrair as relações entre usuários por tipo de ferramenta de interação.

Os comentários que um usuário faz, os "likes" que ele dá um conteúdo, as postagens em fóruns e outros tipos de interação ficam armazenadas na tabela annotations. Para descobrir quais as relações mais relevantes por tipo de ferramenta, realizei a seguinte consulta para entender suas interações. Vale frisar que o Elgg guarda o nome desses tipos de interações na tabela metastrings e armazena o tipo na tabela annotations no campo name_id. Segue a consulta como base: SELECT elgg_annotations.`name_id`,elgg_metastrings.string,COUNT(elgg_annotations.`name_id`) AS Tipos FROM elgg_metastrings LEFT JOIN elgg_annotations ON elgg_annotations.`name_id`=elgg_metastrings.id GROUP BY string ORDER BY `Tipos` DESC

A consulta retornou os seguintes tipos e seu respectivo número de interações. Logo, o que posso analisar aqui é a rede de usuários trocando mensagens diretas pelo quadro disponível no perfil de cada usuário, a rede de postagens de fóruns, a rede de colaborações em páginas, a rede de curtidas em conteúdos e, por fim, a rede de colaboração em tarefas.

776 messageboard 1870
180 group_topic_post 1406
2209 page 1316
201 likes 1315
123 task 1263
176 blog_revision 227

O maior desafio é montar uma estratégia para extrair diretamente essas relações por ferramenta de interação. Segue abaixo como fiz para cada das ferramentas:

  1. messageboard: essa é a mais fácil, pois o Elgg guarda na tabela Annotations quem gerou a mensagem e quem recebeu, logo, não é necessário consultar outras tabelas para encontrar essas relações. Para isso, basta filtrar a tabela Annotations pelo name_id=776;
  2. group_topic_post: aqui já é preciso relacionar a tabela Annotations com a tabela Entities, pois o Elgg guarda em que entidade um usuário postou uma mensagem em um tópico, mas essa entidade é o tópico e ele não apresenta quem é o dono do tópico, o que impede de sabermos o relacionamento direto entre as pessoas. Para isso, é preciso fazer uma consulta juntando duas tabelas e encontrar as relações. Segue aqui: SELECT elgg_entities.owner_guid AS DonoDoTopico ,elgg_annotations.`owner_guid` AS DonoDoPost,elgg_annotations.`time_created` FROM `elgg_annotations` LEFT JOIN elgg_entities ON elgg_annotations.entity_guid=elgg_entities.guid WHERE `name_id` = 180
  3. page: a lógica é a mesma que acima, apenas muda o tipo do conteúdo para 2209. Consulta: SELECT elgg_entities.owner_guid AS DonoDoTopico ,elgg_annotations.`owner_guid` AS DonoDoPost,elgg_annotations.`time_created` FROM `elgg_annotations` LEFT JOIN elgg_entities ON elgg_annotations.entity_guid=elgg_entities.guid WHERE `name_id` = 2209
  4. likes: SELECT elgg_entities.owner_guid AS DonoDoConteudo ,elgg_annotations.`owner_guid` AS DonoDoLike,elgg_annotations.`time_created` FROM `elgg_annotations` LEFT JOIN elgg_entities ON elgg_annotations.entity_guid=elgg_entities.guid WHERE `name_id` = 201
  5. task: SELECT elgg_entities.owner_guid AS DonoDoConteudo ,elgg_annotations.`owner_guid` AS DonoDoColaboracao,elgg_annotations.`time_created` FROM `elgg_annotations` LEFT JOIN elgg_entities ON elgg_annotations.entity_guid=elgg_entities.guid WHERE `name_id` = 123
  6. blog: SELECT elgg_entities.owner_guid AS DonoDoBlog ,elgg_annotations.`owner_guid` AS DonoDoColaboracao,elgg_annotations.`time_created` FROM `elgg_annotations` LEFT JOIN elgg_entities ON elgg_annotations.entity_guid=elgg_entities.guid WHERE `name_id` = 176
  7. e para os generic comments: SELECT elgg_entities.owner_guid AS DonoDoConteudo ,elgg_annotations.`owner_guid` AS DonoDoComentario,elgg_entities.subtype AS Tipo ,elgg_annotations.`time_created` FROM `elgg_annotations` LEFT JOIN elgg_entities ON elgg_annotations.entity_guid=elgg_entities.guid WHERE `name_id` = 183. Lembrar aqui que eles precisam ser separados por subtype. É uma forma de generalização que o Ellg usa para comentários em tipos de conteúdos genéricos, como um arquivo, uma tarefa, etc.

Com isso, temos todos os dados de relacionamento social na plataforma por tipo de ferramenta de interação.

 

 

Categorias: diáriodebordo elgg redessociais