Język zapytań SPARQL

Ćwiczenie


Do testowania zapytań możesz użyć publicznej końcówki SPARQL Redland Rasqal http://librdf.org/query/ 
podając jako domyślny graf RDF: http://www.cs.put.poznan.pl/alawrynowicz/wulkanySPARQL.owl
Możesz także załadować plik http://www.cs.put.poznan.pl/alawrynowicz/wulkanySPARQL.owl do narzędzia Protege 
i użyć zakładki SPARQL Query (Window->Views->Query views->SPARQL query)

Zapytanie 1


Sformułuj zapytanie zwracające nazwy wszystkich stratowulkanów.  

Zapytanie 2

Sformułuj zapytanie zwracające nazwy wszystkich stratowulkanów wraz z ich lokalizacją.
  
PREFIX wul:<http://www.semanticweb.org/ontologies/2010/wulkany.owl#>
SELECT ?x ?y
WHERE
{  
?x a wul:Stratowulkan . 
?x wul:maLokalizacje ?y
}
 

Zapytanie 3

Sformułuj zapytanie zwracające nazwy wszystkich stratowulkanów wraz z ich wysokością, dla takich wulkanów, które mają wysokość większą niż 1000m.n.p.m.
PREFIX wul:<http://www.semanticweb.org/ontologies/2010/wulkany.owl#>
SELECT ?x ?y
WHERE
{   ?x a wul:Stratowulkan .
?x wul:maWysokosc ?y . FILTER ( ?y > 1000 )
}

Zapytanie 4

Sformułuj zapytanie zwracające nazwy wszystkich stratowulkanów wraz z datą ich ostatniej erupcji (nazwy wulkanów, dla których ta data jest nieznana powinny być też wyświetlone).

PREFIX wul:<http://www.semanticweb.org/ontologies/2010/wulkany.owl#>
SELECT ?x ?y
WHERE
{   ?x a wul:
Stratowulkan .
OPTIONAL {?x wul:
ostatniaErupcja ?y }
}

Zapytanie 5

Sformułuj zapytanie zwracające nazwy wszystkich stratowulkanów, które mają lokalizację w Japonii lub też w Islandii.
 
PREFIX wul:<http://www.semanticweb.org/ontologies/2010/wulkany.owl#>
SELECT ?x 
WHERE { {?x a wul:Stratowulkan .
?x wul:maLokalizacje wul:Japonia} UNION
{?x a wul:Stratowulkan .
?x  wul:maLokalizacje wul:Islandia} . }

Zapytanie 6

Sformułuj zapytanie zwracające nazwy wszystkich państw, w których znajdują się stratowulkany (bez powtórzeń).

PREFIX wul:<http://www.semanticweb.org/ontologies/2010/wulkany.owl#>
SELECT DISTINCT  ?y 
WHERE { ?x a wul:Stratowulkan .
?x wul:maLokalizacje ?y }

Zapytanie 7

Sformułuj zapytanie o to czy istnieje stratowulkan, który ma lokalizację w Japonii (odpowiedź: true/false).

PREFIX wul:<http://www.semanticweb.org/ontologies/2010/wulkany.owl#>
ASK WHERE {  
?x a wul:Stratowulkan .
 ?x wul:maLokalizacje wul:Japonia . }

Zapytanie 8

Sformułuj zapytanie, którego celem jest opisanie stratowulkanu, który ma lokaliację w Islandii.

PREFIX wul:<http://www.semanticweb.org/ontologies/2010/wulkany.owl#>
DESCRIBE ?x WHERE {  
?x a wul:Stratowulkan .
 ?x wul:maLokalizacje wul:Islandia }

Zapytanie 9

Sformułuj zapytanie, którego celem jest stworzenie grafu RDF, który opisuje trójki <Kraj, maLokalizacje, X>.

PREFIX wul:<http://www.semanticweb.org/ontologies/2010/wulkany.owl#>
CONSTRUCT   { ?x wul:maLokalizacje ?y . }
WHERE {
?x a wul:Kraj .
 ?x wul:maLokalizacje ?y . }

Zapytanie 10

Sformułuj zapytanie, które zwraca nazwy krajów, wraz z liczbą występujących w danym kraju stratowulkanów, dla krajów, dla których liczba stratowulkanów jest większa od 1.

PREFIX wul:<http://www.semanticweb.org/ontologies/2010/wulkany.owl#>
SELECT COUNT(?x)  ?y  
WHERE {
?x a wul:Stratowulkan .
 ?x wul:maLokalizacje ?y . }
GROUP BY ?y
HAVING (COUNT(?x)>1)


Zadanie domowe

Wykorzystując końcówkę SPARQL bazy wiedzy DBpedia i na bazie przykładowych zapytań z punktu 1.4 ze strony http://wiki.dbpedia.org/OnlineAccess#h28-3 spróbuj sformułować następujące zapytania o:
  1. polskich muzyków
  2. polskich wokalistów
  3. polskich wokalistów urodzonych po 1970 roku
  4. polskie filmy
  5. reżyserów polskich filmów
  6. nieżyjących reżyserów polskich filmów
Do formułowania zapytań może przydać się słownictwo z ontologii DBpedii. UWAGA: żeby nie spowodować blokady publicznej końcówki SPARQL polecane jest stosowanie klauzuli LIMIT do testowania zapytań. Inną opcją jest skorzystanie z lokalnej instancji bazy DBpedia, której adres podajemy w trakcie laboratorium.