Pendant nos travaux sur la sémantique et le rôle qu’elle peut jouer dans des explorations numériques, nous nous sommes bien sûr intéressés à DBPedia.
Je vais présenter une démarche expérimentale qui m’a permis de trouver, par une suite de traitements automatiques, une connaissance qui n’est pas explicitement disponible dans DBPedia: l’association entre un type d’édifices et une religion. J’aborderais dans un prochain billet la généralisation de cette démarche.
Trouver une ressource DBPedia
select reduced * where {?s rdfs:label "Abbaye"@fr } LIMIT 100
qui donne
http://dbpedia.org/resource/Abbey
Ce qui me suggère 4 ensembles englobant le concept d’abbaye (et en prime, me donne un lien qui n’a rien à voir: un lien fonctionnel concernant les lecteurs).
Pour les autres architectures religieuses que j’ai retenu, il apparaît que deux catégories semblent applicables à toutes:
Sur dbpeda-fr, la requête
select distinct ?s where { ?s ?p <http://fr.dbpedia.org/resource/Catégorie:Édifice-type> . } LIMIT 100
donne un ensemble de 257 éléments reliés à Catégorie:Édifice-type, essentiellement des types d’édifices et une catégorie équivalente (owl:sameAs) dans dbpedia:
http://dbpedia.org/page/Category:Buildings_and_structures_by_type
Et dans les types d’édifices, on trouve:
http://fr.dbpedia.org/resource/Synagogue
http://fr.dbpedia.org/resource/Église_(édifice)
http://fr.dbpedia.org/resource/Mosquée
mais on voit que pour ‘église’, on n’a pas strictement la catégorie correspondante, et qu’on n’a pas ‘église romane’ et ‘église gothique’.
Quels prédicats partagés par plusieurs catégories?
Cherchons les prédicats et les objets partagés par des sujets dont des objets associés sont respectivement ‘Synagogue’ et ‘Abbaye’
select distinct ?p where {
?s1 <http://dbpedia.org/ontology/type> <http://fr.dbpedia.org/resource/Synagogue> .
?s2 <http://dbpedia.org/ontology/type> <http://fr.dbpedia.org/resource/Abbaye> .
?s1 ?p ?o .
?s2 ?p ?o .
} LIMIT 100
donne 33 items, sur lesquels une sélection manuelle, permet de mettre en évidence les suivants, hors caractéristiques géographiques
et les caractéristiques géographiques suivantes
Prédicats les plus utilisés sur une catégorie
La requête
SELECT count(distinct ?s2) WHERE { ?s2 <http://dbpedia.org/ontology/type> <http://fr.dbpedia.org/resource/Abbaye> . ?s2 ?p ?o } LIMIT 100
m’indique que, à l’instant où je fais cette requête, il y a 631 éléments de type dbpedia-fr:Abbaye
La requête
SELECT ?p (COUNT(?p) AS ?pTotal)
WHERE
{
?s2 <http://dbpedia.org/ontology/type> <http://fr.dbpedia.org/resource/Abbaye> .
?s2 ?p ?o
}
GROUP BY ?p
ORDER BY DESC(?pTotal)
LIMIT 100
me donne les prédicats qui s’appliquent aux Abbaye, classés par leur nombre d’apparitions. Voilà le début du résultat:
Ce qui nous permet d’avancer dans la recherche des ‘propriétés’ décrites pour la pluspart des dbpedia-fr:Abbaye.
On voit qu’il y a un grand nombre de http://dbpedia.org/ontology/wikiPageWikiLink, qui correspondent à des liens vers d’autres pages. Ce constat peut être généralisé à de nombreuses catégories de DBPedia. J’y reviendrais dans un prochain billet. On peut se demander si certains liens apparaissent plus souvent que d’autres.
Recherche des liens partagés par de nombreux éléments d’une catégorie
La requête
SELECT ?o (COUNT(?o) AS ?oTotal)
WHERE
{
?s2 <http://dbpedia.org/ontology/type> <http://fr.dbpedia.org/resource/Abbaye> .
?s2 <http://dbpedia.org/ontology/wikiPageWikiLink> ?o
}
GROUP BY ?o
ORDER BY DESC(?oTotal)
LIMIT 100
nous donne la réponse.
http://fr.dbpedia.org/resource/Abbaye apparait 629 fois, ce qui s’explique facilement.
http://fr.dbpedia.org/resource/Catholicisme apparait 377 fois, ce qui est aussi asse logique.
Ensuite nous avons http://fr.dbpedia.org/resource/Ordre_de_Saint-Benoît 220 fois; il faut chercher l’explication. Merci de vos suggestions.
Le quatrième lien est
http://fr.dbpedia.org/resource/Révolution_française
ce qui a une cohérence, bien que cela suggère une approche très marquée historiquement des sources Wikipedia utilisées.
Le cinquième est http://fr.dbpedia.org/resource/Monument_historique_(France) ce qui pourrait nous être bien utile.
On peut considérer que l’ensemble des éléments du début de cette réponse peuvent contribuer à notre exploration/exploitation de DBPedia.
Comparons à ce qu’on obtient sur Synagogue, avec une requête analogue et 78 synagogues:
On constate que le lien le plus utilisé, presque dans tous les cas, mais pas dans tous, est un lien vers le type de ressource qu’on a utilisé.
Le deuxième lien semble être un lien URI désignant une religion. Peut-être a-t-on là une façon d’associer automatiquement une architecture religieuse à une religion. Essayons sur quelques exemples:
http://fr.dbpedia.org/page/Mosquée est ainsi associé à http://fr.dbpedia.org/page/Islam
http://fr.dbpedia.org/resource/Cathédrale est ainsi associé à http://fr.dbpedia.org/resource/Église_catholique_romaine et en troisième position http://fr.dbpedia.org/resource/Catholicisme
http://fr.dbpedia.org/resource/Temple est ainsi associé à http://fr.dbpedia.org/resource/Protestantisme et en troisième position http://fr.dbpedia.org/resource/Bouddhisme
Dans tous ces cas, la deuxième réponse est recevable; les deux derniers exemples nous montrent des situations où, pour des raisons différentes, la troisième réponse est aussi pertinente.
En fait cela nous suggère que toutes les religions référencées après le premier lien seraient des réponses recevables. Il nous faut donc voir si elles ont une propriété en commun qui permet de les identifier dans DBPedia comme religion.
Qualifier les liens
Une première exploration visuelle nous donne
http://fr.dbpedia.org/page/Judaïsme dcterms:subject dbpedia-fr:Catégorie:Religion_au_Moyen-Orient et la propriété is prop-fr:religion of
http://fr.dbpedia.org/page/Catholicisme dcterms:subject dbpedia-fr:Catégorie:Branche_du_christianisme et la propriété is prop-fr:religion of
Il apparait que la caractéristique commune est d’utiliser le prédicat is prop-fr:religion of.
La requête
SELECT ?o (COUNT(?o) AS ?oTotal) WHERE { ?s <http://fr.dbpedia.org/property/religion> ?o } GROUP BY ?o ORDER BY DESC(?oTotal) LIMIT 20
nous permet de trouver des éléments objets de ce prédicat:
Associer des bâtiments à une religion
Cherchons à associer une religion à chacun des édifices avec la requête:
SELECT ?s ?o (COUNT(?o) AS ?oTotal) WHERE { ?s ?p <http://fr.dbpedia.org/resource/Catégorie:Édifice-type> . ?s2 <http://dbpedia.org/ontology/type> ?s . ?s2 <http://dbpedia.org/ontology/wikiPageWikiLink> ?o . ?s3 <http://fr.dbpedia.org/property/religion> ?o } GROUP BY ?s ?o ORDER BY DESC(?oTotal) LIMIT 100
Voilà les premiers résultats obtenus (un peu édités pour entrer dans la page)
s | o | oTotal |
dbpedia-fr:Abbaye | dbpedia-fr:Catholicisme | 599430 |
dbpedia-fr:Église_(édifice) | dbpedia-fr:Catholicisme | 418170 |
dbpedia-fr:Basilique_(christianisme) | dbpedia-fr:Catholicisme | 357750 |
dbpedia-fr:Chapelle | dbpedia-fr:Catholicisme | 206700 |
dbpedia-fr:Mosquée | dbpedia-fr:Islam | 167970 |
dbpedia-fr:Église_(édifice) | dbpedia-fr:Église_catholique_romaine | 132086 |
dbpedia-fr:Collégiale | dbpedia-fr:Catholicisme | 89040 |
dbpedia-fr:Basilique_(christianisme) | dbpedia-fr:Église_catholique_romaine | 78914 |
dbpedia-fr:Abbaye | dbpedia-fr:Église_catholique_romaine | 71740 |
dbpedia-fr:Couvent | dbpedia-fr:Catholicisme | 62010 |
dbpedia-fr:Chapelle | dbpedia-fr:Église_catholique_romaine | 56126 |
dbpedia-fr:Monastère | dbpedia-fr:Catholicisme | 34980 |
dbpedia-fr:Collégiale | dbpedia-fr:Église_catholique_romaine | 21944 |
dbpedia-fr:Synagogue | dbpedia-fr:Judaïsme | 17640 |
dbpedia-fr:Monastère | dbpedia-fr:Église_catholique_romaine | 11394 |
dbpedia-fr:Couvent | dbpedia-fr:Église_catholique_romaine | 8862 |
dbpedia-fr:Abbaye | dbpedia-fr:Protestantisme | 8550 |
dbpedia-fr:Synagogue | dbpedia-fr:Catholicisme | 7950 |
dbpedia-fr:Basilique_(christianisme) | dbpedia-fr:Christianisme | 7436 |
dbpedia-fr:Baptistère | dbpedia-fr:Catholicisme | 6360 |
dbpedia-fr:Mosquée | dbpedia-fr:Sunnisme | 5066 |
dbpedia-fr:Temple | dbpedia-fr:Protestantisme | 4788 |
dbpedia-fr:Église_(édifice) | dbpedia-fr:Protestantisme | 4104 |
dbpedia-fr:Église_(édifice) | dbpedia-fr:Christianisme | 4004 |
dbpedia-fr:Abbaye | dbpedia-fr:Christianisme | 4004 |
dbpedia-fr:Cloître | dbpedia-fr:Catholicisme | 3180 |
On voit que des associations pertinentes sont obtenues, qu’il y a quelque fois plusieurs associations pour un même édifice.
Le décompte obtenu doit pouvoir être utilisé pour évaluer la fiabilité de l’association.
La requête
SELECT ?s (COUNT(?s) AS ?sTotal) WHERE { ?s ?p <http://fr.dbpedia.org/resource/Catégorie:Édifice-type> . ?s2 <http://dbpedia.org/ontology/type> ?s . ?s2 <http://dbpedia.org/ontology/wikiPageWikiLink> ?o . ?s3 <http://fr.dbpedia.org/property/religion> ?o } GROUP BY ?s ORDER BY DESC(?sTotal) LIMIT 100
nous donne les types d’édifices associés à une religion et donne la liste suivante (écourtées d’une dizaine de réponses numériquement très peu représentatives):
Il faudrait surement diviser le nombre d’association (type d’édifices-religion) par le nombre de représentants de chaque type d’édifice pour avoir une représentativité de l’association trouvée.
Je ne vois pas tout de suite comment faire ça avec sparql afin de ne faire ressortir que les meilleures associations. Mais est-ce bien en SPARQL qu’il faut faire ça: en Javascript, par exemple, je pourrais facilement faire la première requête et récupérer les résultats en JSON, puis faire l’autre, et enfin calculer la pertinenece en la calculant à partir des deux résultats en JSON. A suivre.
En résumé
J’ai constaté que l’essentiel des prédicats utilisés sur l’ensemble d’éléments que je considérais était http://dbpedia.org/ontology/wikiPageWikiLink. En cherchant, les liens partagés par un nombre d’éléments de la catégorie, j’ai mis en évidence une ‘caractéristique’ de cette catégorie. Ensuite, en cherchant les prédicats les plus utilisés pour cette caractéristique, j’ai pu qualifier cette caractéristique. Enfin, alors que ma catégorie initiale n’avait pas cette connaissance, j’ai pu faire une association entre une catégorie comme Abbaye et une ou plusieurs religions. Ce traitement est partiellement statistique. Il faudrait évaluer son niveau de pertinence, mais ces premiers résultats sont intéressants.
C’est tout pour le moment: j’ai illustré comment, avec quelques requêtes assez simple, on peut générer des connaissances qui ne sont pas explicitement disponibles dans DBPedia.
Dans un prochain billet, je m’efforcerai de systématiser et de généraliser la démarche.
(ce billet a été publié ici https://onsem.wp.imt.fr/2015/05/15/creer-des-connaissances-formalisees-pour-le-web-semantique-a-partir-de-dbpedia/)
Pingback : Nouveaux développements sur la recherche d’informations cachées dans DBPedia | ILOT - Sémantique et éducation
Pingback : Créer des connaissances formalisées pour le Web Sémantique à partir de DBPedia | Objets Numériques et Sémantique