0% ont trouvé ce document utile (0 vote)
198 vues3 pages

TD-Sparql Solution

Transféré par

Olfa Bouchaala
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
198 vues3 pages

TD-Sparql Solution

Transféré par

Olfa Bouchaala
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

M1SIC Web Sémantique 2019-2020

TD N2 : SPARQL
Exercice 1 :
1. Donnez le résultat de la requête suivante :
_:a foaf:name "Alice". SELECT ?name ?mbox ?hpage
_:a foaf:homepage <[Link] WHERE
_:b foaf:name "Bob". { ?x foaf:name ?name .
_:b foaf:mbox <[Link] OPTIONAL { ?x foaf:mbox ?mbox } .
OPTIONAL { ?x foaf:homepage ?hpage}
}

2.
_:a foaf:name "mohamed".
_:a ex:enseigne « IA ».
_:a ex:enseigne « GL ».
_:a ex:age 29.
_:b foaf:name "amine".
_:b ex:enseigne « reseaux ».
_:b ex:age 50
_:c foaf:name "Fatima".
_:c ex:age 30.

Donnez les requêtes qui expriment :

 Les noms des enseignants qui ont plus de 30 ans.


 les noms des ressources qui n’enseignent aucun cours.
 les noms des ressources qui n’enseignent pas le cours IA.
 les noms des enseignants qui n’enseignent pas le cours IA.

Exercice 2 :
Soit le schéma RDF suivant :
:Class rdf:ID="Cours"/>
<rdfs:Class rdf:ID="Etudiant"/>
<rdfs:Class rdf:ID="Enseignant"/>
<rdf:Property rdf:ID="enseigne_par">
<rdfs:domain rdf:resource="#Cours"/>
<rdfs:range rdf:resource="#Enseignant"/>
</rdf:Property>
<rdf:Property rdf:ID="inscrit_dans">
<rdfs:range rdf:resource="#Cours"/>
<rdfs:domain rdf:resource="#Etudiant"/>
</rdf:Property>
<rdf:Property rdf:ID="nom">
<rdfs:domain rdf:resource="#Cours"/>
<rdfs:domain rdf:resource="#Etudiant"/>
<rdfs:domain rdf:resource="#Enseignant"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
</rdf:Property>
<rdf:Property rdf:ID="prerequis">
<rdfs:domain rdf:resource="#Cours"/>
<rdfs:range rdf:resource="#Cours"/>
</rdf:Property>

Exprimez les requêtes suivantes en SPARQL.

3. Les noms des enseignants du cours “IA ”.


4. Les classes avec la propriété nom.
5. Les instances de classes avec la propriété nom.
6. Les noms des enseignants qui enseignent deux cours différents.
7. Les noms des étudiants qui suivent deux cours différents du même enseignant.
8. Les noms des cours sans pré-requis.
Solution Exercice 1 :
9. Résultat d'interrogation :
name mbox hpage
"Alice" <[Link]
"Bob" <[Link]

 les noms des ressources qui n’enseignent aucun cours.

SELECT ?name WHERE {


?x foaf:name ?name
optional {?x ex:enseigne ?cours. }
filter(!bound(?cours))}
 les noms des enseignants qui n’enseignent pas le cours IA.
SELECT ?name WHERE
{ ?x ex:enseigne ?c. ?x foaf:name ?name
optional {?x ex:enseigne ?cour. filter(regex(?cours, \"IA\", \"i\")) }
filter(!bound(?cours))}"
 Les noms des ressources qui n’enseignent pas le cours IA.
"SELECT ?name WHERE {
?x foaf:name ?name optional {?x ex:enseigne ?cours. filter(regex(?
cours, \"IA\", \"i\")) } filter(!bound(?cours))}"

Solution Exercice 2 :

 Les noms des enseignants du cours “IA ”.


SELECT ?name WHERE

{ ?x rdf:type ex:enseignat. ?x ex:nom ?name.


?y ex:enseigne_par ?x. ?y ex:nom "IA".}
 Les classes avec la propriété nom.
SELECT ?class WHERE
{ ?class rdf:type rdfs:class.
Ex:nom rdfs:domain ?class.}
 Les instances de classes avec la propriété nom.
SELECT ?class_inst WHERE
{ ?class rdf:type rdfs:class.
Ex:nom rdfs:domain ?class.
?class_inst rdf:type ?class.}

 Les noms des enseignants qui enseignent deux cours différents.


SELECT ?nom WHERE
{ ?x ex:nom ?nom.
?y ex:enseigne_par ?x.
?z ex:enseigne_par ?x.
FILTER( ?y != ?z)}

 Les noms des étudiants qui suivent deux cours différents du même enseignant.
SELECT ?nom WHERE
{ ?x ex:nom ?nom.
?x rdf:type ex:Etudiant
?y ex:enseigne_par ?ens.
?z ex:enseigne_par ?ens.
FILTER( ?y != ?z)}
 Les noms des cours sans pré-requis.
SELECT ?nom WHERE
{ ?x rdf:type ex:cours.
?x ex:nom ?nom
optional {?x ex:prerequis ?cour.}
filter(!bound(?cours))}

Vous aimerez peut-être aussi