Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Protótipo de sistema de
consultas utilizando a
linguagem SPARQL
Aluno(a): André Luiz Nunes
Orientador: Roberto Heinzle
Roteiro
• Introdução
• Objetivos
• Web semântica
• Tecnologias para web semântica
• Trabalhos correlatos
• Requisitos
• Especificação
• Implementação
• Operacionalidade
• Resultados e Discussões
• Conclusões
Introdução
• Web atual possui conexões entre páginas, porém não são interpretadas por máquinas;
• Web semântica propõe tornar as informações legíveis para máquinas;
• SPARQL é uma recomendação do World Wide Web Consortium (W3C);
• Não há web semântica sem SPARQL (BERNERS-LEE).
Objetivos
• Desenvolver um protótipo que realize consultas na estrutura da web semântica utilizando SPARQL;
• Demonstrar a utilização da linguagem SPARQL e seu papel na web semântica;
• Evidenciar como a web semântica está implementada atualmente;
• Fornecer um mecanismo de integração das ferramentas que implementam a websemântica.
Fundamentação Teórica
• A web sintática e a web semântica;
• Linked Data;
• Armazenando dados semânticos, o modelo Resource Descriptor Framework (RDF);
• Como consultar informação ?
Formato de uma tripla RDF
Formato de uma query
SPARQL
# declarações dos prefixos
PREFIX foo: <http://example.com/resources/>
...
# definição dos datasets
FROM ...
# cláusula de resultado
SELECT ...
# padrão da consulta
WHERE {
...
}
# modificadores da consulta
ORDER BY ...
Trabalhos Correlatos
Onto busca• Suporta várias ontologias que podem ser
carregadas na aplicação;
• Através de linguagem natural, permite que o usuário faça perguntas que serão interpretadas e verificadas nas ontologias consultadas;
• O usuário pode editar a ontologia através da ferramenta, podendo adicionar ou remover informações e substantivos da ontologia.
Nitelight• Área de design de querys: o coração da
aplicação. No canvas o usuário pode construir querys semânticas interagindo com a tela ao arrastar componentes;
• Navegador de ontologias: para facilitar o processo de formulação das querys e para que o usuário tenha um ponto de partida para suas consultas;
• Visualizador de sintaxe SPARQL: provê ao usuário uma forma de visualizar a query SPARQL gerada pela estrutura desenhada no canvas;
• Visualizar de resultado da query: exibe através de uma tabela os resultados obtidos com a submissão da query.
Requisitos
• Permitir executar consultas utilizando a linguagem SPARQL (RF);
• Submeter pesquisas textuais em bases RDF que possuam um frontend SPARQL (RF);
• Exibir os resultados da consulta em formato textual (RF);
• exibir os resultados da consulta em formato gráfico (árvore) (RF);
• Permitir a seleção da base SPARQL a ser consultada (RF);
• Ser implementada utilizando a linguagem JAVA em ambiente eclipse (RNF);
• Utilizar Java Swing para camada de visão;
• Ser implementada seguindo o padrão Model-View-Controller(MVC) (RNF);
Especificação
• Os formatos suportados para busca;
• Construção do resultado da pesquisa
textual;
• Construção do grafo do linked data;
Diagrama de casos de uso
Diagrama de classes
Diagrama de sequência
Implementação
• Processamento de querys SPARQL;
• Processamento de pesquisas textuais;
• Construção do linked data;
• Query SPARQL padrão.
Método runQuery
public Model runQuery(SparqlQuery query, String frontend) {Query qry = QueryFactory.create(query.getQueryText());QueryExecution qexec =
QueryExecutionFactory.sparqlService(Frontend, qry);
try {if (query.getQueryType().equals("Ask")) {
model = qexec.execAsk();} else if
(query.getQueryType().equals("Construct")) {model = qexec.execConstruct();
} else {results = qexec.execSelect();model = results.getResourceModel();
}} finally {
qexec.close();}return model;
}
Pesquisas textuais
• Executa busca no índice utilizando o
Apache Lucene;
• Se o item for encontrado no índice, é
gerado um Model através de uma consulta
DESCRIBE;
• Não encontrando o índice, é executada a
consulta no frontend utilizando a query
SPARQL padrão;
Query SPARQL padrão
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?URI ?LABEL WHERE {
?URI rdfs:label ?LABEL .
?LABEL <bif:contains> '"+ bifTextToSearch +"'.
FILTER (regex(str(?LABEL), '^"+ textToSearch +"', 'i')) .
FILTER (!regex(str(?URI), '^http://dbpedia.org/resource/Category:')).
FILTER (!regex(str(?URI), '^http://dbpedia.org/resource/List')).
FILTER (!regex(str(?URI), '^http://sw.opencyc.org/')).
FILTER (!regex(str(?URI), '^http://rdf.basekb.com/')).
FILTER (!regex(str(?URI), '^http://rdf.freebase.com/'))
FILTER (lang(?LABEL) = 'en').
}
Limit 100";
Operacionalidade da
Implementação
Operacionalidade da
Implementação
Resultados e Discussões
• Dificuldades encontradas devido a grande mutação dos ambientes utilizados;
• Alguns materiais pesquisados não trouxeram informações claras, o que dificultou o andamento do trabalho;
• Tentativas de implementar um motor de busca sem a ajuda de bibliotecas falharam devido a falta de especificação nos materiais pesquisados;
• Pesquisa utiliza o campo label, limitando de certa forma os resultados;
• Não foi utilizada a propriedade owl:sameAs.
Conclusões e Sugestões
• Todos os objetivos citados foram atendidos;
• Possibilidade de pesquisas textuais, pesquisas com SPARQL e resultados em forma gráfica;
• Objetivos foram atendidos com a ajuda do framework Jena;
• Jena possui formas limitadas de manipulação dos dados;
Conclusões e Sugestões
• Converter a ferramenta de forma que seja possível utilizá-la via interface web;
• Incrementar o processamento de pesquisas textuais;
• Melhorar a visualização do grafo do linked data;
• Exibir vários resultados em forma de tabela, permitindo que seja gerado o linked data para cada um deles;
• Através do mapeamento da DBpedia, localizar os frontends na internet, sem a necessidade de cadastrá-los;
• Criar um mecanismo de pesquisa que implemente um agente da web semântica para realizar as buscas.