User:Shonagon/Expositions
Objectif
editTrouver une requête SparQL générique pour lister tous les éléments d'une exposition donnée, avec la double contrainte :
- une seule ligne par élément (i.e. pas de doublons)
- toutes les informations utiles par ligne
Données restituées
edit- catalog code (P528)
- Élément Wikidata
- Label de l'élément Wikidata
- instance of (P31)
- creator (P170)
- inception (P571)
- collection (P195)
- inventory number (P217)
- image (P18)
- URL vedette
Il n'y pas de données obligatoires, hormis une déclaration exhibition history (P608) sur les éléments à lister.
Dans la version actuelle, les données instance of (P31), creator (P170) et collection (P195) nécessitent des libellés en langue cible ou en anglais pour êtres restitués.
Améliorations souhaitables
edit- tenir compte des rangs préférés
- être plus large dans les possibilités de langue
- afficher toutes les dimensions, avec multiples déclarations possibles, en une colonne
Requête SparQL
edit#defaultView:ImageGrid
SELECT distinct
?numCatalogue ?item ?itemLabel
(GROUP_CONCAT(distinct ?nature_label; separator=" - ") as ?type)
(GROUP_CONCAT(distinct ?crea_label; separator=" - ") as ?crea)
(GROUP_CONCAT(distinct ?date; separator=" ; ") as ?dates)
(GROUP_CONCAT(distinct ?coll_label; separator=" - ") as ?collection)
(GROUP_CONCAT(distinct ?ninv; separator=" - ") as ?inv)
(SAMPLE(?img) as ?image)
(SAMPLE(?url) as ?URL)
WHERE {
BIND (wd:Q28043290 as ?expo) # élément exposition
?item wdt:P608 ?expo.
OPTIONAL { ?expo wdt:P972 ?catalogue.
?item p:P528 [ ps:P528 ?numCatalogue ;
pq:P972 ?catalogue ]
}
?item wdt:P31 ?nature.
OPTIONAL{?nature rdfs:label ?nature_labelfr. filter (lang(?nature_labelfr) = "fr")}
OPTIONAL{?nature rdfs:label ?nature_labelen. filter (lang(?nature_labelen) = "en")}
BIND(COALESCE(?nature_labelfr,?nature_labelen) AS ?nature_label)
OPTIONAL { ?item wdt:P170 ?crea.
OPTIONAL{?crea rdfs:label ?crea_labelfr filter (lang(?crea_labelfr) = "fr")}
OPTIONAL{?crea rdfs:label ?crea_labelen filter (lang(?crea_labelen) = "en")}
BIND(COALESCE(?crea_labelfr,?crea_labelen) AS ?crea_label)
}
OPTIONAL { ?item wdt:P195 ?coll.
OPTIONAL{?coll rdfs:label ?coll_labelfr filter (lang(?coll_labelfr) = "fr")}
OPTIONAL{?coll rdfs:label ?coll_labelen filter (lang(?coll_labelen) = "en")}
BIND(COALESCE(?coll_labelfr,?coll_labelen) AS ?coll_label)
}
OPTIONAL { ?item wdt:P18 ?img }
OPTIONAL { ?item wdt:P217 ?ninv }
OPTIONAL { ?item p:P571 ?declarationdate }
# date de publication
OPTIONAL { ?item wdt:P577 ?datepubli
BIND (year(?datepubli) AS ?date)}
# date unique
OPTIONAL { MINUS {?declarationdate pq:P1319 ?pasavant }
MINUS {?declarationdate pq:P1480 wd:Q5727902 }
?declarationdate ps:P571 ?dateunique .
BIND (year(?dateunique) AS ?date)}
# date unique environ
OPTIONAL { MINUS {?declarationdate pq:P1319 ?pasavant }
?declarationdate pq:P1480 wd:Q5727902.
?declarationdate ps:P571 ?dateunique .
BIND (CONCAT("c.",STR(year(?dateunique))) AS ?date)}
# période pas avant / pas apres
OPTIONAL { ?declarationdate pq:P1319 ?pasavant .
?declarationdate pq:P1326 ?pasapres.
BIND (CONCAT(STR(year(?pasavant)),"-",STR(year(?pasapres))) AS ?date)}
# URL vedette
# Cas n°1, une URL via un identifiant spécifique à la collection
OPTIONAL {
?item p:P195 ?declarationlcoll.
?declarationlcoll ps:P195 ?coll.
{?Qprop wdt:P2378 ?coll.}
UNION{
?coll wdt:P361 ?Topcoll.
?Qprop wdt:P2378 ?Topcoll.
}
?Qprop wdt:P31/wdt:P279* wd:Q18618644.
?Qprop wikibase:directClaim ?prop.
?item ?prop ?id .
?Qprop wdt:P1630 ?formatterurl .
BIND(IRI(REPLACE(?id, '^(.+)$', ?formatterurl)) AS ?urlColl)
}
# Cas n°2, une URL via la propriété P973/"décrit à l'URL"
OPTIONAL {
?item wdt:P973 ?urlP973.
}
# Cas n°3, une URL via une propriété identifant d'œuvre d'art
OPTIONAL {
?Qprop wikibase:directClaim ?prop.
?Qprop wdt:P31/wdt:P279* wd:Q18618644.
?item ?prop ?id .
?Qprop wdt:P1630 ?formatterurl .
BIND(IRI(REPLACE(?id, '^(.+)$', ?formatterurl)) AS ?urlID)
}
# cas n°1 l'emporte sur cas n°2 qui l'emporte sur cas n°3
BIND(COALESCE(COALESCE(?urlColl, ?urlP973),?urlID) AS ?url)
SERVICE wikibase:label {bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en"}
} GROUP BY ?numCatalogue ?item ?itemLabel
ORDER BY xsd:integer(?numCatalogue)
Exemples
edit- The Dance of Life – The collection from antiquity to 1950 (Q11986598)
- Salon of 1831 (Q15118718)
- Exposition des primitifs flamands à Bruges (Q17101798)
- Europeana 280 (Q20980830)
- El Siglo de Oro. The Age of Velázquez (Q28043290)
- Vermeer and the Masters of Genre Painting. Inspiration and Rivalry. (Q28854991)
- Corot 1796-1875 (Q41288846)
- Mirabilis (Q56542637)
- Claudius, an Emperor with a Unique Destiny (Q59779882)
- Visigoths. Kings of Toulouse (Q88177582)
- Le Mystère Mithra (Q112120771)