LIRMM Mastère informatique 2011
, Simple Protocol and RDF Query Language Standard W3C pour faciliter l interrogation de sources de données distribuées langage de requête pour RDF protocole : spécification pour émettre et envoyer des requêtes (services Web) vers des serveurs dédiés et en recevoir les résultats format XML pour l affichage des résultats obtenus (requêtes de type SELECT et ASK)
en tant que langage d interrogation Quatre formes de requêtage mais uniquement du requêtage à la différence de SQL (LDD + LMD) 1 SELECT : rechercher des ressources du modèle, qui seront ensuite restituées sous un format tabulaire 2 ASK : indique si la requête retourne un résultat non vide (test de vacuité) 3 DESCRIBE : obtenir des informations à propos de ressources présentes dans le modèle (le moins exploité des quatre) 4 CONSTRUCT : la requête sert de template pour construire de nouveaux graphes RDF en guise de résultats
ordre SELECT PREFIX indique l adresse (espace de noms) d un schéma pouvant être exploité ensuite dans la construction de la requête SELECT...[FROM]...WHERE retourne les ressources qui sont associées aux variables liées dans la clause WHERE UNION graphes alternatifs (correspond à au au moins un des graphes précisés) FILTER rajouter des conditions devant être satisfaites
Exemple 1 Exemple d interrogation simple, les variables sont préfixées par? et peuvent correspondre à tout noeud (ressource comme littéral) présent dans le modèle RDF SELECT?enfant WHERE {?enfant <www.lirmm.fr/famille#:enfantde>?parent } PREFIX famille: <http://www.lirmm.fr/famille#> SELECT?enfant WHERE {?enfant famille:enfantde?parent }
Exemple 2 Exprimer des requêtes sur les représentations sous-jacentes RDF, RDFS PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT?subject?object WHERE {?subject rdfs:subclassof?object } PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT?subject?object WHERE {?subject rdf:type?object }
Exemple 3 Exprimer des requêtes sur les représentations sous-jacentes OWL PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT?ressource?ressourceDisjointe WHERE {?ressource owl:disjointwith?ressourcedisjointe } SELECT?ressource?ressourceEquivalente WHERE {?ressource owl:equivalentclass?ressourceequivalente } SELECT?propriete?valeurPropriete WHERE {?propriete owl:hasvalue?valeurpropriete }
Exemple 4 Patterns de graphes incorporant différentes constructions. Le. nous permet d exprimer une concaténation de liaisons de variables PREFIX famille: <http://www.lirmm.fr/famille#> SELECT?personne?nom?age WHERE {?personne famille:nom?nom.?personne famille:age?age} SELECT * WHERE {?personne famille:nom?nom.?personne famille:age?age Filter (?age <10)}
Exemple 5 Clause UNION : réaliser une union de graphes alternatifs PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX famille: <http://www.lirmm.fr/famille#> SELECT?individu WHERE {{?individu rdf:type family:femme } UNION {?individu rdf:type family:homme }}
Exemple 6 Clause OPTIONAL : restituer l information associée à des sousgraphes de manière optionnelle PREFIX famille: <http://www.lirmm.fr/famille#> SELECT?personne?nom?age WHERE {?personne famille:nom?nom. OPTIONAL {?personne famille:age?age}}
avec Jena : exemple partiel String prolog2 = "PREFIX rdf: <"+RDF.getURI()+">" ; String querystring = prolog1 + NL + prolog2 + NL + "SELECT?ind WHERE {?ind rdf:type family:femme }" ; Query query = QueryFactory.create(queryString) ; QueryExecution qexec = QueryExecutionFactory.create(query, m) ; try { ResultSet rs = qexec.execselect() ; for ( ; rs.hasnext() ; ) { QuerySolution rb = rs.nextsolution() ; RDFNode y = rb.get("ind");...}