150 likes | 313 Views
Langages du Web Sémantique. SPARQL Protocol And RDF Query Language. SPARQL. Pierre-Yves Vandenbussche. www.w3.org/TR/rdf- sparql -query/. Langages du Web Sémantique. SPARQL. Langage de requête sur les données RDF (recommandé par W3C en 2008). Protocole d’accès (HTML, SOAP)
E N D
Langages du Web Sémantique SPARQL Protocol And RDF Query Language SPARQL Pierre-Yves Vandenbussche www.w3.org/TR/rdf-sparql-query/
Langages du Web Sémantique SPARQL • Langage de requête sur les données RDF (recommandé par W3C en 2008). • Protocole d’accès (HTML, SOAP) • Langage de présentation des résultats (XML(bindings), RDF) • Syntaxe basé sur Turtle (un sous ensemble de N3) • Appariement de graphes / projection • Principe courant imitant SQL • Possibilité de retourner • un résultat (clause SELECT) • un nouveau graphe de données (clause CONSTRUCT) • un booléen pour savoir si il y a au moins 1 résultat (clause ASK)
Langages du Web Sémantique SPARQL - Exemple Données @prefixfoaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Johnny Lee Outlaw" . _:a foaf:mbox <mailto:jlow@example.com> . _:b foaf:name "Peter Goodguy" . _:b foaf:mbox <mailto:peter@example.org> . _:c foaf:mbox <mailto:carol@example.org> . Requête PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name . ?x foaf:mbox ?mbox. } Résultat
Langages du Web Sémantique SPARQL – en détail • En 4 blocs: • PREFIX: déclaration des namespaces utilisés • SELECT: clause sélectionnant les variables à retourner • WHERE: pattern de graphe à matcher • Un jeu de triplets { (sujet prédicat objet .)*} • FILTER: contraintes exprimées avec des fonctions de tests internes (XPath 2.0) ou externes • LIMIT/ORDER BY: contraintes sur les résultats retournés • Opérateurs: • OPTIONAL: rendre optionnel la correspondance au graphe • UNION: union ensembliste de plusieurs patterns
Langages du Web Sémantique SPARQL – en détail • Dans la clause SELECT: distinct • Dans la clause WHERE: @fr , ^^xsd:integer • Dans la clause FILTER: • Comparateurs: <, >, =, <=, >=, != • Tests sur les binding des variables:isURI(?x), isBlank(?x), isLiteral(?x), bound(?x) • Filtres à base d'expressions régulières regex(?x, "A.*") • Accès aux attributs/valeur lang(), datatype(), str() • Fonctions de (re-)typage (casting) xsd:integer(?x) • Fonctions externes / extensions • Combinaisons &&, ||
Langages du Web Sémantique SPARQL – en détail • Exemple FILTER PREFIX ex: <http://ics.upmc.fr/schema#> SELECT ?person ?name WHERE { ?personrdf:typeex:Person . ?personex:name ?name . ?personex:age ?age . FILTER (?age > 17) }
Langages du Web Sémantique SPARQL – en détail • Exemple OPTIONAL PREFIX ex: <http://ics.upmc.fr/schema#> SELECT ?person ?name ?age WHERE { ?personrdf:typeex:Person . ?personex:name ?name . OPTIONAL { ?personex:age ?age } }
Langages du Web Sémantique SPARQL – en détail • Exemple UNION PREFIX ex: <http://ics.upmc.fr/schema#> SELECT ?name WHERE { ?personex:name ?name . { { ?personrdf:typeex:Adult . } UNION { ?personex:age ?age . FILTER (?age > 17) } } }
Langages du Web Sémantique SPARQL – en détail • Exemple ORDER BY, LIMIT, OFFSET PREFIX ex: <http://ics.upmc.fr/schema#> SELECT ?person ?name WHERE { ?personrdf:typeex:Person . ?personex:name ?name . } ORDER BY ?name LIMIT 20 OFFSET 20
Langages du Web Sémantique SPARQL – en détail • Exemple contraintes PREFIX ex: <http://ics.upmc.fr/schema#> SELECT ?name WHERE { ?personex:name ?name . OPTIONAL { ?personex:hasFriend ?x } FILTER ( ! bound(?x)) }
Langages du Web Sémantique SPARQL – en détail • Exemple ASK PREFIX ex: <http://ics.upmc.fr/schema#> ASK { ?personex:age ?age . FILTER (?age > 17) }
Langages du Web Sémantique SPARQL – en détail • Exemple CONSTRUCT PREFIX ex: <http://ics.upmc.fr/schema#> CONSTRUCT { ?personrdf:typeex:Adult } WHERE { ?personex:age ?age . FILTER (?age > 17) }
Langages du Web Sémantique SPARQL – Résultats • Deux formes possibles pour la présentation de résultats: • le binding i.e. la liste des valeurs sélectionnées pour chaque réponse rencontrée; (format XML stable ; bien avec XSLT) • les sous graphes des réponses rencontrées en RDF (format RDF/XML ; bien pour applications utilisant RDF)
Langages du Web Sémantique SPARQL – Protocoles d’accès • Deux protocoles d’accès: • Encapsulé dans HTTP • ex: GET /sparql/?query=<encoded query> HTTP/1.1 • Host: ics.upmc.fr • User-agent: my-sparql-client/0.1 • Par un web service SOAP • <?xml version="1.0" encoding="UTF-8"?> • <soapenv:Envelopexmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/" • xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"> • <soapenv:Body> • <query-requestxmlns="http://www.w3.org/2005/09/sparql-protocol-types/#"> • <query>SELECT ?x ?p ?y WHERE {?x ?p ?y}</query> • </query-request> • </soapenv:Body> • </soapenv:Envelope>