examen 16nov2012 solution
TRANSCRIPT
-
Nom :Prnom :
M2 Outils de bases de donnes pour lintelligence artificielleExamen 1re session du 16 novembre 2012
2 heuresCORRIG
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 ry , genre , summary? , r o l e )>< ! ATTLIST movie d i r e c t o r IDREF >< !ELEMENT a r t i s t ( f i rs t_name , last_name , b i r t h _ d a t e ) >< ! ATTLIST a r t i s t i d ID >< !ELEMENT r o l e #PCDATA >< ! ATTLIST r o l e ac to r #IDREF >< !ELEMENT t i t l e (#PCDATA) >< !ELEMENT count ry (#PCDATA) >< !ELEMENT year (#PCDATA) >< !ELEMENT genre (#PCDATA) >< !ELEMENT summary (#PCDATA) >< !ELEMENT last_name (#PCDATA) >< !ELEMENT f i r s t_name (#PCDATA) >< !ELEMENT b i r t h _ d a t e (#PCDATA) >< !ELEMENT r o l e (#PCDATA) >
Les attributs director (ralisateur dun film) et actor qui joue un rle (acteur) sont des rfrencesvers des lments artist.
1.1 Requtes XQuery
Exprimez les requtes sur un document mymovies.xml valid par la DTD movies.dtd. On indique pourchaque requte la DTD du rsultat.
Question 1 (1 point)XQ1: Un lment comedy_titles qui contient les titres de comdies (GENRE=COMEDY) avec leurpays tris par titre.
< !ELEMENT comedy_t i t les ( 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:
{ f o r $m i n doc ( " mymovies . xml " / / movie
where $m/ genre = comedy order by $m/ t i t l er e t u r n element comedy { $m/ t i t l e , $m/ year }
}
XQuery sans clause where:
{ f o r $m i n doc ( " mymovies . xml " / / movie [ genre = comedy ]
order by $m/ t i t l er e t u r n element comedy { $m/ t i t l e , $m/ year }
}
Barme:
Question 2 (1 point)XQ2: Un lment allen_titles qui contient tous les titres de films tourns par Woody Allen tris parlanne.
< !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 o r $m i n doc ( " mymovies . xml " / / movie ,
$a i n doc ( " mymovies . xml " / / a r t i s twhere $a / f i rs t_name = Woody
and $a / last_name = A l l en and $m/ @director = $a / @id
order by $m/ yearr e t u r 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 o r $m i n doc ( " mymovies . xml " / movie [ @director = / / a r t i s t [ f i r s t_name = Woody
and last_name = A l l en ] / @id ]r e t u r n $m/ t i t l e }
< a l l e n _ t i t l e s >
Question 3 (2 points)XQ3: Les films avec leur titre et lanne (title and year) comme attribut et pour chaque film les acteursdont le rle apparat dans le rsum du film. Les films 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 ( ac to r )>< ! ATTLIST movie t i t l e CDATA
year CDATA >< !ELEMENT ac to r ( f i rs t_name , last_name , b i r th_da te , r o l e ) >< !ELEMENT last_name (#PCDATA) >< !ELEMENT f i r s t_name (#PCDATA) >< !ELEMENT b i r t h _ d a t e (#PCDATA) >< !ELEMENT r o l e (#PCDATA) >
Solution:
{ f o r $m i n doc ( " mymovies . xml " / / movie
r e t u r n element 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 o r $a i n doc ( " mymovies . xml " / / a r t i s t ,
$ r i n $m/ r o l ewhere $a / @id=$ r / @actor and $m/ summary conta ins $ rr e t u r n $a }
order by $m/ t i t l e}
Question 4 (2 points)Restructuration du document : les films sont regroups par pays et par genre. On ne garde pas lesinformations 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 film (voir DTD).
< !ELEMENT coun t r i es ( count ry )>< !ELEMENT count ry (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:
< coun t r i es >{ f o r $c i n d i s t i n c t values ( doc ( " mymovies . xml " / / count ry )
r e t u r n element count ry {element name { $c / count ry } ,f o r $g i n d i s t i n c t values ( doc ( " mymovies . xml " / / genre )r e t u r n element genre {
element name { $g / genre } ,f o r $m i n doc ( " mymovies . xml " ) / / moviewhere $m/ count ry = $c and $m/ genre = $g
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 3 sur 10
-
BDIA CORRIG UPMC
r e t u r n element movie {$m/ t i t l e , $m/ year , $m/ summary }
}}
}< / coun t r i es >
1.2 Stockage relationnel
On suppose que les documents sont stocks dans une base de donnes relationnelle.
Question 5 (1 point)Dfinissez un schma relationnel (tables avec les attributs) qui permet de stocker tous le documentsvalids par la DTD. Le schma de stockage nest pas oblig de maintenir lordre des noeuds et lesattributs XML sont directement traduits en attributs dans la table correspondante.
Solution:
Movie(id, title, year, genre, summary, director) Country(id, country, mid) Artist(id, first_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 films tourns par Woody Allen.
Solution:
select m. t i t l efrom Movie m, A r t i s t awhere m. d i r e c t o r = a . i dand a . last_name= A l l en and a . f i rs t_name= Woody
Question bonus (2 point)
Compltez lordre SQL-XML pour gnrer un extrait XML qui est valid par la DTD movie.dtd partirde la base de donnes relationnelle (utilisez les fonctions xmlagg, xmlelement, xmlattribute,xmlforest).
Solution:
select xmlelement ( movies ,( select xmlagg ( xmlelement ( movie ,
xm l fo res t (m. t i t l e , m. year ) ,( select xmlagg ( xmlelement ( count ry , c . count ry )
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 4 sur 10
-
BDIA CORRIG UPMC
from Country cwhere c . pa r id=m. i d ) ,
xm l fo res t ( m. genre , m. summary ) ,( select xmlagg ( xmlelement ( r o l e , r . role ) ,
x m l a t t r i b u t ( ac to r , r . ac to r )from Role rwhere r . pa r id=m. i d )
x m l a t t r i b u t e (m. d i r e c t o r ) ) ) )from Movie m) ,( select xmlagg ( xmlelement ( a r t i s t ,
xm l fo res t ( a . f i rs t_name , a . last_name , a . b i r t h _ d a t e ) ,x m l a t t r i b u t e ( i d , a . i d ) ) )
from A r t i s t a )from dual ;
2 Bases de donnes RDF (12 pts)
Soit le graphe RDF g1 suivant. Chaque noeud esttiquet par son identifiant ou par une lettre dbutantpar _ sil sagit dun noeud blanc. Les arcs sont ti-quets par les types des proprits.
_x_v _w
_ua _z
b c_y
r
r
s
r
r s
r
s
s
r
s
r s
g1
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 obtenircore(g1).
Solution: m : _v _x,_y b:core(g1):
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 5 sur 10
-
BDIA CORRIG UPMC
_x _w
_ua _z
b c
rr
s s
r
s
r
s
r s
Voici un schma RDFS pour des donnes cinmatographiques. Les relations subClassOf sont enpointill et les autres arcs dfinissent des proprits:
Literal Artiste
ActeurRealisateur
Role
Film
Drame
Comedie
Actionsu
bClas
sOf
subC
lass
Of
subClassOf
subC
lassO
fsubClassOf
titre
pays
nom
realisateur
acteu
r
film
Soit le document RDF film.rdf suivant:
< A r t i s t e r d f : I D = p1 >Ryan Gosl ing< /nom>
< / A r t i s t e >< / ac teur>< f i l m >
>< t i t r e >Dr ive< / t i t r e >< r e a l i s a t e u r >
< A r t i s t e r d f : I D = p2 >Nico las Winding Refn< /nom>
< / A r t i s t e >
Examen 1re session M2 16 novembre 2012 UPMC Master dinformatique page 6 sur 10
-
BDIA CORRIG UPMC
< / r e a l i s a t e u r >USA< / pays>
< / Act ion>< / f i l m >
< / Role>
< f i l m >
>< t i t r e >Harry dans tous ses ta t s < / t i t r e >< r e a l i s a t e u r >
< A r t i s t e r d f : I D = p3 >Woody A l len < /nom>
< / A r t i s t e >< / r e a l i s a t e u r >USA< / pays>
< / Comedie>< / f i l m >
< / Role>< / 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 toutesles rgles dinfrence RDF et RDFS en utilisant le schma ci-dessus. Donnez les rgles appliquespour 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 spcifierles 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 film Drive.
Solution:
SELECT ?nrWHERE { [ t i t r e ? t ; r e a l i s a t e u r [ nom ?nr ] ] . FILTER (? t = Dr ive ) }UNIONSELECT ?naWHERE { ? r f i l m [ t i t r e ? t ] ;
ac teur [ nom ?na ]FILTER (? t = Dr ive ) }
Question 11 (1/2 point)SQ11: Les diffrents genres de films.
Solution:
SELECT ?aWHERE { ?a r d f s : subClassOf Fi lm }
Question 12 (1 point)SQ12: Les noms des acteurs qui ont jou dans des comdies ou des films daction.
Solution:
SELECT ?naWHERE { ? r f i l m [ r d f : type ? t ] ; ac teur [ nom ?na ] .
FILTER (? t = : Comedie or ? t = : Action ) }
ou
SELECT ?naWHERE { ? r f i l m [ r d f : type : Comedie ] ; ac teur [ nom ?na ] . }UNIONSELECT ?naWHERE { ? r f i l m [ r d f : type : Action ] ; ac teur [ nom ?na ] . }
Question 13 (2 points)SQ13: Les noms des acteurs qui nont pas jou dans des comdies.
Solution:
SELECT ?nWHERE { ?a r d f : type Acteur ; nom ?na .
OPTIONAL { ? r f i l m ? f ; ac teur ?a . ? f r d f : type : Comedie . } .FILTER ( ! bound (? f ) ) }
ou
SELECT ?nWHERE { ? r f i l m ? f ; ac teur [ nom ?na ] .
OPTIONAL { ?a . ? f r d f : type : 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 ?nWHERE { ?a r d f : type Acteur ; r d f : type Rea l i sa teu r ; nom ?n . }
Question 15 (1 point)SQ15: Les noms des personnes qui ont jou dans tous les films 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 relationnelleRDF(S, P, O). Traduisez les requtes suivantes en SQL.
Question 16 (1 point)SQ14: Les noms des artistes qui sont acteurs et ralisateurs.
Solution:
select A.Ofrom RDF A, RDF B, RDF Cwhere A.P= nom
and A.S=B.S and B.P= r d f : type and B.O= : Actor and A.S=C.S and C.P= r d f : type and C.O= : D i r e c t o r
Question 17 (1 point)SQ17: Les noms des acteurs qui nont pas jou dans des comdies.
Solution:
select A.Ofrom RDF A, RDF B, RDF Cwhere A.P= nom
and A.S not in ( select B.Ofrom RDF B, RDF C, RDF F
where B.P= ac teur and C.P= f i l m and C.S=B.Sand C.O=F .Sand F .P = r d f : type and F .O = Comedie )
Question 18 (1 point)Compltez la rgle suivante qui indique que tous les films avec Woody Allen (dans un rle) sont descomdies:
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_allen_comedies , (? r : ac teur ?a ) ( ? a nom ?n ) ( ? r : f i l m ? f ) ,f i l t e r = n = "Woody A l len " , , (? f r d f : type : Comedie ) SDO_RDF_Aliases ( SDO_RDF_Alias ( , h t 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