//TME 2 : Requêtes sparql // 1- Préparation des données val triples = sc.textFile("hdfs://ppti-dac-1.ufr-info-p6.jussieu.fr:50100/Etu/freebase-projected").map(line=>line.split("\t")).map(elem=>(elem(0),elem(1),elem(2))) //déclarer des variables pour les propriétés val book_book_characters= triples.filter{case(s,p,o)=> p.contains("")} val book_book_genre= triples.filter{case(s,p,o)=> p.contains("")} val book_book_editions= triples.filter{case(s,p,o)=> p.contains("")} //Q1 /*select ?b where {?b book.book.characters ?c . ?b book.book.genre ?x . ?b book.book.editions ?y. } */ //do not forget to type :paste for processing multiple lines val q1 = //count res37: Long = 1048308 val people_person_education= triples.filter{case(s,p,o)=> p.contains("")} val people_person_date_of_birth= triples.filter{case(s,p,o)=> p.contains("")} val people_person_nationality= triples.filter{case(s,p,o)=> p.contains("")} //Q2 /*select ?c where { ?c people.person.education ?e . ?c people.person.date_of_birth ?x . ?c people.person.nationality ?y } */ val q2 = //res2: Long = 319358 val music_artist_album= triples.filter{case(s,p,o)=> p.contains("")} val music_artist_genre= triples.filter{case(s,p,o)=> p.contains("")} val music_artist_home_page= triples.filter{case(s,p,o)=> p.contains("")} val music_album_release_date= triples.filter{case(s,p,o)=> p.contains("")} val music_album_contributor= triples.filter{case(s,p,o)=> p.contains("")} val music_album_featured_artists= triples.filter{case(s,p,o)=> p.contains("")} //Q3 /*select ?ar where { ?ar music.artist.album ?al . ?ar music.artist.genre ?g . ?ar music.artist.home_page ?h. ?al music.album.release_date ?d . ?al music.album.contributor ?c. ?al music.album.featured_artists ?f } */ val q3a = val q3b = //jointure q3a et q34 val q3 = q3a.join(q3b) //res67: Long = 8785 val music_recording_artist= triples.filter{case(s,p,o)=> p.contains("")} val music_artist_supporting_artists= triples.filter{case(s,p,o)=> p.contains("")} val music_artist_album= triples.filter{case(s,p,o)=> p.contains("")} //Q4 /*select * where { ?m music.recording.artist ?ar . ?ar music.artist.supporting_artist ?sar . ?sar music.artist.album ?al } */ val q4 = //res6: Long = 1154330 val music_artist_genre= triples.filter{case(s,p,o)=> p.contains("")} val music_artist_origin= triples.filter{case(s,p,o)=> p.contains("")} val music_artist_album= triples.filter{case(s,p,o)=> p.contains("")} val music_artist_label= triples.filter{case(s,p,o)=> p.contains("")} val music_artist_track= triples.filter{case(s,p,o)=> p.contains("")} //Q5 /*select ?ar ?l ?t where { ?ar music.artist.genre ?g . ?ar music.artist.origin ?o . ?ar music.artist.album ?al . ?ar music.artist.label ?l . ?ar music.artist.track ?t } */ val q5= //res15: Long = 8240817945 //Temps d'exécution 5mn !!