Ficha id: prc2015-f6

Processamento e Representação de Conhecimento - PRC (MEI - 1ºano)

Este ficha prática contem exercícios para serem resolvidos nas aulas teórico-práticas com vista a sedimentar os conhecimentos relativos a:

  • Especificação de ontologias.
  • Utilização do SPARQL para fazer queries a informação especificada em RDF.

Recursos:

Recursos disponíveis para a realização da ficha:

Exercícios:

  1. Uma ontologia para uma históriaResolvido

Exercício Nº 1: Uma ontologia para uma história

Relembra a seguinte história para a qual se construiu a ontologia disponível nos recursos da ficha.

Gasta algum tempo para carregar a ontologia no Protégé e explorá-la de modo a teres conhecimento dela suficiente para poderes fazer o que a seguir se pede.

Neste exercício, especifica queries em SPARQL para responder às seguintes questões:

  1. Quantos factos/triplos estão presentes na ontologia?
  2. Quais os nomes das 5 amigas?
  3. Qual o sumo de que Joana gosta? (valor literal, o nome)
  4. Qual a disciplina favorita da menina que gosta de Hamsters?
  5. Quem se senta à esquerda de Renata?
  6. Quem se senta à direita de Pati?
  7. Qual a menina que se senta na ponta direita?
  8. Qual a cor da mochila da menina que se senta na ponta esquerda?
  9. De que animal gosta quem bebe sumo de Laranja?
  10. De que sumo gosta a menina que está no meio?
  11. De que cor é a mochila da Jéssica?
  12. Qual o nome da menina que quer viajar para Paris? Em que posição se senta?
  13. que cor tem a mochila de quem quer viajar para Londres?
  14. Que menina(s) se senta(m) ao lado da que quer viajar para Bruxelas?
  15. De que animal gosta a menina da mochila Azul?
  16. De que animal gosta a menina que se senta ao lado da que gosta de Biologia?
  17. De que disciplina gosta a menina que se senta à direita de quem gosta de História?
  18. De que sumo gosta a menina que se senta ao lado da gosta de maracujá?
  19. De que disciplinas gostam as meninas que se sentam à direita da menina que gosta de cães?
  20. Para onde querem viajar as meninas que se sentam à esquerda de "Ana"?
  21. Para onde quer viajar a menina que gosta de gatos?

Não te esqueças de guardar as queries que fores fazendo.

Podes testá-las usando um dos sparql enpoints disponíveis na Web, por exemplo: http://ontoworks.epl.di.uminho.pt ou o próprio Protégé que traz um editor de SPARQL incorporado.

Solução do exercício Nº 1: Uma ontologia para uma história

Listam-se a seguir algumas queries que poderão ser usadas para construir grande parte de algumas respostas dos problemas apresentados em cima:

  1. Vamos contar os triplos todos:
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
    PREFIX owl: <http://www.w3.org/2002/07/owl#>
    PREFIX mylogic: <http://www.semanticweb.org/ontologies/2015/4/mylogic#>
    
    SELECT (COUNT(?s) AS ?num)
    WHERE {
      ?s ?p ?o
    }
  2. Vamos selecionar a menina do meio:
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
    PREFIX owl: <http://www.w3.org/2002/07/owl#>
    PREFIX mylogic: <http://www.semanticweb.org/ontologies/2015/4/mylogic#>
    
    SELECT ?m WHERE {
      ?m rdf:type mylogic:Menina.
      ?m mylogic:esquerda/mylogic:esquerda [].
      ?m mylogic:direita/mylogic:direita [].
      }
  3. Vamos selecionar a menina da ponta direita por diferença de conjuntos:
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
    PREFIX owl: <http://www.w3.org/2002/07/owl#>
    PREFIX mylogic: <http://www.semanticweb.org/ontologies/2015/4/mylogic#>
    
    SELECT ?m WHERE {
      ?m rdf:type mylogic:Menina.
      MINUS {?m mylogic:direita _:x}
      }
  4. Vamos selecionar a menina da ponta direita por negação da existência duma propriedade:
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
    PREFIX owl: <http://www.w3.org/2002/07/owl#>
    PREFIX mylogic: <http://www.semanticweb.org/ontologies/2015/4/mylogic#>
    
    SELECT ?m WHERE {
      ?m rdf:type mylogic:Menina.
      FILTER NOT EXISTS {?m mylogic:direita []}
      }
  5. A resposta a esta querie é um RDF descrevendo a menina de nome "Joana":
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
    PREFIX owl: <http://www.w3.org/2002/07/owl#>
    PREFIX mylogic: <http://www.semanticweb.org/ontologies/2015/4/mylogic#>
    
    
    DESCRIBE ?m WHERE {
      ?m rdf:type mylogic:Menina.
      ?m mylogic:temNome ?nome.
      FILTER regex(?nome,"Joana")
      }
  6. A resposta a esta query é um RDF com todos os triplos da ontologia original, ou seja, é a função identidade em termos de seleção:
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
    PREFIX owl: <http://www.w3.org/2002/07/owl#>
    PREFIX mylogic: <http://www.semanticweb.org/ontologies/2015/4/mylogic#>
    
    CONSTRUCT {
      ?s ?p ?o
      }
    WHERE
      {
        ?s ?p ?o
      }