Vous êtes sur la page 1sur 11

Nom :

Prnom :
M2 Outils de bases de donnes pour lintelligence articielle
Examen 1re session du 16 novembre 2012
2 heures
CORRIG
Documents autoriss
Les tlphones mobiles doivent tre teints et rangs dans les sacs. Le barme sur 20 points (18 questions)
na quune valeur indicative.
1 Bases de donnes XML (8 pts)
Soit une DTD movies.dtd
<! ELEMENT movies ( movie , a r t i s t ) >
<! ELEMENT movie ( t i t l e , year , count r y , genre , summary? , r ol e ) >
<! ATTLIST movie di r ec t or IDREF >
<! ELEMENT a r t i s t ( f i r st _name , l ast_name , bi r t h_dat e ) >
<! ATTLIST a r t i s t i d ID >
<! ELEMENT r ol e #PCDATA >
<! ATTLIST r ol e act or #IDREF >
<! ELEMENT t i t l e ( #PCDATA) >
<! ELEMENT count r y ( #PCDATA) >
<! ELEMENT year ( #PCDATA) >
<! ELEMENT genre ( #PCDATA) >
<! ELEMENT summary ( #PCDATA) >
<! ELEMENT l ast_name ( #PCDATA) >
<! ELEMENT f i r st _name ( #PCDATA) >
<! ELEMENT bi r t h_dat e ( #PCDATA) >
<! ELEMENT r ol e ( #PCDATA) >
Les attributs director (ralisateur dun lm) et actor qui joue un rle (acteur) sont des rfrences
vers des lments artist.
1.1 Requtes XQuery
Exprimez les requtes sur un document mymovies.xml valid par la DTD movies.dtd. On indique pour
chaque requte la DTD du rsultat.
Question 1 (1 point)
XQ1: Un lment comedy_titles qui contient les titres de comdies (GENRE=COMEDY) avec leur
pays tris par titre.
<! ELEMENT comedy_t i t l es ( comedy) >
<! ELEMENT comedy ( t i t l e , year ) >
<! ELEMENT t i t l e ( #PCDATA) >
<! ELEMENT year ( #PCDATA) >
BDIA CORRIG UPMC
Solution: XQuery avec clause where:
<comedy_t i t l es>
{ f or $m i n doc ( " mymovies . xml " / / movie
where $m/ genre = comedy
or der by $m/ t i t l e
r et ur n el ement comedy { $m/ t i t l e , $m/ year }
}
<comedy_t i t l es>
XQuery sans clause where:
<comedy_t i t l es>
{ f or $m i n doc ( " mymovies . xml " / / movie [ genre = comedy ]
or der by $m/ t i t l e
r et ur n el ement comedy { $m/ t i t l e , $m/ year }
}
<comedy_t i t l es>
Barme:
Question 2 (1 point)
XQ2: Un lment allen_titles qui contient tous les titres de lms tourns par Woody Allen tris par
lanne.
<! ELEMENT a l l e n _ t i t l e s ( t i t l e ) >
<! ELEMENT t i t l e ( #PCDATA) >
Solution:
XQuery avec clause where:
< a l l e n _ t i t l e s >
{ f or $m i n doc ( " mymovies . xml " / / movie ,
$a i n doc ( " mymovies . xml " / / a r t i s t
where $a / f i r st _name = Woody
and $a / l ast_name = Al l en
and $m/ @di r ect or = $a / @id
or der by $m/ year
r et ur n $m/ t i t l e }
< a l l e n _ t i t l e s >
XQuery sans clause where:
< a l l e n _ t i t l e s >
{ f or $m i n doc ( " mymovies . xml " / movie [ @di r ect or =/ / a r t i s t [ f i r st _name = Woody
and l ast_name = Al l en ] / @id]
r et ur n $m/ t i t l e }
< a l l e n _ t i t l e s >
Question 3 (2 points)
XQ3: Les lms avec leur titre et lanne (title and year) comme attribut et pour chaque lm les acteurs
dont le rle apparat dans le rsum du lm. Les lms sont tris par leur titre.
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 2 sur 10
BDIA CORRIG UPMC
<! ELEMENT movies ( movie ) >
<! ELEMENT movie ( act or ) >
<! ATTLIST movie t i t l e CDATA
year CDATA >
<! ELEMENT act or ( f i r st _name , l ast_name , bi r t h_dat e , r ol e ) >
<! ELEMENT l ast_name ( #PCDATA) >
<! ELEMENT f i r st _name ( #PCDATA) >
<! ELEMENT bi r t h_dat e ( #PCDATA) >
<! ELEMENT r ol e ( #PCDATA) >
Solution:
<movies>
{ f or $m i n doc ( " mymovies . xml " / / movie
r et ur n el ement movie {
a t t r i b u t e t i t l e { $m/ t i t l e } ,
a t t r i b u t e year { $m/ year } ,
f or $a i n doc ( " mymovies . xml " / / a r t i s t ,
$r i n $m/ r ol e
where $a / @id=$r / @actor and $m/ summary cont ai ns $r
r et ur n $a }
or der by $m/ t i t l e
}
<movies>
Question 4 (2 points)
Restructuration du document : les lms sont regroups par pays et par genre. On ne garde pas les
informations sur les ralisateurs et les rles.
Attention:
chaque pays ne doit apparatre quune seule fois;
chaque genre ne doit apparatre quune seule fois pour chaque pays;
il faut enlever le pays et le genre dans chaque lm (voir DTD).
<! ELEMENT count r i es ( count r y ) >
<! ELEMENT count r y ( name, genre ) >
<! ELEMENT genre ( name, movie ) >
<! ELEMENT movie ( t i t l e , year , summary?) >
<! ELEMENT t i t l e ( #PCDATA) >
<! ELEMENT year ( #PCDATA) >
<! ELEMENT summary ( #PCDATA) >
Solution:
<count r i es>
{ f or $c i n d i s t i n c t val ues ( doc ( " mymovies . xml " / / count r y )
r et ur n el ement count r y {
el ement name { $c / count r y } ,
f or $g i n d i s t i n c t val ues ( doc ( " mymovies . xml " / / genre )
r et ur n el ement genre {
el ement name { $g / genre } ,
f or $m i n doc ( " mymovies . xml " ) / / movie
where $m/ count r y = $c and $m/ genre = $g
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 3 sur 10
BDIA CORRIG UPMC
r et ur n el ement movie {
$m/ t i t l e , $m/ year , $m/ summary }
}
}
}
</ count r i es>
1.2 Stockage relationnel
On suppose que les documents sont stocks dans une base de donnes relationnelle.
Question 5 (1 point)
Dnissez un schma relationnel (tables avec les attributs) qui permet de stocker tous le documents
valids par la DTD. Le schma de stockage nest pas oblig de maintenir lordre des noeuds et les
attributs XML sont directement traduits en attributs dans la table correspondante.
Solution:
Movie(id, title, year, genre, summary, director)
Country(id, country, mid)
Artist(id, rst_name, last_name, birth_date)
Role(id, parid, role, actor)
Traduisez la requte suivante en requte SQL sur ce schma.
Question 6 (1 point)
Tous les titres de lms tourns par Woody Allen.
Solution:
sel ect m. t i t l e
from Movie m, Ar t i s t a
where m. di r ec t or = a . i d
and a . l ast_name= Al l en
and a . f i r st _name= Woody
Question bonus (2 point)
Compltez lordre SQL-XML pour gnrer un extrait XML qui est valid par la DTD movie.dtd partir
de la base de donnes relationnelle (utilisez les fonctions xmlagg, xmlelement, xmlattribute,
xmlforest).
Solution:
sel ect xml el ement ( movies ,
( sel ect xmlagg ( xml el ement ( movie ,
xml f or est (m. t i t l e , m. year ) ,
( sel ect xmlagg ( xml el ement ( count r y , c . count r y )
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 4 sur 10
BDIA CORRIG UPMC
from Count ry c
where c . par i d=m. i d ) ,
xml f or est ( m. genre , m. summary ) ,
( sel ect xmlagg ( xml el ement ( r ol e , r . rol e ) ,
x ml at t r i but ( act or , r . act or )
from Role r
where r . par i d=m. i d )
x ml at t r i but e (m. di r ec t or ) ) ) )
from Movie m) ,
( sel ect xmlagg ( xml el ement ( a r t i s t ,
xml f or est ( a . f i r st _name , a . l ast_name , a . bi r t h_dat e ) ,
x ml at t r i but e ( i d , a . i d ) ) )
from Ar t i s t a)
from dual ;
2 Bases de donnes RDF (12 pts)
Soit le graphe RDF g1 suivant. Chaque noeud est
tiquet par son identiant ou par une lettre dbutant
par _ sil sagit dun noeud blanc. Les arcs sont ti-
quets par les types des proprits.
_x _v _w
_u a _z
b
c
_y
r
r
s
r
r
s
r
s
s
r
s
r
s
g
1
Question 7 (
1
/
2
point)
Donnez les expressions Turtle qui correspondent ce graphe.
Solution:
_v r a ; r _u .
_x r a ; r _u ; s _z .
_w s _u ; r _z .
a s _y ; s b .
_u r b .
b r a ; s _z .
c s _z .
Question 8 (1 point)
Dessinez le graphe minimal core(g1) du graphe g1. Donnez galement le mapping m pour obtenir
core(g1).
Solution: m : _v _x, _y b:
core(g
1
):
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 5 sur 10
BDIA CORRIG UPMC
_x _w
_u a _z
b
c
r
r
s
s
r
s
r
s
r
s
Voici un schma RDFS pour des donnes cinmatographiques. Les relations subClassOf sont en
pointill et les autres arcs dnissent des proprits:
Literal Artiste
Acteur Realisateur
Role
Film
Drame
Comedie
Action
s
u
b
C
l
a
s
s
O
f
s
u
b
C
l
a
s
s
O
f
s
u
b
C
l
a
s
s
O
f
s
u
b
C
l
a
s
s
O
f
s
u
b
C
l
a
s
s
O
f
t
i
t
r
e
p
a
y
s
nom
realisateur
a
c
t
e
u
r

lm
Soit le document RDF lm.rdf suivant:
<?xml version=" 1. 0 " encodi ng=" i so 88591" ?>
<rdf : RDF xmlns=" h t t p : / / movies . f r / "
xml ns: r df =" h t t p : / / www. w3. org /1999/02/22r df synt axns#" >
<Rol e>
<act eur >
< Ar t i s t e r df : I D= p1 >
<nom>Ryan Gosl i ng</ nom>
</ Ar t i s t e >
</ act eur >
<f i l m>
<Act i on r df : I D= f 1 > >
< t i t r e >Dr i ve</ t i t r e >
<r eal i s at eur >
< Ar t i s t e r df : I D= p2 >
<nom>Ni col as Wi ndi ng Refn</ nom>
</ Ar t i s t e >
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 6 sur 10
BDIA CORRIG UPMC
</ r eal i s at eur >
<pays>USA</ pays>
</ Act i on>
</ f i l m>
</ Rol e>
<Rol e>
<act eur r df : r esour ce= p3 / >
<f i l m>
<Comedie r df : I D= f 2 > >
< t i t r e >Harry dans t ous ses t at s</ t i t r e >
<r eal i s at eur >
< Ar t i s t e r df : I D= p3 >
<nom>Woody Al l en</ nom>
</ Ar t i s t e >
</ r eal i s at eur >
<pays>USA</ pays>
</ Comedie>
</ f i l m>
</ Rol e>
</ rdf : RDF>
On suppose que ce document a t charg dans Oracle RDF.
Question 9 (1 point)
Donnez pour chaque ressource f1, f2, p1, p2, p3 leurs types RDFS avant et aprs avoir appliqu toutes
les rgles dinfrence RDF et RDFS en utilisant le schma ci-dessus. Donnez les rgles appliques
pour linfrence des nouveaux types.
Solution:
Avant:
f1: Action
f2: Comedie
p1: Artiste
p2: Artiste
p3: Artiste
Aprs:
f1: Action, Film (infrence suclassOf)
f2: Comedie, Film (infrence suclassOf)
p1: Artiste, Acteur (range de acteur)
p2: Artiste, Realisateur (range de realisateur)
p3: Artiste, Acteur (range de Role), Realisateur (range de realisateur)
Donnez les requtes SPARQL qui rpondent aux questions suivantes. Vous ntes pas obligs de spcier
les espaces de nom utiliss ni le graphe interrog.
Attention: il est possible quune requte ne puisse pas tre exprime en SPARQL 1.0. Indiquez lesquelles. :
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 7 sur 10
BDIA CORRIG UPMC
Question 10 (1 point)
SQ10: Les noms des ralisateurs et des acteurs du lm Drive.
Solution:
SELECT ?nr
WHERE { [ t i t r e ? t ; r eal i s at eur [ nom ?nr ] ] . FILTER ( ? t = Dr i ve ) }
UNION
SELECT ?na
WHERE { ?r f i l m [ t i t r e ? t ] ;
act eur [ nom ?na ]
FILTER ( ? t = Dr i ve ) }
Question 11 (
1
/
2
point)
SQ11: Les diffrents genres de lms.
Solution:
SELECT ?a
WHERE { ?a r df s : subCl assOf Fi l m }
Question 12 (1 point)
SQ12: Les noms des acteurs qui ont jou dans des comdies ou des lms daction.
Solution:
SELECT ?na
WHERE { ?r f i l m [ r df : t ype ? t ] ; act eur [ nom ?na ] .
FILTER ( ? t = : Comedie or ? t = : Action ) }
ou
SELECT ?na
WHERE { ?r f i l m [ r df : t ype : Comedie ] ; act eur [ nom ?na ] . }
UNION
SELECT ?na
WHERE { ?r f i l m [ r df : t ype : Action ] ; act eur [ nom ?na ] . }
Question 13 (2 points)
SQ13: Les noms des acteurs qui nont pas jou dans des comdies.
Solution:
SELECT ?n
WHERE { ?a r df : t ype Act eur ; nom ?na .
OPTIONAL { ?r f i l m ? f ; act eur ?a . ? f r df : t ype : Comedie . } .
FILTER ( ! bound( ? f ) ) }
ou
SELECT ?n
WHERE { ?r f i l m ? f ; act eur [ nom ?na ] .
OPTIONAL { ?a . ? f r df : t ype : Comedie . } .
FILTER ( ! bound( ? f ) ) }
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 8 sur 10
BDIA CORRIG UPMC
Question 14 (1 point)
SQ14: Les noms des artistes qui sont acteur et ralisateur.
Solution:
SELECT ?n
WHERE { ?a r df : t ype Act eur ; r df : t ype Real i sat eur ; nom ?n . }
Question 15 (1 point)
SQ15: Les noms des personnes qui ont jou dans tous les lms de Woody Allen.
Solution: La requte ne peut pas tre exprime en SPARQL 1.0.
RDF et SQL
On suppose que tous les triplets (schma RDFS et graphe RDF) sont stockes dans une table relationnelle
RDF(S, P, O). Traduisez les requtes suivantes en SQL.
Question 16 (1 point)
SQ14: Les noms des artistes qui sont acteurs et ralisateurs.
Solution:
sel ect A.O
from RDF A, RDF B, RDF C
where A. P= nom
and A. S=B. S and B. P= r df : t ype and B.O= : Act or
and A. S=C. S and C. P= r df : t ype and C.O= : Di r ect or
Question 17 (1 point)
SQ17: Les noms des acteurs qui nont pas jou dans des comdies.
Solution:
sel ect A.O
from RDF A, RDF B, RDF C
where A. P= nom
and A. S not i n ( sel ect B.O
from RDF B, RDF C, RDF F
where B. P= act eur
and C. P= f i l m
and C. S=B. S
and C.O=F. S
and F. P = r df : t ype
and F.O = Comedie )
Question 18 (1 point)
Compltez la rgle suivante qui indique que tous les lms avec Woody Allen (dans un rle) sont des
comdies:
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 9 sur 10
BDIA CORRIG UPMC
Solution:
INSERT INTO MDSYS. RDFR_MOVIE_RB VALUES(
woody_al l en_comedi es ,
( ? r : act eur ?a) ( ?a nom ?n ) ( ? r : f i l m ? f ) ,
f i l t e r = n = "Woody Al l en " , ,
( ? f r df : t ype : Comedie)
SDO_RDF_Aliases ( SDO_RDF_Alias ( , ht t p : / / movies . f r / ) ) ) ;
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 10 sur 10
BDIA CORRIG UPMC
Question Points Score
1 1
2 1
3 2
4 2
5 1
6 1
7
1
/
2
8 1
9 1
10 1
11
1
/
2
12 1
13 2
14 1
15 1
16 1
17 1
18 1
Total: 20
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 11 sur 10