Ficha id: prc2015-f1

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:

  • Utilização do RDF para especificar conhecimento.
  • 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. Vamos interrogar a história
  2. Queries sobre as publicações do JCRResolvido
  3. Querying MusicBrainz
  4. Serviço SPARQL para interrogação da Ontologia cinematográfica

Exercício Nº 1: Vamos interrogar a história

Na última ficha, especificaste o conhecimento presente na história que te foi apresentada e que se transcreve a seguir (o ficheiro RDF está disponível a partir dos recursos da ficha).

O Eduardo tem 21 anos e é um estudante da Universidade do Minho oriundo do Porto. Ele fala fluentemente português, espanhol e inglês. Neste semestre decidiu aprender alemão. Juntamente com os seus amigos, o Carlos e a Ana, inscreveu-se no curso de Alemão lecionado pelo professor Helmut Ratz, que será lecionado todas as sextas feiras no centro de línguas da universidade. O Eduardo tem muita facilidade na aprendizagem de línguas estranjeiras e faz rápidos progressos. No entanto, o prof. Helmut repara que ele precisa de praticar mais a oralidade e apresenta-o a Hanna, uma estudante alemã que está na universidade a frequentar o curso de biotecnologia. Hanna é alemã e está ansiosa por falar português. O Eduardo e a Hanna conhecem-se e tornam-se parceiros nesta aventura de aprender uma nova língua. A experiência revela-se frutuosa e ambos aprendem a falar fluentemente alemão e português.

Tenta agora responder às seguintes questões especificando queries em SPARQL:

  1. Que tipos de coisas extraístes da história que te foi apresentada?
  2. Que propriedades consideraste na tua especificação?
  3. Quais os nomes das personagens referidas na tua história?
  4. Quais os nomes dos que são estudantes?
  5. Quais os nomes dos estudantes que frequentam o curso de Alemão?
  6. Quais as designações dos cursos referidos na história?
  7. Qual o nome das personagens de nacionalidade alemã?

Exercício Nº 2: Queries sobre as publicações do JCR

  1. Quais os títulos das publicações presentes na Ontologia?
  2. Quais os títulos das publicações em co-autoria com "Miguel Ferreira"?
  3. Quais os títulos das publicações do ano 2008?
  4. Quantas publicações há por ano?
  5. Quantas publicações tem cada autor?

Solução do exercício Nº 2: Queries sobre as publicações do JCR

  1. Usou-se a propriedade ex:titulo para apanhar todos os triplos que contivessem títulos, no fim indicou-se que se pretendiam os resultados ordenados por ordem alfabética ascendente.
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX ex: <http://www.di.uminho.pt/jcr/XML/rdf/ex2#>
    
    SELECT ?titulo
    WHERE {
      ?s ex:titulo ?titulo.
    }
    ORDER BY ASC( ?titulo ) 
  2. Quando criamos o RDF das publicações (última aula), colocamos os autores dentro dum contentor do tipo Bag, que em termos de triplos dá origem a um nodo branco, para conseguirmos a informação desse contentor tivemos de usar uma variável a fazer match com esse nodo branco, _:x.
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX ex: <http://www.di.uminho.pt/jcr/XML/rdf/ex2#>
    PREFIX mypubs: <http://www3.di.uminho.pt/~jcr/AULAS/prc2015/fichas/mypubs.rdf#>
    
    SELECT ?titulo
    WHERE {
      ?pub ex:temAutor _:x.
      _:x ?p ?o.
      ?o ex:nome "Miguel Ferreira".
      ?pub ex:titulo ?titulo
    }
    
  3. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX ex: <http://www.di.uminho.pt/jcr/XML/rdf/ex2#>
    PREFIX mypubs: <http://www3.di.uminho.pt/~jcr/AULAS/prc2015/fichas/mypubs.rdf#>
    
    SELECT ?titulo
    WHERE {
      ?pub ex:titulo ?titulo.
      ?pub ex:data "2008"
    }
  4. Aqui usamos a clausula GROUP BY e o operador COUNT para cálculo de um valor agregado.
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX ex: <http://www.di.uminho.pt/jcr/XML/rdf/ex2#>
    PREFIX mypubs: <http://www3.di.uminho.pt/~jcr/AULAS/prc2015/fichas/mypubs.rdf#>
    
    SELECT ?ano (COUNT(?pub) AS ?num)
    WHERE {
      ?pub ex:data ?ano
    }
    GROUP BY ?ano
  5. Esta questão resolve-se combinando as duas últimas soluções:
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX ex: <http://www.di.uminho.pt/jcr/XML/rdf/ex2#>
    PREFIX mypubs: <http://www3.di.uminho.pt/~jcr/AULAS/prc2015/fichas/mypubs.rdf#>
    
    SELECT ?nome, (COUNT(?pub) AS ?num)
    WHERE {
      ?pub ex:temAutor _:x.
      _:x ?p ?o.
      ?o ex:nome ?nome.
    }
    GROUP BY ?nome
    ORDER BY ASC(?nome)

Exercício Nº 3: Querying MusicBrainz

Acedendo ao ponto de acesso SPARQL disponível nos recursos da ficha, tenta especificar queries SPARQL para responder às seguintes questões:

  1. Que tipos de coisas podemos encontrar nesta ontologia?
  2. Quais as propriedades associadas a um compositor?
  3. Quais os nomes dos compositores musicais presentes na ontologia (limita a 100)?
  4. Quais os títulos das músicas compostas por "Bob Dylan"?

Exercício Nº 4: Serviço SPARQL para interrogação da Ontologia cinematográfica

Neste exercício deverás criar um serviço para interrogar a ontologia referida cujo ponto de acesso se encontra nos recursos da ficha.