Pokračujeme se SPARQL DBpedia Dotazy s regulárními výrazy (REGEX)  1. Zkuste dotaz: SELECT ?author ?title WHERE { ?book a dbo:Book . ?book rdfs:label ?title. ?book dbo:author ?author. FILTER(lang(?title) = 'cs') } LIMIT 100  2. Rozšiřte dotaz tak, aby se filtrovaly knihy, které mají v názvu řetězec “smrt”. Je rozdíl mezi tím, zda název knihy obsahuje řetězec “smrt” a slovo “smrt”?  3. Modifikujte dotaz na slovo “smrt”. Wikidata Wikidata používá Q-items, P- a L- jako identifikátory. Důsledkem je, že dotazy nejsou na první pohled dobře srozumitelné. Editor dotazů na Wikidata ale zobrazuje i názvy entit, takže se v dotazu nakonec dá vyznat. O něco těžší je dotaz zformulovat. SPARQL endpoint je na [1]https://query.wikidata.org/ Základní dotazy  1. Zkuste dotaz: SELECT ?authorLabel ?bookLabel ?date WHERE { ?book wdt:P31 wd:Q47461344 . ?book wdt:P50 ?author . ?book wdt:P577 ?date . ?book rdfs:label ?bookLabel . ?author rdfs:label ?authorLabel . } LIMIT 100  2. Modifikujte dotaz tak, aby se zobrazovaly jen české názvy knih a česká jména autorů.  3. Pro obecnější specifikování jazyka můžete použít langMatches: FILTER(langMatches(lang(?bookLabel), 'cs')) FILTER(langMatches(lang(?authorLabel), 'cs')) Dotaz s OPTIONAL  1. Zkuste dotaz: SELECT ?authorLabel ?bookLabel ?date ?image WHERE { ?book wdt:P31 wd:Q47461344 . ?book wdt:P50 ?author . ?book wdt:P577 ?date . ?book rdfs:label ?bookLabel . ?author rdfs:label ?authorLabel . FILTER(langMatches(lang(?bookLabel), 'cs')) FILTER(langMatches(lang(?authorLabel), 'cs')) ?book wdt:P18 ?image . } LIMIT 100  2. Modifikujte dotaz tak, aby se zobrazily knihy, které mají obrázek, ale i ty, které jej nemají. Rozšíření SPARQL pro Wikidata  1. Zkuste dotaz: SELECT ?authorLabel ?bookLabel ?date ?image WHERE { ?book wdt:P31 wd:Q47461344 . ?book wdt:P50 ?author . ?book wdt:P577 ?date . ?book rdfs:label ?bookLabel . ?author rdfs:label ?authorLabel . FILTER(langMatches(lang(?bookLabel), 'cs')) FILTER(langMatches(lang(?authorLabel), 'cs')) ?book wdt:P18 ?image . } LIMIT 100  2. Před dotaz ve SPARQL přidejte # - tím se otevře možnost vizualizace  3. Zvolte #defaultView:Timeline  4. Zvolte jiné typy zobrazení (ne všechny budou relevantní pro tento dotaz) Zjednodušení povolených jazyků  1. Vyzkoušejte jakýkoliv dotaz, který pracuje s rdf:label.  2. Přidejte SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,de,en". } (jazyky můžete obměnit)  3. Odmažte trojice, které specifikují, co je authorLabel a bookLabel - doplní se samy.  4. Od této chvíle nemusíte používat limity na jazyky (lang a langMatches) Disjunkce pomocí UNION  1. Vyzkoušejte do dotazu: SELECT ?authorLabel ?bookLabel ?date ?subject WHERE { ?book wdt:P31 wd:Q47461344 . ?book wdt:P50 ?author . ?book wdt:P577 ?date . ?book rdfs:label ?bookLabel . ?author rdfs:label ?authorLabel . } LIMIT 100 přidat vlastnost wdt:P921 mezi knihou a tématem. (Můžete ponechat omezení na jazyk: FILTER(langMatches(lang(?bookLabel), 'en')) FILTER(langMatches(lang(?authorLabel), 'en')) nebo můžete použít SERVICE)  2. Najděte identifikátory pro svoje oblíbená témata (nejméně dvě).  3. Modifikujte dotaz tak, aby omezil téma knihy na vaše oblíbená témata (pomocí UNION).  4. Odmažte limit, pokud je to potřeba. Podívejte se na počet výsledků.  5. Přidejte ještě jedno téma, spusťte dotaz a podívejte se na počet výsledků. Negace  6. Přidejte negaci do dotazu: SELECT ?authorLabel ?bookLabel ?genre ?genreLabel WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } ?book wdt:P31 wd:Q47461344 . ?book wdt:P50 ?author . ?book wdt:P136 ?genre . ?author rdfs:label ?authorName . FILTER(CONTAINS(?authorName, "Tolkien")). } LIMIT 100  7. Napsal Některý z Tolkienů jinou knihu než fantasy?