web semantica

22
Departamento de Eletrónica, Telecomunicações e Informática Web Semântica Trabalho Prático 1 Mestrado em Sistemas de Informação Docente: Prof. Hélder Zagalo Discentes: Emanuel Pires – 77994 Mário Monteiro – 77910

Upload: mario-monteiro

Post on 09-Feb-2017

104 views

Category:

Software


0 download

TRANSCRIPT

Departamento de Eletrónica,

Telecomunicações e Informática

Web Semântica

Trabalho Prático 1

Mestrado em Sistemas de Informação

Docente: Prof. Hélder Zagalo Discentes: Emanuel Pires – 77994

Mário Monteiro – 77910

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 2

Índice

INTRODUÇÃO ........................................................................................................................... 3

REQUISITOS ............................................................................................................................. 3

DADOS ORIGINAIS .................................................................................................................... 4

QUERIES .................................................................................................................................. 7

INFERÊNCIAS ........................................................................................................................... 8

APLICAÇÃO WEB ..................................................................................................................... 9

VISUALIZAÇÃO DOS GRAFOS .................................................................................................. 15

CONCLUSÃO .......................................................................................................................... 16

ANEXO..................................................................................................................................... 17

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 3

INTRODUÇÃO Este relatório realiza-se no âmbito da unidade Curricular de Web Semântica do Mestrado

em Sistemas de Informação com o intuito de criar uma aplicação Web que permitisse a

pesquisa e inferência de triplos com recurso as ferramentas Django/Python.

Tem como objectivo criar uma aplicação com recurso a triplos de dados obtidos através de

uma fonte externa, ofereça um conjunto de funcionalidades de pesquisa, inserção e de

inferência de novos triplos através de relações indirectas entre os dados.

REQUISITOS

Foi determinado como requisitos:

● Desenvolver um módulo grafo.py.

● Desenvolver uma aplicação em Django/Python/HTML5, que ofereça um conjunto

de funcionalidades no âmbito da temática escolhida, utilizando os dados

estruturados em grafos.

● Implementar no módulo grafo.py os restantes métodos que permitirão a pesquisa e

a inferência.

● Encontrar relações indirectas entre os nós para criar regras de inferência e

implementá-las.

● Oferecer a possibilidade de visualização dos grafos.

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 4

DADOS ORIGINAIS Para este trabalho foi escolhido um conjunto de dados sobre o campeonato português, no

que toca aos jogos realizados na 1ª liga, sobre isso é realizado uma serie de operações

como:

Classificação de todas equipas;

Apresentação dos resultados por jornadas;

Apresentação dos plantéis das respectivas equipas;

Informações dos jogos;

Informações estatísticas (numero de jogos sem perder, numero de jogos sem sofrer

golos e jogos sem marcar golos).

Dados estes foram organizados manualmente em forma de tuplos (subject, predicate,

object), tendo em conta as informações que fomos adquirindo em sites desportivos como

por exemplo: www.abola.pt e www.ligaportugal.pt. A lista de dados contidos no ficheiro

encontra-se descrito na tabela que se segue.

Chave Descrição

equ-n ID único para cada equipa, sendo n o número para cada equipa (Ex:

equ-1, equ-2, … ,equ-n).

nome Nome da respectiva equipa.

cidade Cidade em que está sediada a respectiva equipa.

estadio Estádio onde a equipa realiza os seus jogos.

presidente Presidente da equipa.

criado Ano em que surgiu a equipa.

imagem Logótipo associado a equipa.

plantel Foto do plantel da equipa principal.

jogN ID único para cada jogo, sendo N o numero para cada jogo (Ex: jog1,

jog2, …, jogN).

epoca Época desportiva em que se realiza um determinado jogo.

jornada Jornada que o jogo se realizou.

equipa1 Equipa da casa.

equipa2 Equipa que participou no jogo na qualidade de visitante.

goloE1 Todos os golos marcados pela equipa da casa.

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 5

goloE2 Todos os golos marcados pela equipa visitante.

data A data que se realizou o jogo.

jogadorN ID único para cada jogador, sendo N o numero para cada jogo (Ex:

jog1, jog2, …, jogN).

nome Armazena o nome do respectivo jogador.

clube Armazena o ID da equipa pelo qual joga o respectivo jogador.

golos Número de golos marcado durante todos os jogos realizados na presente

época desportiva.

posicao A posição em campo do respectivo jogador.

cartaoAmarelo Quantidade de cartões amarela acumulado pelo jogador.

cartaoVermelho Quantidade de cartões vermelho acumulado pelo jogador.

passeGolo Quantidade de passes de golo do respectivo jogador.

numero Número de camisola do respectivo jogador.

idade Data de nascimento do jogador.

tempoJogo Tempo de jogos realizado pelo jogador.

alturaPeso Altura e o peso do jogador.

pais Nacionalidade do jogador.

imagem Contém um link para a foto do jogador

Com aplicação de inferência, vai aparecer novos tuplos, no qual passa-se a destacar na

próxima tabela.

Inferência Descrição

Tipo Classifica o tipo de jogo (Clássico, Derby e Normal).

goleada

Classifica o resultado do jogo como sendo: Goleada caso o

número de golos do vencedor for superior ou igual a 4 e

normal, caso suceder o contrário.

De realçar ainda que os dados apresentados acima, estão armazenados no ficheiro

futebol.csv

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 6

IMPLEMENTAÇÃO DO MÓDULO GRAFO.PY

Seguindo as directrizes traçado como objectivo do desenvolvimento do presente trabalho,

foi criado o Graph, com uma solução sem a utilização de dicionários. Deste modo optou-se

em criar uma estrutura de listas, reduzindo também o número de listas para uma (spo), ao

invés de três (spo, pos, osp).

O módulo é composto pelos seguintes métodos:

__init__(self) – método construtor da classe Graph. Inicializa a lista spo onde

vão ser armazenados os triplos.

add(self, sub, pred, obj) – chama a função addtoindex para adicionar um triplo à

lista spo.

addtoindex(index, a, b, c) – adiciona um determinado triplo à lista spo, caso

este ainda não exista.

remove(self, sub, pred, obj) – chama a função removefromindex para remover

um triplo da lista spo.

removefromindex(index, a, b, c) – remove um triplo da lista spo, caso este

exista.

triples(self, sub, pred, obj) – pesquisa triplos na lista spo e faz yield dos

resultados.

load(self, filename) – carrega um ficheiro .csv com triplos para a lista spo.

save(self, filename) – guarda um ficheiro .csv com a lista de triplos.

query(self, clauses) – faz pesquisas específicas à lista de triplos e retorna os

resultados.

applyinference(self, rule) – gera novos triplos a partir de informação contida em

outros, através de regras pré definidas.

triplestodot(self, filename) – guarda os triplos num ficheiro .dot de modo a

tornar o grafo visualizável.

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 7

querytodot(self, query, b1, b2, filename) – converte os resultados de uma query

para o formato .dot.

QUERIES

Praticamente todas as informações apresentadas e tratadas provém da execução de queries

baseados em triplos (subject, predicate, object), para melhor compreensão passa-se a

apresentar e descrever as queries aplicadas para cada método utilizado. Além da descrição

dos mesmo pode ver em anexo as referidas queries.

Método Descrição

Dasboard

Possui a querie que permite validar as credências do utilizador.

Recebe como entrada o username e a password e proporciona

como a saída o nome, o e-mail e o logo do mesmo utilizador

caso encontrar seu registo no ficheiro futebol.csv. Caso os

dados do utilizador estiverem autênticos será executado uma

nova querie que proporciona as informações relativamente aos

jogos realizados.

searchJogo

Possui a querie que possibilita filtrar os jogos de acordo com a

preferência do utilizador, ou seja apresenta os jogos que

sofreram as inferências.

classF, classificar

Tem como principal propósito realizar duas queries para

encontrar todos os jogos, tanto como visitado e visitante de

todas as equipas e realizar a operação de soma dos pontos

obtidos por cada vitória ou empate, assim como os golos

Marcados ou sofridos, número de vitórias ou derrotas.

listautilizadores O método utiliza a querie para listar todos os utilizadores.

VerPlantel

O método utiliza a querie para seleccionar todos os jogadores

de uma determinada equipa. Recebe como entrada uma ID da

equipa proporciona as informações do Jogador (nome, imagem,

numero e posição).

shearchJogador

Esta querie tem como base, pesquisar mais informações

necessárias sobre um determinado jogador, de acordo com o ID

do jogador fornecido.

RegistarJogo

Possui uma pequena querie para seleccionar u jogo e fornecer

informação para ser utilizado na opção de escolha de uma

equipa no processo de registo de um novo jogo.

JogosSemPerder Método que visa seleccionar o numero de jogos quecada equipa

não perdeu desde a ultima derrota,<Para a realização da referida

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 8

estatística.

ClassJogos Método que permite executar a querie para apresentar dados

sobre os jogos de todas as equipas.

JogosSemSofrerG

Método que permite executar a querie no método classJogos e

utiliza os resultados para somar as quantidades de jogos que

uma equipa não sofreu golos em jogos já realizados. Para a

referida estatística.

jogosSemMarcarGolos

Método que permite executar a querie no método classJogos e

utiliza os resultados para somar as quantidades de jogos que

uma equipa não marcou golos em jogos já realizados. Para a

referida estatística.

estatisiticaMelhorAtaque

Método que permite executar a querie no método classJogos e

utiliza os resultados para somar as quantidades de golos

marcados e fazer a média de golos marcados por cada equipa,

para determinar o melhor ataque. Para a referida estatística.

estatisticaMelhorDefesa

Método que permite executar a querie no método classJogos e

utiliza os resultados para somar as quantidades de golos

sofridos e fazer a média de golos sofridos por cada equipa, para

determinar a melhor defesa. Para a referida estatística.

estatisticaCartoesAmarrelos

Método que permite executar a querie e somar as quantidades

de cartões amarelos por cada equipa, para determinar a equipa

com maior número de cartões. Para a referida estatística.

INFERÊNCIAS

Para realização desta tarefa, foi criado um ficheiro cujo nome é InferenceRule.py, que

contém classes como:

DefinirClassico – classe cujo objectivo é procurar de entre todos jogos e classifica-

los, como sendo: Derby, Clássico e Normal. Dentro da classe, foi criado também uma regra

cujo nome é: maketriples, pelo que recebendo o resultado da pesquisa, retornada pela

classe vai ser criada as regras para cada tipo de situações. Um clássico é definido quando

existem um confronto directo entre duas equipas que já foram vencedores da 1ª liga, Derby

é quando há um confronto entre equipas da mesma cidade e os restantes são considerados

normais. Esta inferência é dada através da relação existente entre equipa e jogo, cada

equipa pode realizar dois jogos, sendo assim um dentro da casa e outra fora, assim podemos

encontrar o nome de cada equipa e aplicar as regras.

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 9

DefinirGoleada – Assim como a classe acima referenciada, esta classe, vai fazer

inferência e aplica uma regra para definir se um determinado jogo foi finalizado com uma

goleada ou não. Foi definido como goleada, quando a equipa vencedora marcar no mínimo

4 golos, não interessando o resultado da outra equipa. Cada jogo é feito por duas equipas,

como cada jogo pode ter 0 ou mais golos, podemos fazer inferência para determinar se o

número de golos pode ser tratado como goleada ou não.

APLICAÇÃO WEB

Um dos requisitos do trabalho é o desenvolvimento de uma interface gráfica voltado para

Web, que obedeça as métricas de usabilidade, a fim de apresentar os dados. Deste modo, foi

utilizado tecnologias como:

framework Django;

python language;

Bootstrap;

Jquery.

Com estas tecnologias, foi possível desenvolver todos requisitos pré-definido no trabalho.

Figura 1 - Login

Para utilizar a aplicação e necessário realizar a autenticação no mesmo, utilizando as

credências previamente adicionado na aplicação (futebol.csv). Ex. utilizadores: gine,

senha: 123 ou mtutucv, 123.

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 10

Tarefas como, pesquisar, inserir e validar o utilizador é realizado por intermédio de queries

em tuplos.

A página principal, apresenta uma lista de todos jogos realizados durante a época em

questão. Deste modo criamos um campo onde o utilizador tem possibilidade de fazer

pesquisas com aplicação de inferências para obter mais informações sobre o jogo, como

mostra a figura que se segue.

Figura 2- Página Principal

Na legenda número 1 obtemos um menu, que possibilita realizar tarefas como: Registar

Utilizador, Registar Jogo, Listar. A legenda número 2 apresenta lista total dos jogos

realizados.

Ao utilizar a dropdown, apresentado na legenda número 3, é possível ter mais informações

acerca do jogo realizado, baseando na inferência criada. Ao utilizar a legenda número 6 o

utilizador pode ver a sua informação como terminar a sua sessão.

Ao aceder ao menu Registar e escolher o submenu Registar Utilizador, o sistema

proporciona um formulário que possibilita adicionar novo utilizador. Os dados inseridos é

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 11

sempre guardada sob forma de tuplo, no ficheiro futebol.csv. A figura que se segue

apresenta tal formulário.

Figura 3 - Inserir Utilizador

Ainda na legenda número 1 disponível na Figura 1, é possível também adicionar um novo

jogo, O processo de inserir um novo jogo é igual de um novo utilizador. Para adicionar um

novo jogo a que se preencher o formulário apresentado na figura.

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 12

Figura 4 - Adicionar um novo Jogo

Depois de preencher o formulário e escolher a opção de guardar, o sistema se encarrega de

ir buscar o ultimo ID do jogo inserido de forma a atribuir um novo ID para o novo registo,

assim de seguida, segue o armazenamento automático dos dados referentes ao jogo, no

tuplo.

Na legenda número 1, o utilizador tem possibilidade de fazer a listagem das classificações,

assim como apresentado na figura que se segue.

Figura 5 - Equipas e Classificações

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 13

Nesta página, pode-se ainda realizar a filtragem de equipas por cidade, assim como é

indicado na legenda número 1 e ainda ver lista de jogadores para cada equipa, como é

indicado na legenda 2 desta figura, ver figura que se segue para ver as listagens das

equipas.

Figura 6 - Plantel principal de uma equipa.

Também pode-se obter uma lista de utilizadores, seguindo assim a legenda número 1

apresentado na figura número 2.

Figura 7 - Lista dos utilizadores registado no sistema.

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 14

A legenda número 4, da figura 2, representa o menu de estatística e dos Grafos, ao aceder o

menu estatística, é possível obter três tipos de estatística, estes que são sempre apresentados

sob forma de gráfico dinâmico, vide as figuras que se seguem.

Figura 8 - Estatística jogos sem perder em curso

Figura 9 - estatística jogos sem sofrer golos

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 15

Figura 10 - estatística jogos sem marcar golos

VISUALIZAÇÃO DOS GRAFOS

Para ser possível a visualização dos grafos foi implementado um método que guarda os

triplos e as suas relações num ficheiro. dot que é invocado quando se carrega no botão

gravar na aplicação web. Este grafo é passível de ser visualizado recorrendo ao programa

Graphviz, e está disponível em formato pdf, o resultado é o demonstrado abaixo:

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 16

Figura 11 - Visualização dos grafos

Importante realçar inda de que, pelo fatos de os dados contidos no ficheiro serem

demasiado grande não é possível apresentar um grafo completo, pelo que só foi apresentado

uma parte do grafo.

CONCLUSÃO

Com base na informação registada neste relatório e analisando os requisitos pedidos, o

grupo considera ter cumprido com a lista de objectivos, tendo em conta que os conteúdos

aprendidos foram apresentados com sucesso e sem qualquer tipo de problema.

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 17

ANEXO

Figura 12 - Metodos classificar e classf 1ª parte

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 18

Figura 13 - 2ª parte do Metod classificar e classf

Figura 14 - Metodo ClassJogos

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 19

Figura 15 - Metodo dasbord

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 20

Figura 16 - Metodo estatisticaCartoesAmarrelos

Figura 17 - metodo listaUtilizadores

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 21

Figura 18 - Metodo registarJogo

Figura 19 - Método shearchJogador

Figura 20 - Método searchJogo

Web Semântica – MSI – 2014/2015

Mário Monteiro - 77910 || Emanuel Pires - 77994 22

Figura 21 - Método VerPlantel