Saviez-vous qu'Emma Watson, alias Hermione Granger dans les adaptations au cinéma d'Harry Potter, est née à Paris ?
Pour ma part, je l'ai découvert en mettant au point une autre série d'exemples d'utilisation de Dbpedia, en m'interressant cette fois-ci aux personnes. Le principe est simple, vous choisissez dans la liste la ville qui vous intéresse, par exemple, Paris et vous découvrirez les différentes personnes nées dans cette ville et présentes dans Dbpedia, c'est à dire dans Wikipédia. La mise en forme et la navigation dans la page de résultat est assurée par l'excellent logiciel/script du projet Simile, Exhibit. J'ai volontairement limité la liste des villes, car le principe est toujours le même. J'en ai profité pour placer un lien directe vers cette page depuis la carte des capitales européennes.
A l'issue de cette deuxième série de tests, deux constats s'imposent :
- le manque de structuration et de cohérence de Wikipedia apparaît clairement voire cruellement et l'initiative Dbpedia représente un moyen d'y remédier, en mettant en avant les problèmes
- Dbpedia limite automatiquement le nombre de résultats renvoyés pour les requêtes (j'imagine pour des raisons de ressources et de performance au niveau des machines) ce qui empêche d'avoir une vue complète et exhaustive des ressources stockées, c'est un peu dommage, même si c'est compréhensible
Malgré ces constats, je reste époustouflé par le travail accompli à la fois par Wikipedia et par les équipes qui ont mis au point Dbpedia. Il existe tellement de possibilités pour exploiter toutes ces données que ça en donne le tournis. Pour ne donner qu'un exemple trivial, il y a moyen de faire un formidable site sur l'histoire du football, puisque vous trouvez l'ensemble des joueurs, clubs, championnats, finales des différentes compétitions avec leurs résultats... Il n'y a guère que votre imagination et quelques petites connaissances en programmation (si peu, vraiment) qui vous limiteront.
Pour ma part, je vais encore mettre au point un exemple que j'ai promis à Manue pour l'aider dans sa quête du Web sémantique en bibliothèque et je m'arrêterai là. Je pense que je pourrais y passer des heures et des heures (pleins de données dans des petites cases, vous pensez bien que ça me plaît ;-) ), mais cela ne servirait que peu mon but initial qui était de montrer l'intérêt des technologies du Web sémantique (est-ce que c'est un peu plus clair maintenant avec des exemples précis ? N'hésitez pas à demander si vous voulez que je décortique un des exemples). Ce sera donc à votre tour d'exploiter toutes ces données.
Commentaires
Merci pour ton commentaire. Je suis d'accord avec toi sur l'avantage de SPARQL que tu cites, même si il ne représente pas le principal à mes yeux. Mais, j'avoue ne pas m'être plongé dans cette possibilité de SPARQL.
En revanche, je suis en désaccord avec la fin de ton commentaire, il est déjà possible d'interroger deux sources de données différentes avec une seule requête, même si c'est encore très expérimental. La syntaxe le permet via la fonction GRAPH voici un test avec Geonames et Dbpedia :
Lien vers le résultat de la requête
Et la requête sparql correspondante :
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX geonames: <http://www.geonames.org/ontology#>
SELECT ?francais ?grec ?population ?abstract
FROM <http://sws.geonames.org/2988507/about.rdf>
WHERE
{
<http://sws.geonames.org/2988507/> geonames:alternateName ?grec.
<http://sws.geonames.org/2988507/> geonames:name ?francais.
<http://sws.geonames.org/2988507/> geonames:population ?population.
<http://sws.geonames.org/2988507/> owl:sameAs ?lieu.
GRAPH ?lieu {
?lieu <http://dbpedia.org/property/abstract> ?abstract.
}
FILTER (lang(?grec)="el")
FILTER (lang(?abstract)="fr")
}
Un autre exemple avec Dbpedia et les données du recensement américain de 2000 : Les résultats de la requêtes
La requête correspondante :
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX census: <tag:govshare.info,2005:rdf/census/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?state ?nb ?superficie
WHERE
{
?state owl:sameAs ?etat.
?state skos:subject <http://dbpedia.org/resource/Category:States_of_the_United_States>
GRAPH ?etat {
?etat census:population ?nb.
?etat census:landArea ?superficie
}
FILTER regex(str(?etat), "usgov")
}
"mais tu contournes le problème :)" : j'avoue dans un certain sens, mais je pense que je n'avais pas compris ta remarque comme tu l'entendais.
Je comprends mieux ce que tu veux dire, maintenant. Il n'est pas possible depuis un processeur sparql quelconque d'interroger deux sources de données et c'est tout à fait juste.
Dans mes exemples, je profite du owl:sameAs qui est tout l'intérêt du projet Linking of data, donc effectivement, j'interroge une ressource et pas un autre entrepôt RDF. Mais comme tu le fais remarquer, il faudrait mettre en mémoire tout l'entrepôt ce qui n'est pas possible.
J'aime bien cette idée de sparql endpoint, car ils renvoient vraiment à la notion de données structurées décentralisées mis à disposition directement sur le Web et cela évite d'avoir à utiliser un processeur Sparql, c'est un simple Web service.
Merci pour ton commentaire et la référence, c'est vraiment intéressant (et ça m'a permis de mieux comprendre ce que tu voulais dire ;-) ).
Comme la réponse est simple et rapide, tu y as le droit ce soir : j'utilise la classe RAP, RDF API for PHP : http://sites.wiwiss.fu-berlin.de/suhl/bizer/rdfapi/ qui fut la première initiative des créateurs de Dbpedia pour le Web sémantique. Comme quoi ces types ont de la suite dans les idées !!
salut les gars je trouve vos post assez interessant mais si vous souhaitez faire de l'interrogation sur plusieurs sources differentes vous pouvez le faire depuis java avec JENA la methode de la classe QueryExecutionFactory sparqlService permet de le faire (API ARQ) vous pouvez voir la doc ici "http://jena.sourceforge.net/ARQ/javadoc/index.html"