Základy syntaxe SPARQL SELECT ?a ?b ?c WHERE { x y ?a. m n ?b. ?b f ?c. } jako například SELECT ?budova WHERE { ?budova konstrukce pernikova. ?budova pocetPodlazi 1. } kde ?budova konstrukce pernikova. vyjadřuje sémantickou vazbu subjekt, predikát, objekt (tzv. triple). Tento (nebo jakýkoli jiný dotaz) se pak zadává v tzv. SPARQL endpoint jako například https://www.foodie-cloud.org/sparql. Jedná se o URL adresu místa, kde klient může komunikovat (dotazovat se) na server. Základní rozhraní pro dotazy z DBpedia.org http://dbpedia.org/snorql/ Úkol #1 Zkuste přepsat níže uvedený příklad do formy, která vám umožní zeptat se na významné rodáky vašeho města od roku 1900. Následně zkuste filtrovat podle data narození. SELECT ?name ?birth ?death ?person WHERE { ?person dbo:birthPlace ?birthPlace . ?person dbo:birthDate ?birth . ?person foaf:name ?name . ?person dbo:deathDate ?death . FILTER (?birth < "1900-01-01"^^xsd:date) . } ORDER BY ?name Nápovědy: 1) Stávající syntaxe vám vypíše všechny rodáky všech měst v celém světě až po toho, kde dojde limit na délku odpovědi. Proto to chvíli trvá. 2) V syntaxi výše je nezbytné nahradit objekt místa narození konkrétní hodnotou. Konkrétní hodnoty se zapisují dvojtečkou a hodnotou. 3) Název města skládající se z více slov pojí podtržítko. Nepoužívejte diakritiku. Následující příklad umožní ukázat pouze hudební skladatele z Brna. SELECT ?name ?birth ?description ?person WHERE { ?person a dbo:MusicalArtist . ?person dbo:birthPlace :Brno . ?person foaf:name ?name . ?person rdfs:comment ?description . FILTER (LANG(?description) = 'en') . } ORDER BY ?name Úkol #2 Zkuste přepsat výše uvedený příklad do formy, která vám umožní získat v odpovědi i datum narození hudebních skladatelů. Sémantických databází je dnes neuvěřitelné množství, pro připomenutí informací z přednášky se podívejte na http://lod-cloud.net/. V rámci těchto databází existuje také SPARQL endpoint http://linkedgeodata.org/sparql Základní rozhraní pro prostorové dotazy http://linkedgeodata.org/sparql Syntaxe níže ukazuje dotaz na data z OpenStreetMap ve vzdálenosti 0,1 km od stanoveného místa (se souřadnicemi 16,4 49,2). Prefix lgdo: Prefix geom: Prefix ogc: Select * From { ?s a lgdo:Amenity ; rdfs:label ?l ; geom:geometry [ ogc:asWKT ?g ] . Filter(bif:st_intersects (?g, bif:st_point (16.4, 49.2), 0.1)) . } Úkol #3 Zkuste přepsat výše uvedený příklad do formy, která vám umožní získat pekařství v místě vašeho zájmu. Nápověda: Amenity je univerzální název pro jakýkoli bod zájmu v OpenStreetMap. Tzv. Linked Geodata Ontology (http://linkedgeodata.org/ontology)odkazuje na tagy OpenStreetMap, viz http://learnosm.org/en/hot-tips/tagging/. Úkol #4 Zkuste přepsat výše uvedený příklad do formy, která vám umožní získat jiný typ objektu v místě vašeho zájmu. Co s tím vším dál? Google poskytuje nástroje na zpracování i validaci strukturovaných dat. Příkladem je: https://search.google.com/structured-data/testing-tool Po ověření validní RDF struktury se zpracovávají tzv. rich cards. Rich cards jsou možné pouze u sémantických dat (viz Obr. 2), metadata bez sémantiky se zobrazují jako na Obr. 1. Obr. 1. Výsledky vyhledávání Google pomocí metadat bez sémantiky. Obr. 2. Výsledky vyhledávání na Google pomocí RDF metadat – tzv. rich cards. Otázka #1 Dovedete si představit lepší zakončení metadat než čokoládovým dortem?