Décrire des films vus en RDF
Depuis un certain temps, je regarde très régulièrement des films et voulais maintenir une liste des films vus. J’ai donc demandé conseil à la communauté Web Sémantique :
Je souhaite mettre en ligne une liste des films que j’ai récemment visionnés. Il existe sûrement des services 2.0 pour ce genre de chose, mais c’est terriblement plus drôle de faire cela soit-même, surtout quand cela devient un prétexte à l’utilisation de RDF.
Avec l’aide de Karl, je suis arrivé à ceci :
@prefix : <#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix imdb: <http://www.csd.abdn.ac.uk/~ggrimnes/dev/imdb/IMDB#> .
@prefix rev: <http://www.purl.org/stuff/rev#> .
:me a foaf:Person;
foaf:name "Simon Rozet" .
<http://www.imdb.com/title/tt0105236/> a imdb:Movie ;
dc:title "Reservoir Dogs";
imdb:year "1992";
rev:hasReview :rd-1 .
:rd-1 a rev:Review ;
dc:date "2006-08-25";
rev:reviewer :me;
rev:subject <http://www.imdb.com/title/tt0105236/>;
rev:rating "10"^^xsd:integer .
Pour le moment, j’utilise les informations d’IMDb même si le service est, comme le signalait Karl, loin d’être parfait (au niveau de l’internationalisation par exemple), c’est le plus complet. En attendant d’implémenter l’idée de Karl ?
Pour la collecte des données, je fais tout à la main :-) Pour moi, le but de la syntaxe Notation3, à savoir être plus lisible que du RDF/XML, est atteint.
Avec la sortie de la nouvelle version de rdflib qui intègre un parser SPARQL, je peux désormais écrire une requête pour récupérer toutes ces informations :
#!/usr/bin/env python
from rdflib.Graph import Graph
g = Graph()
g.load('movies.n3', format='n3')
result = g.query("""PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX imdb: <http://www.csd.abdn.ac.uk/~ggrimnes/dev/imdb/IMDB#>
PREFIX rev: <http://www.purl.org/stuff/rev#>
SELECT ?title ?year ?date ?rating ?reviewer
WHERE {
?movie rdf:type imdb:Movie .
?movie dc:title ?title .
?movie imdb:year ?year .
OPTIONAL {
?movie rev:hasReview ?review .
?review dc:date ?date .
?review rev:rating ?rating .
?review rev:reviewer ?person .
?person foaf:name ?reviewer
}
}""")
print result.serialize('python')
print result.serialize(json')
print result.serialize('xml')
Journal web de Simon Rozet - Films visionnés et RDF, partie 2 (novembre 25th, 2006 à 14:16)
[…] Films visionnés et RDF, partie 2 Dans la première partie, j’expliquais comment décrire des films visionnés en RDF. Je n’ai pas donné le code complet pour transformer le tout en HTML simplement parce-qu’il était trop moche :-) Cela vient de rdflib qui ne propose pas de moyen simple pour manipuler le résultat d’une requète SPARQL. […]
(pluri)TAL / ILPGA [U. Paris 3] (novembre 29th, 2006 à 13:17)
[…] Une belle idée pour présenter RDF : comment décrire un film en RDF ? Les réponses sont ici, là et encore là. Acquisition et interaction en langue étrangère : revue en langue française traitant d’apprentissage et d’acquisition des langues étrangères pris sous l’angle psycholinguistique et sous l’angle cognitif. Jean Véronis met à disposition son corpus Parole2007 (Transcription des interviews du PoliTIC’Show). […]