Dotazovací jazyk SPARQL SELECT ISKM89 Organizace dat - sémantický web | podzim 2023 Zuzana Nevěřilová | Centrum zpracování přirozeného jazyka SPARQL - architektura klient-server (stejně jako web) uživatelské rozhraní User Interface klient SPARQL server SPARQL SPARQL Endpoint RDF triple store protokol SPARQL HTTP SPARQL - graph pattern matching ? B ? ? G AB C D E F G C G RDF graf SPARQL query SPARQL - graph pattern matching ?B ? ? G AB C D E F G C G RDF graf SPARQL query RDF graf SPARQL query SPARQL - graph pattern matching ?B ? ? G AB C D E F G C G ?B ? ? G RDF graf SPARQL query SPARQL - graph pattern matching ?B ? ? G AB C D E F G C G AB C D G Dotaz v SPARQL (SPARQL Query) SELECT ?title, ?author, ?date … Výsledek SPARQL (SPARQL Result) SPARQL SELECT - hledáme proměnné ?title ?author ?date Bůh je z Brna Jiří Kamen 2022 Humble Pi Matt Parker 2020 If Cats Disappeared From The World Genki Kawamura 2018 Dotaz v SPARQL (SPARQL Query) SELECT WHERE { podgraf } Výsledek SPARQL (SPARQL Result) - vázané proměnné SPARQL SELECT - vázané proměnné ?title ?author ?date Bůh je z Brna Jiří Kamen 2022 Humble Pi Matt Parker 2020 If Cats Disappeared From The World Genki Kawamura 2018 Graf v SPARQL (SPARQL Graph) ?book a dbo:Book . ?book dbo:author ?author . ?book dbp:releaseDate ?date . Výsledek SPARQL (SPARQL Result) SPARQL SELECT - podgraf (graph pattern) ?book ?author ?date http://dbpedia.org/resource/Beijinger_in_New_York http://dbpedia.org/resource/Glen_Cao 1994 http://dbpedia.org/resource/Bridget_Jones's_Diary http://dbpedia.org/resource/Richard_Curtis 2001-10-29 http://dbpedia.org/resource/Planetarian:_The_Reverie_of_a_Little_Planet http://dbpedia.org/resource/Yūichi_Suzumoto 2021-08-25 musí platit všechny trojice (AND, konjunkce) Dotaz v SPARQL (SPARQL Query) ?book a dbo:Book . ?book dbo:author ?author . ?book dbp:releaseDate ?date . ?author rdfs:label ?author_name . ?book rdfs:label ?title . Výsledek SPARQL (SPARQL Result) - jiné proměnné než v předchozím příkladu SPARQL SELECT - podgraf (graph pattern) ?title ?author ?date "Beijinger in New York"@en "Glen Cao"@en 1994 "Bridget Jones's Diary"@en "Richard Curtis"@en 2001-10-29 "Deník Bridget Jonesové"@cs "Richard Curtis"@cs 2021-08-25 Všechny komponenty dotazu PREFIX rdfs: PREFIX dbo: PREFIX dbp: SELECT ?title ?author_name ?date FROM WHERE { ?book a dbo:Book . ?book dbo:author ?author . ?book dbp:releaseDate ?date . ?author rdfs:label ?author_name . ?book rdfs:label ?title . } ORDER BY ?title LIMIT 100 SPARQL SELECT projekce (zdrojový) graf podgraf (pattern) upřesnění pořadí výpisu prefixy Všechny komponenty dotazu PREFIX rdfs: PREFIX dbo: PREFIX dbp: SELECT ?title ?author_name ?date FROM WHERE { ?book a dbo:Book . ?book dbo:author ?author . ?book dbp:releaseDate ?date . ?author rdfs:label ?author_name . ?book rdfs:label ?title . } ORDER BY ?title LIMIT 100 SPARQL SELECT definice v ontologiích https://dbpedia.org/ontology/ https://dbpedia.org/property/ a rdf:Property SELECT ?title ?author_name ?date WHERE { ?book a dbo:Book . ?book dbo:author ?author . ?book dbp:releaseDate ?date . ?author rdfs:label ?author_name . ?book rdfs:label ?title . ?book dbo:numberOfPages ?pages. FILTER(?pages > 500) } LIMIT 100 SPARQL SELECT - WHERE a další funkce unární operátory pro použití v kombinaci s FILTER Příklady negativní podmínka: FILTER(?title!="Hlava XXII") DATATYPE: FILTER(DATATYPE(?date)= "http://www.w3.org/2001/XMLSchema#date") SPARQL SELECT - WHERE a další funkce operátor typ výsledek !A xsd:boolean xsd:boolean +A číslo číslo -A číslo číslo BOUND(A) proměnná xsd:boolean isURI(A) RDF term xsd:boolean isBLANK(A) RDF term xsd:boolean isLITERAL(A) RDF term xsd:boolean STR(A) literál nebo URL literál LANG(A) literál literál DATATYPE(A) literál URI SELECT ?title ?author_name ?date WHERE { ?book a dbo:Book . ?book dbo:author ?author . ?book dbp:releaseDate ?date . ?author rdfs:label ?author_name . ?book rdfs:label ?title . FILTER(LANG(?title)="cs") FILTER(?title!="Hlava XXII") } LIMIT 100 SPARQL SELECT - WHERE a další funkce: FILTER "Stín větru"@cs "Jedenáct minut"@cs "Umírat v nitru"@cs … SELECT ?book ?date ?year WHERE { ?book a dbo:Book . ?book dbp:releaseDate ?date . BIND(year(?date) as ?year) } LIMIT 100 SPARQL SELECT - WHERE a další funkce: BIND book date http://dbpedia.org/resource/Call_It_Courage 1940 http://dbpedia.org/resource/Camera_Obscura_(novel) "August 2002"@en http://dbpedia.org/resource/Campaign_Sourcebook_an d_Catacomb_Guide 1990 http://dbpedia.org/resource/Carrie_(novel) 1974-04-05 http://dbpedia.org/resource/Casino_Royale_(novel) 1953-04-13 http://dbpedia.org/resource/Castes_in_India:_Their_Me chanism,_Genesis_and_Development "May 1917"@en http://dbpedia.org/resource/Catalyst_(novel) "September 2002"@en FILTER (DATATYPE(?date) = xsd:date) SELECT * SELECT DISTINCT … SELECT count(*) as ?count SELECT (sum(?pages) as ?sum) SPARQL SELECT - další funkce v projekci SELECT (sum(?pages) as ?total_number_of_pages) WHERE { ?book a dbo:Book . ?book dbo:numberOfPages ?pages. } LIMIT 100