Dans ce billet, je cherche à découvrir les mouvements picturaux connus comme entités de Wikidata et associés à des artistes français. Cela a plusieurs buts. Notamment, le but de constituer un dictionnaire inverse qui permette rapidement de trouver l'entité Wikidata lorsqu'on a dans un texte une référence à un mouvement pictural.
Ce billet suppose que le lecteur a un minimum de compréhension de Wikidata et du service associé WDQS.
Les comptes donnés sur certaines requêtes ont été obtenus le 26/11/2021; ces valeurs peuvent évoluer avec les évolutions de Wikidata.
La propriété qui indique un mouvement associé à un créateur est wdt:P135.
La propriété qui lie une entité à son créateur est wdt:P170.
La propriété pour trouver les 'occupations' d'une personne est P106. Nous nous intéressons aux personnes dont une occupation est peintre (wd:Q1028182).
Si on veut se limiter à des créations présentes dans la base Joconde, la première idée est de trouver toutes les entités qui ont un lien avec la base Joconde (wd:Q809825).
select distinct ?item
where
{
?item ?p wd:Q809825 .
}
Cela donne 4524 entités. Certaines sont des propriétés; d'autres des créateurs. Mais, la plupart sont des références à une source de données. Par exemple:
select ?link
where
{
<http://www.wikidata.org/reference/ec603861711ed65b7acc54284085fb2a2e686028> pr:P854 ?link
}
nous donne par la propriété pr:P854 un lien vers la base Joconde qui correspond à une œuvre précise.
Ce qui suggère de chercher les entités qui ont un lien avec ces références.
select distinct ?item
where
{
?ref ?p wd:Q809825 .
filter(contains(str(?ref), "http://www.wikidata.org/reference/"))
?item ?pref ?ref
}
donne 80220 entités, qui sont tous des 'statements', tels que définis par Wikidata. Les statements sont des 'faits' relatifs à une entité. Voyons sur un exemple quel genre d'entité est concerné:
select ?item ?p
where
{
?item ?p <http://www.wikidata.org/entity/statement/Q29656881-4BBBE7E8-1606-4332-84FA-61C2DBD2F32A>
}
Relié au statement par la propriété 'collection' (p:P195), on trouve une peinture: wd:Q29656881.
On peut trouver 9178 entités reliées à ces statements:
select distinct ?item
where
{
?ref ?p wd:Q809825 .
filter(contains(str(?ref), "http://www.wikidata.org/reference/"))
?statement ?pref ?ref .
?item ?ps ?statement .
}
On va pouvoir ainsi chercher s'il y a des mouvements directement associés aux œuvres rattachées à Joconde ou aux créateurs associés à ces œuvres.
Pour les entités directement liées à ces statements:
select ?mvt
where
{
?ref ?p wd:Q809825 .
filter(contains(str(?ref), "http://www.wikidata.org/reference/"))
?statement ?pref ?ref .
?item ?ps ?statement .
?item wdt:P135 ?mvt .
}
permet de trouver 2703 entités reliées à un mouvement. Et:
select distinct ?mvt
where
{
?ref ?p wd:Q809825 .
filter(contains(str(?ref), "http://www.wikidata.org/reference/"))
?statement ?pref ?ref .
?item ?ps ?statement .
?item wdt:P135 ?mvt .
}
nous montre que 54 mouvements sont référencés.
Pour les créateurs, nous trouvons 3729 créateurs:
select distinct ?creator
where
{
?ref ?p wd:Q809825 .
filter(contains(str(?ref), "http://www.wikidata.org/reference/"))
?statement ?pref ?ref .
?item ?ps ?statement .
?item wdt:P170 ?creator
}
On trouve 39048 références
select ?mvt
where
{
?ref ?p wd:Q809825 .
filter(contains(str(?ref), "http://www.wikidata.org/reference/"))
?statement ?pref ?ref .
?item ?ps ?statement .
?item wdt:P170 ?creator .
?creator wdt:P135 ?mvt
}
à 104 mouvements:
select distinct ?mvt
where
{
?ref ?p wd:Q809825 .
filter(contains(str(?ref), "http://www.wikidata.org/reference/"))
?statement ?pref ?ref .
?item ?ps ?statement .
?item wdt:P170 ?creator .
?creator wdt:P135 ?mvt
}
Ce qui suggère environ 10 références à des mouvements par créateur en moyenne! Mais cela est lié aux oeuvres multiples qui peuvent être liées à un créateur. La requête:
select ?creator (count(distinct ?mvt) as ?c)
where
{
?ref ?p wd:Q809825 .
filter(contains(str(?ref), "http://www.wikidata.org/reference/"))
?statement ?pref ?ref .
?item ?ps ?statement .
?item wdt:P170 ?creator .
?creator wdt:P135 ?mvt
}
group by ?creator
order by desc(?c)
nous montre un maximum de 7 mouvements pour un créateur, Paul Gauguin (Q37693). En fait, 643créateurs sont associés à au moins un mouvement, généralement un seul.
Note: on se réfèrera à
https://stackoverflow.com/questions/56486888/how-to-get-property-labels-from-wikidata-using-sparql
pour voir comment trouver les labels associés à des propriétés de Wikidata, par exemple pour trouver les labels associés à des mouvements artistiques.